diff options
author | Kevin Enderby <enderby@apple.com> | 2016-01-13 00:25:36 +0000 |
---|---|---|
committer | Kevin Enderby <enderby@apple.com> | 2016-01-13 00:25:36 +0000 |
commit | 0ae163f9ea00ebf413139f7e9a7456b703fa94a3 (patch) | |
tree | 945f37260b920c265bf7330d5dc5270ff0e05da3 /llvm/tools/llvm-objdump/llvm-objdump.cpp | |
parent | c3498b07db58835dd9bf193aba04a2ec30093a33 (diff) | |
download | bcm5719-llvm-0ae163f9ea00ebf413139f7e9a7456b703fa94a3.tar.gz bcm5719-llvm-0ae163f9ea00ebf413139f7e9a7456b703fa94a3.zip |
For llvm-objdump, add the option -private-header (without the trailing ’s’)
to only print the first private header.
Which for Mach-O files only prints the Mach header and not the subsequent load
commands. Which is used by scripts to match what the darwin otool(1) with the
-h flag does without the -l flag.
For non-Mach-O files it has the same functionality as -private-headers (with
the trailing ’s’).
rdar://24158331
llvm-svn: 257548
Diffstat (limited to 'llvm/tools/llvm-objdump/llvm-objdump.cpp')
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index 94022693cc2..d5ae5de4b5a 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -165,6 +165,11 @@ cl::opt<bool> llvm::PrivateHeaders("private-headers", cl::desc("Display format specific file headers")); +cl::opt<bool> +llvm::FirstPrivateHeader("private-header", + cl::desc("Display only the first format specific file " + "header")); + static cl::alias PrivateHeadersShort("p", cl::desc("Alias for --private-headers"), cl::aliasopt(PrivateHeaders)); @@ -1495,7 +1500,19 @@ static void printFaultMaps(const ObjectFile *Obj) { outs() << FMP; } -static void printPrivateFileHeader(const ObjectFile *o) { +static void printPrivateFileHeaders(const ObjectFile *o) { + if (o->isELF()) + printELFFileHeader(o); + else if (o->isCOFF()) + printCOFFFileHeader(o); + else if (o->isMachO()) { + printMachOFileHeader(o); + printMachOLoadCommands(o); + } else + report_fatal_error("Invalid/Unsupported object file format"); +} + +static void printFirstPrivateFileHeader(const ObjectFile *o) { if (o->isELF()) printELFFileHeader(o); else if (o->isCOFF()) @@ -1527,7 +1544,9 @@ static void DumpObject(const ObjectFile *o) { if (UnwindInfo) PrintUnwindInfo(o); if (PrivateHeaders) - printPrivateFileHeader(o); + printPrivateFileHeaders(o); + if (FirstPrivateHeader) + printFirstPrivateFileHeader(o); if (ExportsTrie) printExportsTrie(o); if (Rebase) @@ -1618,6 +1637,7 @@ int main(int argc, char **argv) { && !SymbolTable && !UnwindInfo && !PrivateHeaders + && !FirstPrivateHeader && !ExportsTrie && !Rebase && !Bind |