class SelfExecutorProcessControl

Declaration

class SelfExecutorProcessControl : public ExecutorProcessControl,
                                   private MemoryAccess { /* full declaration omitted */ };

Description

A ExecutorProcessControl implementation targeting the current process.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:410

Inherits from: ExecutorProcessControl, ExecutorProcessControl::MemoryAccess

Member Variables

private std::unique_ptr<jitlink::JITLinkMemoryManager> OwnedMemMgr
private char GlobalManglingPrefix = 0
private std::vector<std::unique_ptr<sys::DynamicLibrary>> DynamicLibraries

Inherited from ExecutorProcessControl:

protected SSP
protected D
protected ES = nullptr
protected TargetTriple
protected PageSize = 0
protected JDI
protected MemAccess = nullptr
protected MemMgr = nullptr
protected BootstrapSymbols

Method Overview

  • public static Expected<std::unique_ptr<SelfExecutorProcessControl>> Create(std::shared_ptr<SymbolStringPool> SSP = nullptr, std::unique_ptr<TaskDispatcher> D = nullptr, std::unique_ptr<jitlink::JITLinkMemoryManager> MemMgr = nullptr)
  • public SelfExecutorProcessControl(std::shared_ptr<SymbolStringPool> SSP, std::unique_ptr<TaskDispatcher> D, llvm::Triple TargetTriple, unsigned int PageSize, std::unique_ptr<jitlink::JITLinkMemoryManager> MemMgr)
  • public void callWrapperAsync(llvm::orc::ExecutorAddr WrapperFnAddr, llvm::orc::ExecutorProcessControl::IncomingWFRHandler OnComplete, ArrayRef<char> ArgBuffer)
  • public llvm::Error disconnect()
  • private static shared::CWrapperFunctionResult jitDispatchViaWrapperFunctionManager(void * Ctx, const void * FnTag, const char * Data, size_t Size)
  • public Expected<tpctypes::DylibHandle> loadDylib(const char * DylibPath)
  • public Expected<std::vector<tpctypes::LookupResult>> lookupSymbols(ArrayRef<llvm::orc::ExecutorProcessControl::LookupRequest> Request)
  • public Expected<int32_t> runAsMain(llvm::orc::ExecutorAddr MainFnAddr, ArrayRef<std::string> Args)
  • private void writeBuffersAsync(ArrayRef<tpctypes::BufferWrite> Ws, llvm::orc::ExecutorProcessControl::MemoryAccess::WriteResultFn OnWriteComplete)
  • private void writeUInt16sAsync(ArrayRef<tpctypes::UInt16Write> Ws, llvm::orc::ExecutorProcessControl::MemoryAccess::WriteResultFn OnWriteComplete)
  • private void writeUInt32sAsync(ArrayRef<tpctypes::UInt32Write> Ws, llvm::orc::ExecutorProcessControl::MemoryAccess::WriteResultFn OnWriteComplete)
  • private void writeUInt64sAsync(ArrayRef<tpctypes::UInt64Write> Ws, llvm::orc::ExecutorProcessControl::MemoryAccess::WriteResultFn OnWriteComplete)
  • private void writeUInt8sAsync(ArrayRef<tpctypes::UInt8Write> Ws, llvm::orc::ExecutorProcessControl::MemoryAccess::WriteResultFn OnWriteComplete)

Inherited from ExecutorProcessControl:

Methods

static Expected<
    std::unique_ptr<SelfExecutorProcessControl>>
Create(
    std::shared_ptr<SymbolStringPool> SSP =
        nullptr,
    std::unique_ptr<TaskDispatcher> D = nullptr,
    std::unique_ptr<jitlink::JITLinkMemoryManager>
        MemMgr = nullptr)

Description

Create a SelfExecutorProcessControl with the given symbol string pool and memory manager. If no symbol string pool is given then one will be created. If no memory manager is given a jitlink::InProcessMemoryManager will be created and used by default.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:425

Parameters

std::shared_ptr<SymbolStringPool> SSP = nullptr
std::unique_ptr<TaskDispatcher> D = nullptr
std::unique_ptr<jitlink::JITLinkMemoryManager> MemMgr = nullptr

SelfExecutorProcessControl(
    std::shared_ptr<SymbolStringPool> SSP,
    std::unique_ptr<TaskDispatcher> D,
    llvm::Triple TargetTriple,
    unsigned int PageSize,
    std::unique_ptr<jitlink::JITLinkMemoryManager>
        MemMgr)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:414

Parameters

std::shared_ptr<SymbolStringPool> SSP
std::unique_ptr<TaskDispatcher> D
llvm::Triple TargetTriple
unsigned int PageSize
std::unique_ptr<jitlink::JITLinkMemoryManager> MemMgr

void callWrapperAsync(
    llvm::orc::ExecutorAddr WrapperFnAddr,
    llvm::orc::ExecutorProcessControl::
        IncomingWFRHandler OnComplete,
    ArrayRef<char> ArgBuffer)

Description

Run a wrapper function in the executor. The given WFRHandler will be called on the result when it is returned. The wrapper function should be callable as: {.cpp}

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:437

Parameters

llvm::orc::ExecutorAddr WrapperFnAddr
llvm::orc::ExecutorProcessControl:: IncomingWFRHandler OnComplete
ArrayRef<char> ArgBuffer

llvm::Error disconnect()

Description

Disconnect from the target process. This should be called after the JIT session is shut down.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:441

static shared::CWrapperFunctionResult
jitDispatchViaWrapperFunctionManager(
    void* Ctx,
    const void* FnTag,
    const char* Data,
    size_t Size)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:460

Parameters

void* Ctx
const void* FnTag
const char* Data
size_t Size

Expected<tpctypes::DylibHandle> loadDylib(
    const char* DylibPath)

Description

Load the dynamic library at the given path and return a handle to it. If LibraryPath is null this function will return the global handle for the target process.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:429

Parameters

const char* DylibPath

Expected<std::vector<tpctypes::LookupResult>>
lookupSymbols(
    ArrayRef<llvm::orc::ExecutorProcessControl::
                 LookupRequest> Request)

Description

Search for symbols in the target process. The result of the lookup is a 2-dimentional array of target addresses that correspond to the lookup order. If a required symbol is not found then this method will return an error. If a weakly referenced symbol is not found then it be assigned a '0' value.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:432

Parameters

ArrayRef<llvm::orc::ExecutorProcessControl:: LookupRequest> Request

Expected<int32_t> runAsMain(
    llvm::orc::ExecutorAddr MainFnAddr,
    ArrayRef<std::string> Args)

Description

Run function with a main-like signature.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:434

Parameters

llvm::orc::ExecutorAddr MainFnAddr
ArrayRef<std::string> Args

void writeBuffersAsync(
    ArrayRef<tpctypes::BufferWrite> Ws,
    llvm::orc::ExecutorProcessControl::
        MemoryAccess::WriteResultFn
            OnWriteComplete)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:456

Parameters

ArrayRef<tpctypes::BufferWrite> Ws
llvm::orc::ExecutorProcessControl::MemoryAccess:: WriteResultFn OnWriteComplete

void writeUInt16sAsync(
    ArrayRef<tpctypes::UInt16Write> Ws,
    llvm::orc::ExecutorProcessControl::
        MemoryAccess::WriteResultFn
            OnWriteComplete)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:447

Parameters

ArrayRef<tpctypes::UInt16Write> Ws
llvm::orc::ExecutorProcessControl::MemoryAccess:: WriteResultFn OnWriteComplete

void writeUInt32sAsync(
    ArrayRef<tpctypes::UInt32Write> Ws,
    llvm::orc::ExecutorProcessControl::
        MemoryAccess::WriteResultFn
            OnWriteComplete)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:450

Parameters

ArrayRef<tpctypes::UInt32Write> Ws
llvm::orc::ExecutorProcessControl::MemoryAccess:: WriteResultFn OnWriteComplete

void writeUInt64sAsync(
    ArrayRef<tpctypes::UInt64Write> Ws,
    llvm::orc::ExecutorProcessControl::
        MemoryAccess::WriteResultFn
            OnWriteComplete)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:453

Parameters

ArrayRef<tpctypes::UInt64Write> Ws
llvm::orc::ExecutorProcessControl::MemoryAccess:: WriteResultFn OnWriteComplete

void writeUInt8sAsync(
    ArrayRef<tpctypes::UInt8Write> Ws,
    llvm::orc::ExecutorProcessControl::
        MemoryAccess::WriteResultFn
            OnWriteComplete)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/ExecutorProcessControl.h:444

Parameters

ArrayRef<tpctypes::UInt8Write> Ws
llvm::orc::ExecutorProcessControl::MemoryAccess:: WriteResultFn OnWriteComplete