1*9880d681SAndroid Build Coastguard Worker // 2*9880d681SAndroid Build Coastguard Worker // The LLVM Compiler Infrastructure 3*9880d681SAndroid Build Coastguard Worker // 4*9880d681SAndroid Build Coastguard Worker // This file is distributed under the University of Illinois Open Source 5*9880d681SAndroid Build Coastguard Worker // License. See LICENSE.TXT for details. 6*9880d681SAndroid Build Coastguard Worker // 7*9880d681SAndroid Build Coastguard Worker //===----------------------------------------------------------------------===// 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker #ifndef LLVM_TOOLS_LLVM_OBJDUMP_LLVM_OBJDUMP_H 10*9880d681SAndroid Build Coastguard Worker #define LLVM_TOOLS_LLVM_OBJDUMP_LLVM_OBJDUMP_H 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Worker #include "llvm/DebugInfo/DIContext.h" 13*9880d681SAndroid Build Coastguard Worker #include "llvm/Support/CommandLine.h" 14*9880d681SAndroid Build Coastguard Worker #include "llvm/Support/Compiler.h" 15*9880d681SAndroid Build Coastguard Worker #include "llvm/Support/DataTypes.h" 16*9880d681SAndroid Build Coastguard Worker #include "llvm/Object/Archive.h" 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker namespace llvm { 19*9880d681SAndroid Build Coastguard Worker class StringRef; 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker namespace object { 22*9880d681SAndroid Build Coastguard Worker class COFFObjectFile; 23*9880d681SAndroid Build Coastguard Worker class MachOObjectFile; 24*9880d681SAndroid Build Coastguard Worker class ObjectFile; 25*9880d681SAndroid Build Coastguard Worker class Archive; 26*9880d681SAndroid Build Coastguard Worker class RelocationRef; 27*9880d681SAndroid Build Coastguard Worker } 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker extern cl::opt<std::string> TripleName; 30*9880d681SAndroid Build Coastguard Worker extern cl::opt<std::string> ArchName; 31*9880d681SAndroid Build Coastguard Worker extern cl::opt<std::string> MCPU; 32*9880d681SAndroid Build Coastguard Worker extern cl::list<std::string> MAttrs; 33*9880d681SAndroid Build Coastguard Worker extern cl::list<std::string> FilterSections; 34*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> Disassemble; 35*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> DisassembleAll; 36*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> NoShowRawInsn; 37*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> PrivateHeaders; 38*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> FirstPrivateHeader; 39*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> ExportsTrie; 40*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> Rebase; 41*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> Bind; 42*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> LazyBind; 43*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> WeakBind; 44*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> RawClangAST; 45*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> UniversalHeaders; 46*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> ArchiveHeaders; 47*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> IndirectSymbols; 48*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> DataInCode; 49*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> LinkOptHints; 50*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> InfoPlist; 51*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> DylibsUsed; 52*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> DylibId; 53*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> ObjcMetaData; 54*9880d681SAndroid Build Coastguard Worker extern cl::opt<std::string> DisSymName; 55*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> NonVerbose; 56*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> Relocations; 57*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> SectionHeaders; 58*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> SectionContents; 59*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> SymbolTable; 60*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> UnwindInfo; 61*9880d681SAndroid Build Coastguard Worker extern cl::opt<bool> PrintImmHex; 62*9880d681SAndroid Build Coastguard Worker extern cl::opt<DIDumpType> DwarfDumpType; 63*9880d681SAndroid Build Coastguard Worker 64*9880d681SAndroid Build Coastguard Worker // Various helper functions. 65*9880d681SAndroid Build Coastguard Worker void error(std::error_code ec); 66*9880d681SAndroid Build Coastguard Worker bool RelocAddressLess(object::RelocationRef a, object::RelocationRef b); 67*9880d681SAndroid Build Coastguard Worker void ParseInputMachO(StringRef Filename); 68*9880d681SAndroid Build Coastguard Worker void printCOFFUnwindInfo(const object::COFFObjectFile* o); 69*9880d681SAndroid Build Coastguard Worker void printMachOUnwindInfo(const object::MachOObjectFile* o); 70*9880d681SAndroid Build Coastguard Worker void printMachOExportsTrie(const object::MachOObjectFile* o); 71*9880d681SAndroid Build Coastguard Worker void printMachORebaseTable(const object::MachOObjectFile* o); 72*9880d681SAndroid Build Coastguard Worker void printMachOBindTable(const object::MachOObjectFile* o); 73*9880d681SAndroid Build Coastguard Worker void printMachOLazyBindTable(const object::MachOObjectFile* o); 74*9880d681SAndroid Build Coastguard Worker void printMachOWeakBindTable(const object::MachOObjectFile* o); 75*9880d681SAndroid Build Coastguard Worker void printELFFileHeader(const object::ObjectFile *o); 76*9880d681SAndroid Build Coastguard Worker void printCOFFFileHeader(const object::ObjectFile *o); 77*9880d681SAndroid Build Coastguard Worker void printCOFFSymbolTable(const object::COFFObjectFile *o); 78*9880d681SAndroid Build Coastguard Worker void printMachOFileHeader(const object::ObjectFile *o); 79*9880d681SAndroid Build Coastguard Worker void printMachOLoadCommands(const object::ObjectFile *o); 80*9880d681SAndroid Build Coastguard Worker void printExportsTrie(const object::ObjectFile *o); 81*9880d681SAndroid Build Coastguard Worker void printRebaseTable(const object::ObjectFile *o); 82*9880d681SAndroid Build Coastguard Worker void printBindTable(const object::ObjectFile *o); 83*9880d681SAndroid Build Coastguard Worker void printLazyBindTable(const object::ObjectFile *o); 84*9880d681SAndroid Build Coastguard Worker void printWeakBindTable(const object::ObjectFile *o); 85*9880d681SAndroid Build Coastguard Worker void printRawClangAST(const object::ObjectFile *o); 86*9880d681SAndroid Build Coastguard Worker void PrintRelocations(const object::ObjectFile *o); 87*9880d681SAndroid Build Coastguard Worker void PrintSectionHeaders(const object::ObjectFile *o); 88*9880d681SAndroid Build Coastguard Worker void PrintSectionContents(const object::ObjectFile *o); 89*9880d681SAndroid Build Coastguard Worker void PrintSymbolTable(const object::ObjectFile *o, StringRef ArchiveName, 90*9880d681SAndroid Build Coastguard Worker StringRef ArchitectureName = StringRef()); 91*9880d681SAndroid Build Coastguard Worker LLVM_ATTRIBUTE_NORETURN void error(Twine Message); 92*9880d681SAndroid Build Coastguard Worker LLVM_ATTRIBUTE_NORETURN void report_error(StringRef File, std::error_code EC); 93*9880d681SAndroid Build Coastguard Worker LLVM_ATTRIBUTE_NORETURN void report_error(StringRef File, llvm::Error E); 94*9880d681SAndroid Build Coastguard Worker LLVM_ATTRIBUTE_NORETURN void report_error(StringRef FileName, 95*9880d681SAndroid Build Coastguard Worker StringRef ArchiveName, 96*9880d681SAndroid Build Coastguard Worker llvm::Error E, 97*9880d681SAndroid Build Coastguard Worker StringRef ArchitectureName 98*9880d681SAndroid Build Coastguard Worker = StringRef()); 99*9880d681SAndroid Build Coastguard Worker LLVM_ATTRIBUTE_NORETURN void report_error(StringRef ArchiveName, 100*9880d681SAndroid Build Coastguard Worker const object::Archive::Child &C, 101*9880d681SAndroid Build Coastguard Worker llvm::Error E, 102*9880d681SAndroid Build Coastguard Worker StringRef ArchitectureName 103*9880d681SAndroid Build Coastguard Worker = StringRef()); 104*9880d681SAndroid Build Coastguard Worker 105*9880d681SAndroid Build Coastguard Worker } // end namespace llvm 106*9880d681SAndroid Build Coastguard Worker 107*9880d681SAndroid Build Coastguard Worker #endif 108