From b24a0dc0ae3964423bf8fda515b5a1dd937fa43d Mon Sep 17 00:00:00 2001 From: Brian Campbell Date: Tue, 28 Nov 2023 12:18:37 +0000 Subject: [PATCH] Fix stack overwrite bug on AArch64 This was harmless on debug builds because it only overwrote some dead local variables in the caller, but broke optimised buildsp. --- src/mprompt/asm/longjmp_arm64.S | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mprompt/asm/longjmp_arm64.S b/src/mprompt/asm/longjmp_arm64.S index 2430792..31a22ba 100644 --- a/src/mprompt/asm/longjmp_arm64.S +++ b/src/mprompt/asm/longjmp_arm64.S @@ -149,7 +149,7 @@ mp_stack_enter: .cfi_startproc .cfi_signal_frame /* needed or else gdb does not allow switching frames to a lower address in the backtrace */ - stp fp, lr, [sp, #16]! /* link frame (seems needed for libunwind) */ + stp fp, lr, [sp, #-16]! /* link frame (seems needed for libunwind) */ .cfi_adjust_cfa_offset 32 .cfi_rel_offset lr, 24 .cfi_rel_offset fp, 16