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,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;
}
}
}