use super::prelude::*;
use super::target_machine::LLVMTargetMachineRef;
pub enum LLVMOpaqueSharedModule {}
pub type LLVMSharedModuleRef = *mut LLVMOpaqueSharedModule;
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 LLVMOrcMakeSharedModule(Mod: LLVMModuleRef) -> LLVMSharedModuleRef;
pub fn LLVMOrcDisposeSharedModuleRef(SharedMod: LLVMSharedModuleRef);
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,
RetAddr: *mut LLVMOrcTargetAddress,
Callback: LLVMOrcLazyCompileCallbackFn,
CallbackCtx: *mut ::libc::c_void)
-> LLVMOrcErrorCode;
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,
RetHandle: *mut LLVMOrcModuleHandle,
Mod: LLVMSharedModuleRef,
SymbolResolver: LLVMOrcSymbolResolverFn,
SymbolResolverCtx: *mut ::libc::c_void)
-> LLVMOrcErrorCode;
pub fn LLVMOrcAddLazilyCompiledIR(JITStack: LLVMOrcJITStackRef,
RetHandle: *mut LLVMOrcModuleHandle,
Mod: LLVMSharedModuleRef,
SymbolResolver: LLVMOrcSymbolResolverFn,
SymbolResolverCtx: *mut ::libc::c_void)
-> LLVMOrcErrorCode;
pub fn LLVMOrcAddObjectFile(JITStack: LLVMOrcJITStackRef,
RetHandle: *mut LLVMOrcModuleHandle,
Obj: LLVMMemoryBufferRef,
SymbolResolver: LLVMOrcSymbolResolverFn,
SymbolResolverCtx: *mut ::libc::c_void)
-> LLVMOrcErrorCode;
pub fn LLVMOrcRemoveModule(JITStack: LLVMOrcJITStackRef, H: LLVMOrcModuleHandle) -> LLVMOrcErrorCode;
pub fn LLVMOrcGetSymbolAddress(JITStack: LLVMOrcJITStackRef,
RetAddr: *mut LLVMOrcTargetAddress,
SymbolName: *const ::libc::c_char)
-> LLVMOrcErrorCode;
pub fn LLVMOrcDisposeInstance(JITStack: LLVMOrcJITStackRef) -> LLVMOrcErrorCode;
}