diff options
| author | Camille Mougey <commial@gmail.com> | 2016-11-21 09:43:06 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-11-21 09:43:06 +0100 |
| commit | fe87a86bbd0689fc292bd27bde5c9e76daf1d653 (patch) | |
| tree | e31214b77123f83e949d5d114034782db5040822 /miasm2/expression/expression.py | |
| parent | ef394501384c5be63e22741a32b846d8a2f9cf94 (diff) | |
| parent | a7106c044b7c2caf71baf10360b439a1423d9b6a (diff) | |
| download | miasm-fe87a86bbd0689fc292bd27bde5c9e76daf1d653.tar.gz miasm-fe87a86bbd0689fc292bd27bde5c9e76daf1d653.zip | |
Merge pull request #454 from serpilliere/fix_expr_pickle
Fix expr pickle
Diffstat (limited to 'miasm2/expression/expression.py')
| -rw-r--r-- | miasm2/expression/expression.py | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/miasm2/expression/expression.py b/miasm2/expression/expression.py index 7dbe566b..581dc8dc 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 = "<" @@ -1067,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) @@ -1077,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: @@ -1092,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: @@ -1188,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) |