16 #ifndef LLVM_EXECUTIONENGINE_ORC_ORCREMOTETARGETRPCAPI_H
17 #define LLVM_EXECUTIONENGINE_ORC_ORCREMOTETARGETRPCAPI_H
31 : Src(Src), Dst(Dst), Size(Size) {}
33 const char *
getSrc()
const {
return Src; }
49 static const char *
getName() {
return "DirectBufferWriter"; }
52 template <
typename ChannelT>
55 typename std::enable_if<
56 std::is_base_of<RawByteChannel, ChannelT>::value>::type> {
73 char *Addr =
reinterpret_cast<char *
>(
static_cast<uintptr_t
>(Dst));
77 return C.readBytes(Addr, Size);
94 if (!FreeIds.empty()) {
105 std::vector<ResourceId> FreeIds;
114 :
public rpc::Function<CallIntVoid, int32_t(JITTargetAddress Addr)> {
116 static const char *
getName() {
return "CallIntVoid"; }
120 :
public rpc::Function<CallMain, int32_t(JITTargetAddress Addr,
121 std::vector<std::string> Args)> {
123 static const char *
getName() {
return "CallMain"; }
127 :
public rpc::Function<CallVoidVoid, void(JITTargetAddress FnAddr)> {
129 static const char *
getName() {
return "CallVoidVoid"; }
134 void(ResourceIdMgr::ResourceId AllocatorID)> {
136 static const char *
getName() {
return "CreateRemoteAllocator"; }
141 void(ResourceIdMgr::ResourceId StubOwnerID)> {
143 static const char *
getName() {
return "CreateIndirectStubsOwner"; }
148 void(JITTargetAddress Addr, uint32_t Size)> {
150 static const char *
getName() {
return "DeregisterEHFrames"; }
155 void(ResourceIdMgr::ResourceId AllocatorID)> {
157 static const char *
getName() {
return "DestroyRemoteAllocator"; }
162 void(ResourceIdMgr::ResourceId StubsOwnerID)> {
164 static const char *
getName() {
return "DestroyIndirectStubsOwner"; }
171 std::tuple<JITTargetAddress, JITTargetAddress, uint32_t>(
172 ResourceIdMgr::ResourceId StubsOwnerID,
173 uint32_t NumStubsRequired)> {
175 static const char *
getName() {
return "EmitIndirectStubs"; }
180 static const char *
getName() {
return "EmitResolverBlock"; }
186 std::tuple<JITTargetAddress, uint32_t>()> {
188 static const char *
getName() {
return "EmitTrampolineBlock"; }
193 JITTargetAddress(std::string SymbolName)> {
195 static const char *
getName() {
return "GetSymbolAddress"; }
203 std::tuple<std::string, uint32_t, uint32_t, uint32_t, uint32_t>()> {
205 static const char *
getName() {
return "GetRemoteInfo"; }
209 :
public rpc::Function<ReadMem, std::vector<uint8_t>(JITTargetAddress Src,
212 static const char *
getName() {
return "ReadMem"; }
217 void(JITTargetAddress Addr, uint32_t Size)> {
219 static const char *
getName() {
return "RegisterEHFrames"; }
224 JITTargetAddress(ResourceIdMgr::ResourceId AllocID,
225 uint64_t Size, uint32_t Align)> {
227 static const char *
getName() {
return "ReserveMem"; }
232 RequestCompile, JITTargetAddress(JITTargetAddress TrampolineAddr)> {
234 static const char *
getName() {
return "RequestCompile"; }
239 void(ResourceIdMgr::ResourceId AllocID,
240 JITTargetAddress Dst, uint32_t ProtFlags)> {
242 static const char *
getName() {
return "SetProtections"; }
247 static const char *
getName() {
return "TerminateSession"; }
251 :
public rpc::Function<WriteMem, void(remote::DirectBufferWriter DB)> {
253 static const char *
getName() {
return "WriteMem"; }
257 JITTargetAddress Val)> {
259 static const char *
getName() {
return "WritePtr"; }
EmitTrampolineBlock result is (BlockAddr, NumTrampolines).
GetRemoteInfo result is (Triple, PointerSize, PageSize, TrampolineSize, IndirectStubsSize).
static const char * getName()
static const char * getName()
static const char * getName()
Interface for byte-streams to be used with RPC.
static const char * getName()
static const char * getName()
JITTargetAddress getDst() const
const char * getSrc() const
static const char * getName()
DirectBufferWriter()=default
static const char * getName()
static const char * getName()
The SerializationTraits<ChannelT, T> class describes how to serialize and deserialize an instance of ...
static const char * getName()
uint64_t JITTargetAddress
Represents an address in the target process's address space.
EmitIndirectStubs result is (StubsBase, PtrsBase, NumStubsEmitted).
static const char * getName()
static Error deserialize(ChannelT &C, remote::DirectBufferWriter &DBW)
DirectBufferWriter(const char *Src, JITTargetAddress Dst, uint64_t Size)
static const char * getName()
static const char * getName()
static const char * getName()
void release(ResourceId I)
static const char * getName()
static GCRegistry::Add< ShadowStackGC > C("shadow-stack","Very portable GC for uncooperative code generators")
static const char * getName()
static const char * getName()
static const char * getName()
Error deserializeSeq(ChannelT &C, ArgTs &...Args)
static Error serialize(ChannelT &C, const remote::DirectBufferWriter &DBW)
static const char * getName()
Error serializeSeq(ChannelT &C, const ArgTs &...Args)
OrcRemoteTargetRPCAPI(rpc::RawByteChannel &C)
static const char * getName()
static const char * getName()
Lightweight error class with error context and mandatory checking.
static const char * getName()
static const ResourceId InvalidId
SingleThreadedRPCEndpoint(rpc::RawByteChannel &C, bool LazyAutoNegotiation)
static const char * getName()