]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
alpha: Fix stack alignment in makecontext master
authorMagnus Lindholm <linmag7@gmail.com>
Mon, 3 Aug 2026 15:51:59 +0000 (17:51 +0200)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 3 Aug 2026 18:53:19 +0000 (15:53 -0300)
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>
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
sysdeps/unix/sysv/linux/alpha/makecontext.S

index b0479315d571d90c5d8e3f654f80fe43d0b6e7df..1de0dd265319382def22c8de3117761c80c39396 100644 (file)
@@ -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