diff options
author | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2024-01-10 16:20:24 +0000 |
---|---|---|
committer | Yury Khrustalev <yury.khrustalev@arm.com> | 2025-01-20 09:36:19 +0000 |
commit | 29476485f90a0c3460149349367a45085cc57c65 (patch) | |
tree | 697d91d3c4de10563dd13a8c8830b15c66111bc8 | |
parent | 4d56a5bbd679372121977e5cce4614815dfcce29 (diff) | |
download | glibc-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.c | 5 |
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; |