aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2024-01-10 16:20:24 +0000
committerYury Khrustalev <yury.khrustalev@arm.com>2025-01-20 09:36:19 +0000
commit29476485f90a0c3460149349367a45085cc57c65 (patch)
tree697d91d3c4de10563dd13a8c8830b15c66111bc8
parent4d56a5bbd679372121977e5cce4614815dfcce29 (diff)
downloadglibc-29476485f90a0c3460149349367a45085cc57c65.zip
glibc-29476485f90a0c3460149349367a45085cc57c65.tar.gz
glibc-29476485f90a0c3460149349367a45085cc57c65.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. Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
-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 28febf9..4ac86a5 100644
--- a/sysdeps/aarch64/dl-gcs.c
+++ b/sysdeps/aarch64/dl-gcs.c
@@ -53,6 +53,11 @@ unsupported (void)
static bool
check_gcs (struct link_map *l, const char *program, bool enforced)
{
+#ifdef SHARED
+ /* Ignore GCS marking on ld.so: its properties are not processed. */
+ if (is_rtld_link_map (l->l_real))
+ return true;
+#endif
/* Binary is marked, all good. */
if (l->l_mach.gcs)
return true;