about summary refs log tree commit diff stats
path: root/miasm2/jitter/jitcore.py
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2016-01-17 22:09:27 +0100
committerserpilliere <serpilliere@users.noreply.github.com>2016-01-17 22:09:27 +0100
commit6c879d5e03fdfa973b0695cf8259231f09895bf9 (patch)
tree7410d9dc01a5592ad381cb5574fd5baeee26cba2 /miasm2/jitter/jitcore.py
parentcbfd94b79469aebdd0bca74ebd97d5b1e1239367 (diff)
parent1164b529481fff630520f7ec5beefb16d7789048 (diff)
downloadmiasm-6c879d5e03fdfa973b0695cf8259231f09895bf9.tar.gz
miasm-6c879d5e03fdfa973b0695cf8259231f09895bf9.zip
Merge pull request #306 from commial/feature-asmblockbad
Feature asmblockbad
Diffstat (limited to '')
-rw-r--r--miasm2/jitter/jitcore.py23
1 files changed, 12 insertions, 11 deletions
diff --git a/miasm2/jitter/jitcore.py b/miasm2/jitter/jitcore.py
index 02a0b7c1..59e7b752 100644
--- a/miasm2/jitter/jitcore.py
+++ b/miasm2/jitter/jitcore.py
@@ -121,21 +121,22 @@ class JitCore(object):
         if isinstance(addr, asmbloc.asm_label):
             addr = addr.offset
 
-        l = self.ir_arch.symbol_pool.getby_offset_create(addr)
-        cur_bloc = asmbloc.asm_bloc(l)
+        label = self.ir_arch.symbol_pool.getby_offset_create(addr)
 
         # Disassemble it
         try:
-            asmbloc.dis_bloc(self.ir_arch.arch, self.bs, cur_bloc, addr,
-                             set(), self.ir_arch.symbol_pool, [],
-                             follow_call=False, dontdis_retcall=False,
-                             lines_wd=self.options["jit_maxline"],
-                             # max 10 asm lines
-                             attrib=self.ir_arch.attrib,
-                             split_dis=self.split_dis)
+            cur_bloc, _ = asmbloc.dis_bloc(self.ir_arch.arch, self.bs, label,
+                                           addr, set(),
+                                           self.ir_arch.symbol_pool, [],
+                                           follow_call=False,
+                                           dontdis_retcall=False,
+                                           lines_wd=self.options["jit_maxline"],
+                                           # max 10 asm lines
+                                           attrib=self.ir_arch.attrib,
+                                           split_dis=self.split_dis)
         except IOError:
             # vm_exception_flag is set
-            pass
+            cur_bloc = asmbloc.asm_bloc(label)
 
         # Logging
         if self.log_newbloc:
@@ -148,7 +149,7 @@ class JitCore(object):
             raise ValueError("Cannot JIT a block without any assembly line")
 
         # Update label -> bloc
-        self.lbl2bloc[l] = cur_bloc
+        self.lbl2bloc[label] = cur_bloc
 
         # Store min/max bloc address needed in jit automod code
         self.get_bloc_min_max(cur_bloc)