For llvm-objdump, hook up existing options to work when using -macho (the Mach-O...
[opencl/llvm.git] / tools / llvm-objdump / llvm-objdump.h
1 //===-- llvm-objdump.h ----------------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
10 #ifndef LLVM_TOOLS_LLVM_OBJDUMP_LLVM_OBJDUMP_H
11 #define LLVM_TOOLS_LLVM_OBJDUMP_LLVM_OBJDUMP_H
13 #include "llvm/ADT/StringRef.h"
14 #include "llvm/Support/CommandLine.h"
15 #include "llvm/Support/DataTypes.h"
17 namespace llvm {
18 namespace object {
19   class COFFObjectFile;
20   class MachOObjectFile;
21   class ObjectFile;
22   class RelocationRef;
23 }
25 extern cl::opt<std::string> TripleName;
26 extern cl::opt<std::string> ArchName;
27 extern cl::opt<std::string> MCPU;
28 extern cl::list<std::string> MAttrs;
29 extern cl::opt<bool> Disassemble;
30 extern cl::opt<bool> NoShowRawInsn;
31 extern cl::opt<bool> PrivateHeaders;
32 extern cl::opt<bool> ExportsTrie;
33 extern cl::opt<bool> Rebase;
34 extern cl::opt<bool> Bind;
35 extern cl::opt<bool> LazyBind;
36 extern cl::opt<bool> WeakBind;
37 extern cl::opt<bool> UniversalHeaders;
38 extern cl::opt<bool> ArchiveHeaders;
39 extern cl::opt<bool> Relocations;
40 extern cl::opt<bool> SectionHeaders;
41 extern cl::opt<bool> SectionContents;
42 extern cl::opt<bool> SymbolTable;
43 extern cl::opt<bool> UnwindInfo;
45 // Various helper functions.
46 bool error(std::error_code ec);
47 bool RelocAddressLess(object::RelocationRef a, object::RelocationRef b);
48 void DumpBytes(StringRef bytes);
49 void ParseInputMachO(StringRef Filename);
50 void printCOFFUnwindInfo(const object::COFFObjectFile* o);
51 void printMachOUnwindInfo(const object::MachOObjectFile* o);
52 void printMachOExportsTrie(const object::MachOObjectFile* o);
53 void printMachORebaseTable(const object::MachOObjectFile* o);
54 void printMachOBindTable(const object::MachOObjectFile* o);
55 void printMachOLazyBindTable(const object::MachOObjectFile* o);
56 void printMachOWeakBindTable(const object::MachOObjectFile* o);
57 void printELFFileHeader(const object::ObjectFile *o);
58 void printCOFFFileHeader(const object::ObjectFile *o);
59 void printMachOFileHeader(const object::ObjectFile *o);
60 void printExportsTrie(const object::ObjectFile *o);
61 void printRebaseTable(const object::ObjectFile *o);
62 void printBindTable(const object::ObjectFile *o);
63 void printLazyBindTable(const object::ObjectFile *o);
64 void printWeakBindTable(const object::ObjectFile *o);
65 void PrintRelocations(const object::ObjectFile *o);
66 void PrintSectionHeaders(const object::ObjectFile *o);
67 void PrintSectionContents(const object::ObjectFile *o);
68 void PrintSymbolTable(const object::ObjectFile *o);
70 } // end namespace llvm
72 #endif