about summary refs log tree commit diff stats
path: root/miasm2/jitter/llvmconvert.py
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2017-06-27 13:58:48 +0200
committerGitHub <noreply@github.com>2017-06-27 13:58:48 +0200
commit4202a41f13ad0968025c64d1a0481913f675880f (patch)
tree17d4f1e9112257ca1a3ee38e9471bf100f8061fc /miasm2/jitter/llvmconvert.py
parent4c1a445b1062cd154ed3fc11ed9887f94c008479 (diff)
parent04fc16be01be380b4b25d795f271c38e8dabc79f (diff)
downloadmiasm-4202a41f13ad0968025c64d1a0481913f675880f.tar.gz
miasm-4202a41f13ad0968025c64d1a0481913f675880f.zip
Merge pull request #573 from commial/feature/llvm-128div
Feature/llvm 128div
Diffstat (limited to 'miasm2/jitter/llvmconvert.py')
-rw-r--r--miasm2/jitter/llvmconvert.py22
1 files changed, 20 insertions, 2 deletions
diff --git a/miasm2/jitter/llvmconvert.py b/miasm2/jitter/llvmconvert.py
index 7729d12c..cf6dea31 100644
--- a/miasm2/jitter/llvmconvert.py
+++ b/miasm2/jitter/llvmconvert.py
@@ -135,13 +135,31 @@ class LLVMContext_JIT(LLVMContext):
         self.library_filenames = library_filenames
         self.ir_arch = ir_arch
         self.arch_specific()
+        self.load_libraries()
         LLVMContext.__init__(self, name)
         self.vmcpu = {}
 
-    def new_module(self, name="mod"):
-        LLVMContext.new_module(self, name)
+    def load_libraries(self):
+        # Get LLVM specific functions
+        name = "libLLVM-%d.%d" % (llvm.llvm_version_info[0],
+                                  llvm.llvm_version_info[1],
+        )
+        try:
+            # On Windows, no need to add ".dll"
+            self.add_shared_library(name)
+        except RuntimeError:
+            try:
+                # On Linux, ".so" is needed
+                self.add_shared_library("%s.so" % name)
+            except RuntimeError:
+                pass
+
+        # Load additional libraries
         for lib_fname in self.library_filenames:
             self.add_shared_library(lib_fname)
+
+    def new_module(self, name="mod"):
+        LLVMContext.new_module(self, name)
         self.add_memlookups()
         self.add_get_exceptionflag()
         self.add_op()