1 | /*===-- llvm-c/OrcEE.h - OrcV2 C bindings ExecutionEngine utils -*- C++ -*-===*\ |
2 | |* *| |
3 | |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| |
4 | |* Exceptions. *| |
5 | |* See https://llvm.org/LICENSE.txt for license information. *| |
6 | |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| |
7 | |* *| |
8 | |*===----------------------------------------------------------------------===*| |
9 | |* *| |
10 | |* This header declares the C interface to ExecutionEngine based utils, e.g. *| |
11 | |* RTDyldObjectLinkingLayer (based on RuntimeDyld) in Orc. *| |
12 | |* *| |
13 | |* Many exotic languages can interoperate with C code but have a harder time *| |
14 | |* with C++ due to name mangling. So in addition to C, this interface enables *| |
15 | |* tools written in such languages. *| |
16 | |* *| |
17 | |* Note: This interface is experimental. It is *NOT* stable, and may be *| |
18 | |* changed without warning. Only C API usage documentation is *| |
19 | |* provided. See the C++ documentation for all higher level ORC API *| |
20 | |* details. *| |
21 | |* *| |
22 | \*===----------------------------------------------------------------------===*/ |
23 | |
24 | #ifndef LLVM_C_ORCEE_H |
25 | #define LLVM_C_ORCEE_H |
26 | |
27 | #include "llvm-c/Error.h" |
28 | #include "llvm-c/ExecutionEngine.h" |
29 | #include "llvm-c/Orc.h" |
30 | #include "llvm-c/TargetMachine.h" |
31 | #include "llvm-c/Types.h" |
32 | |
33 | LLVM_C_EXTERN_C_BEGIN |
34 | |
35 | /** |
36 | * Create a RTDyldObjectLinkingLayer instance using the standard |
37 | * SectionMemoryManager for memory management. |
38 | */ |
39 | LLVMOrcObjectLayerRef |
40 | LLVMOrcCreateRTDyldObjectLinkingLayerWithSectionMemoryManager( |
41 | LLVMOrcExecutionSessionRef ES); |
42 | |
43 | /** |
44 | * Add the given listener to the given RTDyldObjectLinkingLayer. |
45 | * |
46 | * Note: Layer must be an RTDyldObjectLinkingLayer instance or |
47 | * behavior is undefined. |
48 | */ |
49 | void LLVMOrcRTDyldObjectLinkingLayerRegisterJITEventListener( |
50 | LLVMOrcObjectLayerRef RTDyldObjLinkingLayer, |
51 | LLVMJITEventListenerRef Listener); |
52 | |
53 | LLVM_C_EXTERN_C_END |
54 | |
55 | #endif /* LLVM_C_ORCEE_H */ |
56 | |