about summary refs log tree commit diff stats
path: root/src/wrapped
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-10-26 13:58:20 +0200
committerptitSeb <sebastien.chev@gmail.com>2022-10-26 13:58:20 +0200
commitbaf6fc89873fbf7af3bd46d539d2ff2fbc13ed5f (patch)
tree432b1c90cc3489b2424ae279a2e6f1307b7f19af /src/wrapped
parentbf75d6496f411bbbacc2d0687a32f0043c704438 (diff)
downloadbox64-baf6fc89873fbf7af3bd46d539d2ff2fbc13ed5f.tar.gz
box64-baf6fc89873fbf7af3bd46d539d2ff2fbc13ed5f.zip
Added BOX64_ROLLING_LOG support to __stack_chk_fail
Diffstat (limited to 'src/wrapped')
-rwxr-xr-xsrc/wrapped/wrappedlibc.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c
index 630b5cd1..b387fccb 100755
--- a/src/wrapped/wrappedlibc.c
+++ b/src/wrapped/wrappedlibc.c
@@ -358,6 +358,15 @@ void EXPORT my___stack_chk_fail(x64emu_t* emu)
     #else
     sprintf(buff, "%p: Stack is corrupted, aborting\n", (void*)emu->old_ip);
     #endif
+    if(cycle_log) {
+        int j = (my_context->current_line+1)&(CYCLE_LOG-1);
+        for (int i=0; i<CYCLE_LOG; ++i) {
+            int k = (i+j)&(CYCLE_LOG-1);
+            if(my_context->log_call[k][0]) {
+                printf_log(LOG_INFO, "%s => return %s\n", my_context->log_call[k], my_context->log_ret[k]);
+            }
+        }
+    }
     StopEmu(emu, buff);
 }
 void EXPORT my___gmon_start__(x64emu_t *emu)