From 4de52321c6e1f0e60ec6c015ce577ce159ff9f3d Mon Sep 17 00:00:00 2001 From: Fabrice Desclaux Date: Sun, 20 Nov 2016 23:01:18 +0100 Subject: Expr: missing warning import --- miasm2/expression/expression.py | 1 + 1 file changed, 1 insertion(+) (limited to 'miasm2/expression/expression.py') diff --git a/miasm2/expression/expression.py b/miasm2/expression/expression.py index 7dbe566b..cedb3e5c 100644 --- a/miasm2/expression/expression.py +++ b/miasm2/expression/expression.py @@ -32,6 +32,7 @@ import itertools from operator import itemgetter from miasm2.expression.modint import * from miasm2.core.graph import DiGraph +import warnings # Define tokens TOK_INF = "<" -- cgit 1.4.1 From a7106c044b7c2caf71baf10360b439a1423d9b6a Mon Sep 17 00:00:00 2001 From: Fabrice Desclaux Date: Sun, 20 Nov 2016 23:02:11 +0100 Subject: Expr: Fix expr pickling --- miasm2/expression/expression.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'miasm2/expression/expression.py') diff --git a/miasm2/expression/expression.py b/miasm2/expression/expression.py index cedb3e5c..581dc8dc 100644 --- a/miasm2/expression/expression.py +++ b/miasm2/expression/expression.py @@ -1068,7 +1068,7 @@ class ExprCompose(Expr): return self.__args def __setstate__(self, state): - self.__init__(state) + self.__init__(*state) def __new__(cls, *args): is_new_style = args and isinstance(args[0], Expr) @@ -1078,7 +1078,7 @@ class ExprCompose(Expr): return Expr.get_object(cls, tuple(args)) def __str__(self): - return '{' + ', '.join([str(arg) for arg in self.__args]) + '}' + return '{' + ', '.join(["%s %s %s" % (arg, idx, idx + arg.size) for idx, arg in self.iter_args()]) + '}' def get_r(self, mem_read=False, cst_read=False): return reduce(lambda elements, arg: @@ -1093,7 +1093,7 @@ class ExprCompose(Expr): return hash(tuple(h_args)) def _exprrepr(self): - return "%s([%r])" % (self.__class__.__name__, self.__args) + return "%s%r" % (self.__class__.__name__, self.__args) def __contains__(self, e): if self == e: @@ -1189,6 +1189,9 @@ def compare_exprs(e1, e2): if e1 == e2: return 0 if c1 == ExprInt: + ret = cmp(e1.size, e2.size) + if ret != 0: + return ret return cmp(e1.arg, e2.arg) elif c1 == ExprId: x = cmp(e1.name, e2.name) -- cgit 1.4.1