[PATCH] aarch64: fix cfi directives around __libc_arm_za_disable

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Tue Oct 28 12:47:04 GMT 2025



On 28/10/25 08:50, Yury Khrustalev wrote:
> Incorrect CFI directive corrupted call stack information
> and prevented debuggers from correctly displaying call
> stack information.
> 
> ---
> 
> Passes regression on AArch64. OK for trunk?
> Base commit: 013f5167b9

LGTM, thanks.  I take this fixes the gdb regression triggered by Linaro CI, right?

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

> 
> ---
>  sysdeps/unix/sysv/linux/aarch64/sysdep.h | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/sysdeps/unix/sysv/linux/aarch64/sysdep.h b/sysdeps/unix/sysv/linux/aarch64/sysdep.h
> index 30003c0145..8a7690d4a8 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/sysdep.h
> +++ b/sysdeps/unix/sysv/linux/aarch64/sysdep.h
> @@ -155,11 +155,12 @@
>     that allows to call it without stack manipulation and preserving
>     most of the registers.  */
>  	.macro CALL_LIBC_ARM_ZA_DISABLE
> +	cfi_remember_state
>  	mov		x13, x30
> -	.cfi_register	x30, x13
> +	cfi_register(x30, x13)
>  	bl		__libc_arm_za_disable
>  	mov		x30, x13
> -	.cfi_register	x13, x30
> +	cfi_restore_state
>  	.endm
>  
>  #else /* not __ASSEMBLER__ */
> @@ -250,11 +251,12 @@
>  ({							\
>    unsigned long int __tmp;				\
>    asm volatile (					\
> +  "	.cfi_remember_state\n"			\
>    "	mov		%0, x30\n"			\
> -  "	.cfi_register	x30, %0\n"			\
> +  "	.cfi_register x30, %0\n"      \
>    "	bl		__libc_arm_za_disable\n"	\
>    "	mov		x30, %0\n"			\
> -  "	.cfi_register	%0, x30\n"			\
> +  "	.cfi_restore_state\n"			\
>    : "=r" (__tmp)					\
>    :							\
>    : "x14", "x15", "x16", "x17", "x18", "memory" );	\



More information about the Libc-alpha mailing list