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  <adhemerval.zanella@linaro.org>
(cherry picked from commit 2f77aec043)
(cherry picked from commit de1fe81f47)
This commit is contained in:
Yury Khrustalev 2025-10-28 11:01:50 +00:00
parent e4ffcf32b9
commit 5bf8ee7ad5
1 changed files with 6 additions and 4 deletions

View File

@ -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__ */
@ -255,11 +256,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" ); \