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
15namespace llvm {
16
17class Error;
18class StringRef;
19
20namespace object {
21class MachOObjectFile;
22class MachOUniversalBinary;
23class ObjectFile;
24class RelocationRef;
25} // namespace object
26
27namespace objdump {
28
29// MachO specific options
30extern cl::OptionCategory MachOCat;
31extern cl::opt<bool> Bind;
32extern cl::opt<bool> DataInCode;
33extern cl::opt<bool> DylibsUsed;
34extern cl::opt<bool> DylibId;
35extern cl::opt<bool> ExportsTrie;
36extern cl::opt<bool> FirstPrivateHeader;
37extern cl::opt<bool> IndirectSymbols;
38extern cl::opt<bool> InfoPlist;
39extern cl::opt<bool> LazyBind;
40extern cl::opt<bool> LinkOptHints;
41extern cl::opt<bool> ObjcMetaData;
42extern cl::opt<bool> Rebase;
43extern cl::opt<bool> UniversalHeaders;
44extern cl::opt<bool> WeakBind;
45
46Error getMachORelocationValueString(const object::MachOObjectFile *Obj,
47                                    const object::RelocationRef &RelRef,
48                                    llvm::SmallVectorImpl<char> &Result);
49
50void parseInputMachO(StringRef Filename);
51void parseInputMachO(object::MachOUniversalBinary *UB);
52
53void printMachOUnwindInfo(const object::MachOObjectFile *O);
54void printMachOFileHeader(const object::ObjectFile *O);
55void printMachOLoadCommands(const object::ObjectFile *O);
56
57void printExportsTrie(const object::ObjectFile *O);
58void printRebaseTable(object::ObjectFile *O);
59void printBindTable(object::ObjectFile *O);
60void printLazyBindTable(object::ObjectFile *O);
61void printWeakBindTable(object::ObjectFile *O);
62
63} // namespace objdump
64} // namespace llvm
65
66#endif
67