about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--README.md3
-rwxr-xr-xexample/jitter/mips32.py17
-rwxr-xr-xexample/jitter/msp430.py15
-rw-r--r--example/jitter/x86_32.py3
-rw-r--r--miasm2/analysis/sandbox.py11
-rw-r--r--miasm2/jitter/jitload.py18
-rw-r--r--test/analysis/dse.py3
-rw-r--r--test/arch/aarch64/unit/asm_test.py5
-rw-r--r--test/arch/mips32/unit/asm_test.py3
-rw-r--r--test/arch/x86/unit/asm_test.py7
-rw-r--r--test/jitter/bad_block.py3
-rw-r--r--test/jitter/jit_options.py3
-rw-r--r--test/jitter/jmp_out_mem.py3
-rw-r--r--test/jitter/test_post_instr.py4
14 files changed, 45 insertions, 53 deletions
diff --git a/README.md b/README.md
index 570bee22..498b2f02 100644
--- a/README.md
+++ b/README.md
@@ -217,8 +217,7 @@ def code_sentinelle(jitter):
 Active logs:
 
 ```
->>> jitter.jit.log_regs = True
->>> jitter.jit.log_mn = True
+>>> jitter.set_trace_log()
 ```
 
 Run at arbitrary address:
diff --git a/example/jitter/mips32.py b/example/jitter/mips32.py
index c5b2f7f5..31ab03c8 100755
--- a/example/jitter/mips32.py
+++ b/example/jitter/mips32.py
@@ -5,16 +5,11 @@ from miasm2.analysis import debugging
 from miasm2.jitter.csts import *
 from miasm2.analysis.machine import Machine
 
-from pdb import pm
-
 parser = ArgumentParser(
     description="""Sandbox raw binary with mips32 engine
 (ex: jit_mips32.py example/mips32_sc_l.bin 0)""")
-parser.add_argument("-r", "--log-regs",
-                    help="Log registers value for each instruction",
-                    action="store_true")
-parser.add_argument("-m", "--log-mn",
-                    help="Log desassembly conversion for each instruction",
+parser.add_argument("-t", "--trace",
+                    help="Log instructions/registers values",
                     action="store_true")
 parser.add_argument("-n", "--log-newbloc",
                     help="Log basic blocks processed by the Jitter",
@@ -43,9 +38,11 @@ def jit_mips32_binary(args):
     myjit.init_stack()
 
     # Log level (if available with jitter engine)
-    myjit.jit.log_regs = args.log_regs
-    myjit.jit.log_mn = args.log_mn
-    myjit.jit.log_newbloc = args.log_newbloc
+    myjit.set_trace_log(
+        trace_instr=args.trace,
+        trace_regs=args.trace,
+        trace_new_blocks=args.log_newbloc
+    )
 
     myjit.vm.add_memory_page(0, PAGE_READ | PAGE_WRITE, open(filepath).read())
     myjit.add_breakpoint(0x1337BEEF, code_sentinelle)
diff --git a/example/jitter/msp430.py b/example/jitter/msp430.py
index 6dd67542..2f9b8649 100755
--- a/example/jitter/msp430.py
+++ b/example/jitter/msp430.py
@@ -8,11 +8,8 @@ from miasm2.analysis.machine import Machine
 parser = ArgumentParser(
     description="""Sandbox raw binary with msp430 engine
 (ex: jit_msp430.py example/msp430_sc.bin 0)""")
-parser.add_argument("-r", "--log-regs",
-                    help="Log registers value for each instruction",
-                    action="store_true")
-parser.add_argument("-m", "--log-mn",
-                    help="Log desassembly conversion for each instruction",
+parser.add_argument("-t", "--trace",
+                    help="Log instructions/registers values",
                     action="store_true")
 parser.add_argument("-n", "--log-newbloc",
                     help="Log basic blocks processed by the Jitter",
@@ -36,9 +33,11 @@ def jit_msp430_binary(args):
     myjit.init_stack()
 
     # Log level (if available with jitter engine)
-    myjit.jit.log_regs = args.log_regs
-    myjit.jit.log_mn = args.log_mn
-    myjit.jit.log_newbloc = args.log_newbloc
+    myjit.set_trace_log(
+        trace_instr=args.trace,
+        trace_regs=args.trace,
+        trace_new_blocks=args.log_newbloc
+    )
 
     myjit.vm.add_memory_page(0, PAGE_READ | PAGE_WRITE, open(filepath, "rb").read())
     myjit.add_breakpoint(0x1337, lambda _: exit(0))
diff --git a/example/jitter/x86_32.py b/example/jitter/x86_32.py
index 1409d7aa..5272f732 100644
--- a/example/jitter/x86_32.py
+++ b/example/jitter/x86_32.py
@@ -24,8 +24,7 @@ data = open(args.filename).read()
 run_addr = 0x40000000
 myjit.vm.add_memory_page(run_addr, PAGE_READ | PAGE_WRITE, data)
 
-myjit.jit.log_regs = True
-myjit.jit.log_mn = True
+myjit.set_trace_log()
 myjit.push_uint32_t(0x1337beef)
 
 myjit.add_breakpoint(0x1337beef, code_sentinelle)
diff --git a/miasm2/analysis/sandbox.py b/miasm2/analysis/sandbox.py
index e77b1669..b1147adb 100644
--- a/miasm2/analysis/sandbox.py
+++ b/miasm2/analysis/sandbox.py
@@ -57,16 +57,15 @@ class Sandbox(object):
                 cls.__init__(self, **kwargs)
 
         # Logging options
-        if self.options.singlestep:
-            self.jitter.jit.log_mn = True
-            self.jitter.jit.log_regs = True
+        self.jitter.set_trace_log(
+            trace_instr=self.options.singlestep,
+            trace_regs=self.options.singlestep,
+            trace_new_blocks=self.options.dumpblocs
+        )
 
         if not self.options.quiet_function_calls:
             log_func.setLevel(logging.INFO)
 
-        if self.options.dumpblocs:
-            self.jitter.jit.log_newbloc = True
-
     @classmethod
     def parser(cls, *args, **kwargs):
         """
diff --git a/miasm2/jitter/jitload.py b/miasm2/jitter/jitload.py
index 28200997..62df5b3c 100644
--- a/miasm2/jitter/jitload.py
+++ b/miasm2/jitter/jitload.py
@@ -484,3 +484,21 @@ class jitter(object):
         self.symbexec.update_cpu_from_engine()
 
         return ret
+
+    def set_trace_log(self,
+                      trace_instr=True, trace_regs=True,
+                      trace_new_blocks=False):
+        """
+        Activate/Deactivate trace log options
+
+        @trace_instr: activate instructions tracing log
+        @trace_regs: activate registers tracing log
+        @trace_new_blocks: dump new code blocks log
+        """
+
+        # As trace state changes, clear already jitted blocks
+        self.jit.clear_jitted_blocks()
+
+        self.jit.log_mn = trace_instr
+        self.jit.log_regs = trace_regs
+        self.jit.log_newbloc = trace_new_blocks
diff --git a/test/analysis/dse.py b/test/analysis/dse.py
index 5a72db34..4367f6f7 100644
--- a/test/analysis/dse.py
+++ b/test/analysis/dse.py
@@ -34,8 +34,7 @@ class DSETest(object):
         self.myjit = jitter(jitter_engine)
         self.myjit.init_stack()
 
-        self.myjit.jit.log_regs = True
-        self.myjit.jit.log_mn = True
+        self.myjit.set_trace_log()
 
         self.dse = None
         self.assembly = None
diff --git a/test/arch/aarch64/unit/asm_test.py b/test/arch/aarch64/unit/asm_test.py
index ca27ef9d..437a8056 100644
--- a/test/arch/aarch64/unit/asm_test.py
+++ b/test/arch/aarch64/unit/asm_test.py
@@ -16,16 +16,11 @@ class Asm_Test(object):
         self.myjit = Machine("aarch64l").jitter(jitter)
         self.myjit.init_stack()
 
-        self.myjit.jit.log_regs = False
-        self.myjit.jit.log_mn = False
-
-
     def __call__(self):
         self.asm()
         self.run()
         self.check()
 
-
     def asm(self):
         blocks, symbol_pool = parse_asm.parse_txt(mn_aarch64, 'l', self.TXT,
                                                   symbol_pool = self.myjit.ir_arch.symbol_pool)
diff --git a/test/arch/mips32/unit/asm_test.py b/test/arch/mips32/unit/asm_test.py
index f03a32d7..a2203783 100644
--- a/test/arch/mips32/unit/asm_test.py
+++ b/test/arch/mips32/unit/asm_test.py
@@ -18,9 +18,6 @@ class Asm_Test(object):
         self.myjit = Machine("mips32l").jitter(jitter)
         self.myjit.init_stack()
 
-        self.myjit.jit.log_regs = False
-        self.myjit.jit.log_mn = False
-
     def __call__(self):
         self.asm()
         self.run()
diff --git a/test/arch/x86/unit/asm_test.py b/test/arch/x86/unit/asm_test.py
index 961967f9..4b802606 100644
--- a/test/arch/x86/unit/asm_test.py
+++ b/test/arch/x86/unit/asm_test.py
@@ -18,9 +18,6 @@ class Asm_Test(object):
         self.myjit = Machine(self.arch_name).jitter(jitter_engine)
         self.myjit.init_stack()
 
-        self.myjit.jit.log_regs = False
-        self.myjit.jit.log_mn = False
-
     def test_init(self):
         pass
 
@@ -81,10 +78,6 @@ class Asm_Test_16(Asm_Test):
         self.myjit.stack_size = 0x1000
         self.myjit.init_stack()
 
-        self.myjit.jit.log_regs = False
-        self.myjit.jit.log_mn = False
-
-
     def init_machine(self):
         self.myjit.vm.add_memory_page(self.run_addr, PAGE_READ | PAGE_WRITE, self.assembly)
         self.myjit.push_uint16_t(self.ret_addr)
diff --git a/test/jitter/bad_block.py b/test/jitter/bad_block.py
index 04c1f475..ae11e696 100644
--- a/test/jitter/bad_block.py
+++ b/test/jitter/bad_block.py
@@ -32,8 +32,7 @@ run_addr = 0x40000000
 
 jitter.vm.add_memory_page(run_addr, PAGE_READ | PAGE_WRITE, data)
 
-jitter.jit.log_regs = True
-jitter.jit.log_mn = True
+jitter.set_trace_log()
 jitter.push_uint32_t(0x1337beef)
 
 jitter.add_breakpoint(0x1337beef, code_sentinelle)
diff --git a/test/jitter/jit_options.py b/test/jitter/jit_options.py
index 4fe936d5..a0ddbc11 100644
--- a/test/jitter/jit_options.py
+++ b/test/jitter/jit_options.py
@@ -33,8 +33,7 @@ def init_jitter():
 
     # Init jitter
     myjit.init_stack()
-    myjit.jit.log_regs = True
-    myjit.jit.log_mn = True
+    myjit.set_trace_log()
     myjit.push_uint32_t(0x1337beef)
 
     myjit.add_breakpoint(0x1337beef, code_sentinelle)
diff --git a/test/jitter/jmp_out_mem.py b/test/jitter/jmp_out_mem.py
index 49da16ad..93ae8304 100644
--- a/test/jitter/jmp_out_mem.py
+++ b/test/jitter/jmp_out_mem.py
@@ -35,8 +35,7 @@ run_addr = 0x40000000
 
 jitter.vm.add_memory_page(run_addr, PAGE_READ | PAGE_WRITE, data)
 
-jitter.jit.log_regs = True
-jitter.jit.log_mn = True
+jitter.set_trace_log()
 jitter.push_uint32_t(0x1337beef)
 
 jitter.add_breakpoint(0x1337beef, code_sentinelle)
diff --git a/test/jitter/test_post_instr.py b/test/jitter/test_post_instr.py
index edf86645..39e87616 100644
--- a/test/jitter/test_post_instr.py
+++ b/test/jitter/test_post_instr.py
@@ -23,8 +23,8 @@ jitter.vm.add_memory_page(0x1000, PAGE_READ|PAGE_WRITE, "\x00"*0x1000, "code pag
 # RET
 jitter.vm.set_mem(0x1000, "B844332211C3".decode('hex'))
 
-jitter.jit.log_mn = True
-jitter.jit.log_regs = True
+
+jitter.set_trace_log()
 
 def do_not_raise_me(jitter):
     raise ValueError("Should not be here")