about summary refs log tree commit diff stats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--example/ida/graph_ir.py2
-rw-r--r--miasm2/arch/x86/ira.py5
-rw-r--r--miasm2/ir/ir.py9
3 files changed, 6 insertions, 10 deletions
diff --git a/example/ida/graph_ir.py b/example/ida/graph_ir.py
index c3d88c36..ba5b29c4 100644
--- a/example/ida/graph_ir.py
+++ b/example/ida/graph_ir.py
@@ -56,7 +56,7 @@ class GraphMiasmIR(GraphViewer):
                 continue
             dst = ir_arch.dst_trackback(irbloc)
             for d in dst:
-                if not self.ir_arch.ExprIsLabel(d):
+                if not expr_is_label(d):
                     continue
 
                 d = d.name
diff --git a/miasm2/arch/x86/ira.py b/miasm2/arch/x86/ira.py
index 5bc4761f..b7a1f19f 100644
--- a/miasm2/arch/x86/ira.py
+++ b/miasm2/arch/x86/ira.py
@@ -3,6 +3,7 @@
 
 from miasm2.expression.expression import ExprAff, ExprOp, ExprId
 from miasm2.core.graph import DiGraph
+from miasm2.core.asmbloc import expr_is_label
 from miasm2.ir.ir import ir, irbloc
 from miasm2.ir.analysis import ira
 from miasm2.arch.x86.sem import ir_x86_16, ir_x86_32, ir_x86_64
@@ -46,7 +47,7 @@ class ir_a_x86_16(ir_x86_16, ira):
         if not l.is_subcall():
             return
         sub_call_dst = l.args[0]
-        if self.ExprIsLabel(sub_call_dst):
+        if expr_is_label(sub_call_dst):
             sub_call_dst = sub_call_dst.name
         for b in ir_blocs:
             l = b.lines[-1]
@@ -54,7 +55,7 @@ class ir_a_x86_16(ir_x86_16, ira):
             if not l.is_subcall():
                 continue
             sub_call_dst = l.args[0]
-            if self.ExprIsLabel(sub_call_dst):
+            if expr_is_label(sub_call_dst):
                 sub_call_dst = sub_call_dst.name
             lbl = bloc.get_next()
             new_lbl = self.gen_label()
diff --git a/miasm2/ir/ir.py b/miasm2/ir/ir.py
index 31994fae..c5c43a67 100644
--- a/miasm2/ir/ir.py
+++ b/miasm2/ir/ir.py
@@ -335,16 +335,11 @@ class ir(object):
         for b in self.blocs.values():
             b.get_rw(regs_ids)
 
-    def ExprIsLabel(self, l):
-        #TODO : use expression helper
-        return isinstance(l, m2_expr.ExprId) and isinstance(l.name,
-                                                            asmbloc.asm_label)
-
     def sort_dst(self, todo, done):
         out = set()
         while todo:
             dst = todo.pop()
-            if self.ExprIsLabel(dst):
+            if asmbloc.expr_is_label(dst):
                 done.add(dst)
             elif isinstance(dst, m2_expr.ExprMem) or isinstance(dst, m2_expr.ExprInt):
                 done.add(dst)
@@ -401,7 +396,7 @@ class ir(object):
                 if isinstance(d, m2_expr.ExprInt):
                     d = m2_expr.ExprId(
                         self.symbol_pool.getby_offset_create(int(d.arg)))
-                if self.ExprIsLabel(d):
+                if asmbloc.expr_is_label(d):
                     if d.name in self.blocs or link_all is True:
                         self.g.add_edge(lbl, d.name)