From f3204694c0470a8d55283d3b437da8e0b5d39bdd Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Thu, 4 Sep 2025 11:33:28 +0900 Subject: [PATCH 1/8] track if WASIArguments is configured by user i plan to use this to decide which wasi arguments (the one from module or the one from InstantiationArgs2) to use. --- core/iwasm/common/wasm_runtime_common.c | 3 +++ core/iwasm/interpreter/wasm.h | 1 + 2 files changed, 4 insertions(+) diff --git a/core/iwasm/common/wasm_runtime_common.c b/core/iwasm/common/wasm_runtime_common.c index e6bde73637..0f68dc2aef 100644 --- a/core/iwasm/common/wasm_runtime_common.c +++ b/core/iwasm/common/wasm_runtime_common.c @@ -3494,6 +3494,7 @@ wasm_runtime_set_wasi_args_ex(WASMModuleCommon *module, const char *dir_list[], wasi_args->stdio[0] = (os_raw_file_handle)stdinfd; wasi_args->stdio[1] = (os_raw_file_handle)stdoutfd; wasi_args->stdio[2] = (os_raw_file_handle)stderrfd; + wasi_args->set_by_user = true; #if WASM_ENABLE_MULTI_MODULE != 0 #if WASM_ENABLE_INTERP != 0 @@ -3524,6 +3525,7 @@ wasm_runtime_set_wasi_addr_pool(wasm_module_t module, const char *addr_pool[], if (wasi_args) { wasi_args->addr_pool = addr_pool; wasi_args->addr_count = addr_pool_size; + wasi_args->set_by_user = true; } } @@ -3537,6 +3539,7 @@ wasm_runtime_set_wasi_ns_lookup_pool(wasm_module_t module, if (wasi_args) { wasi_args->ns_lookup_pool = ns_lookup_pool; wasi_args->ns_lookup_count = ns_lookup_pool_size; + wasi_args->set_by_user = true; } } diff --git a/core/iwasm/interpreter/wasm.h b/core/iwasm/interpreter/wasm.h index 87552455e6..c60349d10f 100644 --- a/core/iwasm/interpreter/wasm.h +++ b/core/iwasm/interpreter/wasm.h @@ -848,6 +848,7 @@ typedef struct WASIArguments { char **argv; uint32 argc; os_raw_file_handle stdio[3]; + bool set_by_user; } WASIArguments; #endif From dd530412afa33b6d75ebaac1a83dde96346c8911 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Thu, 4 Sep 2025 11:38:13 +0900 Subject: [PATCH 2/8] add WASIArguments to InstantiationArgs2 --- core/iwasm/common/wasm_runtime_common.c | 1 + core/iwasm/common/wasm_runtime_common.h | 1 + 2 files changed, 2 insertions(+) diff --git a/core/iwasm/common/wasm_runtime_common.c b/core/iwasm/common/wasm_runtime_common.c index 0f68dc2aef..6fb4080599 100644 --- a/core/iwasm/common/wasm_runtime_common.c +++ b/core/iwasm/common/wasm_runtime_common.c @@ -1648,6 +1648,7 @@ void wasm_runtime_instantiation_args_set_defaults(struct InstantiationArgs2 *args) { memset(args, 0, sizeof(*args)); + wasi_args_set_defaults(&args->wasi); } WASMModuleInstanceCommon * diff --git a/core/iwasm/common/wasm_runtime_common.h b/core/iwasm/common/wasm_runtime_common.h index 88af687447..9d01d25777 100644 --- a/core/iwasm/common/wasm_runtime_common.h +++ b/core/iwasm/common/wasm_runtime_common.h @@ -614,6 +614,7 @@ wasm_runtime_get_exec_env_tls(void); struct InstantiationArgs2 { InstantiationArgs v1; + WASIArguments wasi; }; void From a65e4785362358d3e206350b44f681758b13a818 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Thu, 4 Sep 2025 11:46:08 +0900 Subject: [PATCH 3/8] use wasi configuration from InstantiationArgs2 if any fallback to the via-module configuration for now. --- core/iwasm/aot/aot_runtime.c | 28 +++++++++++++++++---------- core/iwasm/interpreter/wasm_runtime.c | 28 +++++++++++++++++---------- 2 files changed, 36 insertions(+), 20 deletions(-) diff --git a/core/iwasm/aot/aot_runtime.c b/core/iwasm/aot/aot_runtime.c index 55c962f4a6..4368886a27 100644 --- a/core/iwasm/aot/aot_runtime.c +++ b/core/iwasm/aot/aot_runtime.c @@ -2081,17 +2081,25 @@ aot_instantiate(AOTModule *module, AOTModuleInstance *parent, #if WASM_ENABLE_LIBC_WASI != 0 if (!is_sub_inst) { + const WASIArguments *wasi_args = &args->wasi; + if (module->wasi_args.set_by_user) { + if (wasi_args->set_by_user) { + set_error_buf(error_buf, error_buf_size, + "WASI configuration was given via both of module " + "and InstantiationArgs2"); + goto fail; + } + wasi_args = &module->wasi_args; + } if (!wasm_runtime_init_wasi( - (WASMModuleInstanceCommon *)module_inst, - module->wasi_args.dir_list, module->wasi_args.dir_count, - module->wasi_args.map_dir_list, module->wasi_args.map_dir_count, - module->wasi_args.env, module->wasi_args.env_count, - module->wasi_args.addr_pool, module->wasi_args.addr_count, - module->wasi_args.ns_lookup_pool, - module->wasi_args.ns_lookup_count, module->wasi_args.argv, - module->wasi_args.argc, module->wasi_args.stdio[0], - module->wasi_args.stdio[1], module->wasi_args.stdio[2], - error_buf, error_buf_size)) + (WASMModuleInstanceCommon *)module_inst, wasi_args->dir_list, + wasi_args->dir_count, wasi_args->map_dir_list, + wasi_args->map_dir_count, wasi_args->env, wasi_args->env_count, + wasi_args->addr_pool, wasi_args->addr_count, + wasi_args->ns_lookup_pool, wasi_args->ns_lookup_count, + wasi_args->argv, wasi_args->argc, wasi_args->stdio[0], + wasi_args->stdio[1], wasi_args->stdio[2], error_buf, + error_buf_size)) goto fail; } #endif diff --git a/core/iwasm/interpreter/wasm_runtime.c b/core/iwasm/interpreter/wasm_runtime.c index e81bbf6e01..a59bc9257b 100644 --- a/core/iwasm/interpreter/wasm_runtime.c +++ b/core/iwasm/interpreter/wasm_runtime.c @@ -3276,17 +3276,25 @@ wasm_instantiate(WASMModule *module, WASMModuleInstance *parent, #if WASM_ENABLE_LIBC_WASI != 0 /* The sub-instance will get the wasi_ctx from main-instance */ if (!is_sub_inst) { + const WASIArguments *wasi_args = &args->wasi; + if (module->wasi_args.set_by_user) { + if (wasi_args->set_by_user) { + set_error_buf(error_buf, error_buf_size, + "WASI configuration was given via both of module " + "and InstantiationArgs2"); + goto fail; + } + wasi_args = &module->wasi_args; + } if (!wasm_runtime_init_wasi( - (WASMModuleInstanceCommon *)module_inst, - module->wasi_args.dir_list, module->wasi_args.dir_count, - module->wasi_args.map_dir_list, module->wasi_args.map_dir_count, - module->wasi_args.env, module->wasi_args.env_count, - module->wasi_args.addr_pool, module->wasi_args.addr_count, - module->wasi_args.ns_lookup_pool, - module->wasi_args.ns_lookup_count, module->wasi_args.argv, - module->wasi_args.argc, module->wasi_args.stdio[0], - module->wasi_args.stdio[1], module->wasi_args.stdio[2], - error_buf, error_buf_size)) { + (WASMModuleInstanceCommon *)module_inst, wasi_args->dir_list, + wasi_args->dir_count, wasi_args->map_dir_list, + wasi_args->map_dir_count, wasi_args->env, wasi_args->env_count, + wasi_args->addr_pool, wasi_args->addr_count, + wasi_args->ns_lookup_pool, wasi_args->ns_lookup_count, + wasi_args->argv, wasi_args->argc, wasi_args->stdio[0], + wasi_args->stdio[1], wasi_args->stdio[2], error_buf, + error_buf_size)) { goto fail; } } From 2ae7f69446f16a29e62553001a299990d32a1d09 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Thu, 4 Sep 2025 12:11:58 +0900 Subject: [PATCH 4/8] add a few api to configure wasi via InstantiationArgs2 --- core/iwasm/common/wasm_runtime_common.c | 76 +++++++++++++++++++++++++ core/iwasm/common/wasm_runtime_common.h | 37 ++++++++++++ core/iwasm/include/wasm_export.h | 32 +++++++++++ 3 files changed, 145 insertions(+) diff --git a/core/iwasm/common/wasm_runtime_common.c b/core/iwasm/common/wasm_runtime_common.c index 6fb4080599..23711127ef 100644 --- a/core/iwasm/common/wasm_runtime_common.c +++ b/core/iwasm/common/wasm_runtime_common.c @@ -1715,6 +1715,82 @@ wasm_runtime_instantiation_args_set_max_memory_pages( p->v1.max_memory_pages = v; } +void +wasm_runtime_instantiation_args_set_wasi_arg(struct InstantiationArgs2 *p, + char *argv[], int argc) +{ + WASIArguments *wasi_args = &p->wasi; + + wasi_args->argv = argv; + wasi_args->argc = (uint32)argc; + wasi_args->set_by_user = true; +} + +void +wasm_runtime_instantiation_args_set_wasi_env(struct InstantiationArgs2 *p, + const char *env[], + uint32 env_count) +{ + WASIArguments *wasi_args = &p->wasi; + + wasi_args->env = env; + wasi_args->env_count = env_count; + wasi_args->set_by_user = true; +} + +void +wasm_runtime_instantiation_args_set_wasi_dir(struct InstantiationArgs2 *p, + const char *dir_list[], + uint32 dir_count, + const char *map_dir_list[], + uint32 map_dir_count) +{ + WASIArguments *wasi_args = &p->wasi; + + wasi_args->dir_list = dir_list; + wasi_args->dir_count = dir_count; + wasi_args->map_dir_list = map_dir_list; + wasi_args->map_dir_count = map_dir_count; + wasi_args->set_by_user = true; +} + +void +wasm_runtime_instantiation_args_set_wasi_stdio(struct InstantiationArgs2 *p, + int64 stdinfd, int64 stdoutfd, + int64 stderrfd) +{ + WASIArguments *wasi_args = &p->wasi; + + wasi_args->stdio[0] = (os_raw_file_handle)stdinfd; + wasi_args->stdio[1] = (os_raw_file_handle)stdoutfd; + wasi_args->stdio[2] = (os_raw_file_handle)stderrfd; + wasi_args->set_by_user = true; +} + +void +wasm_runtime_instantiation_args_set_wasi_addr_pool(struct InstantiationArgs2 *p, + const char *addr_pool[], + uint32 addr_pool_size) +{ + WASIArguments *wasi_args = &p->wasi; + + wasi_args->addr_pool = addr_pool; + wasi_args->addr_count = addr_pool_size; + wasi_args->set_by_user = true; +} + +void +wasm_runtime_instantiation_args_set_wasi_ns_lookup_pool( + struct InstantiationArgs2 *p, const char *ns_lookup_pool[], + uint32 ns_lookup_pool_size) +{ + WASIArguments *wasi_args = &p->wasi; + + wasi_args->ns_lookup_pool = ns_lookup_pool; + wasi_args->ns_lookup_count = ns_lookup_pool_size; + wasi_args->set_by_user = true; +} + WASMModuleInstanceCommon * wasm_runtime_instantiate_ex2(WASMModuleCommon *module, const struct InstantiationArgs2 *args, diff --git a/core/iwasm/common/wasm_runtime_common.h b/core/iwasm/common/wasm_runtime_common.h index 9d01d25777..adfcfe2b82 100644 --- a/core/iwasm/common/wasm_runtime_common.h +++ b/core/iwasm/common/wasm_runtime_common.h @@ -736,6 +736,43 @@ void wasm_runtime_instantiation_args_set_max_memory_pages( struct InstantiationArgs2 *p, uint32 v); +/* See wasm_export.h for description */ +WASM_RUNTIME_API_EXTERN void +wasm_runtime_instantiation_args_set_wasi_arg(struct InstantiationArgs2 *p, + char *argv[], int argc); + +/* See wasm_export.h for description */ +WASM_RUNTIME_API_EXTERN void +wasm_runtime_instantiation_args_set_wasi_env(struct InstantiationArgs2 *p, + const char *env[], + uint32 env_count); + +/* See wasm_export.h for description */ +WASM_RUNTIME_API_EXTERN void +wasm_runtime_instantiation_args_set_wasi_dir(struct InstantiationArgs2 *p, + const char *dir_list[], + uint32 dir_count, + const char *map_dir_list[], + uint32 map_dir_count); + +/* See wasm_export.h for description */ +WASM_RUNTIME_API_EXTERN void +wasm_runtime_instantiation_args_set_wasi_stdio(struct InstantiationArgs2 *p, + int64 stdinfd, int64 stdoutfd, + int64 stderrfd); + +/* See wasm_export.h for description */ +WASM_RUNTIME_API_EXTERN void +wasm_runtime_instantiation_args_set_wasi_addr_pool(struct InstantiationArgs2 *p, + const char *addr_pool[], + uint32 addr_pool_size); + +/* See wasm_export.h for description */ +WASM_RUNTIME_API_EXTERN void +wasm_runtime_instantiation_args_set_wasi_ns_lookup_pool( + struct InstantiationArgs2 *p, const char *ns_lookup_pool[], + uint32 ns_lookup_pool_size); + /* See wasm_export.h for description */ WASM_RUNTIME_API_EXTERN WASMModuleInstanceCommon * wasm_runtime_instantiate_ex2(WASMModuleCommon *module, diff --git a/core/iwasm/include/wasm_export.h b/core/iwasm/include/wasm_export.h index fc46825c80..44a45dedfc 100644 --- a/core/iwasm/include/wasm_export.h +++ b/core/iwasm/include/wasm_export.h @@ -764,6 +764,38 @@ WASM_RUNTIME_API_EXTERN void wasm_runtime_instantiation_args_set_max_memory_pages( struct InstantiationArgs2 *p, uint32_t v); +WASM_RUNTIME_API_EXTERN void +wasm_runtime_instantiation_args_set_wasi_arg(struct InstantiationArgs2 *p, + char *argv[], int argc); + +WASM_RUNTIME_API_EXTERN void +wasm_runtime_instantiation_args_set_wasi_env(struct InstantiationArgs2 *p, + const char *env[], + uint32_t env_count); + +WASM_RUNTIME_API_EXTERN void +wasm_runtime_instantiation_args_set_wasi_dir(struct InstantiationArgs2 *p, + const char *dir_list[], + uint32_t dir_count, + const char *map_dir_list[], + uint32_t map_dir_count); + +WASM_RUNTIME_API_EXTERN void +wasm_runtime_instantiation_args_set_wasi_stdio(struct InstantiationArgs2 *p, + int64_t stdinfd, + int64_t stdoutfd, + int64_t stderrfd); + +WASM_RUNTIME_API_EXTERN void +wasm_runtime_instantiation_args_set_wasi_addr_pool(struct InstantiationArgs2 *p, + const char *addr_pool[], + uint32_t addr_pool_size); + +WASM_RUNTIME_API_EXTERN void +wasm_runtime_instantiation_args_set_wasi_ns_lookup_pool( + struct InstantiationArgs2 *p, const char *ns_lookup_pool[], + uint32_t ns_lookup_pool_size); + /** * Instantiate a WASM module, with specified instantiation arguments * From ca4417da0653b23343828c07c875c411591d0790 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Thu, 4 Sep 2025 12:13:28 +0900 Subject: [PATCH 5/8] configure wasi via InstantiationArgs2 for platforms using libc_wasi.c --- product-mini/platforms/common/libc_wasi.c | 16 ++++++++++++++++ product-mini/platforms/posix/main.c | 7 +++---- product-mini/platforms/windows/main.c | 7 +++---- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/product-mini/platforms/common/libc_wasi.c b/product-mini/platforms/common/libc_wasi.c index eb2e8c27f3..c5e0d918c8 100644 --- a/product-mini/platforms/common/libc_wasi.c +++ b/product-mini/platforms/common/libc_wasi.c @@ -175,3 +175,19 @@ libc_wasi_init(wasm_module_t wasm_module, int argc, char **argv, wasm_runtime_set_wasi_ns_lookup_pool(wasm_module, ctx->ns_lookup_pool, ctx->ns_lookup_pool_size); } + +static void +libc_wasi_set_init_args(struct InstantiationArgs2 *args, int argc, char **argv, + libc_wasi_parse_context_t *ctx) +{ + wasm_runtime_instantiation_args_set_wasi_arg(args, argv, argc); + wasm_runtime_instantiation_args_set_wasi_env(args, ctx->env_list, + ctx->env_list_size); + wasm_runtime_instantiation_args_set_wasi_dir( + args, ctx->dir_list, ctx->dir_list_size, ctx->map_dir_list, + ctx->map_dir_list_size); + wasm_runtime_instantiation_args_set_wasi_addr_pool(args, ctx->addr_pool, + ctx->addr_pool_size); + wasm_runtime_instantiation_args_set_wasi_ns_lookup_pool( + args, ctx->ns_lookup_pool, ctx->ns_lookup_pool_size); +} diff --git a/product-mini/platforms/posix/main.c b/product-mini/platforms/posix/main.c index f013ec9d0b..2d7d3afeb8 100644 --- a/product-mini/platforms/posix/main.c +++ b/product-mini/platforms/posix/main.c @@ -962,10 +962,6 @@ main(int argc, char *argv[]) } #endif -#if WASM_ENABLE_LIBC_WASI != 0 - libc_wasi_init(wasm_module, argc, argv, &wasi_parse_ctx); -#endif - if (!wasm_runtime_instantiation_args_create(&inst_args)) { printf("failed to create instantiate args\n"); goto fail3; @@ -974,6 +970,9 @@ main(int argc, char *argv[]) stack_size); wasm_runtime_instantiation_args_set_host_managed_heap_size(inst_args, heap_size); +#if WASM_ENABLE_LIBC_WASI != 0 + libc_wasi_set_init_args(inst_args, argc, argv, &wasi_parse_ctx); +#endif /* instantiate the module */ wasm_module_inst = wasm_runtime_instantiate_ex2( diff --git a/product-mini/platforms/windows/main.c b/product-mini/platforms/windows/main.c index 4be3a76cbe..a19c50d064 100644 --- a/product-mini/platforms/windows/main.c +++ b/product-mini/platforms/windows/main.c @@ -598,10 +598,6 @@ main(int argc, char *argv[]) goto fail2; } -#if WASM_ENABLE_LIBC_WASI != 0 - libc_wasi_init(wasm_module, argc, argv, &wasi_parse_ctx); -#endif - if (!wasm_runtime_instantiation_args_create(&inst_args)) { printf("failed to create instantiate args\n"); goto fail3; @@ -610,6 +606,9 @@ main(int argc, char *argv[]) stack_size); wasm_runtime_instantiation_args_set_host_managed_heap_size(inst_args, heap_size); +#if WASM_ENABLE_LIBC_WASI != 0 + libc_wasi_set_init_args(inst_args, argc, argv, &wasi_parse_ctx); +#endif /* instantiate the module */ wasm_module_inst = wasm_runtime_instantiate_ex2( From 0b71045b80295b8e68faa2fbfb64a5c069f45ba0 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Thu, 4 Sep 2025 12:34:21 +0900 Subject: [PATCH 6/8] rt-thread: migrate to libc_wasi_set_init_args --- product-mini/platforms/rt-thread/iwasm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/product-mini/platforms/rt-thread/iwasm.c b/product-mini/platforms/rt-thread/iwasm.c index 39ddfaebb7..56905fbc60 100644 --- a/product-mini/platforms/rt-thread/iwasm.c +++ b/product-mini/platforms/rt-thread/iwasm.c @@ -380,7 +380,7 @@ iwasm(int argc, char **argv) wasm_runtime_instantiation_args_set_host_managed_heap_size(inst_args, heap_size); #if WASM_ENABLE_LIBC_WASI != 0 - libc_wasi_init(wasm_module, argc, argv, &wasi_parse_ctx); + libc_wasi_set_init_args(wasm_module, argc, argv, &wasi_parse_ctx); #endif rt_memset(error_buf, 0x00, sizeof(error_buf)); From 92164f8fc0d91e2cd921ce8bb2982a36379d5bdf Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Thu, 4 Sep 2025 12:34:50 +0900 Subject: [PATCH 7/8] common/libc_wasi.c: retire libc_wasi_init --- product-mini/platforms/common/libc_wasi.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/product-mini/platforms/common/libc_wasi.c b/product-mini/platforms/common/libc_wasi.c index c5e0d918c8..8e45d7329c 100644 --- a/product-mini/platforms/common/libc_wasi.c +++ b/product-mini/platforms/common/libc_wasi.c @@ -162,20 +162,6 @@ libc_wasi_parse(char *arg, libc_wasi_parse_context_t *ctx) return LIBC_WASI_PARSE_RESULT_OK; } -void -libc_wasi_init(wasm_module_t wasm_module, int argc, char **argv, - libc_wasi_parse_context_t *ctx) -{ - wasm_runtime_set_wasi_args(wasm_module, ctx->dir_list, ctx->dir_list_size, - ctx->map_dir_list, ctx->map_dir_list_size, - ctx->env_list, ctx->env_list_size, argv, argc); - - wasm_runtime_set_wasi_addr_pool(wasm_module, ctx->addr_pool, - ctx->addr_pool_size); - wasm_runtime_set_wasi_ns_lookup_pool(wasm_module, ctx->ns_lookup_pool, - ctx->ns_lookup_pool_size); -} - static void libc_wasi_set_init_args(struct InstantiationArgs2 *args, int argc, char **argv, libc_wasi_parse_context_t *ctx) From 32b560d0c59bbe9806044d6ac5e16550a8ff0bc1 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Takashi Date: Mon, 17 Nov 2025 14:58:44 +0900 Subject: [PATCH 8/8] fix build without wasi --- core/iwasm/common/wasm_runtime_common.c | 4 ++++ core/iwasm/common/wasm_runtime_common.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/core/iwasm/common/wasm_runtime_common.c b/core/iwasm/common/wasm_runtime_common.c index 23711127ef..259816e0b9 100644 --- a/core/iwasm/common/wasm_runtime_common.c +++ b/core/iwasm/common/wasm_runtime_common.c @@ -1648,7 +1648,9 @@ void wasm_runtime_instantiation_args_set_defaults(struct InstantiationArgs2 *args) { memset(args, 0, sizeof(*args)); +#if WASM_ENABLE_LIBC_WASI != 0 wasi_args_set_defaults(&args->wasi); +#endif } WASMModuleInstanceCommon * @@ -1715,6 +1717,7 @@ wasm_runtime_instantiation_args_set_max_memory_pages( p->v1.max_memory_pages = v; } +#if WASM_ENABLE_LIBC_WASI != 0 void wasm_runtime_instantiation_args_set_wasi_arg(struct InstantiationArgs2 *p, char *argv[], int argc) @@ -1790,6 +1793,7 @@ wasm_runtime_instantiation_args_set_wasi_ns_lookup_pool( wasi_args->ns_lookup_count = ns_lookup_pool_size; wasi_args->set_by_user = true; } +#endif /* WASM_ENABLE_LIBC_WASI != 0 */ WASMModuleInstanceCommon * wasm_runtime_instantiate_ex2(WASMModuleCommon *module, diff --git a/core/iwasm/common/wasm_runtime_common.h b/core/iwasm/common/wasm_runtime_common.h index adfcfe2b82..88f23485e8 100644 --- a/core/iwasm/common/wasm_runtime_common.h +++ b/core/iwasm/common/wasm_runtime_common.h @@ -614,7 +614,9 @@ wasm_runtime_get_exec_env_tls(void); struct InstantiationArgs2 { InstantiationArgs v1; +#if WASM_ENABLE_LIBC_WASI != 0 WASIArguments wasi; +#endif }; void