From 7dec717e03ebfd2f896ba5c098fc1925868239e9 Mon Sep 17 00:00:00 2001 From: Christoph Urlacher Date: Fri, 12 Jun 2026 12:29:02 +0200 Subject: [PATCH] Enclose libiwasm.a objects with _start/_end symbols --- targets/linker.ld | 90 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/targets/linker.ld b/targets/linker.ld index ccbd533..c0891f4 100644 --- a/targets/linker.ld +++ b/targets/linker.ld @@ -48,26 +48,116 @@ SECTIONS { /* place before .text, otherwise they'll be caught by the wildcard */ + /* AOT binary array */ _wamr_aot_start = .; *(".text.wamr_aot") _wamr_aot_end = .; + /* The mmap_space memory used by os_mmap in baremetal platform */ _wamr_mmap_start = .; *(".text.wamr_mmap") _wamr_mmap_end = .; + /* The runtime memory pool used by Alloc_With_Usage */ _wamr_runtime_pool_start = .; *(".text.wamr_runtime_pool") _wamr_runtime_pool_end = .; + /* The linear memory pool used by Alloc_With_Usage */ _wamr_linear_pool_start = .; *(".text.wamr_linear_pool") _wamr_linear_pool_end = .; + /* The memory pool used by Alloc_With_Pool */ _wamr_global_heap_start = .; *(".text.wamr_global_heap") _wamr_global_heap_end = .; + /* + The libiwasm.a contains the following objects: + + aot_intrinsic.c.obj + aot_loader.c.obj + aot_reloc_x86_32.c.obj + aot_runtime.c.obj + bh_assert.c.obj + bh_bitmap.c.obj + bh_common.c.obj + bh_hashmap.c.obj + bh_leb128.c.obj + bh_list.c.obj + bh_log.c.obj + bh_queue.c.obj + bh_vector.c.obj + ems_alloc.c.obj + ems_gc.c.obj + ems_hmu.c.obj + ems_kfc.c.obj + invokeNative_ia32.s.obj + libc_builtin_wrapper.c.obj + mem_alloc.c.obj + platform_init.c.obj + runtime_timer.c.obj + wasm_application.c.obj + wasm_blocking_op.c.obj + wasm_c_api.c.obj + wasm_exec_env.c.obj + wasm_interp_classic.c.obj + wasm_loader.c.obj + wasm_loader_common.c.obj + wasm_memory.c.obj + wasm_native.c.obj + wasm_runtime.c.obj + wasm_runtime_common.c.obj + wasm_shared_memory.c.obj + */ + + /* Put the .text section from aot_runtime.c.obj from libiwasm.a here */ + _iwasm_aot_runtime_start = .; + *aot_runtime.c.obj(.text .text.*) + _iwasm_aot_runtime_end = .; + + /* Put the utility library here */ + _iwasm_bh_start = .; + *bh_*.c.obj(.text .text.*) + _iwasm_bh_end = .; + + /* Put the allocator here */ + _iwasm_mem_alloc_start = .; + *mem_alloc.c.obj(.text .text.*) + _iwasm_mem_alloc_end = .; + + /* Put the baremetal platform here */ + _iwasm_platform_init_start = .; + *platform_init.c.obj(.text .text.*) + _iwasm_platform_init_end = .; + + /* Put the exec_env here */ + _iwasm_exec_env_start = .; + *wasm_exec_env.c.obj(.text .text.*) + _iwasm_exec_env_end = .; + + /* Put the classic interpreter here */ + _iwasm_interp_classic_start = .; + *wasm_interp_classic.c.obj(.text .text.*) + _iwasm_interp_classic_end = .; + + /* Put the wasm memory here */ + _iwasm_memory_start = .; + *wasm_memory.c.obj(.text .text.*) + _iwasm_memory_end = .; + + /* Put the wasm native here */ + _iwasm_native_start = .; + *wasm_native.c.obj(.text .text.*) + _iwasm_native_end = .; + + /* Put the wasm runtime here */ + _iwasm_runtime_start = .; + *wasm_runtime.c.obj(.text .text.*) + *wasm_runtime_common.c.obj(.text .text.*) + _iwasm_runtime_end = .; + _text_start = .; *(".text*") _text_end = .;