Merge branch main into dev/wasi-libc-windows
This commit is contained in:
@ -76,8 +76,7 @@ app_instance_main(wasm_module_inst_t module_inst)
|
||||
const char *exception;
|
||||
|
||||
wasm_application_execute_main(module_inst, app_argc, app_argv);
|
||||
if ((exception = wasm_runtime_get_exception(module_inst)))
|
||||
printf("%s\n", exception);
|
||||
exception = wasm_runtime_get_exception(module_inst);
|
||||
return exception;
|
||||
}
|
||||
|
||||
@ -185,20 +184,29 @@ handle_module_path(const char *module_path)
|
||||
|
||||
static char *module_search_path = ".";
|
||||
static bool
|
||||
module_reader_callback(const char *module_name, uint8 **p_buffer,
|
||||
uint32 *p_size)
|
||||
module_reader_callback(package_type_t module_type, const char *module_name,
|
||||
uint8 **p_buffer, uint32 *p_size)
|
||||
{
|
||||
const char *format = "%s/%s.wasm";
|
||||
uint32 sz = (uint32)(strlen(module_search_path) + strlen("/")
|
||||
+ strlen(module_name) + strlen(".wasm") + 1);
|
||||
char *file_format = NULL;
|
||||
#if WASM_ENABLE_INTERP != 0
|
||||
if (module_type == Wasm_Module_Bytecode)
|
||||
file_format = ".wasm";
|
||||
#endif
|
||||
#if WASM_ENABLE_AOT != 0
|
||||
if (module_type == Wasm_Module_AoT)
|
||||
file_format = ".aot";
|
||||
#endif
|
||||
bh_assert(file_format);
|
||||
const char *format = "%s/%s%s";
|
||||
int sz = strlen(module_search_path) + strlen("/") + strlen(module_name)
|
||||
+ strlen(file_format) + 1;
|
||||
char *wasm_file_name = BH_MALLOC(sz);
|
||||
if (!wasm_file_name) {
|
||||
return false;
|
||||
}
|
||||
|
||||
snprintf(wasm_file_name, sz, format, module_search_path, module_name);
|
||||
|
||||
*p_buffer = (uint8 *)bh_read_file_to_buffer(wasm_file_name, p_size);
|
||||
snprintf(wasm_file_name, sz, format, module_search_path, module_name,
|
||||
file_format);
|
||||
*p_buffer = (uint8_t *)bh_read_file_to_buffer(wasm_file_name, p_size);
|
||||
|
||||
wasm_runtime_free(wasm_file_name);
|
||||
return *p_buffer != NULL;
|
||||
@ -499,17 +507,20 @@ main(int argc, char *argv[])
|
||||
#endif
|
||||
|
||||
ret = 0;
|
||||
const char *exception = NULL;
|
||||
if (is_repl_mode) {
|
||||
app_instance_repl(wasm_module_inst);
|
||||
}
|
||||
else if (func_name) {
|
||||
if (app_instance_func(wasm_module_inst, func_name)) {
|
||||
exception = app_instance_func(wasm_module_inst, func_name);
|
||||
if (exception) {
|
||||
/* got an exception */
|
||||
ret = 1;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (app_instance_main(wasm_module_inst)) {
|
||||
exception = app_instance_main(wasm_module_inst);
|
||||
if (exception) {
|
||||
/* got an exception */
|
||||
ret = 1;
|
||||
}
|
||||
@ -517,15 +528,14 @@ main(int argc, char *argv[])
|
||||
|
||||
#if WASM_ENABLE_LIBC_WASI != 0
|
||||
if (ret == 0) {
|
||||
/* wait for threads to finish and propagate wasi exit code. */
|
||||
/* propagate wasi exit code. */
|
||||
ret = wasm_runtime_get_wasi_exit_code(wasm_module_inst);
|
||||
if (wasm_runtime_get_exception(wasm_module_inst)) {
|
||||
/* got an exception in spawned thread */
|
||||
ret = 1;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (exception)
|
||||
printf("%s\n", exception);
|
||||
|
||||
#if WASM_ENABLE_DEBUG_INTERP != 0
|
||||
fail4:
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user