aboutsummaryrefslogtreecommitdiff
path: root/src/link/Dwarf.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-12-08 15:41:44 +0100
committerJakub Konka <kubkon@jakubkonka.com>2022-12-09 09:24:25 +0100
commit9735953ae2ed04117181cf2cb6cde5cbfb8ca76a (patch)
treedd226cf805eb7ddd407891b7f4220e5a628fbd2e /src/link/Dwarf.zig
parent742aa942800e81b14ac1fc6d9a8b3cc33621e2b6 (diff)
downloadzig-9735953ae2ed04117181cf2cb6cde5cbfb8ca76a.tar.gz
zig-9735953ae2ed04117181cf2cb6cde5cbfb8ca76a.zip
wasm: implement moving debug_line program when header too big
Diffstat (limited to 'src/link/Dwarf.zig')
-rw-r--r--src/link/Dwarf.zig8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/link/Dwarf.zig b/src/link/Dwarf.zig
index 7e0cbb0358..d02f994eb7 100644
--- a/src/link/Dwarf.zig
+++ b/src/link/Dwarf.zig
@@ -2309,7 +2309,13 @@ pub fn writeDbgLineHeader(self: *Dwarf, module: *Module) !void {
try d_sym.file.pwriteAll(buffer, file_pos + delta);
},
- .wasm => @panic("TODO grow section"),
+ .wasm => {
+ const wasm_file = self.bin_file.cast(File.Wasm).?;
+ const debug_line = &wasm_file.debug_line_atom.?.code;
+ mem.copy(u8, buffer, debug_line.items[src_fn.off..]);
+ try debug_line.resize(self.allocator, debug_line.items.len + delta);
+ mem.copy(u8, debug_line.items[src_fn.off + delta ..], buffer);
+ },
else => unreachable,
}