有人可以解释符号表中显示的列readelf
吗?
问问题
41023 次
4 回答
64
考虑以下:
符号表.symtab
包含 1203 个条目:
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
= 函数,,Object
(File
源文件名),Section
= 内存部分,Notype
= 无类型绝对符号或未定义Bind
=GLOBAL
绑定意味着符号在文件外可见。LOCAL
绑定仅在文件中可见。WEAK
就像全局一样,符号可以被覆盖。Vis
= 符号可以是默认的、受保护的、隐藏的或内部的。Ndx
= 符号所在的节号。ABS 表示绝对:不调整到任何节地址的重定位Name
= 符号名称
于 2010-06-17T21:10:21.467 回答
1
我认为 Ndx 字段显示了定义该符号的部分编号。
执行 a readelf -a <file>
,并找出地址对应于给定符号的哪个部分。
我打赌该部分的部分编号将出现在 Ndx 字段中。
于 2012-07-19T16:09:08.843 回答
1
于 2010-06-17T20:56:14.533 回答
-2
好的,这个问题很老,但是如果您正在寻找 readelf 符号表和 NDX,那么好的老 Google 会产生它;
这是我发现的:
用avr-gcc编译的C代码:
int XYZ = 123;
int ABC;
当使用分析生成的elf文件时
readelf --symbols KoreOS.elf
你得到作为输出:
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 列作为提示。但是我在任何地方都没有找到任何文档,所以我只是在猜测。
问候,多米尼克
于 2011-06-08T13:36:36.763 回答