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