首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由readelf显示的符号表的列的含义是什么?

由readelf显示的符号表的列的含义是什么?
EN

Stack Overflow用户
提问于 2010-06-17 20:50:36
回答 3查看 44.9K关注 0票数 62

有人能用readelf解释符号表的列吗?

EN

回答 3

Stack Overflow用户

发布于 2010-06-17 21:10:21

请考虑以下几点:

符号表.symtab包含1203个条目:

代码语言:javascript
运行
复制
 Num:    Value  Size Type    Bind   Vis      Ndx Name
 310: a0008120     0 NOTYPE  GLOBAL DEFAULT  ABS _gp  
 734: a0000010    32 OBJECT  GLOBAL DEFAULT   77 v 
 818: 9d000018   496 FUNC    GLOBAL DEFAULT   71 main 
 849: a0000124     4 OBJECT  GLOBAL DEFAULT   78 phrase 
 955: a0000000     9 OBJECT  GLOBAL DEFAULT   77 peppers  
1020: a000023c   192 OBJECT  GLOBAL DEFAULT   80 bins
  • Num: =符号数
  • Value =符号的地址
  • Size =符号的大小
  • Type =符号类型:Func =函数、ObjectFile (源文件名)、Section =内存部分、Notype =非类型绝对符号或未定义的符号
  • Bind = GLOBAL绑定意味着符号在文件之外可见。LOCAL绑定仅在文件中可见。WEAK就像全局的,符号可以被覆盖。
  • Vis =符号可以是默认的、受保护的、隐藏的或内部的。
  • Ndx =符号所在的节号。ABS的意思是绝对的:不根据任何区段地址的重新定位进行调整
  • Name =符号名
票数 69
EN

Stack Overflow用户

发布于 2012-07-19 16:09:08

我认为Ndx字段显示了定义该符号的节号。

执行一个readelf -a <file>,并找出地址对应于给定符号的哪个部分。

我打赌该区段的节号将出现在Ndx字段中。

票数 0
EN

Stack Overflow用户

发布于 2011-06-08 13:36:36

好的,这个问题是老的,但是好的老谷歌产生它如果你是寻找可读的符号和NDX;

以下是我发现的情况:

用avr-gcc编译的C代码:

代码语言:javascript
运行
复制
int XYZ = 123;
int ABC;

当生成的精灵文件使用

代码语言:javascript
运行
复制
readelf --symbols KoreOS.elf

您得到的输出:

代码语言:javascript
运行
复制
Num:    Value  Size Type    Bind   Vis      Ndx Name
...
148: 0080200b     2 OBJECT  GLOBAL DEFAULT    2 XYZ
...
258: 00803878     2 OBJECT  GLOBAL DEFAULT    3 ABC
...

如果变量是否已初始化,则使用NDX列作为提示。但我在任何地方都没有找到文件所以我只是猜测。

你好,多明尼克

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

https://stackoverflow.com/questions/3065535

复制
相关文章

相似问题

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