为什么我在运行readelf -s时获得此输出

时间:2013-03-12 13:13:55

标签: linux-kernel elf objcopy

我有Linux内核并尝试使用objcopy工具生成ELF Header, 以下是第一步

     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

2 个答案:

答案 0 :(得分:9)

您可以使用readelf -W -s main.o命令,-W告诉readelf不要将输出截断为80个字符的宽度。

答案 1 :(得分:2)

只是字符串太长而readelf正在截断。试试objdump -x main.o