[PATCH] alpha: Fix stack alignment in makecontext

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Mon Aug 3 16:00:00 GMT 2026



On 03/08/26 12:51, Magnus Lindholm wrote:
> 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>

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  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



More information about the Libc-alpha mailing list