gpt4 book ai didi

gcc - 为什么 "strip"不删除这些调试符号?

转载 作者:行者123 更新时间:2023-12-01 02:42:56 26 4
gpt4 key购买 nike

我有一个简单的汇编文件 main.s其中包含:
mysymbol1=1234
我使用以下命令将其组装成目标文件:
$ arm-none-eabi-as main.s -o main.o
现在我检查符号表

$ arm-none-eabi-objdump -t main.o

main.o: file format elf32-littlearm

SYMBOL TABLE:
00000000 l d .text 00000000 .text
00000000 l d .data 00000000 .data
00000000 l d .bss 00000000 .bss
000004d2 l *ABS* 00000000 mysymbol1
00000000 l d .ARM.attributes 00000000 .ARM.attributes

我注意到 d表示包含调试符号,所以我运行:
$ arm-none-eabi-strip --strip-debug main.o
重新运行 objdump 显示调试符号尚未删除,尽管它们已重新排序:
$ arm-none-eabi-objdump -t main.o

main.o: file format elf32-littlearm

SYMBOL TABLE:
000004d2 l *ABS* 00000000 mysymbol1
00000000 l d .text 00000000 .text
00000000 l d .data 00000000 .data
00000000 l d .bss 00000000 .bss
00000000 l d .ARM.attributes 00000000 .ARM.attributes

为什么不删除调试符号?

最佳答案

.text , .data.bss不是调试符号 - 它们是内核用来正确执行它的文件段。 mysymbol1来自静态符号表,因此不是 debuginfo 的一部分,所以它不会在 --strip-debug 下被剥离任何一个。

关于gcc - 为什么 "strip"不删除这些调试符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45127130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com