1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
use super::prelude::*;
use super::object::LLVMObjectFileRef;
use super::target_machine::LLVMTargetMachineRef;
pub enum LLVMOrcOpaqueJITStack {}
pub type LLVMOrcJITStackRef = *mut LLVMOrcOpaqueJITStack;
pub type LLVMOrcModuleHandle = u32;
pub type LLVMOrcTargetAddress = u64;
pub type LLVMOrcSymbolResolverFn = Option<extern "C" fn(*const ::libc::c_char, *mut ::libc::c_void) -> u64>;
pub type LLVMOrcLazyCompileCallbackFn = Option<extern "C" fn(LLVMOrcJITStackRef, *mut ::libc::c_void)>;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub enum LLVMOrcErrorCode {
LLVMOrcErrSuccess = 0,
LLVMOrcErrGeneric,
}
extern "C" {
pub fn LLVMOrcCreateInstance(TM: LLVMTargetMachineRef) -> LLVMOrcJITStackRef;
pub fn LLVMOrcGetErrorMsg(JITStack: LLVMOrcJITStackRef) -> *const ::libc::c_char;
pub fn LLVMOrcGetMangledSymbol(JITStack: LLVMOrcJITStackRef,
MangledSymbol: *mut *mut ::libc::c_char,
Symbol: *const ::libc::c_char);
pub fn LLVMOrcDisposeMangledSymbol(MangledSymbol: *mut ::libc::c_char);
pub fn LLVMOrcCreateLazyCompileCallback(JITStack: LLVMOrcJITStackRef,
Callback: LLVMOrcLazyCompileCallbackFn,
CallbackCtx: *mut ::libc::c_void)
-> LLVMOrcTargetAddress;
pub fn LLVMOrcCreateIndirectStub(JITStack: LLVMOrcJITStackRef,
StubName: *const ::libc::c_char,
InitAddr: LLVMOrcTargetAddress)
-> LLVMOrcErrorCode;
pub fn LLVMOrcSetIndirectStubPointer(JITStack: LLVMOrcJITStackRef,
StubName: *const ::libc::c_char,
NewAddr: LLVMOrcTargetAddress)
-> LLVMOrcErrorCode;
pub fn LLVMOrcAddEagerlyCompiledIR(JITStack: LLVMOrcJITStackRef,
Mod: LLVMModuleRef,
SymbolResolver: LLVMOrcSymbolResolverFn,
SymbolResolverCtx: *mut ::libc::c_void)
-> LLVMOrcModuleHandle;
pub fn LLVMOrcAddLazilyCompiledIR(JITStack: LLVMOrcJITStackRef,
Mod: LLVMModuleRef,
SymbolResolver: LLVMOrcSymbolResolverFn,
SymbolResolverCtx: *mut ::libc::c_void)
-> LLVMOrcModuleHandle;
pub fn LLVMOrcAddObjectFile(JITStack: LLVMOrcJITStackRef,
Obj: LLVMObjectFileRef,
SymbolResolver: LLVMOrcSymbolResolverFn,
SymbolResolverCtx: *mut ::libc::c_void)
-> LLVMOrcModuleHandle;
pub fn LLVMOrcRemoveModule(JITStack: LLVMOrcJITStackRef, H: LLVMOrcModuleHandle);
pub fn LLVMOrcGetSymbolAddress(JITStack: LLVMOrcJITStackRef,
SymbolName: *const ::libc::c_char)
-> LLVMOrcTargetAddress;
pub fn LLVMOrcDisposeInstance(JITStack: LLVMOrcJITStackRef);
}