我有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发布于 2013-03-13 00:54:48
原因很简单,字符串太长,readelf正在截断。试试objdump -x main.o。
发布于 2013-03-13 01:02:21
您可以使用readelf -W -s main.o命令,其中-W告诉readelf不要将输出截断为80个字符的宽度。
https://stackoverflow.com/questions/15362297
复制相似问题