mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-02-06 06:55:07 +00:00
Allow missing imports in wasm loader and report error in wasm instantiation instead (#3539)
The wasm loader is failing when multi-module support is on and the dependent modules are not found; this enforces the AOT compiler integrations to prepare dependent modules while it isn't necessary. This PR allows allows missing imports in wasm loader and report error in wasm instantiation instead, which enables the integrated AOT compiler to work as if the multi-module support isn't turned on.
This commit is contained in:
parent
54b87cb097
commit
f7d2826772
|
@ -233,6 +233,10 @@ if (WAMR_BUILD_SPEC_TEST EQUAL 1)
|
|||
add_definitions (-DWASM_ENABLE_SPEC_TEST=1)
|
||||
message (" spec test compatible mode is on")
|
||||
endif ()
|
||||
if (WAMR_BUILD_WASI_TEST EQUAL 1)
|
||||
add_definitions (-DWASM_ENABLE_WASI_TEST=1)
|
||||
message (" wasi test compatible mode is on")
|
||||
endif ()
|
||||
if (NOT DEFINED WAMR_BUILD_BULK_MEMORY)
|
||||
# Enable bulk memory by default
|
||||
set (WAMR_BUILD_BULK_MEMORY 1)
|
||||
|
|
|
@ -363,6 +363,10 @@
|
|||
#define WASM_ENABLE_SPEC_TEST 0
|
||||
#endif
|
||||
|
||||
#ifndef WASM_ENABLE_WASI_TEST
|
||||
#define WASM_ENABLE_WASI_TEST 0
|
||||
#endif
|
||||
|
||||
/* Global heap pool size in bytes */
|
||||
#ifndef WASM_GLOBAL_HEAP_SIZE
|
||||
#define WASM_GLOBAL_HEAP_SIZE (10 * 1024 * 1024)
|
||||
|
|
|
@ -1267,6 +1267,9 @@ wasm_runtime_is_built_in_module(const char *module_name)
|
|||
|| !strcmp("wasi_snapshot_preview1", module_name)
|
||||
#if WASM_ENABLE_SPEC_TEST != 0
|
||||
|| !strcmp("spectest", module_name)
|
||||
#endif
|
||||
#if WASM_ENABLE_WASI_TEST != 0
|
||||
|| !strcmp("foo", module_name)
|
||||
#endif
|
||||
|| !strcmp("", module_name));
|
||||
}
|
||||
|
|
|
@ -2533,6 +2533,7 @@ load_function_import(const uint8 **p_buf, const uint8 *buf_end,
|
|||
WASMFunction *linked_func = NULL;
|
||||
#if WASM_ENABLE_MULTI_MODULE != 0
|
||||
WASMModule *sub_module = NULL;
|
||||
bool is_built_in_module = false;
|
||||
#endif
|
||||
const char *linked_signature = NULL;
|
||||
void *linked_attachment = NULL;
|
||||
|
@ -2568,17 +2569,16 @@ load_function_import(const uint8 **p_buf, const uint8 *buf_end,
|
|||
}
|
||||
#if WASM_ENABLE_MULTI_MODULE != 0
|
||||
else {
|
||||
if (!wasm_runtime_is_built_in_module(sub_module_name)) {
|
||||
if (!(is_built_in_module =
|
||||
wasm_runtime_is_built_in_module(sub_module_name))) {
|
||||
sub_module = (WASMModule *)wasm_runtime_load_depended_module(
|
||||
(WASMModuleCommon *)parent_module, sub_module_name, error_buf,
|
||||
error_buf_size);
|
||||
if (!sub_module) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
linked_func = wasm_loader_resolve_function(
|
||||
sub_module_name, function_name, declare_func_type, error_buf,
|
||||
error_buf_size);
|
||||
if (is_built_in_module || sub_module)
|
||||
linked_func = wasm_loader_resolve_function(
|
||||
sub_module_name, function_name, declare_func_type, error_buf,
|
||||
error_buf_size);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -2691,24 +2691,20 @@ load_table_import(const uint8 **p_buf, const uint8 *buf_end,
|
|||
sub_module = (WASMModule *)wasm_runtime_load_depended_module(
|
||||
(WASMModuleCommon *)parent_module, sub_module_name, error_buf,
|
||||
error_buf_size);
|
||||
if (!sub_module) {
|
||||
return false;
|
||||
if (sub_module) {
|
||||
linked_table = wasm_loader_resolve_table(
|
||||
sub_module_name, table_name, declare_init_size,
|
||||
declare_max_size, error_buf, error_buf_size);
|
||||
if (linked_table) {
|
||||
/* reset with linked table limit */
|
||||
declare_elem_type = linked_table->table_type.elem_type;
|
||||
declare_init_size = linked_table->table_type.init_size;
|
||||
declare_max_size = linked_table->table_type.max_size;
|
||||
declare_max_size_flag = linked_table->table_type.flags;
|
||||
table->import_table_linked = linked_table;
|
||||
table->import_module = sub_module;
|
||||
}
|
||||
}
|
||||
|
||||
linked_table = wasm_loader_resolve_table(
|
||||
sub_module_name, table_name, declare_init_size, declare_max_size,
|
||||
error_buf, error_buf_size);
|
||||
if (!linked_table) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* reset with linked table limit */
|
||||
declare_elem_type = linked_table->table_type.elem_type;
|
||||
declare_init_size = linked_table->table_type.init_size;
|
||||
declare_max_size = linked_table->table_type.max_size;
|
||||
declare_max_size_flag = linked_table->table_type.flags;
|
||||
table->import_table_linked = linked_table;
|
||||
table->import_module = sub_module;
|
||||
}
|
||||
#endif /* WASM_ENABLE_MULTI_MODULE != 0 */
|
||||
|
||||
|
@ -2870,31 +2866,19 @@ load_memory_import(const uint8 **p_buf, const uint8 *buf_end,
|
|||
sub_module = (WASMModule *)wasm_runtime_load_depended_module(
|
||||
(WASMModuleCommon *)parent_module, sub_module_name, error_buf,
|
||||
error_buf_size);
|
||||
if (!sub_module) {
|
||||
#if WASM_ENABLE_LIB_WASI_THREADS != 0
|
||||
/* Avoid memory import failure when wasi-threads is enabled
|
||||
and the memory is shared */
|
||||
if (!(mem_flag & SHARED_MEMORY_FLAG))
|
||||
return false;
|
||||
#else
|
||||
return false;
|
||||
#endif /* WASM_ENABLE_LIB_WASI_THREADS */
|
||||
}
|
||||
else {
|
||||
if (sub_module) {
|
||||
linked_memory = wasm_loader_resolve_memory(
|
||||
sub_module_name, memory_name, declare_init_page_count,
|
||||
declare_max_page_count, error_buf, error_buf_size);
|
||||
if (!linked_memory) {
|
||||
return false;
|
||||
if (linked_memory) {
|
||||
/**
|
||||
* reset with linked memory limit
|
||||
*/
|
||||
memory->import_module = sub_module;
|
||||
memory->import_memory_linked = linked_memory;
|
||||
declare_init_page_count = linked_memory->init_page_count;
|
||||
declare_max_page_count = linked_memory->max_page_count;
|
||||
}
|
||||
|
||||
/**
|
||||
* reset with linked memory limit
|
||||
*/
|
||||
memory->import_module = sub_module;
|
||||
memory->import_memory_linked = linked_memory;
|
||||
declare_init_page_count = linked_memory->init_page_count;
|
||||
declare_max_page_count = linked_memory->max_page_count;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -2920,6 +2904,29 @@ load_memory_import(const uint8 **p_buf, const uint8 *buf_end,
|
|||
declare_init_page_count = spectest_memory_init_page;
|
||||
declare_max_page_count = spectest_memory_max_page;
|
||||
}
|
||||
#if WASM_ENABLE_WASI_TEST != 0
|
||||
/* a case in wasi-testsuite which imports ("foo" "bar") */
|
||||
else if (!strcmp("foo", sub_module_name)) {
|
||||
uint32 spectest_memory_init_page = 1;
|
||||
uint32 spectest_memory_max_page = 1;
|
||||
|
||||
if (strcmp("bar", memory_name)) {
|
||||
set_error_buf(error_buf, error_buf_size,
|
||||
"incompatible import type or unknown import");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (declare_init_page_count > spectest_memory_init_page
|
||||
|| declare_max_page_count < spectest_memory_max_page) {
|
||||
set_error_buf(error_buf, error_buf_size,
|
||||
"incompatible import type");
|
||||
return false;
|
||||
}
|
||||
|
||||
declare_init_page_count = spectest_memory_init_page;
|
||||
declare_max_page_count = spectest_memory_max_page;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* now we believe all declaration are ok */
|
||||
memory->mem_type.flags = mem_flag;
|
||||
|
@ -2983,20 +2990,19 @@ load_tag_import(const uint8 **p_buf, const uint8 *buf_end,
|
|||
sub_module = (WASMModule *)wasm_runtime_load_depended_module(
|
||||
(WASMModuleCommon *)parent_module, sub_module_name, error_buf,
|
||||
error_buf_size);
|
||||
if (!sub_module) {
|
||||
return false;
|
||||
}
|
||||
/* wasm_loader_resolve_tag checks, that the imported tag
|
||||
* and the declared tag have the same type
|
||||
*/
|
||||
uint32 linked_tag_index = 0;
|
||||
WASMTag *linked_tag = wasm_loader_resolve_tag(
|
||||
sub_module_name, tag_name, declare_tag_type,
|
||||
&linked_tag_index /* out */, error_buf, error_buf_size);
|
||||
if (linked_tag) {
|
||||
tag->import_module = sub_module;
|
||||
tag->import_tag_linked = linked_tag;
|
||||
tag->import_tag_index_linked = linked_tag_index;
|
||||
if (sub_module) {
|
||||
/* wasm_loader_resolve_tag checks, that the imported tag
|
||||
* and the declared tag have the same type
|
||||
*/
|
||||
uint32 linked_tag_index = 0;
|
||||
WASMTag *linked_tag = wasm_loader_resolve_tag(
|
||||
sub_module_name, tag_name, declare_tag_type,
|
||||
&linked_tag_index /* out */, error_buf, error_buf_size);
|
||||
if (linked_tag) {
|
||||
tag->import_module = sub_module;
|
||||
tag->import_tag_linked = linked_tag;
|
||||
tag->import_tag_index_linked = linked_tag_index;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -3095,18 +3101,16 @@ load_global_import(const uint8 **p_buf, const uint8 *buf_end,
|
|||
sub_module = (WASMModule *)wasm_runtime_load_depended_module(
|
||||
(WASMModuleCommon *)parent_module, sub_module_name, error_buf,
|
||||
error_buf_size);
|
||||
if (!sub_module) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* check sub modules */
|
||||
linked_global = wasm_loader_resolve_global(
|
||||
sub_module_name, global_name, declare_type, declare_mutable,
|
||||
error_buf, error_buf_size);
|
||||
if (linked_global) {
|
||||
global->import_module = sub_module;
|
||||
global->import_global_linked = linked_global;
|
||||
global->is_linked = true;
|
||||
if (sub_module) {
|
||||
/* check sub modules */
|
||||
linked_global = wasm_loader_resolve_global(
|
||||
sub_module_name, global_name, declare_type, declare_mutable,
|
||||
error_buf, error_buf_size);
|
||||
if (linked_global) {
|
||||
global->import_module = sub_module;
|
||||
global->import_global_linked = linked_global;
|
||||
global->is_linked = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1710,36 +1710,73 @@ check_linked_symbol(WASMModuleInstance *module_inst, char *error_buf,
|
|||
&& !func->import_func_linked
|
||||
#endif
|
||||
) {
|
||||
#if WASM_ENABLE_WAMR_COMPILER == 0
|
||||
LOG_WARNING("warning: failed to link import function (%s, %s)",
|
||||
func->module_name, func->field_name);
|
||||
/* will throw exception only if calling */
|
||||
#else
|
||||
/* do nothing to avoid confused message */
|
||||
#endif /* WASM_ENABLE_WAMR_COMPILER == 0 */
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < module->import_global_count; i++) {
|
||||
WASMGlobalImport *global = &((module->import_globals + i)->u.global);
|
||||
|
||||
if (!global->is_linked) {
|
||||
#if WASM_ENABLE_SPEC_TEST != 0
|
||||
set_error_buf(error_buf, error_buf_size,
|
||||
"unknown import or incompatible import type");
|
||||
return false;
|
||||
#else
|
||||
#if WASM_ENABLE_WAMR_COMPILER == 0
|
||||
set_error_buf_v(error_buf, error_buf_size,
|
||||
"failed to link import global (%s, %s)",
|
||||
global->module_name, global->field_name);
|
||||
return false;
|
||||
#else
|
||||
/* do nothing to avoid confused message */
|
||||
#endif /* WASM_ENABLE_WAMR_COMPILER == 0 */
|
||||
#endif /* WASM_ENABLE_SPEC_TEST != 0 */
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < module->import_table_count; i++) {
|
||||
WASMTableImport *table = &((module->import_tables + i)->u.table);
|
||||
|
||||
if (!wasm_runtime_is_built_in_module(table->module_name)
|
||||
#if WASM_ENABLE_MULTI_MODULE != 0
|
||||
&& !table->import_table_linked
|
||||
#endif
|
||||
) {
|
||||
set_error_buf_v(error_buf, error_buf_size,
|
||||
"failed to link import table (%s, %s)",
|
||||
table->module_name, table->field_name);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < module->import_memory_count; i++) {
|
||||
WASMMemoryImport *memory = &((module->import_memories + i)->u.memory);
|
||||
|
||||
if (!wasm_runtime_is_built_in_module(memory->module_name)
|
||||
#if WASM_ENABLE_MULTI_MODULE != 0
|
||||
&& !memory->import_memory_linked
|
||||
#endif
|
||||
) {
|
||||
set_error_buf_v(error_buf, error_buf_size,
|
||||
"failed to link import memory (%s, %s)",
|
||||
memory->module_name, memory->field_name);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
#if WASM_ENABLE_MULTI_MODULE != 0
|
||||
#if WASM_ENABLE_TAGS != 0
|
||||
for (i = 0; i < module->import_tag_count; i++) {
|
||||
WASMTagImport *tag = &((module->import_tags + i)->u.tag);
|
||||
|
||||
if (!tag->import_tag_linked) {
|
||||
set_error_buf_v(error_buf, error_buf_size,
|
||||
"failed to link import tag (%s, %s)",
|
||||
tag->module_name, tag->field_name);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
#endif /* WASM_ENABLE_TAGS != 0 */
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
diff --git a/test/core/data.wast b/test/core/data.wast
|
||||
index b1e1239..a0f6967 100644
|
||||
index b1e12397..a0f69676 100644
|
||||
--- a/test/core/data.wast
|
||||
+++ b/test/core/data.wast
|
||||
@@ -312,7 +312,8 @@
|
||||
|
@ -10,7 +10,7 @@ index b1e1239..a0f6967 100644
|
|||
+ ;; TODO: restore after supporting multi memory"
|
||||
+ "unknown memory"
|
||||
)
|
||||
|
||||
|
||||
;; Data segment with memory index 0 (no memory section)
|
||||
@@ -334,7 +335,8 @@
|
||||
"\02\01\41\00\0b" ;; active data segment 0 for memory 1
|
||||
|
@ -20,7 +20,7 @@ index b1e1239..a0f6967 100644
|
|||
+ ;; TODO: restore after supporting multi memory"
|
||||
+ "unknown memory"
|
||||
)
|
||||
|
||||
|
||||
;; Data segment with memory index 1 and vec(byte) as above,
|
||||
@@ -354,7 +356,8 @@
|
||||
"\20\21\22\23\24\25\26\27\28\29\2a\2b\2c\2d\2e\2f"
|
||||
|
@ -30,7 +30,7 @@ index b1e1239..a0f6967 100644
|
|||
+ ;; TODO: restore after supporting multi memory"
|
||||
+ "unknown memory"
|
||||
)
|
||||
|
||||
|
||||
;; Data segment with memory index 1 and specially crafted vec(byte) after.
|
||||
@@ -374,7 +377,8 @@
|
||||
"\20\21\22\23\24\25\26\27\28\29\2a\2b\2c\2d\2e\2f"
|
||||
|
@ -40,90 +40,70 @@ index b1e1239..a0f6967 100644
|
|||
+ ;; TODO: restore after supporting multi memory"
|
||||
+ "unknown memory"
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
diff --git a/test/core/elem.wast b/test/core/elem.wast
|
||||
index 33b3f67..c72431c 100644
|
||||
index 4a399eca..3da365e5 100644
|
||||
--- a/test/core/elem.wast
|
||||
+++ b/test/core/elem.wast
|
||||
@@ -595,9 +595,11 @@
|
||||
(func $const-i32-d (type $out-i32) (i32.const 68))
|
||||
)
|
||||
|
||||
@@ -594,6 +594,7 @@
|
||||
(assert_return (invoke $module1 "call-8") (i32.const 65))
|
||||
(assert_return (invoke $module1 "call-9") (i32.const 66))
|
||||
|
||||
+(;
|
||||
(module $module2
|
||||
(type $out-i32 (func (result i32)))
|
||||
(import "module1" "shared-table" (table 10 funcref))
|
||||
@@ -606,7 +607,9 @@
|
||||
(assert_return (invoke $module1 "call-7") (i32.const 67))
|
||||
(assert_return (invoke $module1 "call-8") (i32.const 68))
|
||||
(assert_return (invoke $module1 "call-9") (i32.const 66))
|
||||
+;)
|
||||
|
||||
|
||||
+(;
|
||||
(module $module3
|
||||
(type $out-i32 (func (result i32)))
|
||||
@@ -608,9 +610,11 @@
|
||||
(func $const-i32-f (type $out-i32) (i32.const 70))
|
||||
)
|
||||
|
||||
+(;
|
||||
(import "module1" "shared-table" (table 10 funcref))
|
||||
@@ -619,6 +622,7 @@
|
||||
(assert_return (invoke $module1 "call-7") (i32.const 67))
|
||||
(assert_return (invoke $module1 "call-8") (i32.const 69))
|
||||
(assert_return (invoke $module1 "call-9") (i32.const 70))
|
||||
+;)
|
||||
|
||||
|
||||
;; Element segments must match element type of table
|
||||
|
||||
@@ -643,6 +647,7 @@
|
||||
|
||||
|
||||
@@ -651,6 +655,7 @@
|
||||
|
||||
;; Initializing a table with an externref-type element segment
|
||||
|
||||
|
||||
+(;
|
||||
(module $m
|
||||
(table $t (export "table") 2 externref)
|
||||
(func (export "get") (param $i i32) (result externref)
|
||||
@@ -667,9 +672,11 @@
|
||||
|
||||
@@ -675,9 +680,11 @@
|
||||
|
||||
(assert_return (invoke $m "get" (i32.const 0)) (ref.null extern))
|
||||
(assert_return (invoke $m "get" (i32.const 1)) (ref.extern 137))
|
||||
+;)
|
||||
|
||||
|
||||
;; Initializing a table with imported funcref global
|
||||
|
||||
|
||||
+(;
|
||||
(module $module4
|
||||
(func (result i32)
|
||||
i32.const 42
|
||||
@@ -690,3 +697,4 @@
|
||||
@@ -698,3 +705,4 @@
|
||||
)
|
||||
|
||||
|
||||
(assert_return (invoke "call_imported_elem") (i32.const 42))
|
||||
+;)
|
||||
\ No newline at end of file
|
||||
diff --git a/test/core/try_catch.wast b/test/core/try_catch.wast
|
||||
index 2a0e9ff6..f243489d 100644
|
||||
--- a/test/core/try_catch.wast
|
||||
+++ b/test/core/try_catch.wast
|
||||
@@ -203,7 +203,6 @@
|
||||
|
||||
(assert_return (invoke "catch-param-i32" (i32.const 5)) (i32.const 5))
|
||||
|
||||
-(assert_return (invoke "catch-imported") (i32.const 2))
|
||||
|
||||
(assert_return (invoke "catchless-try" (i32.const 0)) (i32.const 0))
|
||||
(assert_return (invoke "catchless-try" (i32.const 1)) (i32.const 1))
|
||||
@@ -231,7 +230,6 @@
|
||||
)
|
||||
)
|
||||
|
||||
-(assert_return (invoke "imported-mismatch") (i32.const 3))
|
||||
|
||||
(assert_malformed
|
||||
(module quote "(module (func (catch_all)))")
|
||||
|
||||
diff --git a/test/core/ref_func.wast b/test/core/ref_func.wast
|
||||
index adb5cb7..6396013 100644
|
||||
index adb5cb78..6396013b 100644
|
||||
--- a/test/core/ref_func.wast
|
||||
+++ b/test/core/ref_func.wast
|
||||
@@ -4,7 +4,7 @@
|
||||
(register "M")
|
||||
|
||||
|
||||
(module
|
||||
- (func $f (import "M" "f") (param i32) (result i32))
|
||||
+ (func $f (param $x i32) (result i32) (local.get $x))
|
||||
|
@ -131,11 +111,11 @@ index adb5cb7..6396013 100644
|
|||
(i32.add (local.get $x) (i32.const 1))
|
||||
)
|
||||
diff --git a/test/core/table_copy.wast b/test/core/table_copy.wast
|
||||
index 380e84e..59230cf 100644
|
||||
index 380e84ee..59230cfb 100644
|
||||
--- a/test/core/table_copy.wast
|
||||
+++ b/test/core/table_copy.wast
|
||||
@@ -14,11 +14,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -152,7 +132,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t0) (i32.const 2) func 3 1 4 1)
|
||||
@@ -106,11 +106,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -169,7 +149,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t0) (i32.const 2) func 3 1 4 1)
|
||||
@@ -198,11 +198,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -186,7 +166,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t0) (i32.const 2) func 3 1 4 1)
|
||||
@@ -290,11 +290,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -203,7 +183,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t0) (i32.const 2) func 3 1 4 1)
|
||||
@@ -382,11 +382,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -220,7 +200,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t0) (i32.const 2) func 3 1 4 1)
|
||||
@@ -474,11 +474,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -237,7 +217,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t0) (i32.const 2) func 3 1 4 1)
|
||||
@@ -566,11 +566,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -254,7 +234,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t0) (i32.const 2) func 3 1 4 1)
|
||||
@@ -658,11 +658,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -271,7 +251,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t0) (i32.const 2) func 3 1 4 1)
|
||||
@@ -750,11 +750,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -288,7 +268,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t0) (i32.const 2) func 3 1 4 1)
|
||||
@@ -842,11 +842,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -305,7 +285,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t1) (i32.const 2) func 3 1 4 1)
|
||||
@@ -934,11 +934,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -322,7 +302,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t1) (i32.const 2) func 3 1 4 1)
|
||||
@@ -1026,11 +1026,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -339,7 +319,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t1) (i32.const 2) func 3 1 4 1)
|
||||
@@ -1118,11 +1118,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -356,7 +336,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t1) (i32.const 2) func 3 1 4 1)
|
||||
@@ -1210,11 +1210,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -373,7 +353,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t1) (i32.const 2) func 3 1 4 1)
|
||||
@@ -1302,11 +1302,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -390,7 +370,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t1) (i32.const 2) func 3 1 4 1)
|
||||
@@ -1394,11 +1394,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -407,7 +387,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t1) (i32.const 2) func 3 1 4 1)
|
||||
@@ -1486,11 +1486,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -424,7 +404,7 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t1) (i32.const 2) func 3 1 4 1)
|
||||
@@ -1578,11 +1578,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -441,11 +421,11 @@ index 380e84e..59230cf 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t1) (i32.const 2) func 3 1 4 1)
|
||||
diff --git a/test/core/table_init.wast b/test/core/table_init.wast
|
||||
index 0b2d26f..3c595e5 100644
|
||||
index 0b2d26f7..3c595e5b 100644
|
||||
--- a/test/core/table_init.wast
|
||||
+++ b/test/core/table_init.wast
|
||||
@@ -14,11 +14,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -462,7 +442,7 @@ index 0b2d26f..3c595e5 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t0) (i32.const 2) func 3 1 4 1)
|
||||
@@ -72,11 +72,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -479,7 +459,7 @@ index 0b2d26f..3c595e5 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t0) (i32.const 2) func 3 1 4 1)
|
||||
@@ -130,11 +130,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -496,7 +476,7 @@ index 0b2d26f..3c595e5 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t0) (i32.const 2) func 3 1 4 1)
|
||||
@@ -196,11 +196,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -513,7 +493,7 @@ index 0b2d26f..3c595e5 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t1) (i32.const 2) func 3 1 4 1)
|
||||
@@ -254,11 +254,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -530,7 +510,7 @@ index 0b2d26f..3c595e5 100644
|
|||
(table $t1 30 30 funcref)
|
||||
(elem (table $t1) (i32.const 2) func 3 1 4 1)
|
||||
@@ -312,11 +312,11 @@
|
||||
|
||||
|
||||
(module
|
||||
(type (func (result i32))) ;; type #0
|
||||
- (import "a" "ef0" (func (result i32))) ;; index 0
|
||||
|
@ -546,3 +526,23 @@ index 0b2d26f..3c595e5 100644
|
|||
(table $t0 30 30 funcref)
|
||||
(table $t1 30 30 funcref)
|
||||
(elem (table $t1) (i32.const 2) func 3 1 4 1)
|
||||
diff --git a/test/core/try_catch.wast b/test/core/try_catch.wast
|
||||
index 2a0e9ff6..f243489d 100644
|
||||
--- a/test/core/try_catch.wast
|
||||
+++ b/test/core/try_catch.wast
|
||||
@@ -203,7 +203,6 @@
|
||||
|
||||
(assert_return (invoke "catch-param-i32" (i32.const 5)) (i32.const 5))
|
||||
|
||||
-(assert_return (invoke "catch-imported") (i32.const 2))
|
||||
|
||||
(assert_return (invoke "catchless-try" (i32.const 0)) (i32.const 0))
|
||||
(assert_return (invoke "catchless-try" (i32.const 1)) (i32.const 1))
|
||||
@@ -231,7 +230,6 @@
|
||||
)
|
||||
)
|
||||
|
||||
-(assert_return (invoke "imported-mismatch") (i32.const 3))
|
||||
|
||||
(assert_malformed
|
||||
(module quote "(module (func (catch_all)))")
|
||||
|
|
|
@ -43,26 +43,28 @@ index b1e1239..a0f6967 100644
|
|||
|
||||
|
||||
diff --git a/test/core/elem.wast b/test/core/elem.wast
|
||||
index 33b3f67..c72431c 100644
|
||||
index 33b3f67..a4c1a2d 100644
|
||||
--- a/test/core/elem.wast
|
||||
+++ b/test/core/elem.wast
|
||||
@@ -595,9 +595,11 @@
|
||||
(func $const-i32-d (type $out-i32) (i32.const 68))
|
||||
)
|
||||
@@ -586,6 +586,7 @@
|
||||
(assert_return (invoke $module1 "call-8") (i32.const 65))
|
||||
(assert_return (invoke $module1 "call-9") (i32.const 66))
|
||||
|
||||
+(;
|
||||
(module $module2
|
||||
(type $out-i32 (func (result i32)))
|
||||
(import "module1" "shared-table" (table 10 funcref))
|
||||
@@ -598,7 +599,9 @@
|
||||
(assert_return (invoke $module1 "call-7") (i32.const 67))
|
||||
(assert_return (invoke $module1 "call-8") (i32.const 68))
|
||||
(assert_return (invoke $module1 "call-9") (i32.const 66))
|
||||
+;)
|
||||
|
||||
+(;
|
||||
(module $module3
|
||||
(type $out-i32 (func (result i32)))
|
||||
@@ -608,9 +610,11 @@
|
||||
(func $const-i32-f (type $out-i32) (i32.const 70))
|
||||
)
|
||||
|
||||
+(;
|
||||
(import "module1" "shared-table" (table 10 funcref))
|
||||
@@ -611,6 +614,7 @@
|
||||
(assert_return (invoke $module1 "call-7") (i32.const 67))
|
||||
(assert_return (invoke $module1 "call-8") (i32.const 69))
|
||||
(assert_return (invoke $module1 "call-9") (i32.const 70))
|
||||
|
@ -95,7 +97,6 @@ index 33b3f67..c72431c 100644
|
|||
|
||||
(assert_return (invoke "call_imported_elem") (i32.const 42))
|
||||
+;)
|
||||
\ No newline at end of file
|
||||
diff --git a/test/core/if.wast b/test/core/if.wast
|
||||
index 2ea45f6..6f07304 100644
|
||||
--- a/test/core/if.wast
|
||||
|
|
|
@ -70,10 +70,10 @@ index 4090b2c..18f66b4 100644
|
|||
;; Start section
|
||||
(module binary
|
||||
diff --git a/test/core/data.wast b/test/core/data.wast
|
||||
index b1e1239..74a7b04 100644
|
||||
index 4f339be..0b5b3e6 100644
|
||||
--- a/test/core/data.wast
|
||||
+++ b/test/core/data.wast
|
||||
@@ -312,9 +312,10 @@
|
||||
@@ -306,9 +306,10 @@
|
||||
"\02\01\41\00\0b" ;; active data segment 0 for memory 1
|
||||
"\00" ;; empty vec(byte)
|
||||
)
|
||||
|
@ -85,7 +85,7 @@ index b1e1239..74a7b04 100644
|
|||
;; Data segment with memory index 0 (no memory section)
|
||||
(assert_invalid
|
||||
(module binary
|
||||
@@ -323,7 +324,7 @@
|
||||
@@ -317,7 +318,7 @@
|
||||
"\00\41\00\0b" ;; active data segment 0 for memory 0
|
||||
"\00" ;; empty vec(byte)
|
||||
)
|
||||
|
@ -94,7 +94,7 @@ index b1e1239..74a7b04 100644
|
|||
)
|
||||
|
||||
;; Data segment with memory index 1 (no memory section)
|
||||
@@ -334,7 +335,7 @@
|
||||
@@ -328,7 +329,7 @@
|
||||
"\02\01\41\00\0b" ;; active data segment 0 for memory 1
|
||||
"\00" ;; empty vec(byte)
|
||||
)
|
||||
|
@ -103,7 +103,7 @@ index b1e1239..74a7b04 100644
|
|||
)
|
||||
|
||||
;; Data segment with memory index 1 and vec(byte) as above,
|
||||
@@ -354,7 +355,7 @@
|
||||
@@ -348,7 +349,7 @@
|
||||
"\20\21\22\23\24\25\26\27\28\29\2a\2b\2c\2d\2e\2f"
|
||||
"\30\31\32\33\34\35\36\37\38\39\3a\3b\3c\3d"
|
||||
)
|
||||
|
@ -112,7 +112,7 @@ index b1e1239..74a7b04 100644
|
|||
)
|
||||
|
||||
;; Data segment with memory index 1 and specially crafted vec(byte) after.
|
||||
@@ -374,8 +375,9 @@
|
||||
@@ -368,8 +369,9 @@
|
||||
"\20\21\22\23\24\25\26\27\28\29\2a\2b\2c\2d\2e\2f"
|
||||
"\30\31\32\33\34\35\36\37\38\39\3a\3b\3c\3d"
|
||||
)
|
||||
|
@ -124,26 +124,28 @@ index b1e1239..74a7b04 100644
|
|||
|
||||
;; Invalid offsets
|
||||
diff --git a/test/core/elem.wast b/test/core/elem.wast
|
||||
index 575ecef..6eecab9 100644
|
||||
index 575ecef..dd1106c 100644
|
||||
--- a/test/core/elem.wast
|
||||
+++ b/test/core/elem.wast
|
||||
@@ -571,9 +571,11 @@
|
||||
(func $const-i32-d (type $out-i32) (i32.const 68))
|
||||
)
|
||||
@@ -562,6 +562,7 @@
|
||||
(assert_return (invoke $module1 "call-8") (i32.const 65))
|
||||
(assert_return (invoke $module1 "call-9") (i32.const 66))
|
||||
|
||||
+(;
|
||||
(module $module2
|
||||
(type $out-i32 (func (result i32)))
|
||||
(import "module1" "shared-table" (table 10 funcref))
|
||||
@@ -574,7 +575,9 @@
|
||||
(assert_return (invoke $module1 "call-7") (i32.const 67))
|
||||
(assert_return (invoke $module1 "call-8") (i32.const 68))
|
||||
(assert_return (invoke $module1 "call-9") (i32.const 66))
|
||||
+;)
|
||||
|
||||
+(;
|
||||
(module $module3
|
||||
(type $out-i32 (func (result i32)))
|
||||
@@ -584,6 +586,8 @@
|
||||
(func $const-i32-f (type $out-i32) (i32.const 70))
|
||||
)
|
||||
|
||||
+(;
|
||||
(import "module1" "shared-table" (table 10 funcref))
|
||||
@@ -587,3 +590,4 @@
|
||||
(assert_return (invoke $module1 "call-7") (i32.const 67))
|
||||
(assert_return (invoke $module1 "call-8") (i32.const 69))
|
||||
(assert_return (invoke $module1 "call-9") (i32.const 70))
|
||||
|
|
|
@ -998,6 +998,9 @@ function trigger()
|
|||
# if we're running the wasi certification tests.
|
||||
if [[ $TEST_CASE_ARR ]]; then
|
||||
for test in "${TEST_CASE_ARR[@]}"; do
|
||||
if [[ "$test" == "wasi_certification" ]]; then
|
||||
EXTRA_COMPILE_FLAGS+=" -DWAMR_BUILD_WASI_TEST=1"
|
||||
fi
|
||||
if [[ "$test" == "wasi_certification"
|
||||
|| "$test" == "standalone" ]]; then
|
||||
EXTRA_COMPILE_FLAGS+=" -DWAMR_BUILD_LIBC_UVWASI=0 -DWAMR_BUILD_LIBC_WASI=1"
|
||||
|
|
Loading…
Reference in New Issue
Block a user