#include "MachOWriter.h"
#include "MachOLayoutBuilder.h"
#include "MachOObject.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/BinaryFormat/MachO.h"
#include "llvm/Object/MachO.h"
#include "llvm/Support/Errc.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/SHA256.h"
#include <memory>
#if defined(__APPLE__)
#include <sys/mman.h>
#endif
usingnamespacellvm;
usingnamespacellvm::objcopy::macho;
usingnamespacellvm::support::endian;
size_t MachOWriter::headerSize() const { … }
size_t MachOWriter::loadCommandsSize() const { … }
size_t MachOWriter::symTableSize() const { … }
size_t MachOWriter::totalSize() const { … }
void MachOWriter::writeHeader() { … }
void MachOWriter::writeLoadCommands() { … }
template <typename StructType>
void MachOWriter::writeSectionInLoadCommand(const Section &Sec, uint8_t *&Out) { … }
void MachOWriter::writeSections() { … }
template <typename NListType>
void writeNListEntry(const SymbolEntry &SE, bool IsLittleEndian, char *&Out,
uint32_t Nstrx) { … }
void MachOWriter::writeStringTable() { … }
void MachOWriter::writeSymbolTable() { … }
void MachOWriter::writeRebaseInfo() { … }
void MachOWriter::writeBindInfo() { … }
void MachOWriter::writeWeakBindInfo() { … }
void MachOWriter::writeLazyBindInfo() { … }
void MachOWriter::writeExportInfo() { … }
void MachOWriter::writeIndirectSymbolTable() { … }
void MachOWriter::writeLinkData(std::optional<size_t> LCIndex,
const LinkData &LD) { … }
static uint64_t
getSegmentFileOffset(const LoadCommand &TextSegmentLoadCommand) { … }
static uint64_t getSegmentFileSize(const LoadCommand &TextSegmentLoadCommand) { … }
void MachOWriter::writeCodeSignatureData() { … }
void MachOWriter::writeDataInCodeData() { … }
void MachOWriter::writeLinkerOptimizationHint() { … }
void MachOWriter::writeFunctionStartsData() { … }
void MachOWriter::writeDylibCodeSignDRsData() { … }
void MachOWriter::writeChainedFixupsData() { … }
void MachOWriter::writeExportsTrieData() { … }
void MachOWriter::writeTail() { … }
Error MachOWriter::finalize() { … }
Error MachOWriter::write() { … }