LLVM: include/llvm/ExecutionEngine/Orc/MemoryAccess.h Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13#ifndef LLVM_EXECUTIONENGINE_ORC_MEMORYACCESS_H
14#define LLVM_EXECUTIONENGINE_ORC_MEMORYACCESS_H
15
20
21#include
22
24
25
27public:
28
30
32 template
35
39
43
47
49
52
55
58
61
64
67
70
73
76
79
82
85
88
90 std::promise ResultP;
91 auto ResultF = ResultP.get_future();
93 return ResultF.get();
94 }
95
97 std::promise ResultP;
98 auto ResultF = ResultP.get_future();
100 [&](Error Err) { ResultP.set_value(std::move(Err)); });
101 return ResultF.get();
102 }
103
105 std::promise ResultP;
106 auto ResultF = ResultP.get_future();
108 [&](Error Err) { ResultP.set_value(std::move(Err)); });
109 return ResultF.get();
110 }
111
113 std::promise ResultP;
114 auto ResultF = ResultP.get_future();
116 [&](Error Err) { ResultP.set_value(std::move(Err)); });
117 return ResultF.get();
118 }
119
121 std::promise ResultP;
122 auto ResultF = ResultP.get_future();
124 [&](Error Err) { ResultP.set_value(std::move(Err)); });
125 return ResultF.get();
126 }
127
129 std::promise ResultP;
130 auto ResultF = ResultP.get_future();
132 [&](Error Err) { ResultP.set_value(std::move(Err)); });
133 return ResultF.get();
134 }
135
137 std::promise<MSVCPExpected<ReadUIntsResult<uint8_t>>> P;
139 P.set_value(std::move(Result));
140 });
141 return P.get_future().get();
142 }
143
145 std::promise<MSVCPExpected<ReadUIntsResult<uint16_t>>> P;
147 P.set_value(std::move(Result));
148 });
149 return P.get_future().get();
150 }
151
153 std::promise<MSVCPExpected<ReadUIntsResult<uint32_t>>> P;
155 P.set_value(std::move(Result));
156 });
157 return P.get_future().get();
158 }
159
161 std::promise<MSVCPExpected<ReadUIntsResult<uint64_t>>> P;
163 P.set_value(std::move(Result));
164 });
165 return P.get_future().get();
166 }
167
169 std::promise<MSVCPExpected> P;
171 P.set_value(std::move(Result));
172 });
173 return P.get_future().get();
174 }
175
177 std::promise<MSVCPExpected> P;
179 P.set_value(std::move(Result));
180 });
181 return P.get_future().get();
182 }
183
185 std::promise<MSVCPExpected> P;
187 P.set_value(std::move(Result));
188 });
189 return P.get_future().get();
190 }
191};
192
193}
194
195#endif
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Lightweight error class with error context and mandatory checking.
Tagged union holding either a T or a Error.
APIs for manipulating memory in the target process.
Definition MemoryAccess.h:26
Expected< ReadUIntsResult< uint64_t > > readUInt64s(ArrayRef< ExecutorAddr > Rs)
Definition MemoryAccess.h:160
unique_function< void(Expected< ReadStringsResult >)> OnReadStringsCompleteFn
Definition MemoryAccess.h:45
Expected< ReadBuffersResult > readBuffers(ArrayRef< ExecutorAddrRange > Rs)
Definition MemoryAccess.h:176
Error writeBuffers(ArrayRef< tpctypes::BufferWrite > Ws)
Definition MemoryAccess.h:128
unique_function< void(Expected< ReadBuffersResult >)> OnReadBuffersCompleteFn
Definition MemoryAccess.h:41
virtual void writeUInt64sAsync(ArrayRef< tpctypes::UInt64Write > Ws, WriteResultFn OnWriteComplete)=0
virtual void readPointersAsync(ArrayRef< ExecutorAddr > Rs, OnReadPointersCompleteFn OnComplete)=0
unique_function< void(Expected< ReadPointersResult >)> OnReadPointersCompleteFn
Definition MemoryAccess.h:37
virtual void readUInt8sAsync(ArrayRef< ExecutorAddr > Rs, OnReadUIntsCompleteFn< uint8_t > OnComplete)=0
Error writeUInt8s(ArrayRef< tpctypes::UInt8Write > Ws)
Definition MemoryAccess.h:89
virtual void readUInt16sAsync(ArrayRef< ExecutorAddr > Rs, OnReadUIntsCompleteFn< uint16_t > OnComplete)=0
std::vector< std::vector< uint8_t > > ReadBuffersResult
Definition MemoryAccess.h:40
virtual void readUInt32sAsync(ArrayRef< ExecutorAddr > Rs, OnReadUIntsCompleteFn< uint32_t > OnComplete)=0
unique_function< void(Error)> WriteResultFn
Callback function for asynchronous writes.
Definition MemoryAccess.h:29
Expected< ReadStringsResult > readStrings(ArrayRef< ExecutorAddr > Rs)
Definition MemoryAccess.h:184
std::vector< std::string > ReadStringsResult
Definition MemoryAccess.h:44
virtual void writeUInt16sAsync(ArrayRef< tpctypes::UInt16Write > Ws, WriteResultFn OnWriteComplete)=0
unique_function< void(Expected< ReadUIntsResult< T > >)> OnReadUIntsCompleteFn
Definition MemoryAccess.h:33
Error writeUInt16s(ArrayRef< tpctypes::UInt16Write > Ws)
Definition MemoryAccess.h:96
virtual void writeUInt32sAsync(ArrayRef< tpctypes::UInt32Write > Ws, WriteResultFn OnWriteComplete)=0
virtual void writeBuffersAsync(ArrayRef< tpctypes::BufferWrite > Ws, WriteResultFn OnWriteComplete)=0
virtual void writeUInt8sAsync(ArrayRef< tpctypes::UInt8Write > Ws, WriteResultFn OnWriteComplete)=0
virtual void readUInt64sAsync(ArrayRef< ExecutorAddr > Rs, OnReadUIntsCompleteFn< uint64_t > OnComplete)=0
virtual void readStringsAsync(ArrayRef< ExecutorAddr > Rs, OnReadStringsCompleteFn OnComplete)=0
virtual void writePointersAsync(ArrayRef< tpctypes::PointerWrite > Ws, WriteResultFn OnWriteComplete)=0
std::vector< ExecutorAddr > ReadPointersResult
Definition MemoryAccess.h:36
Expected< ReadPointersResult > readPointers(ArrayRef< ExecutorAddr > Rs)
Definition MemoryAccess.h:168
Error writePointers(ArrayRef< tpctypes::PointerWrite > Ws)
Definition MemoryAccess.h:120
Expected< ReadUIntsResult< uint8_t > > readUInt8s(ArrayRef< ExecutorAddr > Rs)
Definition MemoryAccess.h:136
Error writeUInt32s(ArrayRef< tpctypes::UInt32Write > Ws)
Definition MemoryAccess.h:104
Error writeUInt64s(ArrayRef< tpctypes::UInt64Write > Ws)
Definition MemoryAccess.h:112
std::vector< T > ReadUIntsResult
Definition MemoryAccess.h:31
virtual void readBuffersAsync(ArrayRef< ExecutorAddrRange > Rs, OnReadBuffersCompleteFn OnComplete)=0
Expected< ReadUIntsResult< uint32_t > > readUInt32s(ArrayRef< ExecutorAddr > Rs)
Definition MemoryAccess.h:152
Expected< ReadUIntsResult< uint16_t > > readUInt16s(ArrayRef< ExecutorAddr > Rs)
Definition MemoryAccess.h:144
unique_function is a type-erasing functor similar to std::function.