我用 gcc 编译了一个简单的程序,如果我看到使用 objdump 的部分标题,它不会显示部分.symtab
。对于同一个a.out
文件,readelf 显示以下部分:
[25] .symtab SYMTAB 00000000 000ca4 000480 10 26 2c 4
[26] .strtab STRTAB 00000000 001124 00025c 00 0 0 1
为什么?
在默认链接器脚本中,我没有找到.symtab
节的定义。如果我像在链接器脚本中那样自己添加定义:
....
PROVIDE(__start_sym)
.symtab : { *(.symtab)}
PROVIDE(__end_sym)
....
__start_sym
和的地址的 b/w 差__end_sym
为零,这意味着输出文件中没有添加这样的部分。
但是 readelf 能够读取该部分并转储该部分的内容..如何?为什么 ?