mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-03-11 16:35:33 +00:00
Support custom stack guard size (#1368)
Add a new option WAMR_BUILD_STACK_GUARD_SIZE to set the custom stack guard size. For most RTOS systems, we use the native stack base address as the check boundary which may be not safe as POSIX based systems (like Linux).
This commit is contained in:
parent
e23acfab36
commit
88cf1e36c1
|
@ -262,3 +262,7 @@ if (WAMR_BUILD_LOAD_CUSTOM_SECTION EQUAL 1)
|
|||
add_definitions (-DWASM_ENABLE_LOAD_CUSTOM_SECTION=1)
|
||||
message (" Load custom section enabled")
|
||||
endif ()
|
||||
if (WAMR_BUILD_STACK_GUARD_SIZE GREATER 0)
|
||||
add_definitions (-DWASM_STACK_GUARD_SIZE=${WAMR_BUILD_STACK_GUARD_SIZE})
|
||||
message (" Custom stack guard size: " ${WAMR_BUILD_STACK_GUARD_SIZE})
|
||||
endif ()
|
||||
|
|
|
@ -343,12 +343,12 @@
|
|||
|
||||
/* Reserved bytes to the native thread stack boundary, throw native
|
||||
stack overflow exception if the guard boudary is reached */
|
||||
#ifndef RESERVED_BYTES_TO_NATIVE_STACK_BOUNDARY
|
||||
#ifndef WASM_STACK_GUARD_SIZE
|
||||
#if WASM_ENABLE_UVWASI != 0
|
||||
/* UVWASI requires larger native stack */
|
||||
#define RESERVED_BYTES_TO_NATIVE_STACK_BOUNDARY (4096 * 6)
|
||||
#define WASM_STACK_GUARD_SIZE (4096 * 6)
|
||||
#else
|
||||
#define RESERVED_BYTES_TO_NATIVE_STACK_BOUNDARY (1024)
|
||||
#define WASM_STACK_GUARD_SIZE (1024)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
|
|
@ -189,9 +189,10 @@ wasm_exec_env_set_module_inst(WASMExecEnv *exec_env,
|
|||
void
|
||||
wasm_exec_env_set_thread_info(WASMExecEnv *exec_env)
|
||||
{
|
||||
uint8 *stack_boundary = os_thread_get_stack_boundary();
|
||||
exec_env->handle = os_self_thread();
|
||||
exec_env->native_stack_boundary = os_thread_get_stack_boundary()
|
||||
+ RESERVED_BYTES_TO_NATIVE_STACK_BOUNDARY;
|
||||
exec_env->native_stack_boundary =
|
||||
stack_boundary ? stack_boundary + WASM_STACK_GUARD_SIZE : NULL;
|
||||
}
|
||||
|
||||
#if WASM_ENABLE_THREAD_MGR != 0
|
||||
|
|
|
@ -158,6 +158,10 @@ Currently we only profile the memory consumption of module, module_instance and
|
|||
|
||||
> For AoT file, must use `--emit-custom-sections` to specify which sections need to be emitted into AoT file, otherwise all custom sections (except custom name section) will be ignored.
|
||||
|
||||
### **Stack guard size**
|
||||
- **WAMR_BUILD_STACK_GUARD_SIZE**=n, default to N/A if not set.
|
||||
> Note: By default, the stack guard size is 1K (1024) or 24K (if uvwasi enabled).
|
||||
|
||||
**Combination of configurations:**
|
||||
|
||||
We can combine the configurations. For example, if we want to disable interpreter, enable AOT and WASI, we can run command:
|
||||
|
|
|
@ -147,6 +147,8 @@ CSRCS += wasm_loader.c
|
|||
endif
|
||||
endif
|
||||
|
||||
CFLAGS += -DWASM_STACK_GUARD_SIZE=CONFIG_INTERPRETERS_WAMR_STACK_GUARD_SIZE
|
||||
|
||||
ifeq ($(CONFIG_INTERPRETERS_WAMR_SHARED_MEMORY),y)
|
||||
CFLAGS += -DWASM_ENABLE_SHARED_MEMORY=1
|
||||
CSRCS += wasm_shared_memory.c
|
||||
|
|
Loading…
Reference in New Issue
Block a user