From d5d2f1b8d237ed47b3f65aa4f28290c734d41dae Mon Sep 17 00:00:00 2001 From: Lorenzo Torres Date: Wed, 19 Mar 2025 20:33:13 +0100 Subject: Fixed import section parsing --- src/mods/parse.zig | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'src/mods/parse.zig') diff --git a/src/mods/parse.zig b/src/mods/parse.zig index 7080e66..f125303 100644 --- a/src/mods/parse.zig +++ b/src/mods/parse.zig @@ -206,18 +206,21 @@ pub fn parseWasm(allocator: Allocator, stream: anytype) !Module { const b = try stream.readByte(); switch (@as(std.wasm.ExternalKind, @enumFromInt(b))) { - std.wasm.ExternalKind.function => try funcs.append(.{ .external = @intCast(i) }), + std.wasm.ExternalKind.function => { + try funcs.append(.{ .external = @intCast(i) }); + + const idx = try std.leb.readULEB128(u32, stream); + try imports.append(.{ + .module = mod, + .name = nm, + .signature = idx, + }); + }, // TODO: not implemented - std.wasm.ExternalKind.table => {}, - std.wasm.ExternalKind.memory => {}, - std.wasm.ExternalKind.global => {}, + std.wasm.ExternalKind.table => try stream.skipBytes(3, .{}), + std.wasm.ExternalKind.memory => try stream.skipBytes(2, .{}), + std.wasm.ExternalKind.global => try stream.skipBytes(2, .{}), } - const idx = try std.leb.readULEB128(u32, stream); - try imports.append(.{ - .module = mod, - .name = nm, - .signature = idx, - }); } }, std.wasm.Section.function => { -- cgit v1.2.3