[PATCH v2 0/2] aarch64: Support locking GCS

Yury Khrustalev yury.khrustalev@arm.com
Thu Feb 5 13:20:44 GMT 2026


Lock GCS status by default. Also lock all features (operations on GCS)
by default.

Allow to opt-out of locking for selected features via new tunable
glibc.cpu.aarch64_gcs_lock (bits that are not set in this tunable's
value will not be locked).

See relevant discussion in [1]. It explains that we have to allow
opting out of all features (operations in GCS) including "status"
(i.e. enable / disable GCS).

Feedback on the implementation and user experience welcome.

---

Passes regression on aarch64. GCS tests checked on Arm Fixed
Virtual Platform (FVP) model [2]. OK for trunk?
Base commit: c4a81e882e

[1]: https://inbox.sourceware.org/libc-help/aXdRdmU95P4tbuES@arm.com/
[2]: https://inbox.sourceware.org/libc-help/aIc3ElNTSQrelCK9@arm.com/

---

Yury Khrustalev (2):
  aarch64: Lock GCS status at startup
  aarch64: Tests for locking GCS

 manual/tunables.texi                          |  50 +++++--
 sysdeps/aarch64/dl-gcs.c                      |   2 +-
 sysdeps/aarch64/dl-start.S                    |  12 ++
 sysdeps/aarch64/dl-tunables.list              |   6 +
 sysdeps/aarch64/rtld-global-offsets.sym       |   5 +-
 sysdeps/unix/sysv/linux/aarch64/Makefile      |  23 +++
 .../unix/sysv/linux/aarch64/cpu-features.c    |   7 +-
 .../unix/sysv/linux/aarch64/dl-procruntime.c  |  16 +++
 sysdeps/unix/sysv/linux/aarch64/libc-start.h  |  16 ++-
 .../unix/sysv/linux/aarch64/tst-gcs-execv.c   |  60 ++++++++
 .../unix/sysv/linux/aarch64/tst-gcs-fork.c    |  79 ++++++++++
 .../sysv/linux/aarch64/tst-gcs-lock-ptrace.c  | 135 ++++++++++++++++++
 .../sysv/linux/aarch64/tst-gcs-lock-static.c  |   1 +
 .../unix/sysv/linux/aarch64/tst-gcs-lock.c    |  63 ++++++++
 .../linux/aarch64/tst-gcs-unlock-static.c     |   2 +
 .../unix/sysv/linux/aarch64/tst-gcs-unlock.c  |   2 +
 16 files changed, 460 insertions(+), 19 deletions(-)
 create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-execv.c
 create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-fork.c
 create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-lock-ptrace.c
 create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-lock-static.c
 create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-lock.c
 create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-unlock-static.c
 create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-unlock.c

-- 
2.47.3



More information about the Libc-alpha mailing list