`.bss`セクションのコンテンツを直接取得できないのはなぜですか?

テストはLinux32ビットで行われます。

このコマンドを使用して、.text .rodataおよび.dataセクション:

objdump -s -j .text elf_binary objdump -s -j .rodata elf_binary objdump -s -j .data elf_binary 

ただし、基本的にこれを使用して.bssセクションのコンテンツを取得しようとすると、常に次のエラーが発生します。

objdump -s -j .bss elf_binary objdump: section ".bss" mentioned in a -j option, but not found in any input file 

基本的に、ELFバイナリから.bssセクションのコンテンツを取得するにはどうすればよいですか?

回答

.bssにはコンテンツがありません。これは、プログラムの開始時にスペースを事前に割り当てるためのローダーへの単なるヒントです。実行時にはすべて0になり、プログラムが書き込むまで有用な情報を保持しません。その後、デバッガーを使用してメモリーをダンプし、その内容を調べることができます。

詳細については、Wikipedia ページを確認してください。 p>

回答

.bss ブロックはシンボルで開始(初期化されていないデータセグメントとも呼ばれます-bssは古いIBMチップ上の古いアセンブリ命令です)セクションにはglobal variables

初期化されていないか、0またはNULLに初期化されています。 .bssセクションは通常、プログラムの実行が開始されるまで存在しません。そのため、「コンテンツを静的に取得することはできません。このセクションはプログラムの削減に役立つことに注意してください」。 sサイズ&を使用すると、読み込みが速くなります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です