diff options
Diffstat (limited to 'test/ir')
| -rw-r--r-- | test/ir/ir.py | 13 | ||||
| -rwxr-xr-x | test/ir/ir2C.py | 11 | ||||
| -rw-r--r-- | test/ir/reduce_graph.py | 20 | ||||
| -rwxr-xr-x | test/ir/symbexec.py | 38 | ||||
| -rw-r--r-- | test/ir/translators/smt2.py | 35 | ||||
| -rw-r--r-- | test/ir/translators/z3_ir.py | 9 |
6 files changed, 76 insertions, 50 deletions
diff --git a/test/ir/ir.py b/test/ir/ir.py index 072c90f6..a959a7a7 100644 --- a/test/ir/ir.py +++ b/test/ir/ir.py @@ -1,6 +1,8 @@ -from miasm2.expression.expression import * -from miasm2.ir.ir import AssignBlock -from miasm2.expression.simplifications import expr_simp +from future.utils import viewitems + +from miasm.expression.expression import * +from miasm.ir.ir import AssignBlock +from miasm.expression.simplifications import expr_simp id_a = ExprId("a", 32) id_b = ExprId("b", 32) @@ -34,10 +36,11 @@ else: assert assignblk1.get_r() == set([id_b]) assert assignblk1.get_w() == set([id_a]) assert assignblk1.get_rw() == {id_a: set([id_b])} -assert assignblk1.keys() == [id_a] +assert list(assignblk1) == [id_a] assert dict(assignblk1) == {id_a: id_b} assert assignblk1[id_a] == id_b -assert list(assignblk1.iteritems()) == assignblk1.items() +assert list(viewitems(assignblk1)) == list(viewitems(assignblk1)) +assert set(assignblk1.iteritems()) == set(assignblk1.items()) ## Simplify assignblk3 = AssignBlock({id_a: id_b - id_b}) diff --git a/test/ir/ir2C.py b/test/ir/ir2C.py index 6df439c2..c41c98c9 100755 --- a/test/ir/ir2C.py +++ b/test/ir/ir2C.py @@ -1,22 +1,23 @@ #! /usr/bin/env python2 #-*- coding:utf-8 -*- +from builtins import range import unittest -from miasm2.expression.expression import TOK_EQUAL +from miasm.expression.expression import TOK_EQUAL class TestIrIr2C(unittest.TestCase): def translationTest(self, expr, expected): - from miasm2.ir.translators import Translator + from miasm.ir.translators import Translator translator = Translator.to_language("C") self.assertEqual(translator.from_expr(expr), expected) def test_ExprOp_toC(self): - from miasm2.expression.expression import ExprInt, ExprOp - from miasm2.ir.translators.C import Translator + from miasm.expression.expression import ExprInt, ExprOp + from miasm.ir.translators.C import Translator - args = [ExprInt(i, 32) for i in xrange(9)] + args = [ExprInt(i, 32) for i in range(9)] translator = Translator.to_language("C") # Unary operators diff --git a/test/ir/reduce_graph.py b/test/ir/reduce_graph.py index 75ff3410..8835b4aa 100644 --- a/test/ir/reduce_graph.py +++ b/test/ir/reduce_graph.py @@ -1,13 +1,17 @@ """Regression test module for DependencyGraph""" +from __future__ import print_function +from builtins import object from pdb import pm -from miasm2.expression.expression import ExprId, ExprInt, ExprAssign, ExprCond, \ +from future.utils import viewitems + +from miasm.expression.expression import ExprId, ExprInt, ExprAssign, ExprCond, \ ExprLoc, LocKey -from miasm2.core.locationdb import LocationDB -from miasm2.ir.analysis import ira -from miasm2.ir.ir import IRBlock, AssignBlock, IRCFG -from miasm2.analysis.data_flow import merge_blocks +from miasm.core.locationdb import LocationDB +from miasm.ir.analysis import ira +from miasm.ir.ir import IRBlock, AssignBlock, IRCFG +from miasm.analysis.data_flow import merge_blocks loc_db = LocationDB() @@ -162,7 +166,7 @@ for irb in [G1_RES_IRB0]: def cmp_ir_graph(g1, g2): - assert g1.blocks.items() == g2.blocks.items() + assert list(viewitems(g1.blocks)) == list(viewitems(g2.blocks)) assert set(g1.edges()) == set(g2.edges()) @@ -664,11 +668,11 @@ for i, (g_test, g_ref) in enumerate( ], 1): heads = g_test.heads() - print '*'*10, 'Test', i, "*"*10 + print('*'*10, 'Test', i, "*"*10) open('test_in_%d.dot' % i, 'w').write(g_test.dot()) open('test_ref_%d.dot' % i, 'w').write(g_ref.dot()) merge_blocks(g_test, heads) open('test_out_%d.dot' % i, 'w').write(g_test.dot()) cmp_ir_graph(g_test, g_ref) - print '\t', 'OK' + print('\t', 'OK') diff --git a/test/ir/symbexec.py b/test/ir/symbexec.py index 4f01ac3c..d627f4b9 100755 --- a/test/ir/symbexec.py +++ b/test/ir/symbexec.py @@ -1,18 +1,22 @@ #! /usr/bin/env python2 #-*- coding:utf-8 -*- +from __future__ import print_function + +from future.utils import viewitems + import unittest class TestSymbExec(unittest.TestCase): def test_ClassDef(self): - from miasm2.expression.expression import ExprInt, ExprId, ExprMem, \ + from miasm.expression.expression import ExprInt, ExprId, ExprMem, \ ExprCompose, ExprAssign - from miasm2.arch.x86.sem import ir_x86_32 - from miasm2.core.locationdb import LocationDB - from miasm2.ir.symbexec import SymbolicExecutionEngine - from miasm2.ir.ir import AssignBlock + from miasm.arch.x86.sem import ir_x86_32 + from miasm.core.locationdb import LocationDB + from miasm.ir.symbexec import SymbolicExecutionEngine + from miasm.ir.ir import AssignBlock loc_db = LocationDB() @@ -184,18 +188,18 @@ class TestSymbExec(unittest.TestCase): del sb.symbols[id_a] sb.dump() del sb.symbols[ExprMem(id_a, 8)] - print "*"*40, 'Orig:' + print("*"*40, 'Orig:') sb.dump() sb_cp = sb.symbols.copy() - print "*"*40, 'Copy:' + print("*"*40, 'Copy:') sb_cp.dump() # Add symbol at address limit sb.apply_change(ExprMem(ExprInt(0xFFFFFFFE, 32), 32), id_c) sb.dump() found = False - for dst, src in sb.symbols.iteritems(): + for dst, src in viewitems(sb.symbols): if dst == ExprMem(ExprInt(0xFFFFFFFE, 32), 32) and src == id_c: found = True assert found @@ -205,7 +209,7 @@ class TestSymbExec(unittest.TestCase): sb.apply_change(ExprMem(ExprInt(0x7FFFFFFE, 32), 32), id_c) sb.dump() found = False - for dst, src in sb.symbols.iteritems(): + for dst, src in viewitems(sb.symbols): if dst == ExprMem(ExprInt(0x7FFFFFFE, 32), 32) and src == id_c: found = True assert found @@ -219,7 +223,7 @@ class TestSymbExec(unittest.TestCase): sb.apply_change(ExprMem(ExprInt(0x2, 32), 16), ExprMem(ExprInt(0x2, 32), 16)) sb.dump() found = False - for dst, src in sb.symbols.iteritems(): + for dst, src in viewitems(sb.symbols): if dst == ExprMem(ExprInt(0xFFFFFFFE, 32), 32) and src == id_e[16:48]: found = True assert found @@ -230,7 +234,7 @@ class TestSymbExec(unittest.TestCase): # Test memory full - print 'full' + print('full') arch_addr8 = ir_x86_32(loc_db) ircfg = arch_addr8.new_ircfg() # Hack to obtain tiny address space @@ -240,18 +244,18 @@ class TestSymbExec(unittest.TestCase): # Fulfill memory sb_addr8.apply_change(ExprMem(ExprInt(0, 5), 256), ExprInt(0, 256)) sb_addr8.dump() - variables = sb_addr8.symbols.items() + variables = list(viewitems(sb_addr8.symbols)) assert variables == [(ExprMem(ExprInt(0, 5), 256), ExprInt(0, 256))] - print sb_addr8.symbols.symbols_mem + print(sb_addr8.symbols.symbols_mem) sb_addr8.apply_change(ExprMem(ExprInt(0x5, 5), 256), ExprInt(0x123, 256)) sb_addr8.dump() - variables = sb_addr8.symbols.items() + variables = list(viewitems(sb_addr8.symbols)) assert variables == [(ExprMem(ExprInt(0x5, 5), 256), ExprInt(0x123, 256))] - print sb_addr8.symbols.symbols_mem + print(sb_addr8.symbols.symbols_mem) - print 'dump' + print('dump') sb_addr8.symbols.symbols_mem.dump() @@ -281,7 +285,7 @@ class TestSymbExec(unittest.TestCase): assert sb.symbols.symbols_mem.contains_partial(ExprMem(ExprInt(0xFFFFFFFE, 32), 32)) assert not sb.symbols.symbols_mem.contains_partial(ExprMem(ExprInt(0xFFFFFFFF, 32), 8)) - assert sb_addr8.symbols.keys() == [ExprMem(ExprInt(0x5, 5), 256)] + assert list(sb_addr8.symbols) == [ExprMem(ExprInt(0x5, 5), 256)] if __name__ == '__main__': diff --git a/test/ir/translators/smt2.py b/test/ir/translators/smt2.py index 2b5c8df3..81f63b45 100644 --- a/test/ir/translators/smt2.py +++ b/test/ir/translators/smt2.py @@ -1,7 +1,7 @@ from z3 import Solver, unsat, parse_smt2_string -from miasm2.expression.expression import * -from miasm2.ir.translators.smt2 import TranslatorSMT2 -from miasm2.ir.translators.z3_ir import TranslatorZ3 +from miasm.expression.expression import * +from miasm.ir.translators.smt2 import TranslatorSMT2 +from miasm.ir.translators.z3_ir import TranslatorZ3 # create nested expression a = ExprId("a", 64) @@ -10,14 +10,26 @@ c = ExprId('c', 16) d = ExprId('d', 8) e = ExprId('e', 1) -left = ExprCond(e + ExprOp('parity', a), - ExprMem(a * a, 64), - ExprMem(a, 64)) - -cond = ExprSlice(ExprSlice(ExprSlice(a, 0, 32) + b, 0, 16) * c, 0, 8) << ExprOp('>>>', d, ExprInt(0x5L, 8)) -right = ExprCond(cond, - a + ExprInt(0x64L, 64), - ExprInt(0x16L, 64)) +left = ExprCond( + e + ExprOp('parity', a), + ExprMem(a * a, 64), + ExprMem(a, 64) +) + +cond = ( + ExprSlice( + ExprSlice( + ExprSlice(a, 0, 32) + b, 0, 16 + ) * c, + 0, + 8 + ) << ExprOp('>>>', d, ExprInt(0x5, 8)) +) +right = ExprCond( + cond, + a + ExprInt(0x64, 64), + ExprInt(0x16, 64) +) e = ExprAssign(left, right) @@ -32,6 +44,7 @@ smt2 = t_smt2.to_smt2([t_smt2.from_expr(e)]) # parse smt2 string with z3 smt2_z3 = parse_smt2_string(smt2) + # initialise SMT solver s = Solver() diff --git a/test/ir/translators/z3_ir.py b/test/ir/translators/z3_ir.py index 4806ad96..b28269fb 100644 --- a/test/ir/translators/z3_ir.py +++ b/test/ir/translators/z3_ir.py @@ -1,8 +1,9 @@ +from __future__ import print_function import z3 -from miasm2.core.locationdb import LocationDB -from miasm2.expression.expression import * -from miasm2.ir.translators.z3_ir import Z3Mem, TranslatorZ3 +from miasm.core.locationdb import LocationDB +from miasm.expression.expression import * +from miasm.ir.translators.z3_ir import Z3Mem, TranslatorZ3 # Some examples of use/unit tests. @@ -174,5 +175,5 @@ cnttrailzeros3 = translator1.from_expr(ExprOp("cnttrailzeros", ExprInt(0x8000, 3 cntleadzeros3 = translator1.from_expr(ExprOp("cntleadzeros", ExprInt(0x8000, 32))) assert(equiv(cnttrailzeros3, cntleadzeros3)) -print "TranslatorZ3 tests are OK." +print("TranslatorZ3 tests are OK.") |