From 77dc7c4d36003605381e055e22e9da2848b8c343 Mon Sep 17 00:00:00 2001 From: Simon Wanner Date: Tue, 31 Oct 2023 22:04:45 +0100 Subject: [PATCH] LibJIT: Emit unwindable stack frames Flip the order from save-registers,enter and leave,restore-registers to enter,save-register and restore-registers,leave. This way the return address is next to the saved frame pointer like unwinding routines expect. --- Userland/Libraries/LibJIT/Assembler.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibJIT/Assembler.h b/Userland/Libraries/LibJIT/Assembler.h index d462b2b273..d67d2fa305 100644 --- a/Userland/Libraries/LibJIT/Assembler.h +++ b/Userland/Libraries/LibJIT/Assembler.h @@ -522,19 +522,19 @@ struct Assembler { void enter() { - push_callee_saved_registers(); - push(Operand::Register(Reg::RBP)); mov(Operand::Register(Reg::RBP), Operand::Register(Reg::RSP)); + + push_callee_saved_registers(); } void exit() { + pop_callee_saved_registers(); + // leave emit8(0xc9); - pop_callee_saved_registers(); - // ret emit8(0xc3); }