about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2024-01-10 16:20:24 +0000
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2024-02-13 10:29:24 +0000
commit84bfdb91bded2358b2642eed3bdae3c049576eb4 (patch)
tree86b81fc6d86c831f79823c574641fa57f74fcb3e
parent5017a71252bd923b764b58cd61021b028c84d361 (diff)
downloadglibc-84bfdb91bded2358b2642eed3bdae3c049576eb4.tar.gz
glibc-84bfdb91bded2358b2642eed3bdae3c049576eb4.tar.xz
glibc-84bfdb91bded2358b2642eed3bdae3c049576eb4.zip
aarch64: ignore GCS property of ld.so
ldso->l_mach.gcs may not be set up, just assume ldso is GCS compatible.
-rw-r--r--sysdeps/aarch64/dl-gcs.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/sysdeps/aarch64/dl-gcs.c b/sysdeps/aarch64/dl-gcs.c
index 764b8a56e9..b81aa30787 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)