about summary refs log tree commit diff stats
path: root/miasm2/jitter/jitcore.py
diff options
context:
space:
mode:
Diffstat (limited to 'miasm2/jitter/jitcore.py')
-rw-r--r--miasm2/jitter/jitcore.py16
1 files changed, 16 insertions, 0 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