18#ifndef LLVM_EXECUTIONENGINE_ORC_EPCGENERICMEMORYACCESS_H
19#define LLVM_EXECUTIONENGINE_ORC_EPCGENERICMEMORYACCESS_H
48 : EPC(EPC), FAs(FAs) {}
52 using namespace shared;
59 using namespace shared;
66 using namespace shared;
73 using namespace shared;
80 using namespace shared;
87 using namespace shared;
94 using namespace shared;
97 [OnComplete = std::move(OnComplete)](
100 OnComplete(std::move(Err));
102 OnComplete(std::move(
Result));
109 using namespace shared;
111 SPSSequence<SPSExecutorAddr>)>(
113 [OnComplete = std::move(OnComplete)](
116 OnComplete(std::move(Err));
118 OnComplete(std::move(
Result));
125 using namespace shared;
127 SPSSequence<SPSExecutorAddr>)>(
129 [OnComplete = std::move(OnComplete)](
132 OnComplete(std::move(Err));
134 OnComplete(std::move(
Result));
141 using namespace shared;
143 SPSSequence<SPSExecutorAddr>)>(
145 [OnComplete = std::move(OnComplete)](
148 OnComplete(std::move(Err));
150 OnComplete(std::move(
Result));
157 using namespace shared;
158 using SPSSig = SPSSequence<SPSExecutorAddr>(SPSSequence<SPSExecutorAddr>);
161 [OnComplete = std::move(OnComplete)](
164 OnComplete(std::move(Err));
166 OnComplete(std::move(
Result));
173 using namespace shared;
175 SPSSequence<SPSSequence<uint8_t>>(SPSSequence<SPSExecutorAddrRange>);
178 [OnComplete = std::move(OnComplete)](
Error Err,
181 OnComplete(std::move(Err));
183 OnComplete(std::move(
Result));
190 using namespace shared;
191 using SPSSig = SPSSequence<SPSString>(SPSSequence<SPSExecutorAddr>);
194 [OnComplete = std::move(OnComplete)](
Error Err,
197 OnComplete(std::move(Err));
199 OnComplete(std::move(
Result));
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Lightweight error class with error context and mandatory checking.
void readUInt8sAsync(ArrayRef< ExecutorAddr > Rs, OnReadUIntsCompleteFn< uint8_t > OnComplete) override
void readUInt32sAsync(ArrayRef< ExecutorAddr > Rs, OnReadUIntsCompleteFn< uint32_t > OnComplete) override
void writeUInt16sAsync(ArrayRef< tpctypes::UInt16Write > Ws, WriteResultFn OnWriteComplete) override
void readStringsAsync(ArrayRef< ExecutorAddr > Rs, OnReadStringsCompleteFn OnComplete) override
void readUInt16sAsync(ArrayRef< ExecutorAddr > Rs, OnReadUIntsCompleteFn< uint16_t > OnComplete) override
void readBuffersAsync(ArrayRef< ExecutorAddrRange > Rs, OnReadBuffersCompleteFn OnComplete) override
void writeUInt32sAsync(ArrayRef< tpctypes::UInt32Write > Ws, WriteResultFn OnWriteComplete) override
void writeUInt64sAsync(ArrayRef< tpctypes::UInt64Write > Ws, WriteResultFn OnWriteComplete) override
void writePointersAsync(ArrayRef< tpctypes::PointerWrite > Ws, WriteResultFn OnWriteComplete) override
void readUInt64sAsync(ArrayRef< ExecutorAddr > Rs, OnReadUIntsCompleteFn< uint64_t > OnComplete) override
void readPointersAsync(ArrayRef< ExecutorAddr > Rs, OnReadPointersCompleteFn OnComplete) override
EPCGenericMemoryAccess(ExecutorProcessControl &EPC, FuncAddrs FAs)
Create an EPCGenericMemoryAccess instance from a given set of function addrs.
void writeUInt8sAsync(ArrayRef< tpctypes::UInt8Write > Ws, WriteResultFn OnWriteComplete) override
void writeBuffersAsync(ArrayRef< tpctypes::BufferWrite > Ws, WriteResultFn OnWriteComplete) override
Represents an address in the executor process.
ExecutorProcessControl supports interaction with a JIT target process.
void callSPSWrapperAsync(RunPolicyT &&Runner, ExecutorAddr WrapperFnAddr, SendResultT &&SendResult, const ArgTs &...Args)
Run a wrapper function using SPS to serialize the arguments and deserialize the results.
APIs for manipulating memory in the target process.
std::vector< std::string > ReadStringsResult
std::vector< ExecutorAddr > ReadPointersResult
std::vector< std::vector< uint8_t > > ReadBuffersResult
std::vector< T > ReadUIntsResult
This is an optimization pass for GlobalISel generic memory operations.
Function addresses for memory access.
ExecutorAddr ReadPointers
ExecutorAddr WritePointers
ExecutorAddr WriteUInt64s
ExecutorAddr WriteUInt16s
ExecutorAddr WriteUInt32s
ExecutorAddr WriteBuffers