xref: /aosp_15_r20/external/llvm/tools/llvm-objdump/llvm-objdump.h (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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