From fb92636056fa4e4a15ec914b1030f4fbc7639d8c Mon Sep 17 00:00:00 2001 From: Guennadi Liakhovetski Date: Thu, 9 Nov 2023 13:04:21 +0100 Subject: [PATCH] llext: remove a symbol count copy The symbol count in struct llext_loader is redundant, we already have one in struct llext_symtable, accessible via struct llext. Remove the redundant copy. Signed-off-by: Guennadi Liakhovetski --- include/zephyr/llext/loader.h | 1 - subsys/llext/llext.c | 11 ++++------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/include/zephyr/llext/loader.h b/include/zephyr/llext/loader.h index 915a6278a44..5bcfb1e908b 100644 --- a/include/zephyr/llext/loader.h +++ b/include/zephyr/llext/loader.h @@ -92,7 +92,6 @@ struct llext_loader { elf_shdr_t sects[LLEXT_SECT_COUNT]; uint32_t *sect_map; uint32_t sect_cnt; - uint32_t sym_cnt; /** @endcond */ }; diff --git a/subsys/llext/llext.c b/subsys/llext/llext.c index 428c142454d..02ed0e17ed7 100644 --- a/subsys/llext/llext.c +++ b/subsys/llext/llext.c @@ -360,7 +360,7 @@ static int llext_count_export_syms(struct llext_loader *ldr, struct llext *ext) if (stt == STT_FUNC && stb == STB_GLOBAL) { LOG_DBG("function symbol %d, name %s, type tag %d, bind %d, sect %d", i, name, stt, stb, sect); - ldr->sym_cnt++; + ext->sym_tab.sym_cnt++; } else { LOG_DBG("unhandled symbol %d, name %s, type tag %d, bind %d, sect %d", i, name, stt, stb, sect); @@ -372,16 +372,14 @@ static int llext_count_export_syms(struct llext_loader *ldr, struct llext *ext) static int llext_allocate_symtab(struct llext_loader *ldr, struct llext *ext) { - int ret = 0; - size_t syms_size = ldr->sym_cnt * sizeof(struct llext_symbol); struct llext_symtable *sym_tab = &ext->sym_tab; + size_t syms_size = sym_tab->sym_cnt * sizeof(struct llext_symbol); sym_tab->syms = k_heap_alloc(&llext_heap, syms_size, K_NO_WAIT); - sym_tab->sym_cnt = ldr->sym_cnt; - memset(sym_tab->syms, 0, ldr->sym_cnt * sizeof(struct llext_symbol)); + memset(sym_tab->syms, 0, syms_size); ext->mem_size += syms_size; - return ret; + return 0; } static int llext_copy_symbols(struct llext_loader *ldr, struct llext *ext) @@ -570,7 +568,6 @@ static int do_llext_load(struct llext_loader *ldr, struct llext *ext) memset(ldr->sects, 0, sizeof(ldr->sects)); ldr->sect_cnt = 0; - ldr->sym_cnt = 0; size_t sect_map_sz = ldr->hdr.e_shnum * sizeof(uint32_t);