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:
- public callSPSWrapper
- public callSPSWrapperAsync
- public callSPSWrapperAsync
- public callWrapper
- public callWrapperAsync
- public callWrapperAsync
- public callWrapperAsync
- public disconnect
- public getBootstrapSymbols
- public getBootstrapSymbolsMap
- public getDispatcher
- public getExecutionSession
- public getJITDispatchInfo
- public getMemMgr
- public getMemoryAccess
- public getPageSize
- public getSymbolStringPool
- public getTargetTriple
- public intern
- public loadDylib
- public lookupSymbols
- public runAsMain
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)
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)
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)
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()
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)
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)
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)
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)
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)
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)
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)
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)
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)
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