2017-07-16 8 views
2

私が含まれている、単純なアセンブリファイル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はデバッグシンボルがあることを示し、私は実行しそうに含まデバッグシンボルが削除されましたか?

+0

これらの記号はセクションの名前を示します。だから、「ストリップ」はそれらを取り除かないのです。デバッグシンボルではありません。 – fuz

+0

ありがとうございます。なぜ、 'd'ビットフラグがセットされているのでしょうか? – donturner

+0

私はこの質問に答えるのに十分なGNU binutilsを知りません。 – fuz

答えて

2

.text,および.bssは、デバッグシンボルではありません。カーネルが正しく実行するために使用するファイルセグメントです。 mysymbol1は静的シンボルテーブルから来るので、debuginfoの一部ではないので、--strip-debugの下にも取り除かれません。

+0

ありがとうございます。私はあなたが 'mysymbol1'を意味していると思うし、それはデバッグシンボルではないので、剥奪されません。 – donturner

+0

@donturnerああ、修正されました。 – yugr

関連する問題