readelf显示的符号表各列的含义是什么?
有人可以使用 readelf
解释符号表中显示的列吗?
Could someone explain the columns shown of the symbol table using readelf
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有人可以使用 readelf
解释符号表中显示的列吗?
Could someone explain the columns shown of the symbol table using readelf
?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
请考虑以下情况:
符号表
.symtab
包含 1203 个条目:Num:
= 符号编号Value
= 符号的地址Size
= 符号的大小Type
= 符号类型:Func
= 函数、对象
、文件
(源文件名),Section
= 内存部分,Notype
= 无类型绝对符号或未定义Bind
=GLOBAL
绑定表示该符号在文件外部可见。LOCAL
绑定仅在文件中可见。WEAK
就像全局一样,该符号可以被覆盖。Vis
= 符号可以是默认的、受保护的、隐藏的或内部的。Ndx
= 符号所在的节号。ABS 表示绝对:不调整任何节地址的重定位Name
= 符号名称Consider the following:
Symbol table
.symtab
contains 1203 entries:Num:
= The symbol numberValue
= The address of the SymbolSize
= The size of the symbolType
= symbol type:Func
= Function,Object
,File
(source file name),Section
= memory section,Notype
= untyped absolute symbol or undefinedBind
=GLOBAL
binding means the symbol is visible outside the file.LOCAL
binding is visible only in the file.WEAK
is like global, the symbol can be overridden.Vis
= Symbols can be default, protected, hidden or internal.Ndx
= The section number the symbol is in. ABS means absolute: not adjusted to any section address's relocationName
= symbol name我认为 Ndx 字段显示定义该符号的节号。
执行
readelf -a
,并找出给定符号的地址对应于哪个部分。我敢打赌该部分的部分编号将出现在 Ndx 字段中。
I think Ndx field shows the section number where that symbol is defined.
Do a
readelf -a <file>
, and find out which section the address corresponds to for a given symbol.I bet the section number of that section will appear in Ndx field.
好吧,这个问题很老了,但是如果你正在寻找 readelf symboltable 和 NDX,那么老好的 Google 会给出它;
以下是我发现的内容:
使用avr-gcc 编译的 C 代码:
分析生成的 elf 文件时
当使用您获取的输出
:我使用 NDX 列作为变量是否已初始化的提示。但我在任何地方都没有找到任何文档,所以我只是猜测。
问候,
多米尼克
Ok this question is old, but good old Google yields it if you are looking for readelf symboltable and NDX;
Here is what I found out:
The C code compiled with avr-gcc:
when the generated elf file is analyzed using
you get as output:
I use the NDX column as hint if the variable is initialized or not. But I found no documentation anywhere so I'm just guessing.
greetings,
Dominik
您可以:
或者查看这些教程:
使用 readelf 和 objdump 了解 ELF。(编辑:链接已删除;linuxforums.org 已被黑客攻击)You can either:
or look at these tutorials:
Understanding ELF using readelf and objdump.(Edit: link removed; linuxforums.org has been hacked)