diff options
author | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2024-01-10 16:20:24 +0000 |
---|---|---|
committer | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2024-07-08 09:41:45 +0100 |
commit | e6b927e2f90c2e1739a65fdc3b13de3a51426320 (patch) | |
tree | 30cbf6ae3672bb7a79a380481b448ab6c152c7c9 | |
parent | cb02a617fbd9591e4c78d3f9e5135e499a4dca30 (diff) | |
download | glibc-e6b927e2f90c2e1739a65fdc3b13de3a51426320.zip glibc-e6b927e2f90c2e1739a65fdc3b13de3a51426320.tar.gz glibc-e6b927e2f90c2e1739a65fdc3b13de3a51426320.tar.bz2 |
aarch64: Ignore GCS property of ld.so
check_gcs is called for each dependency of a DSO, but the GNU property
of the ld.so is not processed so ldso->l_mach.gcs may not be correct.
Just assume ld.so is GCS compatible independently of the ELF marking.
-rw-r--r-- | sysdeps/aarch64/dl-gcs.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sysdeps/aarch64/dl-gcs.c b/sysdeps/aarch64/dl-gcs.c index 764b8a5..b81aa30 100644 --- a/sysdeps/aarch64/dl-gcs.c +++ b/sysdeps/aarch64/dl-gcs.c @@ -32,6 +32,11 @@ fail (struct link_map *l, const char *program) static void check_gcs (struct link_map *l, const char *program) { +#ifdef SHARED + /* Ignore GCS marking on ld.so: its properties are not processed. */ + if (l->l_real == &GL(dl_rtld_map)) + return; +#endif if (!l->l_mach.gcs) { if (GLRO(dl_aarch64_gcs_policy) == 2 || !program) |