From 4a07bb292f921c10e71fbf48c4a7f44391feb06c Mon Sep 17 00:00:00 2001 From: Magnus Lindholm Date: Mon, 3 Aug 2026 17:51:59 +0200 Subject: [PATCH] alpha: Fix stack alignment in makecontext The Alpha ABI requires the stack pointer to be 16-byte aligned. However, __makecontext did not realign it after reserving space for arguments. Depending on uc_stack.ss_size, this could leave the stack only 8-byte aligned. Round the new stack pointer down to a 16-byte boundary after reserving the argument area. This fixes stdlib/tst-makecontext2. Signed-off-by: Magnus Lindholm Reviewed-by: Adhemerval Zanella --- sysdeps/unix/sysv/linux/alpha/makecontext.S | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sysdeps/unix/sysv/linux/alpha/makecontext.S b/sysdeps/unix/sysv/linux/alpha/makecontext.S index b0479315d5..1de0dd2653 100644 --- a/sysdeps/unix/sysv/linux/alpha/makecontext.S +++ b/sysdeps/unix/sysv/linux/alpha/makecontext.S @@ -38,6 +38,9 @@ ENTRY(__makecontext) s8addq $1, 0, $2 subq $8, $2, $8 + /* The Alpha ABI requires a 16-byte-aligned stack pointer. */ + bic $8, 15, $8 + /* Copy all parameters. Switch statement header here. */ ldah $3, $jumptable($29) !gprelhigh cmple $18, 6, $1 -- 2.47.3