【发布时间】:2014-04-05 07:39:35
【问题描述】:
我目前正在用 C 语言实现自己的 objdump。
对于我的 -s 选项,我必须显示 ELF 文件部分的全部内容。
我做得很好,但我显示的部分比“真正的”objdump 多。
实际上,它不会输出 .bss、.shstrtab、.symtab 和 .strtab 部分。
我正在查看 Shdr 结构上的 sh_flags 值,但找不到任何逻辑...
为什么 objdump -s 不显示这些部分?
【问题讨论】:
-
ELF 相当复杂,GNU
objdump基于 BFD,这是一个负责繁重工作的库(binutils 的一部分)。 -
是的,我知道 BFD 库。在苹果开源上,我可以看到
(section->flags & SEC_HAS_CONTENTS)显示或不显示该部分。在我的计算机上,.bss 与显示的其他部分具有相同的标志。