packages feed

llvm-hs 5.1.2 → 5.1.3

raw patch · 7 files changed

+88/−1 lines, 7 filesdep ~pretty-showPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: pretty-show

API changes (from Hackage documentation)

+ LLVM.Internal.FFI.DynamicLibrary: loadLibraryPermanently :: CString -> IO LLVMBool
+ LLVM.Internal.FFI.RTDyldMemoryManager: getSymbolAddressInProcess :: CString -> IO Word64
+ LLVM.Internal.Linking: getSymbolAddressInProcess :: MangledSymbol -> IO WordPtr
+ LLVM.Internal.Linking: loadLibraryPermanently :: Maybe FilePath -> IO Bool
+ LLVM.Linking: getSymbolAddressInProcess :: MangledSymbol -> IO WordPtr
+ LLVM.Linking: loadLibraryPermanently :: Maybe FilePath -> IO Bool

Files

CHANGELOG.md view
@@ -1,3 +1,7 @@+## 5.1.3 (2018-01-06)++* Add bindings to `loadLibraryPermamently` and `getSymbolAddressInProcess`.+ ## 5.1.2 (2017-12-19)  * Reupload of 5.1.1 since [Hackage broke](https://github.com/haskell/hackage-server/issues/643) during the original upload.
llvm-hs.cabal view
@@ -1,5 +1,5 @@ name: llvm-hs-version: 5.1.2+version: 5.1.3 license: BSD3 license-file: LICENSE author: Anthony Cowley, Stephen Diehl, Moritz Kiefer <moritz.kiefer@purelyfunctional.org>, Benjamin S. Scarlet@@ -156,6 +156,7 @@     LLVM.Internal.FFI.Constant     LLVM.Internal.FFI.Context     LLVM.Internal.FFI.DataLayout+    LLVM.Internal.FFI.DynamicLibrary     LLVM.Internal.FFI.ExecutionEngine     LLVM.Internal.FFI.Function     LLVM.Internal.FFI.GlobalAlias@@ -177,6 +178,7 @@     LLVM.Internal.FFI.PassManager     LLVM.Internal.FFI.PtrHierarchy     LLVM.Internal.FFI.RawOStream+    LLVM.Internal.FFI.RTDyldMemoryManager     LLVM.Internal.FFI.ShortByteString     LLVM.Internal.FFI.SMDiagnostic     LLVM.Internal.FFI.Target@@ -185,6 +187,8 @@     LLVM.Internal.FFI.Type     LLVM.Internal.FFI.User     LLVM.Internal.FFI.Value+    LLVM.Internal.Linking+    LLVM.Linking     LLVM.Module     LLVM.OrcJIT     LLVM.PassManager@@ -221,6 +225,7 @@     src/LLVM/Internal/FFI/OrcJITC.cpp     src/LLVM/Internal/FFI/RawOStreamC.cpp     src/LLVM/Internal/FFI/PassManagerC.cpp+    src/LLVM/Internal/FFI/RTDyldMemoryManager.cpp     src/LLVM/Internal/FFI/SMDiagnosticC.cpp     src/LLVM/Internal/FFI/TargetC.cpp     src/LLVM/Internal/FFI/TypeC.cpp
+ src/LLVM/Internal/FFI/DynamicLibrary.hs view
@@ -0,0 +1,14 @@+{-# LANGUAGE ForeignFunctionInterface #-}++-- | FFI functions for handling the DynamicLibrary class+module LLVM.Internal.FFI.DynamicLibrary where++import LLVM.Prelude++import Foreign.C++import LLVM.Internal.FFI.LLVMCTypes++-- | <https://llvm.org/doxygen/Support_8h.html#a6fc1331c1a6d2cc6f0fda94f4a4636f9>+foreign import ccall safe "LLVMLoadLibraryPermanently" loadLibraryPermanently ::+  CString -> IO LLVMBool
+ src/LLVM/Internal/FFI/RTDyldMemoryManager.cpp view
@@ -0,0 +1,14 @@+#define __STDC_LIMIT_MACROS++#include "llvm/ExecutionEngine/RTDyldMemoryManager.h"++using namespace llvm;++extern "C" {++uint64_t LLVM_Hs_GetSymbolAddressInProcess(const char *name) {+    std::string nameStr(name);+    return RTDyldMemoryManager::getSymbolAddressInProcess(nameStr);+}++}
+ src/LLVM/Internal/FFI/RTDyldMemoryManager.hs view
@@ -0,0 +1,13 @@+{-# LANGUAGE ForeignFunctionInterface #-}++-- | FFI functions for handling the RTDyldMemoryManager class+module LLVM.Internal.FFI.RTDyldMemoryManager where++import LLVM.Prelude++import Data.Word+import Foreign.C.String++-- | <https://llvm.org/doxygen/classllvm_1_1RTDyldMemoryManager.html#a5fee247bdc0c5af393b66bfd73a0a347>+foreign import ccall safe "LLVM_Hs_GetSymbolAddressInProcess" getSymbolAddressInProcess ::+  CString -> IO Word64
+ src/LLVM/Internal/Linking.hs view
@@ -0,0 +1,30 @@+module LLVM.Internal.Linking+  ( loadLibraryPermanently+  , getSymbolAddressInProcess+  )where++import LLVM.Prelude++import qualified Data.ByteString as BS+import Foreign.C.String+import Foreign.Ptr+import LLVM.Internal.Coding+import qualified LLVM.Internal.FFI.DynamicLibrary as DL+import qualified LLVM.Internal.FFI.RTDyldMemoryManager as Dyld+import LLVM.Internal.OrcJIT++-- | Get the address of the given symbol in+--   the current process' address space.+getSymbolAddressInProcess+  :: MangledSymbol -> IO WordPtr+getSymbolAddressInProcess (MangledSymbol sym)+  = fromIntegral <$> BS.useAsCString sym Dyld.getSymbolAddressInProcess++-- | Loads the given dynamic library permanently. If 'Nothing'+--   is given, this will make the symbols from the current+--   process available.+loadLibraryPermanently+  :: Maybe FilePath+  -> IO Bool+loadLibraryPermanently (Just fp) = decodeM =<< withCString fp DL.loadLibraryPermanently+loadLibraryPermanently Nothing = decodeM =<< DL.loadLibraryPermanently nullPtr
+ src/LLVM/Linking.hs view
@@ -0,0 +1,7 @@+-- | Utility functions for resolving external symbols+module LLVM.Linking+  ( loadLibraryPermanently+  , getSymbolAddressInProcess+  ) where++import LLVM.Internal.Linking