diff --git a/build-scripts/config_common.cmake b/build-scripts/config_common.cmake index edff5b846..28ace9835 100644 --- a/build-scripts/config_common.cmake +++ b/build-scripts/config_common.cmake @@ -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) diff --git a/core/config.h b/core/config.h index b4d8d1965..9fd540f32 100644 --- a/core/config.h +++ b/core/config.h @@ -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) diff --git a/core/iwasm/common/wasm_runtime_common.c b/core/iwasm/common/wasm_runtime_common.c index 45f2fb6d7..0985c238e 100644 --- a/core/iwasm/common/wasm_runtime_common.c +++ b/core/iwasm/common/wasm_runtime_common.c @@ -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)); } diff --git a/core/iwasm/interpreter/wasm_loader.c b/core/iwasm/interpreter/wasm_loader.c index 49dad933e..92ae21176 100644 --- a/core/iwasm/interpreter/wasm_loader.c +++ b/core/iwasm/interpreter/wasm_loader.c @@ -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 diff --git a/core/iwasm/interpreter/wasm_runtime.c b/core/iwasm/interpreter/wasm_runtime.c index 45735c4f7..b17bd54df 100644 --- a/core/iwasm/interpreter/wasm_runtime.c +++ b/core/iwasm/interpreter/wasm_runtime.c @@ -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; } diff --git a/tests/wamr-test-suites/spec-test-script/exception_handling.patch b/tests/wamr-test-suites/spec-test-script/exception_handling.patch index e27234592..09e112746 100644 --- a/tests/wamr-test-suites/spec-test-script/exception_handling.patch +++ b/tests/wamr-test-suites/spec-test-script/exception_handling.patch @@ -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)))") diff --git a/tests/wamr-test-suites/spec-test-script/ignore_cases.patch b/tests/wamr-test-suites/spec-test-script/ignore_cases.patch index a617c4605..73f749737 100644 --- a/tests/wamr-test-suites/spec-test-script/ignore_cases.patch +++ b/tests/wamr-test-suites/spec-test-script/ignore_cases.patch @@ -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 diff --git a/tests/wamr-test-suites/spec-test-script/memory64_ignore_cases.patch b/tests/wamr-test-suites/spec-test-script/memory64_ignore_cases.patch index 43dcda6a1..5e7afd9d1 100644 --- a/tests/wamr-test-suites/spec-test-script/memory64_ignore_cases.patch +++ b/tests/wamr-test-suites/spec-test-script/memory64_ignore_cases.patch @@ -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)) diff --git a/tests/wamr-test-suites/test_wamr.sh b/tests/wamr-test-suites/test_wamr.sh index 135940e1d..b9890eed1 100755 --- a/tests/wamr-test-suites/test_wamr.sh +++ b/tests/wamr-test-suites/test_wamr.sh @@ -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"