llext: xtensa: add support for in-place relocatable extensions
Currently LLEXT on Xtensa supports relocatable extensions, linked for a specific address range, while relocation itself takes place in a temporary buffer. For this section addresses have to be set correctly by the linker for their target locations. This commit adds support for relocatable extensions, built without using specific memory addresses and run at the same addresses, where they are loaded. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This commit is contained in:
parent
e24295f0f5
commit
34ab1a1e51
|
@ -37,7 +37,7 @@ void arch_elf_relocate_local(struct llext_loader *ldr, struct llext *ext,
|
|||
if (ELF_ST_TYPE(sym->st_info) == STT_SECTION) {
|
||||
elf_shdr_t *shdr = llext_peek(ldr, ldr->hdr.e_shoff +
|
||||
sym->st_shndx * ldr->hdr.e_shentsize);
|
||||
sh_addr = shdr->sh_addr;
|
||||
sh_addr = shdr->sh_addr ? : (uintptr_t)llext_peek(ldr, shdr->sh_offset);
|
||||
} else {
|
||||
sh_addr = ldr->sects[LLEXT_MEM_TEXT].sh_addr;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue