aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/aarch64/dl-lookupcfg.h
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2022-09-06 14:17:35 +0100
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2022-10-27 14:46:54 +0100
commit63aa755b4064a0cbd1598b53cb8c82ecb8ea4e2d (patch)
treed8192646029f0445d31392ac85d6d40778ac85ed /sysdeps/aarch64/dl-lookupcfg.h
parentc62607b9006c23b2f21f1bc5b36b048ce93071ec (diff)
downloadglibc-63aa755b4064a0cbd1598b53cb8c82ecb8ea4e2d.zip
glibc-63aa755b4064a0cbd1598b53cb8c82ecb8ea4e2d.tar.gz
glibc-63aa755b4064a0cbd1598b53cb8c82ecb8ea4e2d.tar.bz2
aarch64: morello: fix DL_SYMBOL_ADDRESS
It has to return a pointer that can be dereferenced, so it must be derived correctly from RX and RW capabilities. Try to have tight object bounds and seal function symbols.
Diffstat (limited to 'sysdeps/aarch64/dl-lookupcfg.h')
-rw-r--r--sysdeps/aarch64/dl-lookupcfg.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/sysdeps/aarch64/dl-lookupcfg.h b/sysdeps/aarch64/dl-lookupcfg.h
index 64d46a0..aa3e50d 100644
--- a/sysdeps/aarch64/dl-lookupcfg.h
+++ b/sysdeps/aarch64/dl-lookupcfg.h
@@ -22,6 +22,14 @@
struct link_map;
+#ifdef __CHERI_PURE_CAPABILITY__
+/* Symbol pointer with correct capability permission and bounds. */
+void *_dl_symbol_address (struct link_map *map, const ElfW(Sym) *ref);
+rtld_hidden_proto (_dl_symbol_address)
+
+# define DL_SYMBOL_ADDRESS(map, ref) _dl_symbol_address(map, ref)
+#endif
+
extern void _dl_unmap (struct link_map *map);
#define DL_UNMAP(map) _dl_unmap (map)