// // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef LLVM_TOOLS_LLVM_OBJDUMP_LLVM_OBJDUMP_H #define LLVM_TOOLS_LLVM_OBJDUMP_LLVM_OBJDUMP_H #include "llvm/DebugInfo/DIContext.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/DataTypes.h" #include "llvm/Object/Archive.h" namespace llvm { class StringRef; namespace object { class COFFObjectFile; class COFFImportFile; class MachOObjectFile; class MachOUniversalBinary; class ObjectFile; 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; // Various helper functions. 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); void printMachORebaseTable(object::MachOObjectFile* o); void printMachOBindTable(object::MachOObjectFile* o); void printMachOLazyBindTable(object::MachOObjectFile* o); void printMachOWeakBindTable(object::MachOObjectFile* o); void printELFFileHeader(const object::ObjectFile *o); void printELFDynamicSection(const object::ObjectFile *Obj); void printCOFFFileHeader(const object::ObjectFile *o); void printCOFFSymbolTable(const object::COFFImportFile *i); void printCOFFSymbolTable(const object::COFFObjectFile *o); void printMachOFileHeader(const object::ObjectFile *o); void printMachOLoadCommands(const object::ObjectFile *o); void printWasmFileHeader(const object::ObjectFile *o); void printExportsTrie(const object::ObjectFile *o); void printRebaseTable(object::ObjectFile *o); void printBindTable(object::ObjectFile *o); void printLazyBindTable(object::ObjectFile *o); void printWeakBindTable(object::ObjectFile *o); void printRawClangAST(const object::ObjectFile *o); void PrintRelocations(const object::ObjectFile *o); void PrintDynamicRelocations(const object::ObjectFile *o); void PrintSectionHeaders(const object::ObjectFile *o); void PrintSectionContents(const object::ObjectFile *o); void PrintSymbolTable(const object::ObjectFile *o, StringRef ArchiveName, StringRef ArchitectureName = StringRef()); void warn(StringRef Message); LLVM_ATTRIBUTE_NORETURN void error(Twine Message); LLVM_ATTRIBUTE_NORETURN void report_error(StringRef File, Twine Message); LLVM_ATTRIBUTE_NORETURN void report_error(StringRef File, std::error_code EC); LLVM_ATTRIBUTE_NORETURN void report_error(StringRef File, llvm::Error E); LLVM_ATTRIBUTE_NORETURN void report_error(StringRef FileName, StringRef ArchiveName, llvm::Error E, StringRef ArchitectureName = StringRef()); LLVM_ATTRIBUTE_NORETURN void report_error(StringRef ArchiveName, const object::Archive::Child &C, llvm::Error E, StringRef ArchitectureName = StringRef()); } // end namespace llvm #endif