[PATCH 0/4] Add tests for Guarded Control Stack
Yury Khrustalev
yury.khrustalev@arm.com
Thu Jan 23 14:13:57 GMT 2025
This patch adds AArch64 specific tests related to Guarded Control Stack [1].
There is no urgency to include this into the 2.41 release of Glibc.
There might be better ways of arranging these tests in terms of using
the test framework of the library. Any feedback is appreciated.
These tests are supposed to be built for AArch64 target and will run on
systems with and without GCS support. In the latter case they would be
reported as UNSUPPORTED.
The tests use "-z gcs=<value>" linker flag that may not be supported by
older binutils. In this case it is expected that the tests will run on
a system that does not support GCS. Linker will show a warning about
unused command line flag.
If tests are intended to be run on a system that supports GCS, then it
is expected that they are built with a toolchain that supports GCS.
When runtime target supports GCS, tests are run with all supported
values of the GCS tunable to check its effects.
Regression tested on aarch64 and no regressions have been found.
OK for trunk?
[1] https://developer.arm.com/documentation/ddi0487/ka/ (chapter D11)
---
Yury Khrustalev (4):
aarch64: Add tests for Guarded Control Stack
aarch64: Add GCS tests for transitive dependencies
aarch64: Add GCS tests for dlopen
aarch64: Add GCS test with signal handler
Makeconfig | 2 +-
sysdeps/unix/sysv/linux/aarch64/Makefile | 121 ++++++++++++++++++
.../unix/sysv/linux/aarch64/tst-gcs-abort.sh | 40 ++++++
.../linux/aarch64/tst-gcs-disabled-static.c | 1 +
.../sysv/linux/aarch64/tst-gcs-disabled.c | 2 +
.../linux/aarch64/tst-gcs-dlopen-disabled.c | 3 +
.../linux/aarch64/tst-gcs-dlopen-enforced.c | 3 +
.../aarch64/tst-gcs-dlopen-optional-off.c | 3 +
.../aarch64/tst-gcs-dlopen-optional-on.c | 3 +
.../linux/aarch64/tst-gcs-dlopen-override.c | 3 +
.../unix/sysv/linux/aarch64/tst-gcs-dlopen.c | 62 +++++++++
.../linux/aarch64/tst-gcs-enforced-abort.c | 2 +
.../aarch64/tst-gcs-enforced-static-abort.c | 1 +
.../linux/aarch64/tst-gcs-enforced-static.c | 1 +
.../sysv/linux/aarch64/tst-gcs-enforced.c | 2 +
.../unix/sysv/linux/aarch64/tst-gcs-helper.h | 39 ++++++
.../unix/sysv/linux/aarch64/tst-gcs-mod1.c | 27 ++++
.../unix/sysv/linux/aarch64/tst-gcs-mod2.c | 25 ++++
.../unix/sysv/linux/aarch64/tst-gcs-mod3.c | 25 ++++
.../sysv/linux/aarch64/tst-gcs-noreturn.c | 96 ++++++++++++++
.../sysv/linux/aarch64/tst-gcs-optional-off.c | 2 +
.../sysv/linux/aarch64/tst-gcs-optional-on.c | 2 +
.../aarch64/tst-gcs-optional-static-off.c | 1 +
.../aarch64/tst-gcs-optional-static-on.c | 1 +
.../linux/aarch64/tst-gcs-override-static.c | 1 +
.../sysv/linux/aarch64/tst-gcs-override.c | 2 +
.../linux/aarch64/tst-gcs-shared-disabled.c | 2 +
.../aarch64/tst-gcs-shared-enforced-abort.c | 2 +
.../linux/aarch64/tst-gcs-shared-optional.c | 2 +
.../linux/aarch64/tst-gcs-shared-override.c | 2 +
.../unix/sysv/linux/aarch64/tst-gcs-shared.c | 41 ++++++
.../sysv/linux/aarch64/tst-gcs-skeleton.c | 43 +++++++
32 files changed, 561 insertions(+), 1 deletion(-)
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-abort.sh
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-disabled-static.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-disabled.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-disabled.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-enforced.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-optional-off.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-optional-on.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen-override.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-dlopen.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-abort.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-static-abort.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced-static.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-enforced.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-helper.h
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-mod1.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-mod2.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-mod3.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-noreturn.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-off.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-on.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-static-off.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-optional-static-on.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-override-static.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-override.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-disabled.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-enforced-abort.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-optional.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared-override.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-shared.c
create mode 100644 sysdeps/unix/sysv/linux/aarch64/tst-gcs-skeleton.c
--
2.39.5
More information about the Libc-alpha
mailing list