class RuntimeDyldMachOAArch64

Declaration

class RuntimeDyldMachOAArch64 : public RuntimeDyldMachOCRTPBase { /* full declaration omitted */ };

Description

RuntimeDyldMachOTarget - Templated base class for generic MachO linker algorithms and data structures. Concrete, target specific sub-classes can be accessed via the impl() methods. (i.e. the RuntimeDyldMachO hierarchy uses the Curiously Recurring Template Idiom). Concrete subclasses for each target can be found in ./Targets.

Declared at: llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h:19

Inherits from: RuntimeDyldMachOCRTPBase

Method Overview

  • public RuntimeDyldMachOAArch64(RuntimeDyld::MemoryManager & MM, llvm::JITSymbolResolver & Resolver)
  • public Expected<int64_t> decodeAddend(const llvm::RelocationEntry & RE) const
  • public void encodeAddend(uint8_t * LocalAddress, unsigned int NumBytes, MachO::RelocationInfoType RelType, int64_t Addend) const
  • public llvm::Error finalizeSection(const llvm::object::ObjectFile & Obj, unsigned int SectionID, const llvm::object::SectionRef & Section)
  • public unsigned int getMaxStubSize() const
  • private static const char * getRelocName(uint32_t RelocType)
  • public unsigned int getStubAlignment()
  • private void processGOTRelocation(const llvm::RelocationEntry & RE, llvm::RelocationValueRef & Value, llvm::RuntimeDyldImpl::StubMap & Stubs)
  • public Expected<llvm::object::relocation_iterator> processRelocationRef(unsigned int SectionID, llvm::object::relocation_iterator RelI, const llvm::object::ObjectFile & BaseObjT, llvm::RuntimeDyldImpl::ObjSectionToIDMap & ObjSectionToID, llvm::RuntimeDyldImpl::StubMap & Stubs)
  • private Expected<llvm::object::relocation_iterator> processSubtractRelocation(unsigned int SectionID, llvm::object::relocation_iterator RelI, const llvm::object::ObjectFile & BaseObjT, llvm::RuntimeDyldImpl::ObjSectionToIDMap & ObjSectionToID)
  • public void resolveRelocation(const llvm::RelocationEntry & RE, uint64_t Value)

Methods

RuntimeDyldMachOAArch64(
    RuntimeDyld::MemoryManager& MM,
    llvm::JITSymbolResolver& Resolver)

Declared at: llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h:25

Parameters

RuntimeDyld::MemoryManager& MM
llvm::JITSymbolResolver& Resolver

Expected<int64_t> decodeAddend(
    const llvm::RelocationEntry& RE) const

Description

Extract the addend encoded in the instruction / memory location.

Declared at: llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h:34

Parameters

const llvm::RelocationEntry& RE

void encodeAddend(
    uint8_t* LocalAddress,
    unsigned int NumBytes,
    MachO::RelocationInfoType RelType,
    int64_t Addend) const

Description

Extract the addend encoded in the instruction.

Declared at: llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h:155

Parameters

uint8_t* LocalAddress
unsigned int NumBytes
MachO::RelocationInfoType RelType
int64_t Addend

llvm::Error finalizeSection(
    const llvm::object::ObjectFile& Obj,
    unsigned int SectionID,
    const llvm::object::SectionRef& Section)

Declared at: llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h:436

Parameters

const llvm::object::ObjectFile& Obj
unsigned int SectionID
const llvm::object::SectionRef& Section

unsigned int getMaxStubSize() const

Declared at: llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h:29

static const char* getRelocName(
    uint32_t RelocType)

Declared at: llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h:519

Parameters

uint32_t RelocType

unsigned int getStubAlignment()

Declared at: llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h:31

void processGOTRelocation(
    const llvm::RelocationEntry& RE,
    llvm::RelocationValueRef& Value,
    llvm::RuntimeDyldImpl::StubMap& Stubs)

Declared at: llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h:442

Parameters

const llvm::RelocationEntry& RE
llvm::RelocationValueRef& Value
llvm::RuntimeDyldImpl::StubMap& Stubs

Expected<llvm::object::relocation_iterator>
processRelocationRef(
    unsigned int SectionID,
    llvm::object::relocation_iterator RelI,
    const llvm::object::ObjectFile& BaseObjT,
    llvm::RuntimeDyldImpl::ObjSectionToIDMap&
        ObjSectionToID,
    llvm::RuntimeDyldImpl::StubMap& Stubs)

Description

Parses one or more object file relocations (some object files use relocation pairs) and stores it to Relocations or SymbolRelocations (this depends on the object file type).

Declared at: llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h:273

Parameters

unsigned int SectionID
llvm::object::relocation_iterator RelI
const llvm::object::ObjectFile& BaseObjT
llvm::RuntimeDyldImpl::ObjSectionToIDMap& ObjSectionToID
llvm::RuntimeDyldImpl::StubMap& Stubs

Returns

Iterator to the next relocation that needs to be parsed.

Expected<llvm::object::relocation_iterator>
processSubtractRelocation(
    unsigned int SectionID,
    llvm::object::relocation_iterator RelI,
    const llvm::object::ObjectFile& BaseObjT,
    llvm::RuntimeDyldImpl::ObjSectionToIDMap&
        ObjSectionToID)

Declared at: llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h:480

Parameters

unsigned int SectionID
llvm::object::relocation_iterator RelI
const llvm::object::ObjectFile& BaseObjT
llvm::RuntimeDyldImpl::ObjSectionToIDMap& ObjSectionToID

void resolveRelocation(
    const llvm::RelocationEntry& RE,
    uint64_t Value)

Description

A object file specific relocation resolver

Declared at: llvm/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h:355

Parameters

const llvm::RelocationEntry& RE
The relocation to be resolved
uint64_t Value
Target symbol address to apply the relocation action