llvm_sys/orc2/
lljit.rs

1use crate::error::LLVMErrorRef;
2
3use super::*;
4
5pub type LLVMOrcLLJITBuilderObjectLinkingLayerCreatorFunction =
6    extern "C" fn(
7        Ctx: *mut ::libc::c_void,
8        ES: LLVMOrcExecutionSessionRef,
9        Triple: *const ::libc::c_char,
10    ) -> LLVMOrcObjectLayerRef;
11
12#[derive(Debug)]
13pub enum LLVMOrcOpaqueLLJITBuilder {}
14pub type LLVMOrcLLJITBuilderRef = *mut LLVMOrcOpaqueLLJITBuilder;
15
16#[derive(Debug)]
17pub enum LLVMOrcOpaqueLLJIT {}
18pub type LLVMOrcLLJITRef = *mut LLVMOrcOpaqueLLJIT;
19
20extern "C" {
21    pub fn LLVMOrcCreateLLJITBuilder() -> LLVMOrcLLJITBuilderRef;
22    pub fn LLVMOrcDisposeLLJITBuilder(Builder: LLVMOrcLLJITBuilderRef);
23    pub fn LLVMOrcLLJITBuilderSetJITTargetMachineBuilder(
24        Builder: LLVMOrcLLJITBuilderRef,
25        JTMB: LLVMOrcJITTargetMachineBuilderRef,
26    );
27    pub fn LLVMOrcLLJITBuilderSetObjectLinkingLayerCreator(
28        Builder: LLVMOrcLLJITBuilderRef,
29        F: LLVMOrcLLJITBuilderObjectLinkingLayerCreatorFunction,
30        Ctx: *mut ::libc::c_void,
31    );
32    pub fn LLVMOrcCreateLLJIT(
33        Result: *mut LLVMOrcLLJITRef,
34        Builder: LLVMOrcLLJITBuilderRef,
35    ) -> LLVMErrorRef;
36    pub fn LLVMOrcDisposeLLJIT(J: LLVMOrcLLJITRef) -> LLVMErrorRef;
37    pub fn LLVMOrcLLJITGetExecutionSession(J: LLVMOrcLLJITRef) -> LLVMOrcExecutionSessionRef;
38    pub fn LLVMOrcLLJITGetMainJITDylib(J: LLVMOrcLLJITRef) -> LLVMOrcJITDylibRef;
39    pub fn LLVMOrcLLJITGetTripleString(J: LLVMOrcLLJITRef) -> *const ::libc::c_char;
40    pub fn LLVMOrcLLJITGetGlobalPrefix(J: LLVMOrcLLJITRef) -> ::libc::c_char;
41    pub fn LLVMOrcLLJITMangleAndIntern(
42        J: LLVMOrcLLJITRef,
43        UnmangledName: *const ::libc::c_char,
44    ) -> LLVMOrcSymbolStringPoolEntryRef;
45    pub fn LLVMOrcLLJITAddObjectFile(
46        J: LLVMOrcLLJITRef,
47        JD: LLVMOrcJITDylibRef,
48        ObjBuffer: LLVMMemoryBufferRef,
49    ) -> LLVMErrorRef;
50    pub fn LLVMOrcLLJITAddObjectFileWithRT(
51        J: LLVMOrcLLJITRef,
52        RT: LLVMOrcResourceTrackerRef,
53        ObjBuffer: LLVMMemoryBufferRef,
54    ) -> LLVMErrorRef;
55    pub fn LLVMOrcLLJITAddLLVMIRModule(
56        J: LLVMOrcLLJITRef,
57        JD: LLVMOrcJITDylibRef,
58        TSM: LLVMOrcThreadSafeModuleRef,
59    ) -> LLVMErrorRef;
60    pub fn LLVMOrcLLJITAddLLVMIRModuleWithRT(
61        J: LLVMOrcLLJITRef,
62        JD: LLVMOrcResourceTrackerRef,
63        TSM: LLVMOrcThreadSafeModuleRef,
64    ) -> LLVMErrorRef;
65    pub fn LLVMOrcLLJITLookup(
66        J: LLVMOrcLLJITRef,
67        Result: *mut LLVMOrcExecutorAddress,
68        Name: *const ::libc::c_char,
69    ) -> LLVMErrorRef;
70    pub fn LLVMOrcLLJITGetObjLinkingLayer(J: LLVMOrcLLJITRef) -> LLVMOrcObjectLayerRef;
71    pub fn LLVMOrcLLJITGetObjTransformLayer(J: LLVMOrcLLJITRef) -> LLVMOrcObjectTransformLayerRef;
72    pub fn LLVMOrcLLJITGetIRTransformLayer(J: LLVMOrcLLJITRef) -> LLVMOrcIRTransformLayerRef;
73    pub fn LLVMOrcLLJITGetDataLayoutStr(J: LLVMOrcLLJITRef) -> *const ::libc::c_char;
74
75    /// Install the plugin that submits debug objects to the executor.
76    ///
77    /// Executors must expose the llvm_orc_registerJITLoaderGDBWrapper symbol.
78    pub fn LLVMOrcLLJITEnableDebugSupport(J: LLVMOrcLLJITRef) -> LLVMErrorRef;
79}