| // | |
| // 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 ObjectFile; | |
| class Archive; | |
| class RelocationRef; | |
| } | |
| extern cl::opt<std::string> TripleName; | |
| extern cl::opt<std::string> ArchName; | |
| extern cl::opt<std::string> MCPU; | |
| extern cl::opt<std::string> Demangle; | |
| extern cl::list<std::string> MAttrs; | |
| extern cl::list<std::string> FilterSections; | |
| extern cl::opt<bool> AllHeaders; | |
| extern cl::opt<bool> Disassemble; | |
| extern cl::opt<bool> DisassembleAll; | |
| extern cl::opt<bool> NoShowRawInsn; | |
| extern cl::opt<bool> NoLeadingAddr; | |
| extern cl::opt<bool> PrivateHeaders; | |
| extern cl::opt<bool> FileHeaders; | |
| extern cl::opt<bool> FirstPrivateHeader; | |
| extern cl::opt<bool> ExportsTrie; | |
| extern cl::opt<bool> Rebase; | |
| extern cl::opt<bool> Bind; | |
| extern cl::opt<bool> LazyBind; | |
| extern cl::opt<bool> WeakBind; | |
| extern cl::opt<bool> RawClangAST; | |
| extern cl::opt<bool> UniversalHeaders; | |
| extern cl::opt<bool> ArchiveHeaders; | |
| extern cl::opt<bool> IndirectSymbols; | |
| extern cl::opt<bool> DataInCode; | |
| extern cl::opt<bool> LinkOptHints; | |
| extern cl::opt<bool> InfoPlist; | |
| extern cl::opt<bool> DylibsUsed; | |
| extern cl::opt<bool> DylibId; | |
| extern cl::opt<bool> ObjcMetaData; | |
| extern cl::opt<std::string> DisSymName; | |
| extern cl::opt<bool> NonVerbose; | |
| extern cl::opt<bool> Relocations; | |
| extern cl::opt<bool> DynamicRelocations; | |
| extern cl::opt<bool> SectionHeaders; | |
| extern cl::opt<bool> SectionContents; | |
| extern cl::opt<bool> SymbolTable; | |
| extern cl::opt<bool> UnwindInfo; | |
| extern cl::opt<bool> PrintImmHex; | |
| extern cl::opt<DIDumpType> DwarfDumpType; | |
| // Various helper functions. | |
| void error(std::error_code ec); | |
| bool RelocAddressLess(object::RelocationRef a, object::RelocationRef b); | |
| void ParseInputMachO(StringRef Filename); | |
| 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 |