首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在运行readelf -s时得到以下输出

为什么我在运行readelf -s时得到以下输出
EN

Stack Overflow用户
提问于 2013-03-12 21:13:55
回答 2查看 1.9K关注 0票数 3

我有Linux内核,正在尝试使用objcopy工具在上面生成ELF头文件,下面是第一步

代码语言:javascript
复制
     objcopy -I binary -B i386 -O elf32-i386 --rename-section .data=.text linux_kernel.bin  main.o

然后我想用readelf -s main.o读取符号表,但是得到了奇怪的符号,下面是输出

代码语言:javascript
复制
   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_

现在应该能够看到像这样的符号

代码语言:javascript
复制
_binary_linux_kernel_bin_start
_binary_linux_kernel_bin__end
_binary_linux_kernel_bin_size

有人能让我知道我哪里做错了吗?或者它是期望的??

为什么我想要看到正确的符号,因为我必须做一些类似下面的事情

代码语言:javascript
复制
 --entry_point=_binary_linux_kernel_bin_start
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-13 00:54:48

原因很简单,字符串太长,readelf正在截断。试试objdump -x main.o

票数 4
EN

Stack Overflow用户

发布于 2013-03-13 01:02:21

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

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15362297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档