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 27fe6060f1SDimitry Andric namespace opt { 28fe6060f1SDimitry Andric class InputArgList; 29fe6060f1SDimitry Andric } // namespace opt 30fe6060f1SDimitry Andric 315ffd83dbSDimitry Andric namespace objdump { 325ffd83dbSDimitry Andric 33fe6060f1SDimitry Andric void parseMachOOptions(const llvm::opt::InputArgList &InputArgs); 34fe6060f1SDimitry Andric 355ffd83dbSDimitry Andric // MachO specific options 36fe6060f1SDimitry Andric extern bool Bind; 37fe6060f1SDimitry Andric extern bool DataInCode; 38fe6060f1SDimitry Andric extern std::string DisSymName; 39*81ad6265SDimitry Andric extern bool DyldInfo; 40fe6060f1SDimitry Andric extern bool DylibId; 41fe6060f1SDimitry Andric extern bool DylibsUsed; 42fe6060f1SDimitry Andric extern bool ExportsTrie; 43fe6060f1SDimitry Andric extern bool FirstPrivateHeader; 44fe6060f1SDimitry Andric extern bool FullLeadingAddr; 45fe6060f1SDimitry Andric extern bool FunctionStarts; 46fe6060f1SDimitry Andric extern bool IndirectSymbols; 47fe6060f1SDimitry Andric extern bool InfoPlist; 48fe6060f1SDimitry Andric extern bool LazyBind; 49fe6060f1SDimitry Andric extern bool LeadingHeaders; 50fe6060f1SDimitry Andric extern bool LinkOptHints; 51fe6060f1SDimitry Andric extern bool ObjcMetaData; 52fe6060f1SDimitry Andric extern bool Rebase; 53fe6060f1SDimitry Andric extern bool Rpaths; 54fe6060f1SDimitry Andric extern bool SymbolicOperands; 55fe6060f1SDimitry Andric extern bool UniversalHeaders; 56fe6060f1SDimitry Andric extern bool Verbose; 57fe6060f1SDimitry Andric extern bool WeakBind; 585ffd83dbSDimitry Andric 595ffd83dbSDimitry Andric Error getMachORelocationValueString(const object::MachOObjectFile *Obj, 605ffd83dbSDimitry Andric const object::RelocationRef &RelRef, 615ffd83dbSDimitry Andric llvm::SmallVectorImpl<char> &Result); 625ffd83dbSDimitry Andric 635ffd83dbSDimitry Andric void parseInputMachO(StringRef Filename); 645ffd83dbSDimitry Andric void parseInputMachO(object::MachOUniversalBinary *UB); 655ffd83dbSDimitry Andric 665ffd83dbSDimitry Andric void printMachOUnwindInfo(const object::MachOObjectFile *O); 675ffd83dbSDimitry Andric void printMachOFileHeader(const object::ObjectFile *O); 685ffd83dbSDimitry Andric void printMachOLoadCommands(const object::ObjectFile *O); 695ffd83dbSDimitry Andric 705ffd83dbSDimitry Andric void printExportsTrie(const object::ObjectFile *O); 715ffd83dbSDimitry Andric void printRebaseTable(object::ObjectFile *O); 725ffd83dbSDimitry Andric void printBindTable(object::ObjectFile *O); 735ffd83dbSDimitry Andric void printLazyBindTable(object::ObjectFile *O); 745ffd83dbSDimitry Andric void printWeakBindTable(object::ObjectFile *O); 755ffd83dbSDimitry Andric 765ffd83dbSDimitry Andric } // namespace objdump 775ffd83dbSDimitry Andric } // namespace llvm 785ffd83dbSDimitry Andric 795ffd83dbSDimitry Andric #endif 80