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/ADT/StringMap.h"
17349cc55cSDimitry Andric #include "llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.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 
34349cc55cSDimitry Andric extern const char *MemoryWriteUInt8sWrapperName;
35349cc55cSDimitry Andric extern const char *MemoryWriteUInt16sWrapperName;
36349cc55cSDimitry Andric extern const char *MemoryWriteUInt32sWrapperName;
37349cc55cSDimitry Andric extern const char *MemoryWriteUInt64sWrapperName;
38349cc55cSDimitry Andric extern const char *MemoryWriteBuffersWrapperName;
39349cc55cSDimitry Andric 
40*04eeddc0SDimitry Andric extern const char *RegisterEHFrameSectionWrapperName;
41*04eeddc0SDimitry Andric extern const char *DeregisterEHFrameSectionWrapperName;
42349cc55cSDimitry Andric 
43349cc55cSDimitry Andric extern const char *RunAsMainWrapperName;
44349cc55cSDimitry Andric 
45349cc55cSDimitry Andric using SPSSimpleExecutorDylibManagerOpenSignature =
46349cc55cSDimitry Andric     shared::SPSExpected<uint64_t>(shared::SPSExecutorAddr, shared::SPSString,
47349cc55cSDimitry Andric                                   uint64_t);
48349cc55cSDimitry Andric 
49349cc55cSDimitry Andric using SPSSimpleExecutorDylibManagerLookupSignature =
50349cc55cSDimitry Andric     shared::SPSExpected<shared::SPSSequence<shared::SPSExecutorAddr>>(
51349cc55cSDimitry Andric         shared::SPSExecutorAddr, uint64_t, shared::SPSRemoteSymbolLookupSet);
52349cc55cSDimitry Andric 
53349cc55cSDimitry Andric using SPSSimpleExecutorMemoryManagerReserveSignature =
54349cc55cSDimitry Andric     shared::SPSExpected<shared::SPSExecutorAddr>(shared::SPSExecutorAddr,
55349cc55cSDimitry Andric                                                  uint64_t);
56349cc55cSDimitry Andric using SPSSimpleExecutorMemoryManagerFinalizeSignature =
57349cc55cSDimitry Andric     shared::SPSError(shared::SPSExecutorAddr, shared::SPSFinalizeRequest);
58349cc55cSDimitry Andric using SPSSimpleExecutorMemoryManagerDeallocateSignature = shared::SPSError(
59349cc55cSDimitry Andric     shared::SPSExecutorAddr, shared::SPSSequence<shared::SPSExecutorAddr>);
60349cc55cSDimitry Andric 
61349cc55cSDimitry Andric using SPSRunAsMainSignature = int64_t(shared::SPSExecutorAddr,
62349cc55cSDimitry Andric                                       shared::SPSSequence<shared::SPSString>);
63349cc55cSDimitry Andric 
64349cc55cSDimitry Andric } // end namespace rt
65349cc55cSDimitry Andric } // end namespace orc
66349cc55cSDimitry Andric } // end namespace llvm
67349cc55cSDimitry Andric 
68349cc55cSDimitry Andric #endif // LLVM_EXECUTIONENGINE_ORC_SHARED_ORCRTBRIDGE_H
69