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 = extern "C" fn(*const ::libc::c_char, *mut ::libc::c_void) -> u64;
pub type LLVMOrcLazyCompileCallbackFn = extern "C" fn(LLVMOrcJITStackRef, *mut ::libc::c_void);
#[repr(C)]
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 LLVMRemoveModule(JITStack: LLVMOrcJITStackRef, H: LLVMOrcModuleHandle);
pub fn LLVMOrcGetSymbolAddress(JITStack: LLVMOrcJITStackRef,
SymbolName: *const ::libc::c_char)
-> LLVMOrcTargetAddress;
pub fn LLVMOrcDisposeInstance(JITStack: LLVMOrcJITStackRef);
}