[PATCH] alpha: Fix stack alignment in makecontext
Magnus Lindholm
linmag7@gmail.com
Mon Aug 3 15:51:59 GMT 2026
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 <linmag7@gmail.com>
---
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.53.0
More information about the Libc-alpha
mailing list