私が含まれている、単純なアセンブリファイルmain.s
があります。今、私はシンボルテーブルこれらのデバッグシンボルを削除しないのはなぜですか?
$ arm-none-eabi-as main.s -o main.o
:私は、次のコマンドを使用して、オブジェクトファイルにそれを組み立て
mysymbol1=1234
を
$ 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
彼らは並べ替えされているが
$ 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
上がらないのはなぜd
はデバッグシンボルがあることを示し、私は実行しそうに含まデバッグシンボルが削除されましたか?
これらの記号はセクションの名前を示します。だから、「ストリップ」はそれらを取り除かないのです。デバッグシンボルではありません。 – fuz
ありがとうございます。なぜ、 'd'ビットフラグがセットされているのでしょうか? – donturner
私はこの質問に答えるのに十分なGNU binutilsを知りません。 – fuz