diff options
author | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2022-03-29 15:24:38 +0100 |
---|---|---|
committer | Szabolcs Nagy <szabolcs.nagy@arm.com> | 2022-08-05 19:45:19 +0100 |
commit | 3eb1c569eb5ab70a27fd4151a101e9d57b57b885 (patch) | |
tree | 20c1478a2198eaa903448d7653a65d3b15c248a3 /time/Depend | |
parent | 6f93421a5f177e382832cf49a5796eadabee32a9 (diff) | |
download | glibc-3eb1c569eb5ab70a27fd4151a101e9d57b57b885.tar.gz glibc-3eb1c569eb5ab70a27fd4151a101e9d57b57b885.tar.xz glibc-3eb1c569eb5ab70a27fd4151a101e9d57b57b885.zip |
TODO(l_addr): aarch64: morello: dynamic linking support
Add morello specific dl-machine.h. Add morello dynamic relocation processing support for purecap ABI. Only support R_AARCH64_NONE, R_AARCH64_ABS64 and R_AARCH64_RELATIVE dynamic relocs from the lp64 abi. This required several APIs to change ElfW(Addr) to uintptr_t including in generic code (where elfptr_t used to cover both traditional and capability abis). RELATIVE and IRELATIVE relocs use a helper function to construct a capability. Also fixed the IRELATIVE handling for static linking. Use new machine routines on morello for load address computation so it is a valid capability: void *elf_machine_runtime_dynamic (void) uintptr_t elf_machine_load_address_from_args (void *) The ld.so load address is either AT_BASE or if it is invoked as a command then derived from AT_PHDR or _DYNAMIC (pcc). ELF_MACHINE_START_ADDRESS is updated to turn the ElfW(Addr) user entry into a capability based on l_addr. TODO: __tls_get_addr should return a bounded pointer. (in case traditional tls is defined for morello) note: tls_index struct that is used for trad tls is changed for morello. (this is abi once trad tls is defined for morello) arguably _dl_make_tlsdesc_dynamic should set up tlsinfo.ti_size too. (but it's better to avoid changing the generic code) TODO: use cheri auxv entries to derive ld.so capabilities, this will require separate RW and RX base pointers instead of single l_addr. AT_BASE will not be a capability covering ld.so.
Diffstat (limited to 'time/Depend')
0 files changed, 0 insertions, 0 deletions