我目前正在用c语言实现自己的objdump。
对于我的-s选项,我必须显示一个elf文件部分的全部内容。
我做得很好,但是我展示的部分比“真正的”对象还多。
实际上,它不输出.bss、.shstrtab、.symtab和.strtab节。
我正在查看shdr结构上的sh_flags值,但找不到任何逻辑…
为什么objdump-s不显示这些部分?

最佳答案

为什么objdump-s不显示这些部分?
ObjDIP是基于libbfd,它抽象了ELF的许多复杂性,并且在对象仅具有三个部分时被写入。
因此,objdump是相当缺乏的。除了不给你(一些)现有的部分,它也可以“合成”部分根本不存在,并做其他奇怪的把戏。这更像是一个libbfd错误——它的抽象层根本没有告诉objdump“丢失”的部分。
tl;dr:不要使用objdump。改为使用readelf

关于c - 为什么objdump不显示.bss,.shstratab,.symtab和.strtab节?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22160621/

10-11 20:57