diff options
Diffstat (limited to 'src/mods')
-rw-r--r-- | src/mods/parse.zig | 23 |
1 files changed, 13 insertions, 10 deletions
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 => { |