From 9ddb1c50928ad202991369a87b58ce65f40428f2 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 14 Jan 2025 20:23:15 -0800 Subject: [PATCH] wasm linker: implement --export-table --- src/link/Wasm/Flush.zig | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/link/Wasm/Flush.zig b/src/link/Wasm/Flush.zig index 5dbf20ce7e..4e88ad7913 100644 --- a/src/link/Wasm/Flush.zig +++ b/src/link/Wasm/Flush.zig @@ -710,7 +710,15 @@ pub fn finish(f: *Flush, wasm: *Wasm) !void { } exports_len += wasm.function_exports.entries.len; - // No table exports. + if (wasm.export_table and f.indirect_function_table.entries.len > 0) { + const name = "__indirect_function_table"; + const index: u32 = @intCast(wasm.tables.getIndex(.__indirect_function_table).?); + try leb.writeUleb128(binary_writer, @as(u32, @intCast(name.len))); + try binary_bytes.appendSlice(gpa, name); + try binary_bytes.append(gpa, @intFromEnum(std.wasm.ExternalKind.table)); + try leb.writeUleb128(binary_writer, index); + exports_len += 1; + } if (export_memory) { const name = "memory";