[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