15ffd83dbSDimitry Andric //===-- MachODump.h ---------------------------------------------*- C++ -*-===// 25ffd83dbSDimitry Andric // 35ffd83dbSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 45ffd83dbSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 55ffd83dbSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65ffd83dbSDimitry Andric // 75ffd83dbSDimitry Andric //===----------------------------------------------------------------------===// 85ffd83dbSDimitry Andric 95ffd83dbSDimitry Andric #ifndef LLVM_TOOLS_LLVM_OBJDUMP_MACHODUMP_H 105ffd83dbSDimitry Andric #define LLVM_TOOLS_LLVM_OBJDUMP_MACHODUMP_H 115ffd83dbSDimitry Andric 125ffd83dbSDimitry Andric #include "llvm/ADT/SmallVector.h" 135ffd83dbSDimitry Andric #include "llvm/Support/CommandLine.h" 145ffd83dbSDimitry Andric 155ffd83dbSDimitry Andric namespace llvm { 165ffd83dbSDimitry Andric 175ffd83dbSDimitry Andric class Error; 185ffd83dbSDimitry Andric class StringRef; 195ffd83dbSDimitry Andric 205ffd83dbSDimitry Andric namespace object { 215ffd83dbSDimitry Andric class MachOObjectFile; 225ffd83dbSDimitry Andric class MachOUniversalBinary; 235ffd83dbSDimitry Andric class ObjectFile; 245ffd83dbSDimitry Andric class RelocationRef; 255ffd83dbSDimitry Andric } // namespace object 265ffd83dbSDimitry Andric 27*fe6060f1SDimitry Andric namespace opt { 28*fe6060f1SDimitry Andric class InputArgList; 29*fe6060f1SDimitry Andric } // namespace opt 30*fe6060f1SDimitry Andric 315ffd83dbSDimitry Andric namespace objdump { 325ffd83dbSDimitry Andric 33*fe6060f1SDimitry Andric void parseMachOOptions(const llvm::opt::InputArgList &InputArgs); 34*fe6060f1SDimitry Andric 355ffd83dbSDimitry Andric // MachO specific options 36*fe6060f1SDimitry Andric extern bool Bind; 37*fe6060f1SDimitry Andric extern bool DataInCode; 38*fe6060f1SDimitry Andric extern std::string DisSymName; 39*fe6060f1SDimitry Andric extern bool DylibId; 40*fe6060f1SDimitry Andric extern bool DylibsUsed; 41*fe6060f1SDimitry Andric extern bool ExportsTrie; 42*fe6060f1SDimitry Andric extern bool FirstPrivateHeader; 43*fe6060f1SDimitry Andric extern bool FullLeadingAddr; 44*fe6060f1SDimitry Andric extern bool FunctionStarts; 45*fe6060f1SDimitry Andric extern bool IndirectSymbols; 46*fe6060f1SDimitry Andric extern bool InfoPlist; 47*fe6060f1SDimitry Andric extern bool LazyBind; 48*fe6060f1SDimitry Andric extern bool LeadingHeaders; 49*fe6060f1SDimitry Andric extern bool LinkOptHints; 50*fe6060f1SDimitry Andric extern bool ObjcMetaData; 51*fe6060f1SDimitry Andric extern bool Rebase; 52*fe6060f1SDimitry Andric extern bool Rpaths; 53*fe6060f1SDimitry Andric extern bool SymbolicOperands; 54*fe6060f1SDimitry Andric extern bool UniversalHeaders; 55*fe6060f1SDimitry Andric extern bool Verbose; 56*fe6060f1SDimitry Andric extern bool WeakBind; 575ffd83dbSDimitry Andric 585ffd83dbSDimitry Andric Error getMachORelocationValueString(const object::MachOObjectFile *Obj, 595ffd83dbSDimitry Andric const object::RelocationRef &RelRef, 605ffd83dbSDimitry Andric llvm::SmallVectorImpl<char> &Result); 615ffd83dbSDimitry Andric 625ffd83dbSDimitry Andric void parseInputMachO(StringRef Filename); 635ffd83dbSDimitry Andric void parseInputMachO(object::MachOUniversalBinary *UB); 645ffd83dbSDimitry Andric 655ffd83dbSDimitry Andric void printMachOUnwindInfo(const object::MachOObjectFile *O); 665ffd83dbSDimitry Andric void printMachOFileHeader(const object::ObjectFile *O); 675ffd83dbSDimitry Andric void printMachOLoadCommands(const object::ObjectFile *O); 685ffd83dbSDimitry Andric 695ffd83dbSDimitry Andric void printExportsTrie(const object::ObjectFile *O); 705ffd83dbSDimitry Andric void printRebaseTable(object::ObjectFile *O); 715ffd83dbSDimitry Andric void printBindTable(object::ObjectFile *O); 725ffd83dbSDimitry Andric void printLazyBindTable(object::ObjectFile *O); 735ffd83dbSDimitry Andric void printWeakBindTable(object::ObjectFile *O); 745ffd83dbSDimitry Andric 755ffd83dbSDimitry Andric } // namespace objdump 765ffd83dbSDimitry Andric } // namespace llvm 775ffd83dbSDimitry Andric 785ffd83dbSDimitry Andric #endif 79