From 24f35eb0fc0b57445b0dfa369688d0964cbf3a86 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Mon, 15 Apr 2019 15:00:10 +0000 Subject: [PATCH] [llvm-objdump] Reorganize cl::opt variables and move Mach-O specifics to MachODump.cpp git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358415 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-objdump/MachODump.cpp | 148 ++++++++--- tools/llvm-objdump/llvm-objdump.cpp | 392 ++++++++++++---------------- tools/llvm-objdump/llvm-objdump.h | 38 --- 3 files changed, 284 insertions(+), 294 deletions(-) diff --git a/tools/llvm-objdump/MachODump.cpp b/tools/llvm-objdump/MachODump.cpp index bbee17b9587..6577b3ab7fd 100644 --- a/tools/llvm-objdump/MachODump.cpp +++ b/tools/llvm-objdump/MachODump.cpp @@ -58,6 +58,44 @@ extern "C" { using namespace llvm; using namespace object; +namespace llvm { + +extern cl::opt ArchiveHeaders; +extern cl::opt Disassemble; +extern cl::opt DisassembleAll; +extern cl::opt DwarfDumpType; +extern cl::list FilterSections; +extern cl::list MAttrs; +extern cl::opt MCPU; +extern cl::opt NoShowRawInsn; +extern cl::opt NoLeadingAddr; +extern cl::opt PrintImmHex; +extern cl::opt PrivateHeaders; +extern cl::opt Relocations; +extern cl::opt SectionHeaders; +extern cl::opt SectionContents; +extern cl::opt SymbolTable; +extern cl::opt TripleName; +extern cl::opt UnwindInfo; + +cl::opt + FirstPrivateHeader("private-header", + cl::desc("Display only the first format specific file " + "header")); + +cl::opt ExportsTrie("exports-trie", + cl::desc("Display mach-o exported symbols")); + +cl::opt Rebase("rebase", cl::desc("Display mach-o rebasing info")); + +cl::opt Bind("bind", cl::desc("Display mach-o binding info")); + +cl::opt LazyBind("lazy-bind", + cl::desc("Display mach-o lazy binding info")); + +cl::opt WeakBind("weak-bind", + cl::desc("Display mach-o weak binding info")); + static cl::opt UseDbg("g", cl::Grouping, cl::desc("Print line information from debug info if available")); @@ -71,9 +109,9 @@ static cl::opt FullLeadingAddr("full-leading-addr", static cl::opt NoLeadingHeaders("no-leading-headers", cl::desc("Print no leading headers")); -cl::opt llvm::UniversalHeaders("universal-headers", - cl::desc("Print Mach-O universal headers " - "(requires -macho)")); +cl::opt UniversalHeaders("universal-headers", + cl::desc("Print Mach-O universal headers " + "(requires -macho)")); cl::opt ArchiveMemberOffsets("archive-member-offsets", @@ -81,47 +119,43 @@ cl::opt "Mach-O archives (requires -macho and " "-archive-headers)")); -cl::opt - llvm::IndirectSymbols("indirect-symbols", - cl::desc("Print indirect symbol table for Mach-O " - "objects (requires -macho)")); +cl::opt IndirectSymbols("indirect-symbols", + cl::desc("Print indirect symbol table for Mach-O " + "objects (requires -macho)")); cl::opt - llvm::DataInCode("data-in-code", - cl::desc("Print the data in code table for Mach-O objects " - "(requires -macho)")); + DataInCode("data-in-code", + cl::desc("Print the data in code table for Mach-O objects " + "(requires -macho)")); -cl::opt - llvm::LinkOptHints("link-opt-hints", - cl::desc("Print the linker optimization hints for " - "Mach-O objects (requires -macho)")); +cl::opt LinkOptHints("link-opt-hints", + cl::desc("Print the linker optimization hints for " + "Mach-O objects (requires -macho)")); -cl::opt - llvm::InfoPlist("info-plist", - cl::desc("Print the info plist section as strings for " - "Mach-O objects (requires -macho)")); +cl::opt InfoPlist("info-plist", + cl::desc("Print the info plist section as strings for " + "Mach-O objects (requires -macho)")); -cl::opt - llvm::DylibsUsed("dylibs-used", - cl::desc("Print the shared libraries used for linked " - "Mach-O files (requires -macho)")); +cl::opt DylibsUsed("dylibs-used", + cl::desc("Print the shared libraries used for linked " + "Mach-O files (requires -macho)")); cl::opt - llvm::DylibId("dylib-id", - cl::desc("Print the shared library's id for the dylib Mach-O " - "file (requires -macho)")); + DylibId("dylib-id", + cl::desc("Print the shared library's id for the dylib Mach-O " + "file (requires -macho)")); cl::opt - llvm::NonVerbose("non-verbose", - cl::desc("Print the info for Mach-O objects in " - "non-verbose or numeric form (requires -macho)")); + NonVerbose("non-verbose", + cl::desc("Print the info for Mach-O objects in " + "non-verbose or numeric form (requires -macho)")); cl::opt - llvm::ObjcMetaData("objc-meta-data", - cl::desc("Print the Objective-C runtime meta data for " - "Mach-O files (requires -macho)")); + ObjcMetaData("objc-meta-data", + cl::desc("Print the Objective-C runtime meta data for " + "Mach-O files (requires -macho)")); -cl::opt llvm::DisSymName( +cl::opt DisSymName( "dis-symname", cl::desc("disassemble just this symbol's instructions (requires -macho)")); @@ -132,6 +166,7 @@ static cl::opt NoSymbolicOperands( static cl::list ArchFlags("arch", cl::desc("architecture(s) from a Mach-O file to dump"), cl::ZeroOrMore); +} // namespace llvm bool ArchAll = false; @@ -10216,3 +10251,52 @@ static const char *get_dyld_bind_info_symbolname(uint64_t ReferenceValue, return !name.empty() ? name.data() : nullptr; } +void llvm::printLazyBindTable(ObjectFile *o) { + outs() << "Lazy bind table:\n"; + if (MachOObjectFile *MachO = dyn_cast(o)) + printMachOLazyBindTable(MachO); + else + WithColor::error() + << "This operation is only currently supported " + "for Mach-O executable files.\n"; +} + +void llvm::printWeakBindTable(ObjectFile *o) { + outs() << "Weak bind table:\n"; + if (MachOObjectFile *MachO = dyn_cast(o)) + printMachOWeakBindTable(MachO); + else + WithColor::error() + << "This operation is only currently supported " + "for Mach-O executable files.\n"; +} + +void llvm::printExportsTrie(const ObjectFile *o) { + outs() << "Exports trie:\n"; + if (const MachOObjectFile *MachO = dyn_cast(o)) + printMachOExportsTrie(MachO); + else + WithColor::error() + << "This operation is only currently supported " + "for Mach-O executable files.\n"; +} + +void llvm::printRebaseTable(ObjectFile *o) { + outs() << "Rebase table:\n"; + if (MachOObjectFile *MachO = dyn_cast(o)) + printMachORebaseTable(MachO); + else + WithColor::error() + << "This operation is only currently supported " + "for Mach-O executable files.\n"; +} + +void llvm::printBindTable(ObjectFile *o) { + outs() << "Bind table:\n"; + if (MachOObjectFile *MachO = dyn_cast(o)) + printMachOBindTable(MachO); + else + WithColor::error() + << "This operation is only currently supported " + "for Mach-O executable files.\n"; +} diff --git a/tools/llvm-objdump/llvm-objdump.cpp b/tools/llvm-objdump/llvm-objdump.cpp index 0722db07b6b..f81238e5e18 100644 --- a/tools/llvm-objdump/llvm-objdump.cpp +++ b/tools/llvm-objdump/llvm-objdump.cpp @@ -70,93 +70,131 @@ using namespace llvm; using namespace object; -cl::opt AdjustVMA( +namespace llvm { + +// MachO specific +extern cl::opt Bind; +extern cl::opt DataInCode; +extern cl::opt DylibsUsed; +extern cl::opt DylibId; +extern cl::opt ExportsTrie; +extern cl::opt FirstPrivateHeader; +extern cl::opt IndirectSymbols; +extern cl::opt InfoPlist; +extern cl::opt LazyBind; +extern cl::opt LinkOptHints; +extern cl::opt ObjcMetaData; +extern cl::opt Rebase; +extern cl::opt UniversalHeaders; +extern cl::opt WeakBind; + +static cl::opt AdjustVMA( "adjust-vma", cl::desc("Increase the displayed address by the specified offset"), cl::value_desc("offset"), cl::init(0)); -cl::opt - llvm::AllHeaders("all-headers", - cl::desc("Display all available header information")); +static cl::opt + AllHeaders("all-headers", + cl::desc("Display all available header information")); static cl::alias AllHeadersShort("x", cl::desc("Alias for --all-headers"), cl::NotHidden, cl::Grouping, cl::aliasopt(AllHeaders)); -static cl::list -InputFilenames(cl::Positional, cl::desc(""),cl::ZeroOrMore); - -cl::opt -llvm::Disassemble("disassemble", - cl::desc("Display assembler mnemonics for the machine instructions")); -static cl::alias Disassembled("d", cl::desc("Alias for --disassemble"), - cl::NotHidden, cl::Grouping, - cl::aliasopt(Disassemble)); +static cl::opt + ArchName("arch-name", cl::desc("Target arch to disassemble for, " + "see -version for available targets")); -cl::opt -llvm::DisassembleAll("disassemble-all", - cl::desc("Display assembler mnemonics for the machine instructions")); -static cl::alias DisassembleAlld("D", cl::desc("Alias for --disassemble-all"), - cl::NotHidden, cl::Grouping, - cl::aliasopt(DisassembleAll)); - -cl::opt llvm::Demangle("demangle", cl::desc("Demangle symbols names"), - cl::init(false)); +cl::opt ArchiveHeaders("archive-headers", + cl::desc("Display archive header information")); +static cl::alias ArchiveHeadersShort("a", + cl::desc("Alias for --archive-headers"), + cl::NotHidden, cl::Grouping, + cl::aliasopt(ArchiveHeaders)); +cl::opt Demangle("demangle", cl::desc("Demangle symbols names"), + cl::init(false)); static cl::alias DemangleShort("C", cl::desc("Alias for --demangle"), cl::NotHidden, cl::Grouping, - cl::aliasopt(llvm::Demangle)); + cl::aliasopt(Demangle)); + +cl::opt Disassemble( + "disassemble", + cl::desc("Display assembler mnemonics for the machine instructions")); +static cl::alias DisassembleShort("d", cl::desc("Alias for --disassemble"), + cl::NotHidden, cl::Grouping, + cl::aliasopt(Disassemble)); + +cl::opt DisassembleAll( + "disassemble-all", + cl::desc("Display assembler mnemonics for the machine instructions")); +static cl::alias DisassembleAllShort("D", + cl::desc("Alias for --disassemble-all"), + cl::NotHidden, cl::Grouping, + cl::aliasopt(DisassembleAll)); static cl::list DisassembleFunctions("disassemble-functions", cl::CommaSeparated, cl::desc("List of functions to disassemble")); -static StringSet<> DisasmFuncsSet; -cl::opt -llvm::Relocations("reloc", - cl::desc("Display the relocation entries in the file")); -static cl::alias RelocationsShort("r", cl::desc("Alias for --reloc"), - cl::NotHidden, cl::Grouping, - cl::aliasopt(llvm::Relocations)); +static cl::opt DisassembleZeroes( + "disassemble-zeroes", + cl::desc("Do not skip blocks of zeroes when disassembling")); +static cl::alias + DisassembleZeroesShort("z", cl::desc("Alias for --disassemble-zeroes"), + cl::NotHidden, cl::Grouping, + cl::aliasopt(DisassembleZeroes)); -cl::opt -llvm::DynamicRelocations("dynamic-reloc", - cl::desc("Display the dynamic relocation entries in the file")); -static cl::alias DynamicRelocationsd("R", cl::desc("Alias for --dynamic-reloc"), - cl::NotHidden, cl::Grouping, - cl::aliasopt(DynamicRelocations)); +static cl::list + DisassemblerOptions("disassembler-options", + cl::desc("Pass target specific disassembler options"), + cl::value_desc("options"), cl::CommaSeparated); +static cl::alias + DisassemblerOptionsShort("M", cl::desc("Alias for --disassembler-options"), + cl::NotHidden, cl::Grouping, cl::Prefix, + cl::CommaSeparated, + cl::aliasopt(DisassemblerOptions)); -cl::opt - llvm::SectionContents("full-contents", - cl::desc("Display the content of each section")); -static cl::alias SectionContentsShort("s", - cl::desc("Alias for --full-contents"), - cl::NotHidden, cl::Grouping, - cl::aliasopt(SectionContents)); +cl::opt DwarfDumpType( + "dwarf", cl::init(DIDT_Null), cl::desc("Dump of dwarf debug sections:"), + cl::values(clEnumValN(DIDT_DebugFrame, "frames", ".debug_frame"))); -cl::opt llvm::SymbolTable("syms", cl::desc("Display the symbol table")); -static cl::alias SymbolTableShort("t", cl::desc("Alias for --syms"), - cl::NotHidden, cl::Grouping, - cl::aliasopt(llvm::SymbolTable)); +static cl::opt DynamicRelocations( + "dynamic-reloc", + cl::desc("Display the dynamic relocation entries in the file")); +static cl::alias DynamicRelocationShort("R", + cl::desc("Alias for --dynamic-reloc"), + cl::NotHidden, cl::Grouping, + cl::aliasopt(DynamicRelocations)); -cl::opt -llvm::ExportsTrie("exports-trie", cl::desc("Display mach-o exported symbols")); - -cl::opt -llvm::Rebase("rebase", cl::desc("Display mach-o rebasing info")); +static cl::opt + FaultMapSection("fault-map-section", + cl::desc("Display contents of faultmap section")); -cl::opt -llvm::Bind("bind", cl::desc("Display mach-o binding info")); +static cl::opt + FileHeaders("file-headers", + cl::desc("Display the contents of the overall file header")); +static cl::alias FileHeadersShort("f", cl::desc("Alias for --file-headers"), + cl::NotHidden, cl::Grouping, + cl::aliasopt(FileHeaders)); -cl::opt -llvm::LazyBind("lazy-bind", cl::desc("Display mach-o lazy binding info")); +cl::opt SectionContents("full-contents", + cl::desc("Display the content of each section")); +static cl::alias SectionContentsShort("s", + cl::desc("Alias for --full-contents"), + cl::NotHidden, cl::Grouping, + cl::aliasopt(SectionContents)); -cl::opt -llvm::WeakBind("weak-bind", cl::desc("Display mach-o weak binding info")); +static cl::list +InputFilenames(cl::Positional, cl::desc(""),cl::ZeroOrMore); -cl::opt -llvm::RawClangAST("raw-clang-ast", - cl::desc("Dump the raw binary contents of the clang AST section")); +static cl::opt + PrintLines("line-numbers", + cl::desc("Display source line numbers with " + "disassembly. Implies disassemble object")); +static cl::alias PrintLinesShort("l", cl::desc("Alias for --line-numbers"), + cl::NotHidden, cl::Grouping, + cl::aliasopt(PrintLines)); static cl::opt MachOOpt("macho", cl::desc("Use MachO specific object file parser")); @@ -164,22 +202,55 @@ static cl::alias MachOm("m", cl::desc("Alias for --macho"), cl::NotHidden, cl::Grouping, cl::aliasopt(MachOOpt)); cl::opt -llvm::TripleName("triple", cl::desc("Target triple to disassemble for, " - "see -version for available targets")); + MCPU("mcpu", + cl::desc("Target a specific cpu type (-mcpu=help for details)"), + cl::value_desc("cpu-name"), cl::init("")); + +cl::list MAttrs("mattr", cl::CommaSeparated, + cl::desc("Target specific attributes"), + cl::value_desc("a1,+a2,-a3,...")); + +cl::opt NoShowRawInsn("no-show-raw-insn", + cl::desc("When disassembling " + "instructions, do not print " + "the instruction bytes.")); +cl::opt NoLeadingAddr("no-leading-addr", + cl::desc("Print no leading address")); + +static cl::opt RawClangAST( + "raw-clang-ast", + cl::desc("Dump the raw binary contents of the clang AST section")); -cl::opt -llvm::MCPU("mcpu", - cl::desc("Target a specific cpu type (-mcpu=help for details)"), - cl::value_desc("cpu-name"), - cl::init("")); +cl::opt + Relocations("reloc", + cl::desc("Display the relocation entries in the file")); +static cl::alias RelocationsShort("r", cl::desc("Alias for --reloc"), + cl::NotHidden, cl::Grouping, + cl::aliasopt(Relocations)); -cl::opt -llvm::ArchName("arch-name", cl::desc("Target arch to disassemble for, " - "see -version for available targets")); +cl::opt + PrintImmHex("print-imm-hex", + cl::desc("Use hex format for immediate values")); cl::opt -llvm::SectionHeaders("section-headers", cl::desc("Display summaries of the " - "headers for each section.")); + PrivateHeaders("private-headers", + cl::desc("Display format specific file headers")); +static cl::alias PrivateHeadersShort("p", + cl::desc("Alias for --private-headers"), + cl::NotHidden, cl::Grouping, + cl::aliasopt(PrivateHeaders)); + +cl::list + FilterSections("section", + cl::desc("Operate on the specified sections only. " + "With -macho dump segment,section")); +static cl::alias FilterSectionsj("j", cl::desc("Alias for --section"), + cl::NotHidden, cl::Grouping, cl::Prefix, + cl::aliasopt(FilterSections)); + +cl::opt SectionHeaders("section-headers", + cl::desc("Display summaries of the " + "headers for each section.")); static cl::alias SectionHeadersShort("headers", cl::desc("Alias for --section-headers"), cl::NotHidden, @@ -193,120 +264,43 @@ static cl::opt ShowLMA("show-lma", cl::desc("Display LMA column when dumping ELF section headers")); -cl::list -llvm::FilterSections("section", cl::desc("Operate on the specified sections only. " - "With -macho dump segment,section")); -cl::alias static FilterSectionsj("j", cl::desc("Alias for --section"), - cl::NotHidden, cl::Grouping, cl::Prefix, - cl::aliasopt(llvm::FilterSections)); - -cl::list -llvm::MAttrs("mattr", - cl::CommaSeparated, - cl::desc("Target specific attributes"), - cl::value_desc("a1,+a2,-a3,...")); - -cl::opt -llvm::NoShowRawInsn("no-show-raw-insn", cl::desc("When disassembling " - "instructions, do not print " - "the instruction bytes.")); -cl::opt -llvm::NoLeadingAddr("no-leading-addr", cl::desc("Print no leading address")); - -cl::opt -llvm::UnwindInfo("unwind-info", cl::desc("Display unwind information")); - -static cl::alias UnwindInfoShort("u", cl::desc("Alias for --unwind-info"), - cl::NotHidden, cl::Grouping, - cl::aliasopt(UnwindInfo)); - -cl::opt -llvm::PrivateHeaders("private-headers", - cl::desc("Display format specific file headers")); - -cl::opt -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::NotHidden, cl::Grouping, - cl::aliasopt(PrivateHeaders)); - -cl::opt llvm::FileHeaders( - "file-headers", - cl::desc("Display the contents of the overall file header")); - -static cl::alias FileHeadersShort("f", cl::desc("Alias for --file-headers"), - cl::NotHidden, cl::Grouping, - cl::aliasopt(FileHeaders)); - -cl::opt - llvm::ArchiveHeaders("archive-headers", - cl::desc("Display archive header information")); - -cl::alias ArchiveHeadersShort("a", cl::desc("Alias for --archive-headers"), - cl::NotHidden, cl::Grouping, - cl::aliasopt(ArchiveHeaders)); - -cl::opt - llvm::PrintImmHex("print-imm-hex", - cl::desc("Use hex format for immediate values")); - -cl::opt PrintFaultMaps("fault-map-section", - cl::desc("Display contents of faultmap section")); - -cl::opt llvm::DwarfDumpType( - "dwarf", cl::init(DIDT_Null), cl::desc("Dump of dwarf debug sections:"), - cl::values(clEnumValN(DIDT_DebugFrame, "frames", ".debug_frame"))); - -cl::opt PrintSource( +static cl::opt PrintSource( "source", cl::desc( "Display source inlined with disassembly. Implies disassemble object")); +static cl::alias PrintSourceShort("S", cl::desc("Alias for -source"), + cl::NotHidden, cl::Grouping, + cl::aliasopt(PrintSource)); -cl::alias PrintSourceShort("S", cl::desc("Alias for -source"), cl::NotHidden, - cl::Grouping, cl::aliasopt(PrintSource)); - -cl::opt PrintLines("line-numbers", - cl::desc("Display source line numbers with " - "disassembly. Implies disassemble object")); - -cl::alias PrintLinesShort("l", cl::desc("Alias for -line-numbers"), - cl::NotHidden, cl::Grouping, - cl::aliasopt(PrintLines)); - -cl::opt +static cl::opt StartAddress("start-address", cl::desc("Disassemble beginning at address"), cl::value_desc("address"), cl::init(0)); -cl::opt - StopAddress("stop-address", - cl::desc("Stop disassembly at address"), +static cl::opt + StopAddress("stop-address", cl::desc("Stop disassembly at address"), cl::value_desc("address"), cl::init(UINT64_MAX)); -cl::opt DisassembleZeroes( - "disassemble-zeroes", - cl::desc("Do not skip blocks of zeroes when disassembling")); -cl::alias DisassembleZeroesShort("z", - cl::desc("Alias for --disassemble-zeroes"), +cl::opt SymbolTable("syms", cl::desc("Display the symbol table")); +static cl::alias SymbolTableShort("t", cl::desc("Alias for --syms"), + cl::NotHidden, cl::Grouping, + cl::aliasopt(SymbolTable)); + +cl::opt TripleName("triple", + cl::desc("Target triple to disassemble for, " + "see -version for available targets")); + +cl::opt UnwindInfo("unwind-info", + cl::desc("Display unwind information")); +static cl::alias UnwindInfoShort("u", cl::desc("Alias for --unwind-info"), cl::NotHidden, cl::Grouping, - cl::aliasopt(DisassembleZeroes)); + cl::aliasopt(UnwindInfo)); -static cl::list - DisassemblerOptions("disassembler-options", - cl::desc("Pass target specific disassembler options"), - cl::value_desc("options"), cl::CommaSeparated); -static cl::alias - DisassemblerOptionsShort("M", cl::desc("Alias for --disassembler-options"), - cl::NotHidden, cl::Grouping, cl::Prefix, - cl::CommaSeparated, - cl::aliasopt(DisassemblerOptions)); static cl::opt Wide("wide", cl::desc("Ignored for compatibility with GNU objdump")); static cl::alias WideShort("w", cl::Grouping, cl::aliasopt(Wide)); +} // namespace llvm +static StringSet<> DisasmFuncsSet; static StringRef ToolName; typedef std::vector> SectionSymbolsTy; @@ -1728,56 +1722,6 @@ static void printUnwindInfo(const ObjectFile *O) { "for COFF and MachO object files.\n"; } -void llvm::printExportsTrie(const ObjectFile *o) { - outs() << "Exports trie:\n"; - if (const MachOObjectFile *MachO = dyn_cast(o)) - printMachOExportsTrie(MachO); - else - WithColor::error(errs(), ToolName) - << "This operation is only currently supported " - "for Mach-O executable files.\n"; -} - -void llvm::printRebaseTable(ObjectFile *o) { - outs() << "Rebase table:\n"; - if (MachOObjectFile *MachO = dyn_cast(o)) - printMachORebaseTable(MachO); - else - WithColor::error(errs(), ToolName) - << "This operation is only currently supported " - "for Mach-O executable files.\n"; -} - -void llvm::printBindTable(ObjectFile *o) { - outs() << "Bind table:\n"; - if (MachOObjectFile *MachO = dyn_cast(o)) - printMachOBindTable(MachO); - else - WithColor::error(errs(), ToolName) - << "This operation is only currently supported " - "for Mach-O executable files.\n"; -} - -void llvm::printLazyBindTable(ObjectFile *o) { - outs() << "Lazy bind table:\n"; - if (MachOObjectFile *MachO = dyn_cast(o)) - printMachOLazyBindTable(MachO); - else - WithColor::error(errs(), ToolName) - << "This operation is only currently supported " - "for Mach-O executable files.\n"; -} - -void llvm::printWeakBindTable(ObjectFile *o) { - outs() << "Weak bind table:\n"; - if (MachOObjectFile *MachO = dyn_cast(o)) - printMachOWeakBindTable(MachO); - else - WithColor::error(errs(), ToolName) - << "This operation is only currently supported " - "for Mach-O executable files.\n"; -} - /// Dump the raw contents of the __clangast section so the output can be piped /// into llvm-bcanalyzer. void llvm::printRawClangAST(const ObjectFile *Obj) { @@ -1979,7 +1923,7 @@ static void dumpObject(ObjectFile *O, const Archive *A = nullptr, printWeakBindTable(O); if (RawClangAST) printRawClangAST(O); - if (PrintFaultMaps) + if (FaultMapSection) printFaultMaps(O); if (DwarfDumpType != DIDT_Null) { std::unique_ptr DICtx = DWARFContext::create(*O); @@ -2105,7 +2049,7 @@ int main(int argc, char **argv) { && !(DylibId && MachOOpt) && !(ObjcMetaData && MachOOpt) && !(!FilterSections.empty() && MachOOpt) - && !PrintFaultMaps + && !FaultMapSection && DwarfDumpType == DIDT_Null) { cl::PrintHelpMessage(); return 2; diff --git a/tools/llvm-objdump/llvm-objdump.h b/tools/llvm-objdump/llvm-objdump.h index ea4b36b602b..2211b50d063 100644 --- a/tools/llvm-objdump/llvm-objdump.h +++ b/tools/llvm-objdump/llvm-objdump.h @@ -29,45 +29,7 @@ class Archive; class RelocationRef; } -extern cl::opt TripleName; -extern cl::opt ArchName; -extern cl::opt MCPU; -extern cl::list MAttrs; -extern cl::list FilterSections; -extern cl::opt AllHeaders; extern cl::opt Demangle; -extern cl::opt Disassemble; -extern cl::opt DisassembleAll; -extern cl::opt NoShowRawInsn; -extern cl::opt NoLeadingAddr; -extern cl::opt PrivateHeaders; -extern cl::opt FileHeaders; -extern cl::opt FirstPrivateHeader; -extern cl::opt ExportsTrie; -extern cl::opt Rebase; -extern cl::opt Bind; -extern cl::opt LazyBind; -extern cl::opt WeakBind; -extern cl::opt RawClangAST; -extern cl::opt UniversalHeaders; -extern cl::opt ArchiveHeaders; -extern cl::opt IndirectSymbols; -extern cl::opt DataInCode; -extern cl::opt LinkOptHints; -extern cl::opt InfoPlist; -extern cl::opt DylibsUsed; -extern cl::opt DylibId; -extern cl::opt ObjcMetaData; -extern cl::opt DisSymName; -extern cl::opt NonVerbose; -extern cl::opt Relocations; -extern cl::opt DynamicRelocations; -extern cl::opt SectionHeaders; -extern cl::opt SectionContents; -extern cl::opt SymbolTable; -extern cl::opt UnwindInfo; -extern cl::opt PrintImmHex; -extern cl::opt DwarfDumpType; typedef std::function FilterPredicate; -- 2.50.1