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.
This commit is contained in:
Enrico Loparco 2023-12-11 03:10:26 +01:00 committed by GitHub
parent c6848e45a1
commit 6cb2ea4935
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3994,13 +3994,16 @@ check_wasi_abi_compatibility(const WASMModule *module,
return false;
}
}
else {
/* (func (export "_initialize") (...) */
initialize = wasm_loader_find_export(
module, "", "_initialize", EXPORT_KIND_FUNC, error_buf, error_buf_size);
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]
module
->functions[initialize->index
- module->import_function_count]
->func_type;
if (func_type->param_count || func_type->result_count) {
set_error_buf(
@ -4009,6 +4012,7 @@ check_wasi_abi_compatibility(const WASMModule *module,
return false;
}
}
}
/* filter out non-wasi compatiable modules */
if (!module->import_wasi_api && !start && !initialize) {