#include "Arch/ARM64Common.h"
#include "InputFiles.h"
#include "Symbols.h"
#include "SyntheticSections.h"
#include "Target.h"
#include "lld/Common/ErrorHandler.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/BinaryFormat/MachO.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/MathExtras.h"
usingnamespacellvm::MachO;
usingnamespacellvm::support::endian;
usingnamespacelld;
usingnamespacelld::macho;
namespace {
struct ARM64_32 : ARM64Common { … };
}
static constexpr std::array<RelocAttrs, 11> relocAttrsArray{ … };
static constexpr uint32_t stubCode[] = …;
void ARM64_32::writeStub(uint8_t *buf8, const Symbol &sym,
uint64_t pointerVA) const { … }
static constexpr uint32_t stubHelperHeaderCode[] = …;
void ARM64_32::writeStubHelperHeader(uint8_t *buf8) const { … }
static constexpr uint32_t stubHelperEntryCode[] = …;
void ARM64_32::writeStubHelperEntry(uint8_t *buf8, const Symbol &sym,
uint64_t entryVA) const { … }
void ARM64_32::writeObjCMsgSendStub(uint8_t *buf, Symbol *sym,
uint64_t stubsAddr, uint64_t &stubOffset,
uint64_t selrefVA,
Symbol *objcMsgSend) const { … }
ARM64_32::ARM64_32() : … { … }
TargetInfo *macho::createARM64_32TargetInfo() { … }