use super::error::LLVMErrorRef;
use super::prelude::*;
use super::target_machine::LLVMTargetMachineRef;
#[derive(Debug)]
pub enum LLVMOrcOpaqueJITStack {}
pub type LLVMOrcJITStackRef = *mut LLVMOrcOpaqueJITStack;
pub type LLVMOrcModuleHandle = u64;
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)>;
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,
RetAddr: *mut LLVMOrcTargetAddress,
Callback: LLVMOrcLazyCompileCallbackFn,
CallbackCtx: *mut ::libc::c_void,
) -> LLVMErrorRef;
pub fn LLVMOrcCreateIndirectStub(
JITStack: LLVMOrcJITStackRef,
StubName: *const ::libc::c_char,
InitAddr: LLVMOrcTargetAddress,
) -> LLVMErrorRef;
pub fn LLVMOrcSetIndirectStubPointer(
JITStack: LLVMOrcJITStackRef,
StubName: *const ::libc::c_char,
NewAddr: LLVMOrcTargetAddress,
) -> LLVMErrorRef;
pub fn LLVMOrcAddEagerlyCompiledIR(
JITStack: LLVMOrcJITStackRef,
RetHandle: *mut LLVMOrcModuleHandle,
Mod: LLVMModuleRef,
SymbolResolver: LLVMOrcSymbolResolverFn,
SymbolResolverCtx: *mut ::libc::c_void,
) -> LLVMErrorRef;
pub fn LLVMOrcAddLazilyCompiledIR(
JITStack: LLVMOrcJITStackRef,
RetHandle: *mut LLVMOrcModuleHandle,
Mod: LLVMModuleRef,
SymbolResolver: LLVMOrcSymbolResolverFn,
SymbolResolverCtx: *mut ::libc::c_void,
) -> LLVMErrorRef;
pub fn LLVMOrcAddObjectFile(
JITStack: LLVMOrcJITStackRef,
RetHandle: *mut LLVMOrcModuleHandle,
Obj: LLVMMemoryBufferRef,
SymbolResolver: LLVMOrcSymbolResolverFn,
SymbolResolverCtx: *mut ::libc::c_void,
) -> LLVMErrorRef;
pub fn LLVMOrcRemoveModule(
JITStack: LLVMOrcJITStackRef,
H: LLVMOrcModuleHandle,
) -> LLVMErrorRef;
pub fn LLVMOrcGetSymbolAddress(
JITStack: LLVMOrcJITStackRef,
RetAddr: *mut LLVMOrcTargetAddress,
SymbolName: *const ::libc::c_char,
) -> LLVMErrorRef;
pub fn LLVMOrcGetSymbolAddressIn(
JITStack: LLVMOrcJITStackRef,
RetAddr: *mut LLVMOrcTargetAddress,
H: LLVMOrcModuleHandle,
SymbolName: *const ::libc::c_char,
) -> LLVMErrorRef;
pub fn LLVMOrcDisposeInstance(JITStack: LLVMOrcJITStackRef) -> LLVMErrorRef;
pub fn LLVMOrcRegisterJITEventListener(
JITStack: LLVMOrcJITStackRef,
L: LLVMJITEventListenerRef,
);
pub fn LLVMOrcUnregisterJITEventListener(
JITStack: LLVMOrcJITStackRef,
L: LLVMJITEventListenerRef,
);
}