blob: adf6c3404f7900f15febd80e4f58e6efe70d1365 [file] [log] [blame]
Hubert Tong076308a2020-04-06 16:56:13 -04001//===-- 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
Hubert Tongc6f13ce2020-04-09 15:32:09 -040012#include "llvm/ADT/SmallVector.h"
Hubert Tong076308a2020-04-06 16:56:13 -040013#include "llvm/Support/CommandLine.h"
14
15namespace llvm {
Hubert Tongc6f13ce2020-04-09 15:32:09 -040016
17class Error;
18class StringRef;
19
20namespace object {
21class MachOObjectFile;
22class MachOUniversalBinary;
23class ObjectFile;
24class RelocationRef;
25} // namespace object
26
Hubert Tong076308a2020-04-06 16:56:13 -040027namespace 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
Hubert Tongc6f13ce2020-04-09 15:32:09 -040046Error 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
Hubert Tong076308a2020-04-06 16:56:13 -040063} // namespace objdump
64} // namespace llvm
65
66#endif