aboutsummaryrefslogtreecommitdiff
path: root/malloc
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2025-03-28 14:27:45 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2025-03-31 10:08:06 -0300
commit4352e2cc934b2874dba37397157bf890fcee455a (patch)
tree5bcc9ff6e6cef71333269d05bca4627f6d568c24 /malloc
parent145097dff170507fe73190e8e41194f5b5f7e6bf (diff)
downloadglibc-4352e2cc934b2874dba37397157bf890fcee455a.zip
glibc-4352e2cc934b2874dba37397157bf890fcee455a.tar.gz
glibc-4352e2cc934b2874dba37397157bf890fcee455a.tar.bz2
aarch64: Fix _dl_tlsdesc_dynamic unwind for pac-ret (BZ 32612)
When libgcc is built with pac-ret, it requires to autenticate the unwinding frame based on CFI information. The _dl_tlsdesc_dynamic uses a custom calling convention, where it is responsible to save and restore all registers it might use (even volatile). The pac-ret support added by 1be3d6eb823d8b952fa54b7bbc90cbecb8981380 was added only on the slow-path, but the fast path also adds DWARF Register Rule Instruction (cfi_adjust_cfa_offset) since it requires to save/restore some auxiliary register. It seems that this is not fully supported neither by libgcc nor AArch64 ABI [1]. Instead, move paciasp/autiasp to function prologue/epilogue to be used on both fast and slow paths. I also corrected the _dl_tlsdesc_dynamic comment description, it was copied from i386 implementation without any adjustment. Checked on aarch64-linux-gnu with a toolchain built with --enable-standard-branch-protection on a system with pac-ret support. [1] https://github.com/ARM-software/abi-aa/blob/main/aadwarf64/aadwarf64.rst#id1 Reviewed-by: Yury Khrustalev <yury.khrustalev@arm.com>
Diffstat (limited to 'malloc')
0 files changed, 0 insertions, 0 deletions