有人能用readelf
解释符号表的列吗?
发布于 2010-06-17 21:10:21
请考虑以下几点:
符号表.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
=符号名发布于 2012-07-19 16:09:08
我认为Ndx字段显示了定义该符号的节号。
执行一个readelf -a <file>
,并找出地址对应于给定符号的哪个部分。
我打赌该区段的节号将出现在Ndx字段中。
发布于 2011-06-08 13:36:36
好的,这个问题是老的,但是好的老谷歌产生它如果你是寻找可读的符号和NDX;
以下是我发现的情况:
用avr-gcc编译的C代码:
int XYZ = 123;
int ABC;
当生成的精灵文件使用
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列作为提示。但我在任何地方都没有找到文件所以我只是猜测。
你好,多明尼克
https://stackoverflow.com/questions/3065535
复制相似问题