aboutsummaryrefslogtreecommitdiff
path: root/src/link/Dwarf.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-12-08 11:08:00 +0100
committerJakub Konka <kubkon@jakubkonka.com>2022-12-09 09:24:25 +0100
commitfa44c73c1efe2dae62c80a7785b496d83ddac8d1 (patch)
tree6c546e402c978c930ab9c1f773067f5bce16ae4a /src/link/Dwarf.zig
parentb14e580ad87d70bb14a3bf942bfac41acf1b51b8 (diff)
downloadzig-fa44c73c1efe2dae62c80a7785b496d83ddac8d1.tar.gz
zig-fa44c73c1efe2dae62c80a7785b496d83ddac8d1.zip
dwarf: move any remaining section growth to dsym
Diffstat (limited to 'src/link/Dwarf.zig')
-rw-r--r--src/link/Dwarf.zig13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/link/Dwarf.zig b/src/link/Dwarf.zig
index e5ee8569fb..15df5c84c3 100644
--- a/src/link/Dwarf.zig
+++ b/src/link/Dwarf.zig
@@ -2336,16 +2336,13 @@ pub fn writeDbgLineHeader(self: *Dwarf, module: *Module) !void {
const delta = needed_with_padding - dbg_line_prg_off;
const d_sym = self.bin_file.cast(File.MachO).?.getDebugSymbols().?;
- const debug_line_sect = d_sym.getSectionPtr(d_sym.debug_line_section_index.?);
- const needed_size = debug_line_sect.size + delta;
-
- if (needed_size > d_sym.allocatedSize(debug_line_sect.offset)) {
- @panic("TODO grow debug_line section");
- }
+ const sect_index = d_sym.debug_line_section_index.?;
+ const needed_size = @intCast(u32, d_sym.getSection(sect_index).size + delta);
+ try d_sym.growSection(sect_index, needed_size);
var src_fn = self.dbg_line_fn_first.?;
const last_fn = self.dbg_line_fn_last.?;
- const file_pos = debug_line_sect.offset + src_fn.off;
+ const file_pos = d_sym.getSection(sect_index).offset + src_fn.off;
var buffer = try gpa.alloc(u8, last_fn.off + last_fn.len - src_fn.off);
defer gpa.free(buffer);
@@ -2354,8 +2351,6 @@ pub fn writeDbgLineHeader(self: *Dwarf, module: *Module) !void {
try d_sym.file.pwriteAll(buffer, file_pos + delta);
- debug_line_sect.size = needed_size;
-
while (true) {
src_fn.off += delta;