1 | //===-- MachODump.h ---------------------------------------------*- C++ -*-===// |
---|---|
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #ifndef LLVM_TOOLS_LLVM_OBJDUMP_MACHODUMP_H |
10 | #define LLVM_TOOLS_LLVM_OBJDUMP_MACHODUMP_H |
11 | |
12 | #include "llvm/ADT/SmallVector.h" |
13 | #include "llvm/Support/CommandLine.h" |
14 | |
15 | namespace llvm { |
16 | |
17 | class Error; |
18 | class StringRef; |
19 | class MemoryBuffer; |
20 | |
21 | namespace object { |
22 | class MachOObjectFile; |
23 | class MachOUniversalBinary; |
24 | class ObjectFile; |
25 | class RelocationRef; |
26 | class Binary; |
27 | } // namespace object |
28 | |
29 | namespace opt { |
30 | class InputArgList; |
31 | } // namespace opt |
32 | |
33 | namespace objdump { |
34 | |
35 | void parseMachOOptions(const llvm::opt::InputArgList &InputArgs); |
36 | |
37 | enum class FunctionStartsMode { Addrs, Names, Both, None }; |
38 | |
39 | // MachO specific options |
40 | extern bool Bind; |
41 | extern bool DataInCode; |
42 | extern std::string DisSymName; |
43 | extern bool ChainedFixups; |
44 | extern bool DyldInfo; |
45 | extern bool DylibId; |
46 | extern bool DylibsUsed; |
47 | extern bool ExportsTrie; |
48 | extern bool FirstPrivateHeader; |
49 | extern bool FullLeadingAddr; |
50 | extern FunctionStartsMode FunctionStartsType; |
51 | extern bool IndirectSymbols; |
52 | extern bool InfoPlist; |
53 | extern bool LazyBind; |
54 | extern bool LeadingHeaders; |
55 | extern bool LinkOptHints; |
56 | extern bool ObjcMetaData; |
57 | extern bool Rebase; |
58 | extern bool Rpaths; |
59 | extern bool SymbolicOperands; |
60 | extern bool UniversalHeaders; |
61 | extern bool Verbose; |
62 | extern bool WeakBind; |
63 | |
64 | Error getMachORelocationValueString(const object::MachOObjectFile *Obj, |
65 | const object::RelocationRef &RelRef, |
66 | llvm::SmallVectorImpl<char> &Result); |
67 | |
68 | const object::MachOObjectFile * |
69 | getMachODSymObject(const object::MachOObjectFile *O, StringRef Filename, |
70 | std::unique_ptr<object::Binary> &DSYMBinary, |
71 | std::unique_ptr<MemoryBuffer> &DSYMBuf); |
72 | |
73 | void parseInputMachO(StringRef Filename); |
74 | void parseInputMachO(object::MachOUniversalBinary *UB); |
75 | |
76 | void printMachOUnwindInfo(const object::MachOObjectFile *O); |
77 | void printMachOFileHeader(const object::ObjectFile *O); |
78 | void printMachOLoadCommands(const object::ObjectFile *O); |
79 | |
80 | void printExportsTrie(const object::ObjectFile *O); |
81 | void printRebaseTable(object::ObjectFile *O); |
82 | void printBindTable(object::ObjectFile *O); |
83 | void printLazyBindTable(object::ObjectFile *O); |
84 | void printWeakBindTable(object::ObjectFile *O); |
85 | |
86 | } // namespace objdump |
87 | } // namespace llvm |
88 | |
89 | #endif |
90 |