diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-09-09 13:08:58 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-09 13:08:58 +0200 |
| commit | 56b96cd61b0bdb7f5b11a5283fe6dd5b585ef10e (patch) | |
| tree | a19765f949fd7ce1d1d6fdbcf684a812d30e634a /src/link/Wasm.zig | |
| parent | a833bdcd7e6fcfee6e9cc33a3f7de78b16a36941 (diff) | |
| parent | 5006fb6846ccaa7edb1547588cf1aa08c8decf2b (diff) | |
| download | zig-56b96cd61b0bdb7f5b11a5283fe6dd5b585ef10e.tar.gz zig-56b96cd61b0bdb7f5b11a5283fe6dd5b585ef10e.zip | |
Merge pull request #12772 from ziglang/coff-basic-imports
coff: implement enough of the incremental linker to pass behavior and incremental tests on Windows
Diffstat (limited to 'src/link/Wasm.zig')
| -rw-r--r-- | src/link/Wasm.zig | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/link/Wasm.zig b/src/link/Wasm.zig index 0c5f0e810f..babed64755 100644 --- a/src/link/Wasm.zig +++ b/src/link/Wasm.zig @@ -695,12 +695,10 @@ pub fn deinit(self: *Wasm) void { gpa.free(segment_info.name); } for (self.objects.items) |*object| { - object.file.?.close(); object.deinit(gpa); } for (self.archives.items) |*archive| { - archive.file.close(); archive.deinit(gpa); } @@ -3218,14 +3216,26 @@ fn writeVecSectionHeader(file: fs.File, offset: u64, section: wasm.Section, size buf[0] = @enumToInt(section); leb.writeUnsignedFixed(5, buf[1..6], size); leb.writeUnsignedFixed(5, buf[6..], items); - try file.pwriteAll(&buf, offset); + + if (builtin.target.os.tag == .windows) { + // https://github.com/ziglang/zig/issues/12783 + const curr_pos = try file.getPos(); + try file.pwriteAll(&buf, offset); + try file.seekTo(curr_pos); + } else try file.pwriteAll(&buf, offset); } fn writeCustomSectionHeader(file: fs.File, offset: u64, size: u32) !void { var buf: [1 + 5]u8 = undefined; buf[0] = 0; // 0 = 'custom' section leb.writeUnsignedFixed(5, buf[1..6], size); - try file.pwriteAll(&buf, offset); + + if (builtin.target.os.tag == .windows) { + // https://github.com/ziglang/zig/issues/12783 + const curr_pos = try file.getPos(); + try file.pwriteAll(&buf, offset); + try file.seekTo(curr_pos); + } else try file.pwriteAll(&buf, offset); } fn emitLinkSection(self: *Wasm, file: fs.File, arena: Allocator, symbol_table: *std.AutoArrayHashMap(SymbolLoc, u32)) !void { |
