glibc/sysdeps/unix/sysv/linux/aarch64
Yury Khrustalev c0f0db2d59 aarch64: simplify calls to __libc_arm_za_disable in assembly
There is no functional change in this patch.

We remove stores and loads to stack, return address signing, and redundant
CFI directives before and after call to __libc_arm_za_disable().

The __libc_arm_za_disable implementation follows special calling convention
that allows to avoid most of the operations that would be necessary for a
call to a normal function (see [1] for details).

First, we rely on __libc_arm_za_disable() not clobbering certain registers,
and we put return address into one of these registers. Now we don't need
to store it on stack, so we don't need to sign return address using PAC.

Second, as a result of the above, we don't need to update the CFI offset.

This patch provides small optimisation avoiding unnecessary store and load
on stack also simplifies assembly code and CFI directives.

[1]: https://github.com/ARM-software/abi-aa/blob/main/aapcs64/aapcs64.rst

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2025-06-18 09:42:33 +01:00
..
bits AArch64: Remove LP64 and ILP32 ifdefs 2025-02-24 14:20:29 +00:00
sys
Implies
Makefile aarch64: Fix _dl_tlsdesc_dynamic unwind for pac-ret (BZ 32612) 2025-03-31 10:08:06 -03:00
Versions
arch-pkey.h
arch-syscall.h Update syscall lists for Linux 6.15 2025-05-29 19:21:46 +00:00
c++-types.data
clone.S AArch64: Remove PTR_ARG/SIZE_ARG defines 2025-02-24 14:15:15 +00:00
clone3.S AArch64: Remove PTR_ARG/SIZE_ARG defines 2025-02-24 14:15:15 +00:00
configure
configure.ac
cpu-features.c
dl-cache.h AArch64: Remove LP64 and ILP32 ifdefs 2025-02-24 14:20:29 +00:00
dl-procinfo.c Remove unused dl-procinfo.h 2025-02-28 16:55:18 +00:00
dl-procruntime.c
getcontext.S AArch64: Remove PTR_REG defines 2025-02-24 14:16:55 +00:00
gettimeofday.c
ioctl.S
kernel-features.h
kernel_rt_sigframe.h
ld.abilist
libBrokenLocale.abilist
libanl.abilist
libc-start.h
libc.abilist termios: add new baud_t interface, defined to be explicitly numeric 2025-06-17 09:11:38 -03:00
libc_malloc_debug.abilist
libc_sigaction.c
libdl.abilist
libm.abilist Implement C23 rootn. 2025-05-14 10:51:46 +00:00
libmvec.abilist AArch64: Implement AdvSIMD and SVE atan2pi/f 2025-05-19 15:35:25 +00:00
libnsl.abilist
libpthread.abilist
libresolv.abilist
librt.abilist
libthread_db.abilist
libutil.abilist
localplt.data
makecontext.c aarch64: GCS: use internal struct in __alloc_gcs 2025-06-18 09:37:13 +01:00
pkey_get.c
pkey_set.c
pointer_guard.h AArch64: Cleanup pointer mangling 2025-02-24 14:17:57 +00:00
readelflib.c
send.c
setcontext.S aarch64: simplify calls to __libc_arm_za_disable in assembly 2025-06-18 09:42:33 +01:00
shlib-versions
sigcontextinfo.h
single-thread.h
swapcontext.S AArch64: Cleanup PAC and BTI 2025-05-19 15:35:32 +00:00
syscall.S
syscall_cancel.S
sysconf.c
sysdep.c
sysdep.h AArch64: Remove LP64 and ILP32 ifdefs 2025-02-24 14:20:29 +00:00
tst-aarch64-pkey.c
tst-gcs-abort.sh
tst-gcs-disabled-static.c
tst-gcs-disabled.c
tst-gcs-dlopen-disabled.c aarch64: Add GCS tests for dlopen 2025-02-21 16:10:44 +00:00
tst-gcs-dlopen-enforced.c aarch64: Add GCS tests for dlopen 2025-02-21 16:10:44 +00:00
tst-gcs-dlopen-optional-off.c aarch64: Add GCS tests for dlopen 2025-02-21 16:10:44 +00:00
tst-gcs-dlopen-optional-on.c aarch64: Add GCS tests for dlopen 2025-02-21 16:10:44 +00:00
tst-gcs-dlopen-override.c aarch64: Add GCS tests for dlopen 2025-02-21 16:10:44 +00:00
tst-gcs-dlopen.c aarch64: Add GCS tests for dlopen 2025-02-21 16:10:44 +00:00
tst-gcs-enforced-abort.c
tst-gcs-enforced-static-abort.c
tst-gcs-enforced-static.c
tst-gcs-enforced.c
tst-gcs-helper.h aarch64: Add GCS tests for transitive dependencies 2025-02-21 16:09:06 +00:00
tst-gcs-mod1.c aarch64: Add GCS tests for transitive dependencies 2025-02-21 16:09:06 +00:00
tst-gcs-mod2.c aarch64: Add GCS tests for transitive dependencies 2025-02-21 16:09:06 +00:00
tst-gcs-mod3.c aarch64: Add GCS tests for transitive dependencies 2025-02-21 16:09:06 +00:00
tst-gcs-noreturn.c aarch64: Add GCS test with signal handler 2025-02-21 16:23:44 +00:00
tst-gcs-optional-off.c
tst-gcs-optional-on.c
tst-gcs-optional-static-off.c
tst-gcs-optional-static-on.c
tst-gcs-override-static.c
tst-gcs-override.c
tst-gcs-shared-disabled.c aarch64: Add GCS tests for transitive dependencies 2025-02-21 16:09:06 +00:00
tst-gcs-shared-enforced-abort.c aarch64: Add GCS tests for transitive dependencies 2025-02-21 16:09:06 +00:00
tst-gcs-shared-optional.c aarch64: Add GCS tests for transitive dependencies 2025-02-21 16:09:06 +00:00
tst-gcs-shared-override.c aarch64: Add GCS tests for transitive dependencies 2025-02-21 16:09:06 +00:00
tst-gcs-shared.c aarch64: Add GCS tests for transitive dependencies 2025-02-21 16:09:06 +00:00
tst-gcs-skeleton.c aarch64: Add GCS tests for transitive dependencies 2025-02-21 16:09:06 +00:00
tst-tlsdesc-pac-mod.c aarch64: Fix _dl_tlsdesc_dynamic unwind for pac-ret (BZ 32612) 2025-03-31 10:08:06 -03:00
tst-tlsdesc-pac.c aarch64: Fix _dl_tlsdesc_dynamic unwind for pac-ret (BZ 32612) 2025-03-31 10:08:06 -03:00
ucontext-internal.h
ucontext_i.sym
vfork.S
vltest.py