1349cc55cSDimitry Andric //===---- OrcRTBridge.h -- Utils for interacting with orc-rt ----*- C++ -*-===//
2349cc55cSDimitry Andric //
3349cc55cSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4349cc55cSDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5349cc55cSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6349cc55cSDimitry Andric //
7349cc55cSDimitry Andric //===----------------------------------------------------------------------===//
8349cc55cSDimitry Andric //
9349cc55cSDimitry Andric // Declares types and symbol names provided by the ORC runtime.
10349cc55cSDimitry Andric //
11349cc55cSDimitry Andric //===----------------------------------------------------------------------===//
12349cc55cSDimitry Andric 
13349cc55cSDimitry Andric #ifndef LLVM_EXECUTIONENGINE_ORC_SHARED_ORCRTBRIDGE_H
14349cc55cSDimitry Andric #define LLVM_EXECUTIONENGINE_ORC_SHARED_ORCRTBRIDGE_H
15349cc55cSDimitry Andric 
16349cc55cSDimitry Andric #include "llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h"
17*1db9f3b2SDimitry Andric #include "llvm/ExecutionEngine/Orc/Shared/ExecutorSymbolDef.h"
18349cc55cSDimitry Andric #include "llvm/ExecutionEngine/Orc/Shared/SimpleRemoteEPCUtils.h"
19349cc55cSDimitry Andric #include "llvm/ExecutionEngine/Orc/Shared/TargetProcessControlTypes.h"
20349cc55cSDimitry Andric 
21349cc55cSDimitry Andric namespace llvm {
22349cc55cSDimitry Andric namespace orc {
23349cc55cSDimitry Andric namespace rt {
24349cc55cSDimitry Andric 
25349cc55cSDimitry Andric extern const char *SimpleExecutorDylibManagerInstanceName;
26349cc55cSDimitry Andric extern const char *SimpleExecutorDylibManagerOpenWrapperName;
27349cc55cSDimitry Andric extern const char *SimpleExecutorDylibManagerLookupWrapperName;
28349cc55cSDimitry Andric 
29349cc55cSDimitry Andric extern const char *SimpleExecutorMemoryManagerInstanceName;
30349cc55cSDimitry Andric extern const char *SimpleExecutorMemoryManagerReserveWrapperName;
31349cc55cSDimitry Andric extern const char *SimpleExecutorMemoryManagerFinalizeWrapperName;
32349cc55cSDimitry Andric extern const char *SimpleExecutorMemoryManagerDeallocateWrapperName;
33349cc55cSDimitry Andric 
34fcaf7f86SDimitry Andric extern const char *ExecutorSharedMemoryMapperServiceInstanceName;
35fcaf7f86SDimitry Andric extern const char *ExecutorSharedMemoryMapperServiceReserveWrapperName;
36fcaf7f86SDimitry Andric extern const char *ExecutorSharedMemoryMapperServiceInitializeWrapperName;
37fcaf7f86SDimitry Andric extern const char *ExecutorSharedMemoryMapperServiceDeinitializeWrapperName;
38fcaf7f86SDimitry Andric extern const char *ExecutorSharedMemoryMapperServiceReleaseWrapperName;
39fcaf7f86SDimitry Andric 
40349cc55cSDimitry Andric extern const char *MemoryWriteUInt8sWrapperName;
41349cc55cSDimitry Andric extern const char *MemoryWriteUInt16sWrapperName;
42349cc55cSDimitry Andric extern const char *MemoryWriteUInt32sWrapperName;
43349cc55cSDimitry Andric extern const char *MemoryWriteUInt64sWrapperName;
44349cc55cSDimitry Andric extern const char *MemoryWriteBuffersWrapperName;
45349cc55cSDimitry Andric 
4604eeddc0SDimitry Andric extern const char *RegisterEHFrameSectionWrapperName;
4704eeddc0SDimitry Andric extern const char *DeregisterEHFrameSectionWrapperName;
48349cc55cSDimitry Andric 
49349cc55cSDimitry Andric extern const char *RunAsMainWrapperName;
50bdd1243dSDimitry Andric extern const char *RunAsVoidFunctionWrapperName;
51bdd1243dSDimitry Andric extern const char *RunAsIntFunctionWrapperName;
52349cc55cSDimitry Andric 
53349cc55cSDimitry Andric using SPSSimpleExecutorDylibManagerOpenSignature =
54bdd1243dSDimitry Andric     shared::SPSExpected<shared::SPSExecutorAddr>(shared::SPSExecutorAddr,
55bdd1243dSDimitry Andric                                                  shared::SPSString, uint64_t);
56349cc55cSDimitry Andric 
57349cc55cSDimitry Andric using SPSSimpleExecutorDylibManagerLookupSignature =
58*1db9f3b2SDimitry Andric     shared::SPSExpected<shared::SPSSequence<shared::SPSExecutorSymbolDef>>(
59bdd1243dSDimitry Andric         shared::SPSExecutorAddr, shared::SPSExecutorAddr,
60bdd1243dSDimitry Andric         shared::SPSRemoteSymbolLookupSet);
61349cc55cSDimitry Andric 
62349cc55cSDimitry Andric using SPSSimpleExecutorMemoryManagerReserveSignature =
63349cc55cSDimitry Andric     shared::SPSExpected<shared::SPSExecutorAddr>(shared::SPSExecutorAddr,
64349cc55cSDimitry Andric                                                  uint64_t);
65349cc55cSDimitry Andric using SPSSimpleExecutorMemoryManagerFinalizeSignature =
66349cc55cSDimitry Andric     shared::SPSError(shared::SPSExecutorAddr, shared::SPSFinalizeRequest);
67349cc55cSDimitry Andric using SPSSimpleExecutorMemoryManagerDeallocateSignature = shared::SPSError(
68349cc55cSDimitry Andric     shared::SPSExecutorAddr, shared::SPSSequence<shared::SPSExecutorAddr>);
69349cc55cSDimitry Andric 
70fcaf7f86SDimitry Andric // ExecutorSharedMemoryMapperService
71fcaf7f86SDimitry Andric using SPSExecutorSharedMemoryMapperServiceReserveSignature =
72fcaf7f86SDimitry Andric     shared::SPSExpected<
73fcaf7f86SDimitry Andric         shared::SPSTuple<shared::SPSExecutorAddr, shared::SPSString>>(
74fcaf7f86SDimitry Andric         shared::SPSExecutorAddr, uint64_t);
75fcaf7f86SDimitry Andric using SPSExecutorSharedMemoryMapperServiceInitializeSignature =
76fcaf7f86SDimitry Andric     shared::SPSExpected<shared::SPSExecutorAddr>(
77fcaf7f86SDimitry Andric         shared::SPSExecutorAddr, shared::SPSExecutorAddr,
78fcaf7f86SDimitry Andric         shared::SPSSharedMemoryFinalizeRequest);
79fcaf7f86SDimitry Andric using SPSExecutorSharedMemoryMapperServiceDeinitializeSignature =
80fcaf7f86SDimitry Andric     shared::SPSError(shared::SPSExecutorAddr,
81fcaf7f86SDimitry Andric                      shared::SPSSequence<shared::SPSExecutorAddr>);
82fcaf7f86SDimitry Andric using SPSExecutorSharedMemoryMapperServiceReleaseSignature = shared::SPSError(
83fcaf7f86SDimitry Andric     shared::SPSExecutorAddr, shared::SPSSequence<shared::SPSExecutorAddr>);
84fcaf7f86SDimitry Andric 
85349cc55cSDimitry Andric using SPSRunAsMainSignature = int64_t(shared::SPSExecutorAddr,
86349cc55cSDimitry Andric                                       shared::SPSSequence<shared::SPSString>);
87bdd1243dSDimitry Andric using SPSRunAsVoidFunctionSignature = int32_t(shared::SPSExecutorAddr);
88bdd1243dSDimitry Andric using SPSRunAsIntFunctionSignature = int32_t(shared::SPSExecutorAddr, int32_t);
89349cc55cSDimitry Andric } // end namespace rt
90349cc55cSDimitry Andric } // end namespace orc
91349cc55cSDimitry Andric } // end namespace llvm
92349cc55cSDimitry Andric 
93349cc55cSDimitry Andric #endif // LLVM_EXECUTIONENGINE_ORC_SHARED_ORCRTBRIDGE_H
94