mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-07-13 15:58:14 +00:00
Compare commits
3 Commits
54b87cb097
...
867dbd8912
Author | SHA1 | Date | |
---|---|---|---|
![]() |
867dbd8912 | ||
![]() |
e66b41427f | ||
![]() |
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));
|
||||
}
|
||||
|
|
|
@ -605,6 +605,14 @@ set_local_gc_ref(AOTCompFrame *frame, int n, LLVMValueRef value, uint8 ref_type)
|
|||
#define PUSH_PAGE_COUNT(v) \
|
||||
PUSH(v, MEMORY64_COND_VALUE(VALUE_TYPE_I64, VALUE_TYPE_I32))
|
||||
|
||||
#define SET_CONST(v) \
|
||||
do { \
|
||||
AOTValue *aot_value = \
|
||||
func_ctx->block_stack.block_list_end->value_stack.value_list_end; \
|
||||
aot_value->is_const = true; \
|
||||
aot_value->const_value = (v); \
|
||||
} while (0)
|
||||
|
||||
#define TO_LLVM_TYPE(wasm_type) \
|
||||
wasm_type_to_llvm_type(comp_ctx, &comp_ctx->basic_types, wasm_type)
|
||||
|
||||
|
|
|
@ -3038,15 +3038,18 @@ typedef struct elf64_rela {
|
|||
elf64_sxword r_addend;
|
||||
} elf64_rela;
|
||||
|
||||
#define SET_TARGET_INFO(f, v, type, little) \
|
||||
do { \
|
||||
type tmp = elf_header->v; \
|
||||
if ((little && !is_little_endian()) \
|
||||
|| (!little && is_little_endian())) \
|
||||
exchange_##type((uint8 *)&tmp); \
|
||||
obj_data->target_info.f = tmp; \
|
||||
#define SET_TARGET_INFO_VALUE(f, val, type, little) \
|
||||
do { \
|
||||
type tmp = val; \
|
||||
if ((little && !is_little_endian()) \
|
||||
|| (!little && is_little_endian())) \
|
||||
exchange_##type((uint8 *)&tmp); \
|
||||
obj_data->target_info.f = tmp; \
|
||||
} while (0)
|
||||
|
||||
#define SET_TARGET_INFO_FIELD(f, v, type, little) \
|
||||
SET_TARGET_INFO_VALUE(f, elf_header->v, type, little)
|
||||
|
||||
static bool
|
||||
aot_resolve_target_info(AOTCompContext *comp_ctx, AOTObjectData *obj_data)
|
||||
{
|
||||
|
@ -3096,6 +3099,7 @@ aot_resolve_target_info(AOTCompContext *comp_ctx, AOTObjectData *obj_data)
|
|||
|| bin_type == LLVMBinaryTypeELF32B) {
|
||||
struct elf32_ehdr *elf_header;
|
||||
bool is_little_bin = bin_type == LLVMBinaryTypeELF32L;
|
||||
uint16 e_type;
|
||||
|
||||
if (!elf_buf || elf_size < sizeof(struct elf32_ehdr)) {
|
||||
aot_set_last_error("invalid elf32 buffer.");
|
||||
|
@ -3103,20 +3107,22 @@ aot_resolve_target_info(AOTCompContext *comp_ctx, AOTObjectData *obj_data)
|
|||
}
|
||||
|
||||
elf_header = (struct elf32_ehdr *)elf_buf;
|
||||
e_type = elf_header->e_type;
|
||||
|
||||
/* Emit eXecute In Place file type while in indirect mode */
|
||||
if (comp_ctx->is_indirect_mode)
|
||||
elf_header->e_type = E_TYPE_XIP;
|
||||
e_type = E_TYPE_XIP;
|
||||
|
||||
SET_TARGET_INFO(e_type, e_type, uint16, is_little_bin);
|
||||
SET_TARGET_INFO(e_machine, e_machine, uint16, is_little_bin);
|
||||
SET_TARGET_INFO(e_version, e_version, uint32, is_little_bin);
|
||||
SET_TARGET_INFO(e_flags, e_flags, uint32, is_little_bin);
|
||||
SET_TARGET_INFO_VALUE(e_type, e_type, uint16, is_little_bin);
|
||||
SET_TARGET_INFO_FIELD(e_machine, e_machine, uint16, is_little_bin);
|
||||
SET_TARGET_INFO_FIELD(e_version, e_version, uint32, is_little_bin);
|
||||
SET_TARGET_INFO_FIELD(e_flags, e_flags, uint32, is_little_bin);
|
||||
}
|
||||
else if (bin_type == LLVMBinaryTypeELF64L
|
||||
|| bin_type == LLVMBinaryTypeELF64B) {
|
||||
struct elf64_ehdr *elf_header;
|
||||
bool is_little_bin = bin_type == LLVMBinaryTypeELF64L;
|
||||
uint16 e_type;
|
||||
|
||||
if (!elf_buf || elf_size < sizeof(struct elf64_ehdr)) {
|
||||
aot_set_last_error("invalid elf64 buffer.");
|
||||
|
@ -3124,15 +3130,16 @@ aot_resolve_target_info(AOTCompContext *comp_ctx, AOTObjectData *obj_data)
|
|||
}
|
||||
|
||||
elf_header = (struct elf64_ehdr *)elf_buf;
|
||||
e_type = elf_header->e_type;
|
||||
|
||||
/* Emit eXecute In Place file type while in indirect mode */
|
||||
if (comp_ctx->is_indirect_mode)
|
||||
elf_header->e_type = E_TYPE_XIP;
|
||||
e_type = E_TYPE_XIP;
|
||||
|
||||
SET_TARGET_INFO(e_type, e_type, uint16, is_little_bin);
|
||||
SET_TARGET_INFO(e_machine, e_machine, uint16, is_little_bin);
|
||||
SET_TARGET_INFO(e_version, e_version, uint32, is_little_bin);
|
||||
SET_TARGET_INFO(e_flags, e_flags, uint32, is_little_bin);
|
||||
SET_TARGET_INFO_VALUE(e_type, e_type, uint16, is_little_bin);
|
||||
SET_TARGET_INFO_FIELD(e_machine, e_machine, uint16, is_little_bin);
|
||||
SET_TARGET_INFO_FIELD(e_version, e_version, uint32, is_little_bin);
|
||||
SET_TARGET_INFO_FIELD(e_flags, e_flags, uint32, is_little_bin);
|
||||
}
|
||||
else if (bin_type == LLVMBinaryTypeMachO32L
|
||||
|| bin_type == LLVMBinaryTypeMachO32B) {
|
||||
|
|
|
@ -28,6 +28,7 @@ aot_compile_op_i32_const(AOTCompContext *comp_ctx, AOTFuncContext *func_ctx,
|
|||
}
|
||||
|
||||
PUSH_I32(value);
|
||||
SET_CONST((uint64)(uint32)i32_const);
|
||||
return true;
|
||||
fail:
|
||||
return false;
|
||||
|
@ -55,6 +56,7 @@ aot_compile_op_i64_const(AOTCompContext *comp_ctx, AOTFuncContext *func_ctx,
|
|||
}
|
||||
|
||||
PUSH_I64(value);
|
||||
SET_CONST((uint64)i64_const);
|
||||
return true;
|
||||
fail:
|
||||
return false;
|
||||
|
|
|
@ -107,7 +107,9 @@ aot_check_memory_overflow(AOTCompContext *comp_ctx, AOTFuncContext *func_ctx,
|
|||
LLVMBasicBlockRef check_succ;
|
||||
AOTValue *aot_value_top;
|
||||
uint32 local_idx_of_aot_value = 0;
|
||||
uint64 const_value;
|
||||
bool is_target_64bit, is_local_of_aot_value = false;
|
||||
bool is_const = false;
|
||||
#if WASM_ENABLE_SHARED_MEMORY != 0
|
||||
bool is_shared_memory =
|
||||
comp_ctx->comp_data->memories[0].flags & SHARED_MEMORY_FLAG;
|
||||
|
@ -162,7 +164,9 @@ aot_check_memory_overflow(AOTCompContext *comp_ctx, AOTFuncContext *func_ctx,
|
|||
/* aot_value_top is freed in the following POP_I32(addr),
|
||||
so save its fields here for further use */
|
||||
is_local_of_aot_value = aot_value_top->is_local;
|
||||
is_const = aot_value_top->is_const;
|
||||
local_idx_of_aot_value = aot_value_top->local_idx;
|
||||
const_value = aot_value_top->const_value;
|
||||
}
|
||||
|
||||
POP_MEM_OFFSET(addr);
|
||||
|
@ -172,9 +176,15 @@ aot_check_memory_overflow(AOTCompContext *comp_ctx, AOTFuncContext *func_ctx,
|
|||
* have been thrown when converting float to integer before
|
||||
*/
|
||||
/* return address directly if constant offset and inside memory space */
|
||||
if (LLVMIsEfficientConstInt(addr)) {
|
||||
uint64 mem_offset =
|
||||
(uint64)LLVMConstIntGetZExtValue(addr) + (uint64)offset;
|
||||
if (LLVMIsEfficientConstInt(addr) || is_const) {
|
||||
uint64 value;
|
||||
if (LLVMIsEfficientConstInt(addr)) {
|
||||
value = (uint64)LLVMConstIntGetZExtValue(addr);
|
||||
}
|
||||
else {
|
||||
value = const_value;
|
||||
}
|
||||
uint64 mem_offset = value + (uint64)offset;
|
||||
uint32 num_bytes_per_page =
|
||||
comp_ctx->comp_data->memories[0].num_bytes_per_page;
|
||||
uint32 init_page_count =
|
||||
|
|
|
@ -75,10 +75,12 @@ typedef struct AOTValue {
|
|||
struct AOTValue *next;
|
||||
struct AOTValue *prev;
|
||||
LLVMValueRef value;
|
||||
uint64 const_value; /* valid if is_const is true */
|
||||
uint32 local_idx;
|
||||
/* VALUE_TYPE_I32/I64/F32/F64/VOID */
|
||||
uint8 type;
|
||||
bool is_local;
|
||||
uint32 local_idx;
|
||||
bool is_const;
|
||||
} AOTValue;
|
||||
|
||||
/**
|
||||
|
|
|
@ -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