我有一个简单的汇编文件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
为什么不删除调试符号?
答案 0 :(得分:2)
.text
,.data
和.bss
不是调试符号 - 它们是内核用来正确执行它的文件段。 mysymbol1
来自静态符号表,因此不是debuginfo的一部分,因此它也不会在--strip-debug
下被删除。