llvm-objdump -m -D should disassemble all text segments
authorMichael Trent <mtrent@apple.com>
Tue, 15 Jan 2019 20:41:30 +0000 (20:41 +0000)
committerMichael Trent <mtrent@apple.com>
Tue, 15 Jan 2019 20:41:30 +0000 (20:41 +0000)
commit7e6602110b89c066aabeb47445f17f557974eaef
tree795d5e5e1185b0dcb8f5ec410951b7d29f743bdb
parentd6a9bbf68e2c795d0d2d7f831235ed14af978f87
llvm-objdump -m -D should disassemble all text segments

Summary:
When running llvm-objdump with the -macho option objdump will by default
disassemble only the __TEXT,__text section (or __TEXT_EXEC,__text when
disassembling MH_KEXT_BUNDLE files). The -disassemble-all option is
treated no diferently than -disassemble.

This change upates llvm-objdump's MachO parsing code to disassemble all
__text sections found in a file when -disassemble-all is specified. This
is useful for disassembling files with more than one __text section, or
when disassembling files whose __text section is not present in __TEXT.

I added a lit test case that verifies "llvm-objdump -m -d" and
"llvm-objdump -m -D" produce the expected results on a reference binary.
I also updated the CommandGuide documentation for llvm-objdump.rst and
verified it renders correctly as man and html.

rdar://42899338

Reviewers: ab, pete, lhames

Reviewed By: lhames

Subscribers: rupprecht, llvm-commits

Differential Revision: https://reviews.llvm.org/D56649

llvm-svn: 351238
llvm/docs/CommandGuide/llvm-objdump.rst
llvm/test/tools/llvm-objdump/X86/Inputs/macho-multiple-text [new file with mode: 0755]
llvm/test/tools/llvm-objdump/X86/macho-disassemble-all.test [new file with mode: 0644]
llvm/tools/llvm-objdump/MachODump.cpp