From 6cb2ea49353fd1c1b0acfde387955b644cf0c712 Mon Sep 17 00:00:00 2001 From: Enrico Loparco Date: Mon, 11 Dec 2023 03:10:26 +0100 Subject: [PATCH] fix command-reactor: Look for _initialize only if _start not found (#2891) A wasm module can be either a command or a reactor, so it can export either `_start` or `_initialize`. Currently, if a command module is run, `iwasm` still looks for `_initialize`, resulting in the warning: `can not find an export 0 named _initialize in the module`. Change to look for `_initialize` only if `_start` not found to resolve the issue. --- core/iwasm/interpreter/wasm_loader.c | 30 ++++++++++++++++------------ 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/core/iwasm/interpreter/wasm_loader.c b/core/iwasm/interpreter/wasm_loader.c index 2a06f42e36..19a8ad8a4d 100644 --- a/core/iwasm/interpreter/wasm_loader.c +++ b/core/iwasm/interpreter/wasm_loader.c @@ -3994,19 +3994,23 @@ check_wasi_abi_compatibility(const WASMModule *module, return false; } } - - /* (func (export "_initialize") (...) */ - initialize = wasm_loader_find_export( - module, "", "_initialize", EXPORT_KIND_FUNC, error_buf, error_buf_size); - if (initialize) { - WASMType *func_type = - module->functions[initialize->index - module->import_function_count] - ->func_type; - if (func_type->param_count || func_type->result_count) { - set_error_buf( - error_buf, error_buf_size, - "the signature of builtin _initialize function is wrong"); - return false; + else { + /* (func (export "_initialize") (...) */ + initialize = + wasm_loader_find_export(module, "", "_initialize", EXPORT_KIND_FUNC, + error_buf, error_buf_size); + if (initialize) { + WASMType *func_type = + module + ->functions[initialize->index + - module->import_function_count] + ->func_type; + if (func_type->param_count || func_type->result_count) { + set_error_buf( + error_buf, error_buf_size, + "the signature of builtin _initialize function is wrong"); + return false; + } } }