3

Linux カーネルがあり、objcopy ツールを使用して ELF ヘッダーを生成しようとしています。以下は最初のステップです。

     objcopy -I binary -B i386 -O elf32-i386 --rename-section .data=.text linux_kernel.bin  main.o

そして、この後、 readelf -s main.o を使用してシンボルテーブルを読みたかったのですが、奇妙なシンボルが得られ、以下が出力されます

   Symbol table '.symtab' contains 5 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
 0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND 
 1: 00000000     0 SECTION LOCAL  DEFAULT    1 
 2: 00000000     0 NOTYPE  GLOBAL DEFAULT    1 _binary_linux_kernel_bin_
 3: 004df650     0 NOTYPE  GLOBAL DEFAULT    1 _binary_linux_kernel_bin_
 4: 004df650     0 NOTYPE  GLOBAL DEFAULT  ABS _binary_linux_kernel_bin_

次のような記号が表示されるはずです

_binary_linux_kernel_bin_start
_binary_linux_kernel_bin__end
_binary_linux_kernel_bin_size

どこが間違っているのか教えてもらえますか?? それとも期待されていますか??

以下のようなことをしなければならないので、なぜ適切なシンボルを見たかったのか

 --entry_point=_binary_linux_kernel_bin_start
4

2 に答える 2

10

出力を 80 文字幅に切り捨てないように指示するreadelf -W -s main.oコマンドを使用できます。-Wreadelf

于 2013-03-12T17:02:20.830 に答える
4

文字列が長すぎてreadelf切り詰められているだけです。試してみてくださいobjdump -x main.o

于 2013-03-12T16:54:48.267 に答える