diff options
author | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2022-09-06 14:17:35 +0100 |
---|---|---|
committer | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2022-10-27 14:46:54 +0100 |
commit | 63aa755b4064a0cbd1598b53cb8c82ecb8ea4e2d (patch) | |
tree | d8192646029f0445d31392ac85d6d40778ac85ed /sysdeps/aarch64/dl-lookupcfg.h | |
parent | c62607b9006c23b2f21f1bc5b36b048ce93071ec (diff) | |
download | glibc-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.h | 8 |
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) |