Re: [PATCH] alpha: Fix stack alignment in makecontext

Adhemerval Zanella Netto <[email protected]> Mon, 3 Aug 2026 13:00:00 -0300
Newsgroups gmane.comp.lib.glibc.alpha
Organization Linaro
Message-ID <[email protected]>

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 <[email protected]>

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <[email protected]>

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