
And --chained-fixups for llvm-objdump. For now, this only prints the dyld_chained_fixups_header and adds plumbing for the flag. This will be expanded in future commits. When Apple's effort to upstream their chained fixups code continues, we'll replace this code with the then-upstreamed code. But we need something in the meantime for testing ld64.lld's chained fixups code. Update chained-fixups.yaml with a file that actually contains the chained fixup data (`LinkEditData` doesn't encode it yet, so use `__LINKEDIT` via `--raw-segment=data`). Differential Revision: https://reviews.llvm.org/D131890
81 lines
2.2 KiB
C++
81 lines
2.2 KiB
C++
//===-- MachODump.h ---------------------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_TOOLS_LLVM_OBJDUMP_MACHODUMP_H
|
|
#define LLVM_TOOLS_LLVM_OBJDUMP_MACHODUMP_H
|
|
|
|
#include "llvm/ADT/SmallVector.h"
|
|
#include "llvm/Support/CommandLine.h"
|
|
|
|
namespace llvm {
|
|
|
|
class Error;
|
|
class StringRef;
|
|
|
|
namespace object {
|
|
class MachOObjectFile;
|
|
class MachOUniversalBinary;
|
|
class ObjectFile;
|
|
class RelocationRef;
|
|
} // namespace object
|
|
|
|
namespace opt {
|
|
class InputArgList;
|
|
} // namespace opt
|
|
|
|
namespace objdump {
|
|
|
|
void parseMachOOptions(const llvm::opt::InputArgList &InputArgs);
|
|
|
|
// MachO specific options
|
|
extern bool Bind;
|
|
extern bool DataInCode;
|
|
extern std::string DisSymName;
|
|
extern bool ChainedFixups;
|
|
extern bool DyldInfo;
|
|
extern bool DylibId;
|
|
extern bool DylibsUsed;
|
|
extern bool ExportsTrie;
|
|
extern bool FirstPrivateHeader;
|
|
extern bool FullLeadingAddr;
|
|
extern bool FunctionStarts;
|
|
extern bool IndirectSymbols;
|
|
extern bool InfoPlist;
|
|
extern bool LazyBind;
|
|
extern bool LeadingHeaders;
|
|
extern bool LinkOptHints;
|
|
extern bool ObjcMetaData;
|
|
extern bool Rebase;
|
|
extern bool Rpaths;
|
|
extern bool SymbolicOperands;
|
|
extern bool UniversalHeaders;
|
|
extern bool Verbose;
|
|
extern bool WeakBind;
|
|
|
|
Error getMachORelocationValueString(const object::MachOObjectFile *Obj,
|
|
const object::RelocationRef &RelRef,
|
|
llvm::SmallVectorImpl<char> &Result);
|
|
|
|
void parseInputMachO(StringRef Filename);
|
|
void parseInputMachO(object::MachOUniversalBinary *UB);
|
|
|
|
void printMachOUnwindInfo(const object::MachOObjectFile *O);
|
|
void printMachOFileHeader(const object::ObjectFile *O);
|
|
void printMachOLoadCommands(const object::ObjectFile *O);
|
|
|
|
void printExportsTrie(const object::ObjectFile *O);
|
|
void printRebaseTable(object::ObjectFile *O);
|
|
void printBindTable(object::ObjectFile *O);
|
|
void printLazyBindTable(object::ObjectFile *O);
|
|
void printWeakBindTable(object::ObjectFile *O);
|
|
|
|
} // namespace objdump
|
|
} // namespace llvm
|
|
|
|
#endif
|