I am currently building a bare metal executeable, which contains some special sections containing code. However, when I do objdump -d I only get the code for the .text and .init.text sections. The manpage for objdump only says that it "only disassembles those sections which are expected to contain instructions" when using the -d option. What sections are these, and how does objdump tell which sections to decode? I know I can also use the -D option to get a full decoding of all sections, but this is usually much more than I need.
Disassembling an ELF-formatted fileUse the --disassemble option to display a disassembled version of the image to stdout . If you use this option with the --output destination option, you can reassemble the output file with armasm. You can use this option to disassemble either an ELF image or an ELF object file.
objdump is a command-line program for displaying various information about object files on Unix-like operating systems. For instance, it can be used as a disassembler to view an executable in assembly form. It is part of the GNU Binutils for fine-grained control over executables and other binary data.
The DISASM command attempts to disassemble code from a given start address.
In programming terminology, to disassemble is to convert a program in its executable (ready-to-run) form (sometimes called object code ) into a representation in some form of assembler language so that it is readable by a human.
objdump internally uses libbfd to get section information. objdump passes a callback to bfd_map_over_sections() which calls the callback on each section. When called, libbfd passes a asection * to the callback, which has a member type. If the type contains the flags SEC_CONTENTS | SEC_CODE it gets disassembled by objdump when the -d option is passed.
Getting into libbfd is quite harder, I expect that the type detection depends on architecture, but I hope I gave you at least the right pointer. (Probably when having more time I'll dig more into this and extend the answer)..
Btw, if you need a script to filter out the sections of interest from objdump -D you might use sed, like this:
# ------------Place section names here ---------------vvv
objdump -D object.o | sed -rn '/Disassembly of.*\.(comment|text)/{:a;p;n;/Disassembly of/!ba}'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With