about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2017-07-22 14:55:20 +0200
committerGitHub <noreply@github.com>2017-07-22 14:55:20 +0200
commitcda2a2666ab2bed3e07735e0e55929cab56870e4 (patch)
treec55c6e95db8642f09274230c00c991dd32431a42
parent140ea51822e4876e2c1903f54fa5c30fffd85c55 (diff)
parentee7de9598b33718797b823a652aa93ead8eeb51c (diff)
downloadmiasm-cda2a2666ab2bed3e07735e0e55929cab56870e4.tar.gz
miasm-cda2a2666ab2bed3e07735e0e55929cab56870e4.zip
Merge pull request #584 from commial/fix/blockhash-multiarch
Fix/blockhash multiarch
Diffstat (limited to '')
-rw-r--r--miasm2/jitter/jitcore.py16
-rw-r--r--miasm2/jitter/jitcore_cc_base.py13
-rw-r--r--miasm2/jitter/jitcore_llvm.py14
3 files changed, 17 insertions, 26 deletions
diff --git a/miasm2/jitter/jitcore.py b/miasm2/jitter/jitcore.py
index 6c4d197e..741760cd 100644
--- a/miasm2/jitter/jitcore.py
+++ b/miasm2/jitter/jitcore.py
@@ -15,6 +15,8 @@
 # with this program; if not, write to the Free Software Foundation, Inc.,
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 #
+from hashlib import md5
+
 from miasm2.core import asmblock
 from miasm2.core.interval import interval
 from miasm2.core.utils import BoundedDict
@@ -35,6 +37,7 @@ class JitCore(object):
         """
 
         self.ir_arch = ir_arch
+        self.arch_name = "%s%s" % (self.ir_arch.arch.name, self.ir_arch.attrib)
         self.bs = bs
         self.known_blocs = {}
         self.lbl2jitbloc = BoundedDict(self.jitted_block_max_size,
@@ -267,3 +270,16 @@ class JitCore(object):
         for addr_start, addr_stop in vm.get_memory_write():
             mem_range.append((addr_start, addr_stop))
         self.updt_automod_code_range(vm, mem_range)
+
+    def hash_block(self, block):
+        """
+        Build a hash of the block @block
+        @block: asmblock
+        """
+        block_raw = "".join(line.b for line in block.lines)
+        block_hash = md5("%X_%s_%s_%s_%s" % (block.label.offset,
+                                             self.arch_name,
+                                             self.log_mn,
+                                             self.log_regs,
+                                             block_raw)).hexdigest()
+        return block_hash
diff --git a/miasm2/jitter/jitcore_cc_base.py b/miasm2/jitter/jitcore_cc_base.py
index 0ca2392d..9280d952 100644
--- a/miasm2/jitter/jitcore_cc_base.py
+++ b/miasm2/jitter/jitcore_cc_base.py
@@ -3,7 +3,6 @@
 import os
 import tempfile
 from distutils.sysconfig import get_python_inc
-from hashlib import md5
 
 from miasm2.jitter.jitcore import JitCore
 from miasm2.core.utils import keydefaultdict
@@ -109,15 +108,3 @@ class JitCore_Cc_Base(JitCore):
     @staticmethod
     def gen_C_source(ir_arch, func_code):
         raise NotImplementedError()
-
-    def hash_block(self, block):
-        """
-        Build a hash of the block @block
-        @block: asmblock
-        """
-        block_raw = "".join(line.b for line in block.lines)
-        block_hash = md5("%X_%s_%s_%s" % (block.label.offset,
-                                          self.log_mn,
-                                          self.log_regs,
-                                          block_raw)).hexdigest()
-        return block_hash
diff --git a/miasm2/jitter/jitcore_llvm.py b/miasm2/jitter/jitcore_llvm.py
index 7765ad39..53f1b37f 100644
--- a/miasm2/jitter/jitcore_llvm.py
+++ b/miasm2/jitter/jitcore_llvm.py
@@ -1,7 +1,7 @@
 import os
 import importlib
 import tempfile
-from hashlib import md5
+
 from miasm2.jitter.llvmconvert import *
 import miasm2.jitter.jitcore as jitcore
 import Jitllvm
@@ -117,15 +117,3 @@ class JitCore_LLVM(jitcore.JitCore):
 
         # Store a pointer on the function jitted code
         self.lbl2jitbloc[block.label.offset] = ptr
-
-    def hash_block(self, block):
-        """
-        Build a hash of the block @block
-        @block: asmblock
-        """
-        block_raw = "".join(line.b for line in block.lines)
-        block_hash = md5("%X_%s_%s_%s" % (block.label.offset,
-                                          self.log_mn,
-                                          self.log_regs,
-                                          block_raw)).hexdigest()
-        return block_hash