diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2016-11-20 23:02:11 +0100 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2016-11-20 23:02:11 +0100 |
| commit | a7106c044b7c2caf71baf10360b439a1423d9b6a (patch) | |
| tree | e31214b77123f83e949d5d114034782db5040822 /miasm2/expression/expression.py | |
| parent | 1210ca382591d3c099d7554a031dbf90965decef (diff) | |
| download | miasm-a7106c044b7c2caf71baf10360b439a1423d9b6a.tar.gz miasm-a7106c044b7c2caf71baf10360b439a1423d9b6a.zip | |
Expr: Fix expr pickling
Diffstat (limited to 'miasm2/expression/expression.py')
| -rw-r--r-- | miasm2/expression/expression.py | 9 |
1 files changed, 6 insertions, 3 deletions
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) |