Lines Matching refs:shdr
30 const elf_shdr_t *shdr) in arch_elf_relocate() argument
169 const elf_shdr_t *shdr) in llext_lookup_symbol() argument
194 name, (size_t)rel->r_offset, shdr->sh_link); in llext_lookup_symbol()
231 static void llext_link_plt(struct llext_loader *ldr, struct llext *ext, elf_shdr_t *shdr, in llext_link_plt() argument
234 unsigned int sh_cnt = shdr->sh_size / shdr->sh_entsize; in llext_link_plt()
242 (void *)llext_section_name(ldr, ext, shdr), in llext_link_plt()
243 shdr->sh_type, (size_t)shdr->sh_entsize, sh_cnt, (void *)text); in llext_link_plt()
251 int ret = llext_seek(ldr, shdr->sh_offset + i * shdr->sh_entsize); in llext_link_plt()
375 elf_shdr_t *shdr = ext->sect_hdrs + i; in llext_link() local
378 switch (shdr->sh_type) { in llext_link()
380 if (shdr->sh_entsize != sizeof(elf_rel_t)) { in llext_link()
382 (size_t)shdr->sh_entsize, i); in llext_link()
391 if (shdr->sh_entsize != sizeof(elf_rela_t)) { in llext_link()
393 (size_t)shdr->sh_entsize, i); in llext_link()
402 if (shdr->sh_info >= ext->sect_cnt || in llext_link()
403 shdr->sh_size % shdr->sh_entsize != 0) { in llext_link()
406 (size_t)shdr->sh_info, in llext_link()
407 (size_t)shdr->sh_size, in llext_link()
408 (size_t)shdr->sh_entsize); in llext_link()
412 rel_cnt = shdr->sh_size / shdr->sh_entsize; in llext_link()
414 name = llext_section_name(ldr, ext, shdr); in llext_link()
434 tgt = ext->sect_hdrs + shdr->sh_info; in llext_link()
437 llext_link_plt(ldr, ext, shdr, ldr_parm, tgt); in llext_link()
441 if (!(ext->sect_hdrs[shdr->sh_info].sh_flags & SHF_ALLOC)) { in llext_link()
447 name, i, shdr->sh_info, (size_t)rel_cnt); in llext_link()
449 enum llext_mem mem_idx = ldr->sect_map[shdr->sh_info].mem_idx; in llext_link()
452 LOG_ERR("Section %d not loaded in any memory region", shdr->sh_info); in llext_link()
456 sect_base = (uintptr_t) llext_loaded_sect_ptr(ldr, ext, shdr->sh_info); in llext_link()
460 ret = llext_seek(ldr, shdr->sh_offset + j * shdr->sh_entsize); in llext_link()
465 ret = llext_read(ldr, &rel, shdr->sh_entsize); in llext_link()
475 shdr->sh_info, in llext_link()
488 shdr); in llext_link()
509 ret = arch_elf_relocate(ldr, ext, &rel, shdr); in llext_link()
528 elf_shdr_t *shdr = ext->sect_hdrs + i; in llext_link() local
530 if (ldr_parm->section_detached(shdr)) { in llext_link()
531 void *base = llext_peek(ldr, shdr->sh_offset); in llext_link()
533 sys_cache_data_flush_range(base, shdr->sh_size); in llext_link()
534 sys_cache_instr_invd_range(base, shdr->sh_size); in llext_link()