From: Yury Khrustalev Date: Tue, 28 Oct 2025 11:01:50 +0000 (+0000) Subject: aarch64: fix cfi directives around __libc_arm_za_disable X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2f77aec043f61e8533487850b11941a640ae2dea;p=thirdparty%2Fglibc.git aarch64: fix cfi directives around __libc_arm_za_disable Incorrect CFI directive corrupted call stack information and prevented debuggers from correctly displaying call stack information. Reviewed-by: Adhemerval Zanella --- 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" ); \