diff options
| -rw-r--r-- | example/ida/graph_ir.py | 2 | ||||
| -rw-r--r-- | miasm2/arch/x86/ira.py | 5 | ||||
| -rw-r--r-- | miasm2/ir/ir.py | 9 |
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) |