LLVM  14.0.0git
Static Public Member Functions | Static Public Attributes | List of all members
llvm::orc::OrcX86_64_SysV Class Reference

X86_64 support for SysV ABI (Linux, MacOSX). More...

#include "llvm/ExecutionEngine/Orc/OrcABISupport.h"

Inheritance diagram for llvm::orc::OrcX86_64_SysV:
Inheritance graph
[legend]
Collaboration diagram for llvm::orc::OrcX86_64_SysV:
Collaboration graph
[legend]

Static Public Member Functions

static void writeResolverCode (char *ResolverWorkingMem, JITTargetAddress ResolverTargetAddress, JITTargetAddress ReentryFnAddr, JITTargetAddress ReentryCtxAddr)
 Write the resolver code into the given memory. More...
 
- Static Public Member Functions inherited from llvm::orc::OrcX86_64_Base
static void writeTrampolines (char *TrampolineBlockWorkingMem, JITTargetAddress TrampolineBlockTargetAddress, JITTargetAddress ResolverAddr, unsigned NumTrampolines)
 Write the requested number of trampolines into the given memory, which must be big enough to hold 1 pointer, plus NumTrampolines trampolines. More...
 
static void writeIndirectStubsBlock (char *StubsBlockWorkingMem, JITTargetAddress StubsBlockTargetAddress, JITTargetAddress PointersBlockTargetAddress, unsigned NumStubs)
 Write NumStubs indirect stubs to working memory at StubsBlockWorkingMem. More...
 

Static Public Attributes

static constexpr unsigned ResolverCodeSize = 0x6C
 
- Static Public Attributes inherited from llvm::orc::OrcX86_64_Base
static constexpr unsigned PointerSize = 8
 
static constexpr unsigned TrampolineSize = 8
 
static constexpr unsigned StubSize = 8
 
static constexpr unsigned StubToPointerMaxDisplacement = 1 << 31
 

Detailed Description

X86_64 support for SysV ABI (Linux, MacOSX).

X86_64_SysV supports lazy JITing.

Definition at line 155 of file OrcABISupport.h.

Member Function Documentation

◆ writeResolverCode()

void llvm::orc::OrcX86_64_SysV::writeResolverCode ( char *  ResolverWorkingMem,
JITTargetAddress  ResolverTargetAddress,
JITTargetAddress  ReentryFnAddr,
JITTargetAddress  ReentryCtxAddr 
)
static

Write the resolver code into the given memory.

The user is responsible for allocating the memory and setting permissions.

ReentryFnAddr should be the address of a function whose signature matches void* (*)(void *TrampolineAddr, void *ReentryCtxAddr). The ReentryCtxAddr argument of writeResolverCode will be passed as the second argument to the function at ReentryFnAddr.

Definition at line 252 of file OrcABISupport.cpp.

References llvm::dbgs(), llvm::formatv(), LLVM_DEBUG, and memcpy().

Member Data Documentation

◆ ResolverCodeSize

constexpr unsigned llvm::orc::OrcX86_64_SysV::ResolverCodeSize = 0x6C
staticconstexpr

Definition at line 157 of file OrcABISupport.h.


The documentation for this class was generated from the following files: