llvm-hs-4.2.0: src/LLVM/Internal/FFI/OrcJIT.hs
{-# LANGUAGE MultiParamTypeClasses, ForeignFunctionInterface #-}
module LLVM.Internal.FFI.OrcJIT where
import LLVM.Prelude
import Foreign.C
import Foreign.Ptr
import LLVM.Internal.FFI.DataLayout
import LLVM.Internal.FFI.LLVMCTypes
import LLVM.Internal.FFI.PtrHierarchy
data JITSymbol
data LambdaResolver
data LinkingLayer
data ObjectLinkingLayer
instance ChildOf LinkingLayer ObjectLinkingLayer
newtype TargetAddress = TargetAddress Word64
type SymbolResolverFn = CString -> Ptr JITSymbol -> IO ()
foreign import ccall "wrapper" wrapSymbolResolverFn ::
SymbolResolverFn -> IO (FunPtr SymbolResolverFn)
foreign import ccall safe "LLVM_Hs_disposeJITSymbol" disposeSymbol ::
Ptr JITSymbol -> IO ()
foreign import ccall safe "LLVM_Hs_createLambdaResolver" createLambdaResolver ::
FunPtr SymbolResolverFn ->
FunPtr SymbolResolverFn ->
IO (Ptr LambdaResolver)
foreign import ccall safe "LLVM_Hs_createObjectLinkingLayer" createObjectLinkingLayer ::
IO (Ptr ObjectLinkingLayer)
foreign import ccall safe "LLVM_Hs_LinkingLayer_dispose" disposeLinkingLayer ::
Ptr LinkingLayer -> IO ()
foreign import ccall safe "LLVM_Hs_JITSymbol_getAddress" getAddress ::
Ptr JITSymbol -> IO TargetAddress
foreign import ccall safe "LLVM_Hs_JITSymbol_getFlags" getFlags ::
Ptr JITSymbol -> IO JITSymbolFlags
foreign import ccall safe "LLVM_Hs_setJITSymbol" setJITSymbol ::
Ptr JITSymbol -> TargetAddress -> JITSymbolFlags -> IO ()
foreign import ccall safe "LLVM_Hs_getMangledSymbol" getMangledSymbol ::
Ptr CString -> CString -> Ptr DataLayout -> IO ()
foreign import ccall safe "LLVM_Hs_disposeMangledSymbol" disposeMangledSymbol ::
CString -> IO ()