我目前正在C中执行自己的objdump实现.
对于我的-s选项,我必须显示ELF文件部分的全部内容.
我做得很好,但我显示的部分比"真正的"objdump更多.
实际上,它不会输出.bss,.shstrtab,.symtab和.strtab部分.
我正在环顾Shdr结构上的sh_flags值,但我找不到任何逻辑......
为什么objdump -s没有显示这些部分?
为什么objdump -s没有显示这些部分?
Objdump基于libbfd,它抽象出ELF的许多复杂性,并且当对象倾向于只有三个部分时编写.
因此,objdump非常缺乏.除了不显示(某些)现有部分之外,它还可以"合成"根本不存在的部分,并执行其他奇怪的技巧.这更像是一个libbfd错误 - 它的抽象层根本不告诉objdump关于"缺失"的部分.
TL; DR:不要使用objdump.请readelf改用.