diff options
author | Dave Lee <davelee.com@gmail.com> | 2018-08-03 00:06:38 +0000 |
---|---|---|
committer | Dave Lee <davelee.com@gmail.com> | 2018-08-03 00:06:38 +0000 |
commit | 3fb120f12eb612b66208496b96b4735f43aac864 (patch) | |
tree | c83eb7491615e33b08cd9f7d1cf208e0477b86cd /llvm/tools/llvm-objdump/llvm-objdump.h | |
parent | 1ba5e9ac249fc425abe4f1be70d04960c0ce957a (diff) | |
download | bcm5719-llvm-3fb120f12eb612b66208496b96b4735f43aac864.tar.gz bcm5719-llvm-3fb120f12eb612b66208496b96b4735f43aac864.zip |
objdump: Better handling of Mach-O universal binaries
Summary:
With Mach-O, there is a flag requirement discrepancy between working with
universal binaries and thin binaries. Many flags that don't require the `-macho`
flag (for example `-private-headers` and `-disassemble`) fail to work on
universal binaries unless `-macho` is given. When this happens, the error
message is unhelpful, stating:
The file was not recognized as a valid object file.
Which can lead to confusion.
This change allows generic flags to be used on universal binaries with and
without the `-macho` flag. This means flags that can be used for thin files can
be used consistently with fat files too.
To do this, the universal binary support within `ParseInputMachO()` is extracted
into a new function. This new function is called directly from `DumpInput()`
when the input binary is universal. Additionally the `-arch` flag validation in
`ParseInputMachO()` was extracted to be reused.
Reviewers: compnerd
Reviewed By: compnerd
Subscribers: keith, llvm-commits
Differential Revision: https://reviews.llvm.org/D48702
llvm-svn: 338792
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.h')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.h b/llvm/tools/llvm-objdump/llvm-objdump.h index b2eb6e9d777..65867c25f8c 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.h +++ b/llvm/tools/llvm-objdump/llvm-objdump.h @@ -22,6 +22,7 @@ namespace object { class COFFObjectFile; class COFFImportFile; class MachOObjectFile; + class MachOUniversalBinary; class ObjectFile; class Archive; class RelocationRef; @@ -71,6 +72,7 @@ extern cl::opt<DIDumpType> DwarfDumpType; void error(std::error_code ec); bool RelocAddressLess(object::RelocationRef a, object::RelocationRef b); void ParseInputMachO(StringRef Filename); +void ParseInputMachO(object::MachOUniversalBinary *UB); void printCOFFUnwindInfo(const object::COFFObjectFile* o); void printMachOUnwindInfo(const object::MachOObjectFile* o); void printMachOExportsTrie(const object::MachOObjectFile* o); |