From: Luke Lau Date: Sat, 9 Nov 2019 18:01:45 +0000 (+0000) Subject: Load the standard library X-Git-Url: http://git.lukelau.me/?p=kaleidoscope-hs.git;a=commitdiff_plain;h=c0262e071b9909756911c55339ba03c78d207332 Load the standard library This is equivalent to dlopen(3), where it will load all the code and symbols from our standard library into our process. We need to do this so that later on we can call standard library functions whilst JITing. If you went down the statically linked route, you still need to call this with Nothing to expose the symbols to LLVM. --- diff --git a/Main.hs b/Main.hs index 97407fe..c2fff06 100644 --- a/Main.hs +++ b/Main.hs @@ -19,6 +19,7 @@ import LLVM.AST.Operand import LLVM.AST.Type as Type import LLVM.Context import LLVM.IRBuilder +import LLVM.Linking import LLVM.Module import LLVM.OrcJIT import LLVM.OrcJIT.CompileLayer @@ -38,7 +39,8 @@ data JITEnv = JITEnv } main :: IO () -main = +main = do + loadLibraryPermanently (Just "stdlib.dylib") withContext $ \ctx -> withHostTargetMachineDefault $ \tm -> withExecutionSession $ \exSession -> withSymbolResolver exSession (SymbolResolver symResolver) $ \symResolverPtr ->