Why does objdump not show .bss, .shstratab, .symtab and .strtab sections?

自闭症网瘾萝莉.ら 提交于 2019-12-18 02:39:07

问题


I'm currently doing my own objdump implementation in C.

For my -s option, I have to show the full contents of the section of an ELF file.

I'm doing it well, but i'm showing more sections than the "real" objdump.

In fact, it does not output the .bss, .shstrtab, .symtab and .strtab sections.

I'm looking around the sh_flags value on the Shdr struct but I can't find any logic...

Why objdump -s does not shows these sections ?


回答1:


Why objdump -s does not shows these sections ?

Objdump is based on libbfd, which abstracts away many complexities of ELF, and was written when objects tended to only have three sections.

As such, objdump is quite deficient. In addition to not showing you (some) existing sections, it may also "synthesize" sections that don't exist at all, and do other weird tricks. This is more of a libbfd fault -- its abstraction layer simply doesn't tell objdump about the "missing" sections.

TL;DR: don't use objdump. Use readelf instead.




回答2:


Try using sh_size and sh_type, instead of sh_flags.

Quoting from the ELF specification

sh_size This member gives the section’s size in bytes. Unless the section type is SHT_NOBITS, the section occupies sh_size bytes in the file. A section of type SHT_NOBITS may have a non-zero size, but it occupies no space in the file



来源:https://stackoverflow.com/questions/22160621/why-does-objdump-not-show-bss-shstratab-symtab-and-strtab-sections

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!