From 614cc6f96019db92e28ac686819dba9d887e1588 Mon Sep 17 00:00:00 2001 From: Judah Caruso Date: Fri, 8 Dec 2023 13:58:40 -0700 Subject: [PATCH] interpreter warnings --- interpreter/src/debug/debug_host.c | 2 +- interpreter/src/debug/debug_info.c | 102 +++++------ interpreter/src/debug/debug_info_builder.c | 14 +- interpreter/src/debug/debug_runtime_values.c | 64 +++---- interpreter/src/debug/debug_thread.c | 16 +- interpreter/src/vm/code_builder.c | 16 +- interpreter/src/vm/disasm.c | 12 +- interpreter/src/vm/vm.c | 8 +- interpreter/src/wasm/global.c | 4 +- interpreter/src/wasm/instance.c | 12 +- interpreter/src/wasm/module_parsing.h | 176 +++++++++---------- shared/lib/darwin_arm64/lib/libovmwasm.a | Bin 0 -> 322696 bytes 12 files changed, 215 insertions(+), 211 deletions(-) create mode 100644 shared/lib/darwin_arm64/lib/libovmwasm.a diff --git a/interpreter/src/debug/debug_host.c b/interpreter/src/debug/debug_host.c index 82b0c877..83312106 100644 --- a/interpreter/src/debug/debug_host.c +++ b/interpreter/src/debug/debug_host.c @@ -9,7 +9,7 @@ void debug_host_init(debug_state_t *debug, struct ovm_engine_t *ovm_engine) { bh_arena_init(&debug->tmp_arena, bh_heap_allocator(), 16 * 1024); debug->tmp_alloc = bh_arena_allocator(&debug->tmp_arena); - + debug->info = NULL; debug->threads = NULL; diff --git a/interpreter/src/debug/debug_info.c b/interpreter/src/debug/debug_info.c index 6b332c1c..1417d93b 100644 --- a/interpreter/src/debug/debug_info.c +++ b/interpreter/src/debug/debug_info.c @@ -30,16 +30,16 @@ void debug_info_import_file_info(debug_info_t *info, u8 *data, u32 len) { u32 offset = 0; info->has_debug_info = true; - i32 count = uleb128_to_uint(data, &offset); + i32 count = uleb128_to_uint(data, (i32 *)&offset); fori (i, 0, (i32) count) { debug_file_info_t file_info; file_info.line_buffer_offset = -1; - u32 file_id = uleb128_to_uint(data, &offset); + u32 file_id = uleb128_to_uint(data, (i32 *)&offset); file_info.file_id = file_id; - file_info.line_count = uleb128_to_uint(data, &offset); + file_info.line_count = uleb128_to_uint(data, (i32 *)&offset); - u32 name_length = uleb128_to_uint(data, &offset); + u32 name_length = uleb128_to_uint(data, (i32 *)&offset); file_info.name = bh_alloc_array(info->alloc, char, name_length + 1); memcpy(file_info.name, data + offset, name_length); file_info.name[name_length] = 0; @@ -55,14 +55,14 @@ void debug_info_import_func_info(debug_info_t *info, u8 *data, u32 len) { u32 offset = 0; info->has_debug_info = true; - i32 count = uleb128_to_uint(data, &offset); + i32 count = uleb128_to_uint(data, (i32 *)&offset); fori (i, 0, (i32) count) { debug_func_info_t func_info; - func_info.func_id = uleb128_to_uint(data, &offset); - func_info.file_id = uleb128_to_uint(data, &offset); - func_info.line = uleb128_to_uint(data, &offset); + func_info.func_id = uleb128_to_uint(data, (i32 *)&offset); + func_info.file_id = uleb128_to_uint(data, (i32 *)&offset); + func_info.line = uleb128_to_uint(data, (i32 *)&offset); - u32 name_length = uleb128_to_uint(data, &offset); + u32 name_length = uleb128_to_uint(data, (i32 *)&offset); if (name_length == 0) { func_info.name = NULL; } else { @@ -73,10 +73,10 @@ void debug_info_import_func_info(debug_info_t *info, u8 *data, u32 len) { } func_info.internal = data[offset++] != 0; - func_info.debug_op_offset = uleb128_to_uint(data, &offset); - func_info.stack_ptr_idx = uleb128_to_uint(data, &offset); + func_info.debug_op_offset = uleb128_to_uint(data, (i32 *)&offset); + func_info.stack_ptr_idx = uleb128_to_uint(data, (i32 *)&offset); - uleb128_to_uint(data, &offset); + uleb128_to_uint(data, (i32 *)&offset); bh_arr_set_at(info->funcs, func_info.func_id, func_info); } @@ -88,12 +88,12 @@ void debug_info_import_sym_info(debug_info_t *info, u8 *data, u32 len) { u32 offset = 0; info->has_debug_info = true; - i32 count = uleb128_to_uint(data, &offset); + i32 count = uleb128_to_uint(data, (i32 *)&offset); fori (i, 0, count) { debug_sym_info_t sym_info; - sym_info.sym_id = uleb128_to_uint(data, &offset); + sym_info.sym_id = uleb128_to_uint(data, (i32 *)&offset); - u32 name_length = uleb128_to_uint(data, &offset); + u32 name_length = uleb128_to_uint(data, (i32 *)&offset); if (name_length == 0) { sym_info.name = NULL; } else { @@ -102,10 +102,10 @@ void debug_info_import_sym_info(debug_info_t *info, u8 *data, u32 len) { sym_info.name[name_length] = 0; offset += name_length; } - - sym_info.loc_kind = uleb128_to_uint(data, &offset); - sym_info.loc = uleb128_to_uint(data, &offset); - sym_info.type = uleb128_to_uint(data, &offset); + + sym_info.loc_kind = uleb128_to_uint(data, (i32 *)&offset); + sym_info.loc = uleb128_to_uint(data, (i32 *)&offset); + sym_info.type = uleb128_to_uint(data, (i32 *)&offset); bh_arr_set_at(info->symbols, sym_info.sym_id, sym_info); } @@ -117,12 +117,12 @@ void debug_info_import_type_info(debug_info_t *info, u8 *data, u32 len) { u32 offset = 0; info->has_debug_info = true; - i32 count = uleb128_to_uint(data, &offset); + i32 count = uleb128_to_uint(data, (i32 *)&offset); fori (i, 0, count) { debug_type_info_t type; - type.id = uleb128_to_uint(data, &offset); + type.id = uleb128_to_uint(data, (i32 *)&offset); - u32 name_length = uleb128_to_uint(data, &offset); + u32 name_length = uleb128_to_uint(data, (i32 *)&offset); if (name_length == 0) { type.name = NULL; } else { @@ -132,30 +132,30 @@ void debug_info_import_type_info(debug_info_t *info, u8 *data, u32 len) { offset += name_length; } - type.size = uleb128_to_uint(data, &offset); - type.kind = uleb128_to_uint(data, &offset); + type.size = uleb128_to_uint(data, (i32 *)&offset); + type.kind = uleb128_to_uint(data, (i32 *)&offset); switch (type.kind) { case debug_type_kind_primitive: - type.primitive.primitive_kind = uleb128_to_uint(data, &offset); + type.primitive.primitive_kind = uleb128_to_uint(data, (i32 *)&offset); break; case debug_type_kind_modifier: - type.modifier.modifier_kind = uleb128_to_uint(data, &offset); - type.modifier.modified_type = uleb128_to_uint(data, &offset); + type.modifier.modifier_kind = uleb128_to_uint(data, (i32 *)&offset); + type.modifier.modified_type = uleb128_to_uint(data, (i32 *)&offset); break; case debug_type_kind_structure: - type.structure.simple = uleb128_to_uint(data, &offset); + type.structure.simple = uleb128_to_uint(data, (i32 *)&offset); - type.structure.member_count = uleb128_to_uint(data, &offset); + type.structure.member_count = uleb128_to_uint(data, (i32 *)&offset); type.structure.members = bh_alloc_array(info->alloc, debug_type_structure_member_t, type.structure.member_count); fori (i, 0, type.structure.member_count) { - type.structure.members[i].offset = uleb128_to_uint(data, &offset); - type.structure.members[i].type = uleb128_to_uint(data, &offset); + type.structure.members[i].offset = uleb128_to_uint(data, (i32 *)&offset); + type.structure.members[i].type = uleb128_to_uint(data, (i32 *)&offset); - u32 name_length = uleb128_to_uint(data, &offset); + u32 name_length = uleb128_to_uint(data, (i32 *)&offset); type.structure.members[i].name = bh_alloc_array(info->alloc, char, name_length + 1); memcpy(type.structure.members[i].name, data + offset, name_length); type.structure.members[i].name[name_length] = 0; @@ -164,39 +164,39 @@ void debug_info_import_type_info(debug_info_t *info, u8 *data, u32 len) { break; case debug_type_kind_array: - type.array.count = uleb128_to_uint(data, &offset); - type.array.type = uleb128_to_uint(data, &offset); + type.array.count = uleb128_to_uint(data, (i32 *)&offset); + type.array.type = uleb128_to_uint(data, (i32 *)&offset); break; case debug_type_kind_alias: - type.alias.alias_kind = uleb128_to_uint(data, &offset); - type.alias.aliased_type = uleb128_to_uint(data, &offset); + type.alias.alias_kind = uleb128_to_uint(data, (i32 *)&offset); + type.alias.aliased_type = uleb128_to_uint(data, (i32 *)&offset); break; case debug_type_kind_function: - type.function.param_count = uleb128_to_uint(data, &offset); + type.function.param_count = uleb128_to_uint(data, (i32 *)&offset); type.function.param_types = bh_alloc_array(info->alloc, u32, type.function.param_count); fori (i, 0, type.function.param_count) { - type.function.param_types[i] = uleb128_to_uint(data, &offset); + type.function.param_types[i] = uleb128_to_uint(data, (i32 *)&offset); } - type.function.return_type = uleb128_to_uint(data, &offset); + type.function.return_type = uleb128_to_uint(data, (i32 *)&offset); break; case debug_type_kind_slice: - type.slice.type = uleb128_to_uint(data, &offset); + type.slice.type = uleb128_to_uint(data, (i32 *)&offset); break; case debug_type_kind_enum: - type.enumeration.backing_type = uleb128_to_uint(data, &offset); - type.enumeration.value_count = uleb128_to_uint(data, &offset); + type.enumeration.backing_type = uleb128_to_uint(data, (i32 *)&offset); + type.enumeration.value_count = uleb128_to_uint(data, (i32 *)&offset); type.enumeration.values = bh_alloc_array(info->alloc, debug_type_enum_value_t, type.enumeration.value_count); fori (i, 0, type.enumeration.value_count) { - type.enumeration.values[i].value = uleb128_to_uint(data, &offset); + type.enumeration.values[i].value = uleb128_to_uint(data, (i32 *)&offset); - u32 name_length = uleb128_to_uint(data, &offset); + u32 name_length = uleb128_to_uint(data, (i32 *)&offset); type.enumeration.values[i].name = bh_alloc_array(info->alloc, char, name_length + 1); memcpy(type.enumeration.values[i].name, data + offset, name_length); type.enumeration.values[i].name[name_length] = 0; @@ -205,23 +205,23 @@ void debug_info_import_type_info(debug_info_t *info, u8 *data, u32 len) { break; case debug_type_kind_union: - type.onion.tag_size = uleb128_to_uint(data, &offset); - type.onion.variant_count = uleb128_to_uint(data, &offset); + type.onion.tag_size = uleb128_to_uint(data, (i32 *)&offset); + type.onion.variant_count = uleb128_to_uint(data, (i32 *)&offset); type.onion.variants = bh_alloc_array(info->alloc, debug_type_union_variant_t, type.onion.variant_count); - + fori (i, 0, type.onion.variant_count) { - u32 name_length = uleb128_to_uint(data, &offset); + u32 name_length = uleb128_to_uint(data, (i32 *)&offset); type.onion.variants[i].name = bh_alloc_array(info->alloc, char, name_length + 1); memcpy(type.onion.variants[i].name, data + offset, name_length); type.onion.variants[i].name[name_length] = 0; offset += name_length; - - type.onion.variants[i].type = uleb128_to_uint(data, &offset); + + type.onion.variants[i].type = uleb128_to_uint(data, (i32 *)&offset); } break; // Error handling - default: assert(("Unrecognized type kind", 0)); + default: assert(0 && "Unrecognized type kind"); } bh_arr_set_at(info->types, type.id, type); diff --git a/interpreter/src/debug/debug_info_builder.c b/interpreter/src/debug/debug_info_builder.c index 13c33dfa..8aa04da8 100644 --- a/interpreter/src/debug/debug_info_builder.c +++ b/interpreter/src/debug/debug_info_builder.c @@ -22,7 +22,7 @@ void debug_info_builder_prepare(debug_info_builder_t *builder, u8 *data) { static i32 debug_info_builder_push_scope(debug_info_builder_t *builder) { debug_sym_scope_t scope; scope.symbols = NULL; - bh_arr_new(builder->info->alloc, scope.symbols, 4); + bh_arr_new(builder->info->alloc, scope.symbols, 4); scope.parent = builder->current_scope; i32 scope_id = bh_arr_length(builder->info->symbol_scopes); @@ -58,14 +58,14 @@ static void debug_info_builder_parse(debug_info_builder_t *builder) { switch (instr) { case 0: builder->locked = 1; break; // Early return! case 1: - builder->current_file_id = uleb128_to_uint(builder->data, &builder->reader_offset); - builder->current_line = uleb128_to_uint(builder->data, &builder->reader_offset); + builder->current_file_id = uleb128_to_uint(builder->data, (i32 *)&builder->reader_offset); + builder->current_line = uleb128_to_uint(builder->data, (i32 *)&builder->reader_offset); break; case 2: debug_info_builder_push_scope(builder); break; - + case 3: debug_info_builder_pop_scope(builder); break; @@ -73,7 +73,7 @@ static void debug_info_builder_parse(debug_info_builder_t *builder) { case 4: debug_info_builder_add_symbol( builder, - uleb128_to_uint(builder->data, &builder->reader_offset)); + uleb128_to_uint(builder->data, (i32 *)&builder->reader_offset)); break; } break; @@ -104,7 +104,7 @@ void debug_info_builder_step(debug_info_builder_t *builder) { while (builder->remaining_reps == 0 && !builder->locked) { debug_info_builder_parse(builder); - debug_loc_info_t info; + debug_loc_info_t info; info.file_id = builder->current_file_id; info.line = builder->current_line; info.symbol_scope = builder->current_scope; @@ -151,7 +151,7 @@ void debug_info_builder_begin_func(debug_info_builder_t *builder, i32 func_idx) void debug_info_builder_end_func(debug_info_builder_t *builder) { if (!builder->data) return; - + assert(!builder->locked); debug_info_builder_step(builder); assert(builder->locked); diff --git a/interpreter/src/debug/debug_runtime_values.c b/interpreter/src/debug/debug_runtime_values.c index 88f05765..ea2fe2a6 100644 --- a/interpreter/src/debug/debug_runtime_values.c +++ b/interpreter/src/debug/debug_runtime_values.c @@ -36,7 +36,7 @@ static bool lookup_stack_pointer(debug_runtime_value_builder_t *builder, u32 *ou return false; } - *out = stack_ptr.u32; + *out = stack_ptr.u32; return true; } @@ -51,20 +51,20 @@ static void append_value_from_memory_with_type(debug_runtime_value_builder_t *bu case debug_type_primitive_kind_void: WRITE("void"); break; case debug_type_primitive_kind_signed_integer: switch (type->size) { - case 1: WRITE_FORMAT("%hhd", *(i8 *) base); break; - case 2: WRITE_FORMAT("%hd", *(i16 *) base); break; - case 4: WRITE_FORMAT("%d", *(i32 *) base); break; - case 8: WRITE_FORMAT("%ld", *(i64 *) base); break; + case 1: WRITE_FORMAT("%hhd", *(i8 *) base); break; + case 2: WRITE_FORMAT("%hd", *(i16 *) base); break; + case 4: WRITE_FORMAT("%d", *(i32 *) base); break; + case 8: WRITE_FORMAT("%lld", *(i64 *) base); break; default: WRITE("(err)"); break; } break; case debug_type_primitive_kind_unsigned_integer: switch (type->size) { - case 1: WRITE_FORMAT("%hhu", *(u8 *) base); break; - case 2: WRITE_FORMAT("%hu", *(u16 *) base); break; - case 4: WRITE_FORMAT("%u", *(u32 *) base); break; - case 8: WRITE_FORMAT("%lu", *(u64 *) base); break; + case 1: WRITE_FORMAT("%hhu", *(u8 *) base); break; + case 2: WRITE_FORMAT("%hu", *(u16 *) base); break; + case 4: WRITE_FORMAT("%u", *(u32 *) base); break; + case 8: WRITE_FORMAT("%llu", *(u64 *) base); break; default: WRITE("(err)"); break; } break; @@ -101,8 +101,8 @@ static void append_value_from_memory_with_type(debug_runtime_value_builder_t *bu switch (type->modifier.modifier_kind) { case debug_type_modifier_kind_pointer: switch (type->size) { - case 4: WRITE_FORMAT("0x%x", *(u32 *) base); break; - case 8: WRITE_FORMAT("0x%lx", *(u64 *) base); break; + case 4: WRITE_FORMAT("0x%x", *(u32 *) base); break; + case 8: WRITE_FORMAT("0x%llx", *(u64 *) base); break; default: WRITE("(err)"); break; } break; @@ -176,7 +176,7 @@ static void append_value_from_memory_with_type(debug_runtime_value_builder_t *bu if (name) { WRITE(name); } else { - WRITE_FORMAT("%lu", value); + WRITE_FORMAT("%llu", value); } break; @@ -190,7 +190,7 @@ static void append_value_from_memory_with_type(debug_runtime_value_builder_t *bu } else { debug_type_union_variant_t *uv = &type->onion.variants[variant]; - WRITE_FORMAT("%s(", uv->name); + WRITE_FORMAT("%s(", uv->name); append_value_from_memory_with_type(builder, bh_pointer_add(base, type->onion.tag_size), uv->type); WRITE(")"); } @@ -244,20 +244,20 @@ static void append_ovm_value_with_type(debug_runtime_value_builder_t *builder, o case debug_type_primitive_kind_void: WRITE("void"); break; case debug_type_primitive_kind_signed_integer: switch (type->size) { - case 1: WRITE_FORMAT("%hhd", value.i8); break; - case 2: WRITE_FORMAT("%hd", value.i16); break; - case 4: WRITE_FORMAT("%d", value.i32); break; - case 8: WRITE_FORMAT("%ld", value.i64); break; + case 1: WRITE_FORMAT("%hhd", value.i8); break; + case 2: WRITE_FORMAT("%hd", value.i16); break; + case 4: WRITE_FORMAT("%d", value.i32); break; + case 8: WRITE_FORMAT("%lld", value.i64); break; default: WRITE("(err)"); break; } break; case debug_type_primitive_kind_unsigned_integer: switch (type->size) { - case 1: WRITE_FORMAT("%hhu", value.u8); break; - case 2: WRITE_FORMAT("%hu", value.u16); break; - case 4: WRITE_FORMAT("%u", value.u32); break; - case 8: WRITE_FORMAT("%lu", value.u64); break; + case 1: WRITE_FORMAT("%hhu", value.u8); break; + case 2: WRITE_FORMAT("%hu", value.u16); break; + case 4: WRITE_FORMAT("%u", value.u32); break; + case 8: WRITE_FORMAT("%llu", value.u64); break; default: WRITE("(err)"); break; } break; @@ -285,7 +285,7 @@ static void append_ovm_value_with_type(debug_runtime_value_builder_t *builder, o case debug_type_modifier_kind_pointer: switch (type->size) { case 4: WRITE_FORMAT("0x%x", value.u32); break; - case 8: WRITE_FORMAT("0x%lx", value.u64); break; + case 8: WRITE_FORMAT("0x%llx", value.u64); break; default: WRITE("(err)"); break; } break; @@ -320,7 +320,7 @@ static void append_ovm_value_with_type(debug_runtime_value_builder_t *builder, o case debug_type_kind_enum: { char *name = debug_info_type_enum_find_name(builder->info, type_id, value.u64); if (name == NULL) { - WRITE_FORMAT("%lu", value.u64); + WRITE_FORMAT("%llu", value.u64); } else { WRITE(name); } @@ -409,13 +409,13 @@ static u32 get_subvalues_for_type(debug_runtime_value_builder_t *builder, u32 ty case debug_type_kind_modifier: if (t->modifier.modifier_kind == debug_type_modifier_kind_pointer) return 1; return 0; - + case debug_type_kind_alias: return get_subvalues_for_type(builder, t->alias.aliased_type); case debug_type_kind_structure: return t->structure.member_count; - + case debug_type_kind_array: return t->array.count; case debug_type_kind_slice: { @@ -434,7 +434,7 @@ static u32 get_subvalues_for_type(debug_runtime_value_builder_t *builder, u32 ty u32 stack_ptr; if (!lookup_stack_pointer(builder, &stack_ptr)) { return 0; - } + } u32 *ptr_loc = bh_pointer_add(builder->state->ovm_engine->memory, stack_ptr + builder->base_loc + 4); count = *ptr_loc; @@ -451,6 +451,8 @@ static u32 get_subvalues_for_type(debug_runtime_value_builder_t *builder, u32 ty return count; } + + default: return 0; } } @@ -500,7 +502,7 @@ void debug_runtime_value_build_descend(debug_runtime_value_builder_t *builder, u u32 stack_ptr; if (!lookup_stack_pointer(builder, &stack_ptr)) { goto bad_case; - } + } u32 *ptr_loc = bh_pointer_add(builder->state->ovm_engine->memory, stack_ptr + builder->base_loc); builder->base_loc = *ptr_loc; @@ -580,7 +582,7 @@ void debug_runtime_value_build_descend(debug_runtime_value_builder_t *builder, u u32 stack_ptr; if (!lookup_stack_pointer(builder, &stack_ptr)) { goto bad_case; - } + } u32 *data_loc = bh_pointer_add(builder->state->ovm_engine->memory, stack_ptr + builder->base_loc); @@ -600,7 +602,7 @@ void debug_runtime_value_build_descend(debug_runtime_value_builder_t *builder, u bad_case: builder->base_loc_kind = debug_sym_loc_unknown; - return; + return; } bool debug_runtime_value_build_step(debug_runtime_value_builder_t *builder) { @@ -632,7 +634,7 @@ bool debug_runtime_value_build_step(debug_runtime_value_builder_t *builder) { u32 stack_ptr; if (!lookup_stack_pointer(builder, &stack_ptr)) { return false; - } + } u32 *data_loc = bh_pointer_add(builder->state->ovm_engine->memory, stack_ptr + builder->base_loc); @@ -730,7 +732,7 @@ bool debug_runtime_value_build_step(debug_runtime_value_builder_t *builder) { u32 stack_ptr; if (!lookup_stack_pointer(builder, &stack_ptr)) { return false; - } + } u32 *data_loc = bh_pointer_add(builder->state->ovm_engine->memory, stack_ptr + builder->base_loc); diff --git a/interpreter/src/debug/debug_thread.c b/interpreter/src/debug/debug_thread.c index 89a60d66..7e6fb2b3 100644 --- a/interpreter/src/debug/debug_thread.c +++ b/interpreter/src/debug/debug_thread.c @@ -49,7 +49,7 @@ static void send_string(debug_state_t *debug, const char *str) { } } -static void send_bytes(debug_state_t *debug, const char *bytes, unsigned int len) { +static void send_bytes(debug_state_t *debug, const unsigned char *bytes, unsigned int len) { bh_buffer_write_u32(&debug->send_buffer, len); bh_buffer_append(&debug->send_buffer, bytes, len); } @@ -186,7 +186,7 @@ static DEBUG_COMMAND_HANDLER(debug_command_brk) { debug_file_info_t file_info; debug_info_lookup_file_by_name(debug->info, filename, &file_info); - + debug_breakpoint_t bp; bp.id = debug->next_breakpoint_id++; bp.instr = instr; @@ -239,7 +239,7 @@ static DEBUG_COMMAND_HANDLER(debug_command_clr_brk) { static DEBUG_COMMAND_HANDLER(debug_command_step) { u32 granularity = parse_int(debug, ctx); u32 thread_id = parse_int(debug, ctx); - + if (granularity == 1) { ON_THREAD(thread_id) { (*thread)->pause_at_next_line = true; @@ -420,7 +420,7 @@ static DEBUG_COMMAND_HANDLER(debug_command_vars) { debug_runtime_value_build_clear(&builder); } - + // This is important, as when doing a layered query, only one symbol // should be considered, and once found, should immediate stop. goto syms_done; @@ -445,7 +445,7 @@ static DEBUG_COMMAND_HANDLER(debug_command_vars) { symbol_scope = sym_scope.parent; } - + syms_done: send_int(debug, 1); debug_runtime_value_build_free(&builder); @@ -470,7 +470,7 @@ static DEBUG_COMMAND_HANDLER(debug_command_memory_write) { u32 addr = parse_int(debug, ctx); u32 count; - u8 *data = parse_bytes(debug, ctx, &count); + u8 *data = (u8 *)parse_bytes(debug, ctx, &count); memcpy(bh_pointer_add(debug->ovm_engine->memory, addr), data, count); send_response_header(debug, msg_id); @@ -570,7 +570,7 @@ void *__debug_thread_entry(void * data) { // Set up socket listener // Wait for initial connection/handshake before entering loop. - + debug->listen_socket_fd = socket(AF_UNIX, SOCK_STREAM, 0); struct sockaddr_un local_addr, remote_addr; @@ -585,7 +585,7 @@ void *__debug_thread_entry(void * data) { listen(debug->listen_socket_fd, 1); len = sizeof(struct sockaddr_un); - debug->client_fd = accept(debug->listen_socket_fd, (void * restrict)&remote_addr, &len); + debug->client_fd = accept(debug->listen_socket_fd, (void * restrict)&remote_addr, (socklen_t * restrict)&len); close(debug->listen_socket_fd); diff --git a/interpreter/src/vm/code_builder.c b/interpreter/src/vm/code_builder.c index 20c99658..e770c486 100644 --- a/interpreter/src/vm/code_builder.c +++ b/interpreter/src/vm/code_builder.c @@ -5,7 +5,7 @@ // #define BUILDER_DEBUG #if defined(BUILDER_DEBUG) - #define POP_VALUE(b) (bh_arr_length((b)->execution_stack) == 0 ? (assert(("invalid value pop", 0)), 0) : bh_arr_pop((b)->execution_stack)) + #define POP_VALUE(b) (bh_arr_length((b)->execution_stack) == 0 ? (assert(0 && "invalid value pop"), 0) : bh_arr_pop((b)->execution_stack)) #else #define POP_VALUE(b) bh_arr_pop((b)->execution_stack) #endif @@ -109,7 +109,7 @@ void ovm_code_builder_pop_label_target(ovm_code_builder_t *builder) { ovm_program_modify_static_int(builder->program, patch.static_arr, patch.static_idx, br_delta); break; } - + bh_arr_fastdelete(builder->branch_patches, i); i--; } @@ -193,7 +193,7 @@ void ovm_code_builder_add_imm(ovm_code_builder_t *builder, u32 ovm_type, void *i case OVM_TYPE_I64: imm_instr.l = *(u64 *) imm; break; case OVM_TYPE_F32: imm_instr.f = *(f32 *) imm; break; case OVM_TYPE_F64: imm_instr.d = *(f64 *) imm; break; - default: assert(("bad ovm type for add_imm", 0)); + default: assert(0 && "bad ovm type for add_imm"); } debug_info_builder_emit_location(builder->debug_builder); @@ -283,12 +283,12 @@ void ovm_code_builder_add_branch_table(ovm_code_builder_t *builder, i32 count, i instrs[3].r = tmp_register; instrs[3].a = table_idx; instrs[3].b = index_register; - + instrs[4].full_instr = OVM_TYPED_INSTR(OVMI_BRI, OVM_TYPE_NONE); instrs[4].a = tmp_register; - + POP_VALUE(builder); - + fori (i, 0, count) { branch_patch_t patch; patch.kind = branch_patch_static_idx; @@ -476,7 +476,7 @@ void ovm_code_builder_add_register_set(ovm_code_builder_t *builder, i32 reg_idx) ovm_instr_t *last_instr = &bh_arr_last(builder->program->code); if (OVM_INSTR_INSTR(*last_instr) == OVMI_MOV) { if (IS_TEMPORARY_VALUE(builder, last_instr->r) && last_instr->r == LAST_VALUE(builder)) { - + last_instr->full_instr = OVM_TYPED_INSTR(OVMI_REG_SET, OVM_TYPE_NONE); last_instr->r = reg_idx; @@ -538,7 +538,7 @@ void ovm_code_builder_add_cmpxchg(ovm_code_builder_t *builder, u32 ovm_type, i32 // PUSH_VALUE(builder, cmpxchg_instr.r); // return; // } - + ovm_instr_t instrs[3] = {0}; // imm.i32 %n, offset instrs[0].full_instr = OVM_TYPED_INSTR(OVMI_IMM, OVM_TYPE_I32); diff --git a/interpreter/src/vm/disasm.c b/interpreter/src/vm/disasm.c index 70f29c66..531d4bd8 100644 --- a/interpreter/src/vm/disasm.c +++ b/interpreter/src/vm/disasm.c @@ -157,11 +157,11 @@ void ovm_disassemble(ovm_program_t *program, u32 instr_addr, bh_buffer *instr_te case instr_format_imm: switch (OVM_INSTR_TYPE(*instr)) { case OVM_TYPE_I8: formatted = snprintf(buf, 255, "%%%d, %hhd", instr->r, instr->i); break; - case OVM_TYPE_I16: formatted = snprintf(buf, 255, "%%%d, %hd", instr->r, instr->i); break; - case OVM_TYPE_I32: formatted = snprintf(buf, 255, "%%%d, %d", instr->r, instr->i); break; - case OVM_TYPE_I64: formatted = snprintf(buf, 255, "%%%d, %ld", instr->r, instr->l); break; - case OVM_TYPE_F32: formatted = snprintf(buf, 255, "%%%d, %f", instr->r, instr->f); break; - case OVM_TYPE_F64: formatted = snprintf(buf, 255, "%%%d, %lf", instr->r, instr->d); break; + case OVM_TYPE_I16: formatted = snprintf(buf, 255, "%%%d, %hd", instr->r, instr->i); break; + case OVM_TYPE_I32: formatted = snprintf(buf, 255, "%%%d, %d", instr->r, instr->i); break; + case OVM_TYPE_I64: formatted = snprintf(buf, 255, "%%%d, %lld", instr->r, instr->l); break; + case OVM_TYPE_F32: formatted = snprintf(buf, 255, "%%%d, %f", instr->r, instr->f); break; + case OVM_TYPE_F64: formatted = snprintf(buf, 255, "%%%d, %lf", instr->r, instr->d); break; } break; @@ -190,6 +190,8 @@ void ovm_disassemble(ovm_program_t *program, u32 instr_addr, bh_buffer *instr_te formatted = snprintf(buf, 255, "%%%d", instr->a); } break; + + default: break; } if (formatted > 0) { diff --git a/interpreter/src/vm/vm.c b/interpreter/src/vm/vm.c index 2de011a5..cde89285 100644 --- a/interpreter/src/vm/vm.c +++ b/interpreter/src/vm/vm.c @@ -32,10 +32,10 @@ static inline void ovm_print_val(ovm_value_t val) { switch (val.type) { - case OVM_TYPE_I32: printf("i32[%d]", val.i32); break; - case OVM_TYPE_I64: printf("i64[%ld]", val.i64); break; - case OVM_TYPE_F32: printf("f32[%f]", val.f32); break; - case OVM_TYPE_F64: printf("f64[%lf]", val.f64); break; + case OVM_TYPE_I32: printf("i32[%d]", val.i32); break; + case OVM_TYPE_I64: printf("i64[%lld]", val.i64); break; + case OVM_TYPE_F32: printf("f32[%f]", val.f32); break; + case OVM_TYPE_F64: printf("f64[%lf]", val.f64); break; } } diff --git a/interpreter/src/wasm/global.c b/interpreter/src/wasm/global.c index 81370eb7..f0f66c16 100644 --- a/interpreter/src/wasm/global.c +++ b/interpreter/src/wasm/global.c @@ -20,10 +20,10 @@ wasm_globaltype_t *wasm_global_type(const wasm_global_t *global) { } void wasm_global_get(const wasm_global_t *global, wasm_val_t *value) { - assert(("unimplemented", 0)); + assert(0 && "unimplemented"); } void wasm_global_set(wasm_global_t *global, const wasm_val_t *value) { - assert(("unimplemented", 0)); + assert(0 && "unimplemented"); } diff --git a/interpreter/src/wasm/instance.c b/interpreter/src/wasm/instance.c index 733acf5e..cfd60745 100644 --- a/interpreter/src/wasm/instance.c +++ b/interpreter/src/wasm/instance.c @@ -47,7 +47,7 @@ struct ovm_wasm_binding { (o).f64 = (w).of.f64; \ break; \ \ - default: assert(("invalid wasm value type for conversion", 0)); \ + default: assert(0 && "invalid wasm value type for conversion"); \ } } #define OVM_TO_WASM(o, w) { \ @@ -95,7 +95,7 @@ struct ovm_wasm_binding { \ default: \ printf("INVALID: %d\n", (o).type); \ - assert(("invalid ovm value type for conversion", 0)); \ + assert(0 && "invalid ovm value type for conversion"); \ } } static wasm_trap_t *wasm_to_ovm_func_call_binding(void *vbinding, const wasm_val_vec_t *args, wasm_val_vec_t *res) { @@ -174,7 +174,7 @@ static void prepare_instance(wasm_instance_t *instance, const wasm_extern_vec_t if (!wasm_functype_equals( wasm_externtype_as_functype(importtype->type), wasm_externtype_as_functype((wasm_externtype_t *) imports->data[i]->type))) { - assert(("MISMATCHED FUNCTION TYPE", 0)); + assert(0 && "MISMATCHED FUNCTION TYPE"); } wasm_func_t *func = wasm_extern_as_func(imports->data[i]); @@ -185,7 +185,7 @@ static void prepare_instance(wasm_instance_t *instance, const wasm_extern_vec_t binding->result_count = functype->results.size; binding->func = func; binding->param_buffer.data = bh_alloc(ovm_store->arena_allocator, sizeof(wasm_val_t) * binding->param_count); - binding->param_buffer.size = binding->param_count; + binding->param_buffer.size = binding->param_count; ovm_state_register_external_func(ovm_state, importtype->external_func_idx, ovm_to_wasm_func_call_binding, binding); break; @@ -237,8 +237,8 @@ static void prepare_instance(wasm_instance_t *instance, const wasm_extern_vec_t binding->program = ovm_program; binding->state = ovm_state; binding->instance = instance; - - wasm_func_t *func = wasm_func_new_with_env(instance->store, instance->module->functypes.data[i], + + wasm_func_t *func = wasm_func_new_with_env(instance->store, instance->module->functypes.data[i], wasm_to_ovm_func_call_binding, binding, NULL); bh_arr_push(instance->funcs, func); diff --git a/interpreter/src/wasm/module_parsing.h b/interpreter/src/wasm/module_parsing.h index 84965a57..d80a13d6 100644 --- a/interpreter/src/wasm/module_parsing.h +++ b/interpreter/src/wasm/module_parsing.h @@ -3,7 +3,7 @@ // // This file is not to be compile like normal. // It is instead included in wasm/module.c -// +// // Currently, this file has a lot of code that directly manipulates // the code builder object. I would like to move this into the API // for the code builder itself, to make it more portable and easy @@ -20,7 +20,7 @@ struct build_context { int func_table_arr_idx; int next_external_func_idx; - + debug_info_builder_t debug_builder; // This will be set/reset for every code (function) entry. @@ -52,21 +52,21 @@ static inline wasm_valkind_t parse_valtype(build_context *ctx) { case 0x7e: return WASM_I64; case 0x7d: return WASM_F32; case 0x7c: return WASM_F64; - case 0x7b: assert(("SIMD values are not currently supported", 0)); + case 0x7b: assert(0 && "SIMD values are not currently supported"); case 0x70: return WASM_FUNCREF; case 0x6F: return WASM_ANYREF; - default: assert(("Invalid valtype.", 0)); + default: assert(0 && "Invalid valtype."); } } static void parse_custom_section(build_context *ctx) { - unsigned int section_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int section_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); unsigned int end_of_section = ctx->offset + section_size; struct wasm_custom_section_t cs; char name[256]; - unsigned int name_len = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int name_len = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); if (name_len < sizeof(name) - 1) { strncpy(name, &((char *) ctx->binary.data)[ctx->offset], name_len); name[name_len] = '\0'; @@ -81,23 +81,23 @@ static void parse_custom_section(build_context *ctx) { shput(ctx->module->custom_sections, name, cs); if (!strcmp(name, "ovm_debug_files")) { - debug_info_import_file_info(ctx->debug_builder.info, cs.data, cs.size); + debug_info_import_file_info(ctx->debug_builder.info, (u8 *)cs.data, cs.size); } if (!strcmp(name, "ovm_debug_funcs")) { - debug_info_import_func_info(ctx->debug_builder.info, cs.data, cs.size); + debug_info_import_func_info(ctx->debug_builder.info, (u8 *)cs.data, cs.size); } if (!strcmp(name, "ovm_debug_ops")) { - debug_info_builder_prepare(&ctx->debug_builder, cs.data); + debug_info_builder_prepare(&ctx->debug_builder, (u8 *)cs.data); } if (!strcmp(name, "ovm_debug_syms")) { - debug_info_import_sym_info(ctx->debug_builder.info, cs.data, cs.size); + debug_info_import_sym_info(ctx->debug_builder.info, (u8 *)cs.data, cs.size); } if (!strcmp(name, "ovm_debug_types")) { - debug_info_import_type_info(ctx->debug_builder.info, cs.data, cs.size); + debug_info_import_type_info(ctx->debug_builder.info, (u8 *)cs.data, cs.size); } } @@ -105,22 +105,22 @@ static void parse_custom_section(build_context *ctx) { } static void parse_type_section(build_context *ctx) { - unsigned int section_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); - unsigned int type_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int section_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + unsigned int type_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_functype_vec_new_uninitialized(&ctx->module->type_section, type_count); fori (i, 0, (int) type_count) { assert(CONSUME_BYTE(ctx) == 0x60); // @ReportError - unsigned int param_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int param_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_valtype_vec_t param_types; wasm_valtype_vec_new_uninitialized(¶m_types, param_count); fori (p, 0, (int) param_count) { param_types.data[p] = wasm_valtype_new(parse_valtype(ctx)); } - unsigned int result_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int result_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_valtype_vec_t result_types; wasm_valtype_vec_new_uninitialized(&result_types, result_count); fori (p, 0, (int) result_count) { @@ -136,9 +136,9 @@ static wasm_limits_t parse_limits(build_context *ctx) { bool maximum_present = CONSUME_BYTE(ctx) & 0x01; wasm_limits_t limits; - limits.min = uleb128_to_uint(ctx->binary.data, &ctx->offset); + limits.min = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); if (maximum_present) { - limits.max = uleb128_to_uint(ctx->binary.data, &ctx->offset); + limits.max = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); } else { limits.max = wasm_limits_max_default; } @@ -169,18 +169,18 @@ static wasm_globaltype_t *parse_globaltype(build_context *ctx) { } static void parse_import_section(build_context *ctx) { - unsigned int section_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); - unsigned int import_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int section_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + unsigned int import_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_importtype_vec_new_uninitialized(&ctx->module->imports, import_count); fori (i, 0, (int) import_count) { - unsigned int mod_name_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int mod_name_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_byte_vec_t module_name; wasm_byte_vec_new_uninitialized(&module_name, mod_name_size); fori (n, 0, mod_name_size) module_name.data[n] = CONSUME_BYTE(ctx); - unsigned int import_name_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int import_name_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_byte_vec_t import_name; wasm_byte_vec_new_uninitialized(&import_name, import_name_size); fori (n, 0, import_name_size) import_name.data[n] = CONSUME_BYTE(ctx); @@ -188,7 +188,7 @@ static void parse_import_section(build_context *ctx) { wasm_externtype_t *import_type = NULL; switch (CONSUME_BYTE(ctx)) { case 0x00: { - unsigned int type_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int type_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); import_type = wasm_functype_as_externtype(ctx->module->type_section.data[type_idx]); break; } @@ -215,20 +215,20 @@ static void parse_import_section(build_context *ctx) { } static void parse_func_section(build_context *ctx) { - unsigned int section_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); - unsigned int func_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int section_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + unsigned int func_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_functype_vec_new_uninitialized(&ctx->module->functypes, func_count); fori (i, 0, (int) func_count) { - unsigned int index = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int index = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); ctx->module->functypes.data[i] = ctx->module->type_section.data[index]; } } static void parse_table_section(build_context *ctx) { - unsigned int section_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); - unsigned int table_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int section_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + unsigned int table_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_tabletype_vec_new_uninitialized(&ctx->module->tabletypes, table_count); @@ -238,8 +238,8 @@ static void parse_table_section(build_context *ctx) { } static void parse_memory_section(build_context *ctx) { - unsigned int section_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); - unsigned int memory_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int section_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + unsigned int memory_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_memorytype_vec_new_uninitialized(&ctx->module->memorytypes, memory_count); @@ -249,8 +249,8 @@ static void parse_memory_section(build_context *ctx) { } static void parse_global_section(build_context *ctx) { - unsigned int section_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); - unsigned int global_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int section_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + unsigned int global_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_globaltype_vec_new_uninitialized(&ctx->module->globaltypes, global_count); @@ -260,13 +260,13 @@ static void parse_global_section(build_context *ctx) { switch (CONSUME_BYTE(ctx)) { case 0x41: { gt->type.global.initial_value.kind = WASM_I32; - gt->type.global.initial_value.of.i32 = (i32) uleb128_to_uint(ctx->binary.data, &ctx->offset); + gt->type.global.initial_value.of.i32 = (i32) uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); break; } case 0x42: { gt->type.global.initial_value.kind = WASM_I64; - gt->type.global.initial_value.of.i64 = (i64) uleb128_to_uint(ctx->binary.data, &ctx->offset); + gt->type.global.initial_value.of.i64 = (i64) uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); break; } @@ -292,19 +292,19 @@ static void parse_global_section(build_context *ctx) { } static void parse_export_section(build_context *ctx) { - unsigned int section_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); - unsigned int export_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int section_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + unsigned int export_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_exporttype_vec_new_uninitialized(&ctx->module->exports, export_count); fori (i, 0, (int) export_count) { - unsigned int export_name_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int export_name_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_byte_vec_t export_name; wasm_byte_vec_new_uninitialized(&export_name, export_name_size); fori (n, 0, export_name_size) export_name.data[n] = CONSUME_BYTE(ctx); unsigned int type = CONSUME_BYTE(ctx); - unsigned int idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_externtype_t *export_type = NULL; @@ -325,13 +325,13 @@ static void parse_export_section(build_context *ctx) { } static void parse_start_section(build_context *ctx) { - unsigned int section_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); - ctx->module->start_func_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int section_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + ctx->module->start_func_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); } static void parse_elem_section(build_context *ctx) { - unsigned int section_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); - unsigned int elem_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int section_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + unsigned int elem_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); // This is going to be a mess... // I am only going to handle the case of a single, active, offset-0, @@ -343,23 +343,23 @@ static void parse_elem_section(build_context *ctx) { assert(CONSUME_BYTE(ctx) == 0x00); assert(CONSUME_BYTE(ctx) == 0x0B); - unsigned int entry_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int entry_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); ctx->module->elem_count = entry_count; ctx->module->elem_entries = malloc(sizeof(unsigned int) * entry_count); fori (i, 0, (int) entry_count) { - ctx->module->elem_entries[i] = uleb128_to_uint(ctx->binary.data, &ctx->offset); + ctx->module->elem_entries[i] = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); } - ctx->func_table_arr_idx = ovm_program_register_static_ints(ctx->program, entry_count, ctx->module->elem_entries); + ctx->func_table_arr_idx = ovm_program_register_static_ints(ctx->program, entry_count, (int *)ctx->module->elem_entries); assert(ctx->module->tabletypes.size == 1); ctx->module->tabletypes.data[0]->type.table.static_arr = ctx->func_table_arr_idx; } static void parse_data_section(build_context *ctx) { - unsigned int section_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); - unsigned int data_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int section_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + unsigned int data_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); if (ctx->module->data_count_present) { assert(ctx->module->data_count == data_count); @@ -379,12 +379,12 @@ static void parse_data_section(build_context *ctx) { char data_type = CONSUME_BYTE(ctx); if (data_type == 0x00) { assert(CONSUME_BYTE(ctx) == 0x41); - data_entry.offset = uleb128_to_uint(ctx->binary.data, &ctx->offset); + data_entry.offset = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); data_entry.passive = false; assert(CONSUME_BYTE(ctx) == 0x0B); } - data_entry.length = uleb128_to_uint(ctx->binary.data, &ctx->offset); + data_entry.length = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); data_entry.data = bh_pointer_add(ctx->binary.data, ctx->offset); ctx->offset += data_entry.length; @@ -393,8 +393,8 @@ static void parse_data_section(build_context *ctx) { } static void parse_data_count_section(build_context *ctx) { - unsigned int section_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); - unsigned int data_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int section_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + unsigned int data_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); ctx->module->data_count_present = true; ctx->module->data_count = data_count; @@ -409,7 +409,7 @@ static void parse_data_count_section(build_context *ctx) { static void parse_expression(build_context *ctx); static void parse_fc_instruction(build_context *ctx) { - int instr_num = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int instr_num = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); switch (instr_num) { case 0: ovm_code_builder_add_unop (&ctx->builder, OVM_TYPED_INSTR(OVMI_CVT_F32, OVM_TYPE_I32)); break; @@ -422,7 +422,7 @@ static void parse_fc_instruction(build_context *ctx) { case 7: ovm_code_builder_add_unop (&ctx->builder, OVM_TYPED_INSTR(OVMI_CVT_F64, OVM_TYPE_I64)); break; case 8: { - int dataidx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int dataidx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); assert(CONSUME_BYTE(ctx) == 0x00); ovm_code_builder_add_imm(&ctx->builder, OVM_TYPE_I32, &dataidx); @@ -445,19 +445,19 @@ static void parse_fc_instruction(build_context *ctx) { break; } - default: assert(("UNHANDLED FC INSTRUCTION", 0)); + default: assert(0 && "UNHANDLED FC INSTRUCTION"); } } static void parse_fe_instruction(build_context *ctx) { - int instr_num = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int instr_num = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); switch (instr_num) { #define LOAD_CASE(num, type) \ case num : { \ - int alignment = uleb128_to_uint(ctx->binary.data, &ctx->offset); \ - int offset = uleb128_to_uint(ctx->binary.data, &ctx->offset); \ + int alignment = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); \ + int offset = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); \ ovm_code_builder_add_atomic_load(&ctx->builder, type, offset); \ break; \ } @@ -474,8 +474,8 @@ static void parse_fe_instruction(build_context *ctx) { #define STORE_CASE(num, type) \ case num : { \ - int alignment = uleb128_to_uint(ctx->binary.data, &ctx->offset); \ - int offset = uleb128_to_uint(ctx->binary.data, &ctx->offset); \ + int alignment = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); \ + int offset = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); \ ovm_code_builder_add_atomic_store(&ctx->builder, type, offset); \ break; \ } @@ -492,8 +492,8 @@ static void parse_fe_instruction(build_context *ctx) { #define CMPXCHG_CASE(num, type) \ case num : { \ - int alignment = uleb128_to_uint(ctx->binary.data, &ctx->offset); \ - int offset = uleb128_to_uint(ctx->binary.data, &ctx->offset); \ + int alignment = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); \ + int offset = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); \ ovm_code_builder_add_cmpxchg(&ctx->builder, type, offset); \ break; \ } @@ -508,7 +508,7 @@ static void parse_fe_instruction(build_context *ctx) { #undef CMPXCHG_CASE - default: assert(("UNHANDLED ATOMIC INSTRUCTION... SORRY :/", 0)); + default: assert(0 && "UNHANDLED ATOMIC INSTRUCTION... SORRY :/"); } } @@ -564,7 +564,7 @@ static void parse_instruction(build_context *ctx) { } case 0x0C: { - int label_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int label_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); label_target_t target = ovm_code_builder_wasm_target_idx(&ctx->builder, label_idx); ovm_code_builder_add_branch(&ctx->builder, target.idx); @@ -572,7 +572,7 @@ static void parse_instruction(build_context *ctx) { } case 0x0D: { - int label_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int label_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); label_target_t target = ovm_code_builder_wasm_target_idx(&ctx->builder, label_idx); ovm_code_builder_add_cond_branch(&ctx->builder, target.idx, true, false); @@ -582,16 +582,16 @@ static void parse_instruction(build_context *ctx) { case 0x0E: { // Branch tables are the most complicated thing ever :/ - int entry_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int entry_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); int *entries = bh_alloc_array(bh_heap_allocator(), int, entry_count); fori (i, 0, entry_count) { - int label_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int label_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); label_target_t target = ovm_code_builder_wasm_target_idx(&ctx->builder, label_idx); entries[i] = target.idx; } - int default_entry_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int default_entry_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); label_target_t target = ovm_code_builder_wasm_target_idx(&ctx->builder, default_entry_idx); int default_entry = target.idx; @@ -605,7 +605,7 @@ static void parse_instruction(build_context *ctx) { } case 0x10: { - int func_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int func_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_functype_t *functype = wasm_module_index_functype(ctx->module, func_idx); int param_count = functype->type.func.params.size; @@ -615,8 +615,8 @@ static void parse_instruction(build_context *ctx) { } case 0x11: { - int type_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); - int table_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int type_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + int table_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); assert(table_idx == 0); wasm_functype_t *functype = ctx->module->type_section.data[type_idx]; @@ -633,39 +633,39 @@ static void parse_instruction(build_context *ctx) { case 0x1B: assert(0); case 0x20: { - int local_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int local_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); ovm_code_builder_add_local_get(&ctx->builder, local_idx); break; } case 0x21: { - int local_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int local_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); ovm_code_builder_add_local_set(&ctx->builder, local_idx); break; } case 0x22: { - int local_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int local_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); ovm_code_builder_add_local_tee(&ctx->builder, local_idx); break; } case 0x23: { - int global_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int global_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); ovm_code_builder_add_register_get(&ctx->builder, global_idx); break; } case 0x24: { - int global_idx = uleb128_to_uint(ctx->binary.data, &ctx->offset); + int global_idx = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); ovm_code_builder_add_register_set(&ctx->builder, global_idx); break; } #define LOAD_CASE(num, type, convert, convert_op, convert_type) \ case num : { \ - int alignment = uleb128_to_uint(ctx->binary.data, &ctx->offset); \ - int offset = uleb128_to_uint(ctx->binary.data, &ctx->offset); \ + int alignment = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); \ + int offset = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); \ ovm_code_builder_add_load(&ctx->builder, type, offset); \ if (convert) ovm_code_builder_add_unop(&ctx->builder, OVM_TYPED_INSTR(convert_op, convert_type)); \ break; \ @@ -691,8 +691,8 @@ static void parse_instruction(build_context *ctx) { #define STORE_CASE(num, type) \ case num : { \ - int alignment = uleb128_to_uint(ctx->binary.data, &ctx->offset); \ - int offset = uleb128_to_uint(ctx->binary.data, &ctx->offset); \ + int alignment = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); \ + int offset = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); \ ovm_code_builder_add_store(&ctx->builder, type, offset); \ break; \ } @@ -723,7 +723,7 @@ static void parse_instruction(build_context *ctx) { } case 0x41: { - i64 value = leb128_to_int(ctx->binary.data, &ctx->offset); + i64 value = leb128_to_int((u8 *)ctx->binary.data, (i32 *)&ctx->offset); // NOTE: This assumes a little-endian CPU as the address is assumes // to be the least significant byte. @@ -732,7 +732,7 @@ static void parse_instruction(build_context *ctx) { } case 0x42: { - i64 value = leb128_to_int(ctx->binary.data, &ctx->offset); + i64 value = leb128_to_int((u8 *)ctx->binary.data, (i32 *)&ctx->offset); ovm_code_builder_add_imm(&ctx->builder, OVM_TYPE_I64, &value); break; } @@ -901,7 +901,7 @@ static void parse_instruction(build_context *ctx) { case 0xFC: parse_fc_instruction(ctx); break; case 0xFE: parse_fe_instruction(ctx); break; - default: assert(("UNHANDLED INSTRUCTION", 0)); + default: assert(0 && "UNHANDLED INSTRUCTION"); } } @@ -912,22 +912,22 @@ static void parse_expression(build_context *ctx) { } static void parse_code_section(build_context *ctx) { - unsigned int section_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); - unsigned int code_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int section_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + unsigned int code_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); assert(ctx->module->functypes.size == code_count); ctx->module->memory_init_external_idx = ctx->next_external_func_idx++; - + // HACK HACK HACK THIS IS SUCH A BAD WAY OF DOING THIS ctx->module->memory_init_idx = bh_arr_length(ctx->program->funcs) + code_count; fori (i, 0, (int) code_count) { - unsigned int code_size = uleb128_to_uint(ctx->binary.data, &ctx->offset); - unsigned int local_sections_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int code_size = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); + unsigned int local_sections_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); unsigned int total_locals = 0; fori (j, 0, (int) local_sections_count) { - unsigned int local_count = uleb128_to_uint(ctx->binary.data, &ctx->offset); + unsigned int local_count = uleb128_to_uint((u8 *)ctx->binary.data, (i32 *)&ctx->offset); wasm_valkind_t valtype = parse_valtype(ctx); total_locals += local_count; @@ -976,6 +976,6 @@ static void parse_section(build_context *ctx) { case WASM_CODE_SECTION: parse_code_section(ctx); break; case WASM_DATA_SECTION: parse_data_section(ctx); break; case WASM_DATAC_SECTION: parse_data_count_section(ctx); break; - default: assert(("bad section number", 0)); break; + default: assert(0 && "bad section number"); break; } } diff --git a/shared/lib/darwin_arm64/lib/libovmwasm.a b/shared/lib/darwin_arm64/lib/libovmwasm.a new file mode 100644 index 0000000000000000000000000000000000000000..2d08d29de393dfd684f461f3426dba9892d71af1 GIT binary patch literal 322696 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 literal 0 HcmV?d00001 -- 2.25.1