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
Collaboration diagram for llvm::orc::OrcX86_64_SysV:
Collaboration graph

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 

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

Definition at line 157 of file OrcABISupport.h.

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