about summary refs log tree commit diff stats
path: root/miasm2/expression/simplifications.py
diff options
context:
space:
mode:
authorserpilliere <serpilliere@users.noreply.github.com>2018-02-14 15:13:20 +0100
committerGitHub <noreply@github.com>2018-02-14 15:13:20 +0100
commit9dd075f09e4f31ec7fe12e50709d9e58c65ed5f4 (patch)
tree65d6c4f1c613822d0441bd296cc4c7e7f1136522 /miasm2/expression/simplifications.py
parentdcfadb31685d428618b88f19fcc96dd70cecfc8f (diff)
parent0f55f0779555c38cd907143527d4ddbf26c18157 (diff)
downloadmiasm-9dd075f09e4f31ec7fe12e50709d9e58c65ed5f4.tar.gz
miasm-9dd075f09e4f31ec7fe12e50709d9e58c65ed5f4.zip
Merge pull request #679 from commial/refactor-expr-comp
Refactor expr simplifications tests
Diffstat (limited to 'miasm2/expression/simplifications.py')
-rw-r--r--miasm2/expression/simplifications.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/miasm2/expression/simplifications.py b/miasm2/expression/simplifications.py
index d3483d9e..e6c5dc54 100644
--- a/miasm2/expression/simplifications.py
+++ b/miasm2/expression/simplifications.py
@@ -2,6 +2,8 @@
 #                     Simplification methods library                           #
 #                                                                              #
 
+import logging
+
 from miasm2.expression import simplifications_common
 from miasm2.expression import simplifications_cond
 from miasm2.expression.expression_helper import fast_unify
@@ -10,6 +12,12 @@ import miasm2.expression.expression as m2_expr
 # Expression Simplifier
 # ---------------------
 
+log_exprsimp = logging.getLogger("exprsimp")
+console_handler = logging.StreamHandler()
+console_handler.setFormatter(logging.Formatter("%(levelname)-5s: %(message)s"))
+log_exprsimp.addHandler(console_handler)
+log_exprsimp.setLevel(logging.WARNING)
+
 
 class ExpressionSimplifier(object):
 
@@ -67,9 +75,15 @@ class ExpressionSimplifier(object):
         Return an Expr instance"""
 
         cls = expression.__class__
+        debug_level = log_exprsimp.level >= logging.DEBUG
         for simp_func in self.expr_simp_cb.get(cls, []):
             # Apply simplifications
+            before = expression
             expression = simp_func(self, expression)
+            after = expression
+
+            if debug_level and before != after:
+                log_exprsimp.debug("[%s] %s => %s", simp_func, before, after)
 
             # If class changes, stop to prevent wrong simplifications
             if expression.__class__ is not cls: