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.