LLVM
8.0.1
|
#include "llvm/ExecutionEngine/Orc/OrcABISupport.h"
Public Types | |
using | IndirectStubsInfo = GenericIndirectStubsInfo< 8 > |
using | JITReentryFn = JITTargetAddress(*)(void *CallbackMgr, void *TrampolineId) |
Static Public Member Functions | |
static void | writeResolverCode (uint8_t *ResolveMem, JITReentryFn Reentry, void *CallbackMgr) |
Write the resolver code into the given memory. More... | |
static void | writeTrampolines (uint8_t *TrampolineMem, void *ResolverAddr, unsigned NumTrampolines) |
Write the requsted number of trampolines into the given memory, which must be big enough to hold 1 pointer, plus NumTrampolines trampolines. More... | |
static Error | emitIndirectStubsBlock (IndirectStubsInfo &StubsInfo, unsigned MinStubs, void *InitialPtrVal) |
Emit at least MinStubs worth of indirect call stubs, rounded out to the nearest page size. More... | |
Static Public Attributes | |
static const unsigned | PointerSize = 8 |
static const unsigned | TrampolineSize = 12 |
static const unsigned | ResolverCodeSize = 0x120 |
Definition at line 116 of file OrcABISupport.h.
Definition at line 122 of file OrcABISupport.h.
using llvm::orc::OrcAArch64::JITReentryFn = JITTargetAddress (*)(void *CallbackMgr, void *TrampolineId) |
Definition at line 125 of file OrcABISupport.h.
|
static |
Emit at least MinStubs worth of indirect call stubs, rounded out to the nearest page size.
E.g. Asking for 4 stubs on x86-64, where stubs are 8-bytes, with 4k pages will return a block of 512 stubs (4096 / 8 = 512). Asking for 513 will return a block of 1024 (2-pages worth).
Definition at line 125 of file OrcABISupport.cpp.
References llvm::sys::Memory::allocateMappedMemory(), llvm::errorCodeToError(), llvm::sys::Process::getPageSize(), I, llvm::sys::Memory::MF_EXEC, llvm::sys::Memory::MF_READ, llvm::sys::Memory::MF_WRITE, PageSize, llvm::sys::Memory::protectMappedMemory(), llvm::orc::GenericIndirectStubsInfo< StubSizeVal >::StubSize, and llvm::Error::success().
|
static |
Write the resolver code into the given memory.
The user is be responsible for allocating the memory and setting permissions.
Definition at line 16 of file OrcABISupport.cpp.
References llvm::Intrinsic::memcpy.
|
static |
Write the requsted number of trampolines into the given memory, which must be big enough to hold 1 pointer, plus NumTrampolines trampolines.
Definition at line 104 of file OrcABISupport.cpp.
References llvm::alignTo(), I, llvm::Intrinsic::memcpy, and TrampolineSize.
Definition at line 118 of file OrcABISupport.h.
Definition at line 120 of file OrcABISupport.h.
Definition at line 119 of file OrcABISupport.h.
Referenced by writeTrampolines(), llvm::orc::OrcX86_64_Base::writeTrampolines(), and llvm::orc::OrcI386::writeTrampolines().