From 0df086bc1706d1278d73471f928687e8aea3a7a7 Mon Sep 17 00:00:00 2001 From: pancake Date: Mon, 10 Feb 2025 23:57:36 +0100 Subject: [PATCH 1/3] Fix esil tracing running the same instruction twice ##debug --- libr/esil/esil_trace.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libr/esil/esil_trace.c b/libr/esil/esil_trace.c index 49c8a1e15ffb9..2603112e21991 100644 --- a/libr/esil/esil_trace.c +++ b/libr/esil/esil_trace.c @@ -192,6 +192,16 @@ static bool trace_hook_reg_read(REsil *esil, const char *name, ut64 *res, int *s return ret; } +static bool trace_reg_write(REsil *esil, const char *name, ut64 val) { + // ignore + return true; +} + +static bool trace_mem_write(REsil *esil, ut64 addr, const ut8 *buf, int len) { + // ignore + return true; +} + static bool trace_hook_reg_write(REsil *esil, const char *name, ut64 *val) { bool ret = false; // eprintf ("[ESIL] REG WRITE %s 0x%08"PFMT64x"\n", name, *val); @@ -341,6 +351,8 @@ R_API void r_esil_trace_op(REsil *esil, struct r_anal_op_t *op) { esil->cb.hook_reg_write = trace_hook_reg_write; esil->cb.hook_mem_read = trace_hook_mem_read; esil->cb.hook_mem_write = trace_hook_mem_write; + esil->cb.reg_write = trace_reg_write; + esil->cb.mem_write = trace_mem_write; /* evaluate esil expression */ const int esil_verbose = esil->verbose; esil->verbose = 0; // disable verbose logs when tracing From 30b4478f1df51bb12df73c38e71fd737ac25f679 Mon Sep 17 00:00:00 2001 From: pancake Date: Mon, 10 Feb 2025 23:59:24 +0100 Subject: [PATCH 2/3] add teste --- test/db/esil/x86_32 | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/db/esil/x86_32 b/test/db/esil/x86_32 index e23a76aa1ccad..ef6fada0933c1 100644 --- a/test/db/esil/x86_32 +++ b/test/db/esil/x86_32 @@ -2462,3 +2462,13 @@ esp before :0x00178000 esp after :0x00178000 EOF RUN + +NAME=push ax +FILE=- +ARGS=-a x86 -b 32 +EOF +EXPECT=< Date: Tue, 11 Feb 2025 00:08:43 +0100 Subject: [PATCH 3/3] Fix test --- test/db/esil/x86_32 | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/test/db/esil/x86_32 b/test/db/esil/x86_32 index ef6fada0933c1..0f5708a36356a 100644 --- a/test/db/esil/x86_32 +++ b/test/db/esil/x86_32 @@ -2466,9 +2466,16 @@ RUN NAME=push ax FILE=- ARGS=-a x86 -b 32 +CMDS=<