objdump默认情况下反汇编哪个部分

LiK*_*Kao 6 linux bare-metal objdump disassembly

我目前正在构建一个可执行的裸机,它包含一些包含代码的特殊部分.但是,当我这样做时,objdump -d我只获取.text.init.text部分的代码.该联机帮助页objdump仅表示在使用该-d选项时"仅拆解那些预计包含说明的部分" .这些是哪些部分,以及如何objdump解释要解码的部分?我知道我也可以使用该-D选项来获得所有部分的完整解码,但这通常比我需要的要多得多.

hek*_*mgl 5

objdump内部用于libbfd获取部分信息.objdump传递一个回调bfd_map_over_sections()调用每个部分的回调.调用时,libbfd将a传递asection *给具有成员的回调type.如果类型包含标志,SEC_CONTENTS | SEC_CODE则在传递选项objdump时会对其进行反汇编-d.

进入libbfd是相当困难的,我希望类型检测取决于架构,但我希望我至少给了你正确的指针.(可能在有更多时间的时候我会深入研究并扩展答案)..


顺便说一句,如果您需要一个脚本来过滤掉objdump -D您可能会使用的感兴趣的部分sed,如下所示:

# ------------Place section names here ---------------vvv 
objdump -D object.o | sed -rn '/Disassembly of.*\.(comment|text)/{:a;p;n;/Disassembly of/!ba}'
Run Code Online (Sandbox Code Playgroud)