about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--example/disasm/callback.py2
-rw-r--r--miasm2/arch/arm/disasm.py2
-rw-r--r--miasm2/core/asmblock.py45
-rw-r--r--miasm2/ir/ir.py2
4 files changed, 16 insertions, 35 deletions
diff --git a/example/disasm/callback.py b/example/disasm/callback.py
index bbf0afaf..a00cf5e5 100644
--- a/example/disasm/callback.py
+++ b/example/disasm/callback.py
@@ -37,7 +37,7 @@ def cb_x86_callpop(cur_bloc, symbol_pool, *args, **kwargs):
 
     # Update next blocks to process in the disassembly engine
     cur_bloc.bto.clear()
-    cur_bloc.add_cst(loc_key, AsmConstraint.c_next, symbol_pool)
+    cur_bloc.add_cst(loc_key, AsmConstraint.c_next)
 
 
 # Prepare a tiny shellcode
diff --git a/miasm2/arch/arm/disasm.py b/miasm2/arch/arm/disasm.py
index 956a894b..205e2a17 100644
--- a/miasm2/arch/arm/disasm.py
+++ b/miasm2/arch/arm/disasm.py
@@ -25,7 +25,7 @@ def cb_arm_fix_call(mn, cur_bloc, symbol_pool, offsets_to_dis, *args, **kwargs):
     if not l2.args[1] in values:
         return
     loc_key_cst = self.symbol_pool.getby_offset_create(l1.offset + 4)
-    cur_bloc.add_cst(loc_key_cst, AsmConstraint.c_next, symbol_pool)
+    cur_bloc.add_cst(loc_key_cst, AsmConstraint.c_next)
     offsets_to_dis.add(l1.offset + 4)
 
 cb_arm_funcs = [cb_arm_fix_call]
diff --git a/miasm2/core/asmblock.py b/miasm2/core/asmblock.py
index 082dc344..c2b7aa0a 100644
--- a/miasm2/core/asmblock.py
+++ b/miasm2/core/asmblock.py
@@ -211,9 +211,14 @@ class AsmBlock(object):
     def get_offsets(self):
         return [x.offset for x in self.lines]
 
-    def add_cst(self, loc_key, c_t, symbol_pool):
+    def add_cst(self, loc_key, constraint_type):
+        """
+        Add constraint between current block and block at @loc_key
+        @loc_key: LocKey instance of constraint target
+        @constraint_type: AsmConstraint c_to/c_next
+        """
         assert isinstance(loc_key, LocKey)
-        c = AsmConstraint(loc_key, c_t)
+        c = AsmConstraint(loc_key, constraint_type)
         self.bto.add(c)
 
     def get_flow_instr(self):
@@ -1628,20 +1633,12 @@ class disasmEngine(object):
                     # Block is not empty, stop the desassembly pass and add a
                     # constraint to the next block
                     loc_key_cst = self.symbol_pool.getby_offset_create(offset)
-                    cur_block.add_cst(
-                        loc_key_cst,
-                        AsmConstraint.c_next,
-                        self.symbol_pool
-                    )
+                    cur_block.add_cst(loc_key_cst, AsmConstraint.c_next)
                 break
 
             if lines_cpt > 0 and offset in self.split_dis:
                 loc_key_cst = self.symbol_pool.getby_offset_create(offset)
-                cur_block.add_cst(
-                    loc_key_cst,
-                    AsmConstraint.c_next,
-                    self.symbol_pool
-                )
+                cur_block.add_cst(loc_key_cst, AsmConstraint.c_next)
                 offsets_to_dis.add(offset)
                 break
 
@@ -1652,11 +1649,7 @@ class disasmEngine(object):
 
             if offset in job_done:
                 loc_key_cst = self.symbol_pool.getby_offset_create(offset)
-                cur_block.add_cst(
-                    loc_key_cst,
-                    AsmConstraint.c_next,
-                    self.symbol_pool
-                )
+                cur_block.add_cst(loc_key_cst, AsmConstraint.c_next)
                 break
 
             off_i = offset
@@ -1683,11 +1676,7 @@ class disasmEngine(object):
                     # Block is not empty, stop the desassembly pass and add a
                     # constraint to the next block
                     loc_key_cst = self.symbol_pool.getby_offset_create(off_i)
-                    cur_block.add_cst(
-                        loc_key_cst,
-                        AsmConstraint.c_next,
-                        self.symbol_pool
-                    )
+                    cur_block.add_cst(loc_key_cst, AsmConstraint.c_next)
                 break
 
             # XXX TODO nul start block option
@@ -1700,11 +1689,7 @@ class disasmEngine(object):
                     # Block is not empty, stop the desassembly pass and add a
                     # constraint to the next block
                     loc_key_cst = self.symbol_pool.getby_offset_create(off_i)
-                    cur_block.add_cst(
-                        loc_key_cst,
-                        AsmConstraint.c_next,
-                        self.symbol_pool
-                    )
+                    cur_block.add_cst(loc_key_cst, AsmConstraint.c_next)
                 break
 
             # special case: flow graph modificator in delayslot
@@ -1750,11 +1735,7 @@ class disasmEngine(object):
 
         if add_next_offset:
             loc_key_cst = self.symbol_pool.getby_offset_create(offset)
-            cur_block.add_cst(
-                loc_key_cst,
-                AsmConstraint.c_next,
-                self.symbol_pool
-            )
+            cur_block.add_cst(loc_key_cst, AsmConstraint.c_next)
             offsets_to_dis.add(offset)
 
         # Fix multiple constraints
diff --git a/miasm2/ir/ir.py b/miasm2/ir/ir.py
index 0a7d1d84..6084e67d 100644
--- a/miasm2/ir/ir.py
+++ b/miasm2/ir/ir.py
@@ -685,7 +685,7 @@ class IntermediateRepresentation(object):
                         loc_key = self.symbol_pool.getby_offset_create(line.offset + line.l)
                 if loc_key is None:
                     loc_key = self.symbol_pool.gen_loc_key()
-                block.add_cst(loc_key, AsmConstraint.c_next, self.symbol_pool)
+                block.add_cst(loc_key, AsmConstraint.c_next)
             else:
                 loc_key = next_loc_key
             dst = m2_expr.ExprLoc(loc_key, self.pc.size)