mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-07-15 08:48:33 +00:00

Currently, `data.drop` instruction is implemented by directly modifying the underlying module. It breaks use cases where you have multiple instances sharing a single loaded module. `elem.drop` has the same problem too. This PR fixes the issue by keeping track of which data/elem segments have been dropped by using bitmaps for each module instances separately, and add a sample to demonstrate the issue and make the CI run it. Also add a missing check of dropped elements to the fast-jit `table.init`. Fixes: https://github.com/bytecodealliance/wasm-micro-runtime/issues/2735 Fixes: https://github.com/bytecodealliance/wasm-micro-runtime/issues/2772
132 lines
4.6 KiB
Makefile
132 lines
4.6 KiB
Makefile
# Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
|
|
NAME := iwasm
|
|
CORE_ROOT := wamr/core
|
|
IWASM_ROOT := wamr/core/iwasm
|
|
SHARED_ROOT := wamr/core/shared
|
|
|
|
GLOBAL_DEFINES += BH_MALLOC=wasm_runtime_malloc
|
|
GLOBAL_DEFINES += BH_FREE=wasm_runtime_free
|
|
|
|
# Change it to THUMBV7M if you want to build for developerkit
|
|
WAMR_BUILD_TARGET := X86_32
|
|
|
|
WAMR_BUILD_PLATFORM := alios-things
|
|
|
|
ifeq (${WAMR_BUILD_TARGET}, X86_32)
|
|
GLOBAL_DEFINES += BUILD_TARGET_X86_32
|
|
INVOKE_NATIVE := invokeNative_ia32.s
|
|
AOT_RELOC := aot_reloc_x86_32.c
|
|
else ifeq (${WAMR_BUILD_TARGET}, X86_64)
|
|
GLOBAL_DEFINES += BUILD_TARGET_X86_64
|
|
INVOKE_NATIVE := invokeNative_em64.s
|
|
AOT_RELOC := aot_reloc_x86_64.c
|
|
else ifeq ($(findstring ARM,$(WAMR_BUILD_TARGET)), ARM)
|
|
GLOBAL_DEFINES += BUILD_TARGET_ARM
|
|
GLOBAL_DEFINES += BUILD_TARGET=\"$(WAMR_BUILD_TARGET)\"
|
|
INVOKE_NATIVE := invokeNative_arm.s
|
|
AOT_RELOC := aot_reloc_arm.c
|
|
else ifeq ($(findstring THUMB,$(WAMR_BUILD_TARGET)), THUMB)
|
|
GLOBAL_DEFINES += BUILD_TARGET_THUMB
|
|
GLOBAL_DEFINES += BUILD_TARGET=\"$(WAMR_BUILD_TARGET)\"
|
|
INVOKE_NATIVE := invokeNative_thumb.s
|
|
AOT_RELOC := aot_reloc_thumb.c
|
|
else ifeq (${WAMR_BUILD_TARGET}, MIPS)
|
|
GLOBAL_DEFINES += BUILD_TARGET_MIPS
|
|
INVOKE_NATIVE := invokeNative_mips.s
|
|
AOT_RELOC := aot_reloc_mips.c
|
|
else ifeq (${WAMR_BUILD_TARGET}, XTENSA)
|
|
GLOBAL_DEFINES += BUILD_TARGET_XTENSA
|
|
INVOKE_NATIVE := invokeNative_xtensa.s
|
|
AOT_RELOC := aot_reloc_xtensa.c
|
|
else
|
|
$(error Build target isn't set)
|
|
endif
|
|
|
|
# Enable Interpreter by default.
|
|
WAMR_BUILD_INTERP = 1
|
|
|
|
# Enable AOT by default.
|
|
WAMR_BUILD_AOT = 1
|
|
|
|
# Override the global heap usage
|
|
ifndef WAMR_BUILD_GLOBAL_HEAP_POOL
|
|
WAMR_BUILD_GLOBAL_HEAP_POOL=1
|
|
endif
|
|
GLOBAL_DEFINES += WASM_ENABLE_GLOBAL_HEAP_POOL=${WAMR_BUILD_GLOBAL_HEAP_POOL}
|
|
|
|
# Override the global heap size for small devices
|
|
ifndef WAMR_BUILD_GLOBAL_HEAP_SIZE
|
|
WAMR_BUILD_GLOBAL_HEAP_SIZE = 262144 # 256 kB
|
|
endif
|
|
GLOBAL_DEFINES += WASM_GLOBAL_HEAP_SIZE=${WAMR_BUILD_GLOBAL_HEAP_SIZE}
|
|
|
|
ifeq (${WAMR_BUILD_INTERP}, 1)
|
|
GLOBAL_DEFINES += WASM_ENABLE_INTERP=1
|
|
endif
|
|
|
|
ifeq (${WAMR_BUILD_AOT}, 1)
|
|
GLOBAL_DEFINES += WASM_ENABLE_AOT=1
|
|
endif
|
|
|
|
GLOBAL_DEFINES += WASM_ENABLE_LIBC_BUILTIN=1
|
|
|
|
GLOBAL_INCLUDES += ${CORE_ROOT} \
|
|
${IWASM_ROOT}/include \
|
|
${IWASM_ROOT}/common \
|
|
${SHARED_ROOT}/include \
|
|
${SHARED_ROOT}/platform/include \
|
|
${SHARED_ROOT}/utils \
|
|
${SHARED_ROOT}/mem-alloc \
|
|
${SHARED_ROOT}/platform/alios
|
|
|
|
ifeq (${WAMR_BUILD_INTERP}, 1)
|
|
GLOBAL_INCLUDES += ${IWASM_ROOT}/interpreter
|
|
endif
|
|
|
|
ifeq (${WAMR_BUILD_AOT}, 1)
|
|
GLOBAL_INCLUDES += ${IWASM_ROOT}/aot
|
|
endif
|
|
|
|
$(NAME)_SOURCES := ${SHARED_ROOT}/platform/alios/alios_platform.c \
|
|
${SHARED_ROOT}/platform/alios/alios_thread.c \
|
|
${SHARED_ROOT}/platform/alios/alios_time.c \
|
|
${SHARED_ROOT}/platform/common/math/math.c \
|
|
${SHARED_ROOT}/mem-alloc/mem_alloc.c \
|
|
${SHARED_ROOT}/mem-alloc/ems/ems_kfc.c \
|
|
${SHARED_ROOT}/mem-alloc/ems/ems_alloc.c \
|
|
${SHARED_ROOT}/mem-alloc/ems/ems_hmu.c \
|
|
${SHARED_ROOT}/utils/bh_assert.c \
|
|
${SHARED_ROOT}/utils/bh_bitmap.c \
|
|
${SHARED_ROOT}/utils/bh_common.c \
|
|
${SHARED_ROOT}/utils/bh_hashmap.c \
|
|
${SHARED_ROOT}/utils/bh_list.c \
|
|
${SHARED_ROOT}/utils/bh_log.c \
|
|
${SHARED_ROOT}/utils/bh_queue.c \
|
|
${SHARED_ROOT}/utils/bh_vector.c \
|
|
${SHARED_ROOT}/utils/runtime_timer.c \
|
|
${IWASM_ROOT}/libraries/libc-builtin/libc_builtin_wrapper.c \
|
|
${IWASM_ROOT}/common/wasm_application.c \
|
|
${IWASM_ROOT}/common/wasm_runtime_common.c \
|
|
${IWASM_ROOT}/common/wasm_native.c \
|
|
${IWASM_ROOT}/common/wasm_exec_env.c \
|
|
${IWASM_ROOT}/common/wasm_memory.c \
|
|
${IWASM_ROOT}/common/wasm_c_api.c \
|
|
${IWASM_ROOT}/common/arch/${INVOKE_NATIVE} \
|
|
src/main.c
|
|
|
|
ifeq (${WAMR_BUILD_INTERP}, 1)
|
|
$(NAME)_SOURCES += ${IWASM_ROOT}/interpreter/wasm_interp_classic.c \
|
|
${IWASM_ROOT}/interpreter/wasm_loader.c \
|
|
${IWASM_ROOT}/interpreter/wasm_runtime.c
|
|
endif
|
|
|
|
ifeq (${WAMR_BUILD_AOT}, 1)
|
|
$(NAME)_SOURCES += ${IWASM_ROOT}/aot/aot_loader.c \
|
|
${IWASM_ROOT}/aot/arch/${AOT_RELOC} \
|
|
${IWASM_ROOT}/aot/aot_runtime.c \
|
|
${IWASM_ROOT}/aot/aot_intrinsic.c
|
|
endif
|
|
|