about summary refs log tree commit diff stats
path: root/miasm2/core/asmbloc.py
diff options
context:
space:
mode:
Diffstat (limited to 'miasm2/core/asmbloc.py')
-rw-r--r--miasm2/core/asmbloc.py51
1 files changed, 29 insertions, 22 deletions
diff --git a/miasm2/core/asmbloc.py b/miasm2/core/asmbloc.py
index 7db08e2f..28f1fe12 100644
--- a/miasm2/core/asmbloc.py
+++ b/miasm2/core/asmbloc.py
@@ -85,7 +85,7 @@ class asm_raw(AsmRaw):
         super(asm_label, self).__init__(raw)
 
 
-class asm_constraint(object):
+class AsmConstraint(object):
     c_to = "c_to"
     c_next = "c_next"
 
@@ -100,18 +100,25 @@ class asm_constraint(object):
         return "%s:%s" % (str(self.c_t), str(self.label))
 
 
-class asm_constraint_next(asm_constraint):
+class asm_constraint(AsmConstraint):
+
+    def __init__(self, label, c_t=c_to):
+        warnings.warn('DEPRECATION WARNING: use "AsmConstraint" instead of "asm_constraint"')
+        super(asm_constraint, self).__init__(label, c_t)
+
+
+class asm_constraint_next(AsmConstraint):
 
     def __init__(self, label):
         super(asm_constraint_next, self).__init__(
-            label, c_t=asm_constraint.c_next)
+            label, c_t=AsmConstraint.c_next)
 
 
-class asm_constraint_to(asm_constraint):
+class asm_constraint_to(AsmConstraint):
 
     def __init__(self, label):
         super(asm_constraint_to, self).__init__(
-            label, c_t=asm_constraint.c_to)
+            label, c_t=AsmConstraint.c_to)
 
 
 class AsmBlock(object):
@@ -162,15 +169,15 @@ class AsmBlock(object):
         self.lines, new_bloc.lines = self.lines[:i], self.lines[i:]
         flow_mod_instr = self.get_flow_instr()
         log_asmbloc.debug('flow mod %r', flow_mod_instr)
-        c = asm_constraint(l, asm_constraint.c_next)
+        c = AsmConstraint(l, AsmConstraint.c_next)
         # move dst if flowgraph modifier was in original bloc
         # (usecase: split delayslot bloc)
         if flow_mod_instr:
             for xx in self.bto:
                 log_asmbloc.debug('lbl %s', xx)
             c_next = set(
-                [x for x in self.bto if x.c_t == asm_constraint.c_next])
-            c_to = [x for x in self.bto if x.c_t != asm_constraint.c_next]
+                [x for x in self.bto if x.c_t == AsmConstraint.c_next])
+            c_to = [x for x in self.bto if x.c_t != AsmConstraint.c_next]
             self.bto = set([c] + c_to)
             new_bloc.bto = c_next
         else:
@@ -198,7 +205,7 @@ class AsmBlock(object):
             l = offset
         else:
             raise ValueError('unknown offset type %r' % offset)
-        c = asm_constraint(l, c_t)
+        c = AsmConstraint(l, c_t)
         self.bto.add(c)
 
     def get_flow_instr(self):
@@ -225,14 +232,14 @@ class AsmBlock(object):
 
     def get_next(self):
         for x in self.bto:
-            if x.c_t == asm_constraint.c_next:
+            if x.c_t == AsmConstraint.c_next:
                 return x.label
         return None
 
     @staticmethod
     def _filter_constraint(constraints):
         """Sort and filter @constraints for AsmBlock.bto
-        @constraints: non-empty set of asm_constraint instance
+        @constraints: non-empty set of AsmConstraint instance
 
         Always the same type -> one of the constraint
         c_next and c_to -> c_next
@@ -252,7 +259,7 @@ class AsmBlock(object):
 
         # At least 2 types -> types = {c_next, c_to}
         # c_to is included in c_next
-        return next(iter(cbytype[asm_constraint.c_next]))
+        return next(iter(cbytype[AsmConstraint.c_next]))
 
     def fix_constraints(self):
         """Fix next block constraints"""
@@ -500,7 +507,7 @@ class AsmCFG(DiGraph):
 
         # Add the edge to src.bto if needed
         if dst.label not in [cons.label for cons in src.bto]:
-            src.bto.add(asm_constraint(dst.label, constraint))
+            src.bto.add(AsmConstraint(dst.label, constraint))
 
         # Add edge
         self.edges2constraint[(src, dst)] = constraint
@@ -603,7 +610,7 @@ class AsmCFG(DiGraph):
         edge_color = "blue"
 
         if len(self.successors(src)) > 1:
-            if cst == asm_constraint.c_next:
+            if cst == AsmConstraint.c_next:
                 edge_color = "red"
             else:
                 edge_color = "limegreen"
@@ -711,7 +718,7 @@ class AsmCFG(DiGraph):
 
         next_edges = {edge: constraint
                       for edge, constraint in self.edges2constraint.iteritems()
-                      if constraint == asm_constraint.c_next}
+                      if constraint == AsmConstraint.c_next}
 
         for block in self._nodes:
             # No next constraint to self
@@ -1384,12 +1391,12 @@ class disasmEngine(object):
                 else:
                     # Block is not empty, stop the desassembly pass and add a
                     # constraint to the next block
-                    cur_block.add_cst(offset, asm_constraint.c_next,
+                    cur_block.add_cst(offset, AsmConstraint.c_next,
                                       self.symbol_pool)
                 break
 
             if lines_cpt > 0 and offset in self.split_dis:
-                cur_block.add_cst(offset, asm_constraint.c_next,
+                cur_block.add_cst(offset, AsmConstraint.c_next,
                                   self.symbol_pool)
                 offsets_to_dis.add(offset)
                 break
@@ -1400,7 +1407,7 @@ class disasmEngine(object):
                 break
 
             if offset in self.job_done:
-                cur_block.add_cst(offset, asm_constraint.c_next,
+                cur_block.add_cst(offset, AsmConstraint.c_next,
                                   self.symbol_pool)
                 break
 
@@ -1420,7 +1427,7 @@ class disasmEngine(object):
                 else:
                     # Block is not empty, stop the desassembly pass and add a
                     # constraint to the next block
-                    cur_block.add_cst(off_i, asm_constraint.c_next,
+                    cur_block.add_cst(off_i, AsmConstraint.c_next,
                                       self.symbol_pool)
                 break
 
@@ -1433,7 +1440,7 @@ class disasmEngine(object):
                 else:
                     # Block is not empty, stop the desassembly pass and add a
                     # constraint to the next block
-                    cur_block.add_cst(off_i, asm_constraint.c_next,
+                    cur_block.add_cst(off_i, AsmConstraint.c_next,
                                       self.symbol_pool)
                 break
 
@@ -1469,7 +1476,7 @@ class disasmEngine(object):
                 dst = dstn
                 if (not instr.is_subcall()) or self.follow_call:
                     cur_block.bto.update(
-                        [asm_constraint(x, asm_constraint.c_to) for x in dst])
+                        [AsmConstraint(x, AsmConstraint.c_to) for x in dst])
 
             # get in delayslot mode
             in_delayslot = True
@@ -1479,7 +1486,7 @@ class disasmEngine(object):
             offsets_to_dis.add(c.label.offset)
 
         if add_next_offset:
-            cur_block.add_cst(offset, asm_constraint.c_next, self.symbol_pool)
+            cur_block.add_cst(offset, AsmConstraint.c_next, self.symbol_pool)
             offsets_to_dis.add(offset)
 
         # Fix multiple constraints