diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2022-12-04 13:40:05 +0100 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2022-12-04 16:58:45 +0100 |
| commit | a84b67468c1494107686642b8d2c4b6a2aee5148 (patch) | |
| tree | 83090a58ad45517145ef61009e7a232a2ca0f7d4 /src | |
| parent | 280dad0283652aa176d0a67b8d90e9edc0869c5b (diff) | |
| download | zig-a84b67468c1494107686642b8d2c4b6a2aee5148.tar.gz zig-a84b67468c1494107686642b8d2c4b6a2aee5148.zip | |
dsym: recalculate DWARF segment size when finalizing
Diffstat (limited to 'src')
| -rw-r--r-- | src/link/Dwarf.zig | 4 | ||||
| -rw-r--r-- | src/link/MachO/DebugSymbols.zig | 12 |
2 files changed, 9 insertions, 7 deletions
diff --git a/src/link/Dwarf.zig b/src/link/Dwarf.zig index e9d59b1d02..3249bae86b 100644 --- a/src/link/Dwarf.zig +++ b/src/link/Dwarf.zig @@ -1172,7 +1172,7 @@ pub fn commitDeclState( if (needed_size > d_sym.allocatedSize(debug_line_sect.offset)) { const new_offset = d_sym.findFreeSpace(needed_size, 1); const existing_size = last_src_fn.off; - log.debug("moving __debug_line section: {} bytes from 0x{x} to 0x{x}", .{ + std.log.scoped(.dsym).debug("moving __debug_line section: {} bytes from 0x{x} to 0x{x}", .{ existing_size, debug_line_sect.offset, new_offset, @@ -1468,7 +1468,7 @@ fn writeDeclDebugInfo(self: *Dwarf, file: *File, atom: *Atom, dbg_info_buf: []co if (needed_size > d_sym.allocatedSize(debug_info_sect.offset)) { const new_offset = d_sym.findFreeSpace(needed_size, 1); const existing_size = last_decl.off; - log.debug("moving __debug_info section: {} bytes from 0x{x} to 0x{x}", .{ + std.log.scoped(.dsym).debug("moving __debug_info section: {} bytes from 0x{x} to 0x{x}", .{ existing_size, debug_info_sect.offset, new_offset, diff --git a/src/link/MachO/DebugSymbols.zig b/src/link/MachO/DebugSymbols.zig index 2791fcd7a2..95be0064cd 100644 --- a/src/link/MachO/DebugSymbols.zig +++ b/src/link/MachO/DebugSymbols.zig @@ -332,11 +332,13 @@ fn finalizeDwarfSegment(self: *DebugSymbols, macho_file: *MachO) void { break :blk last_seg.vmaddr + last_seg.vmsize; }; const dwarf_segment = self.getDwarfSegmentPtr(); - const aligned_size = mem.alignForwardGeneric( - u64, - dwarf_segment.filesize, - self.page_size, - ); + + var file_size: u64 = 0; + for (self.sections.items) |header| { + file_size = @max(file_size, header.offset + header.size); + } + + const aligned_size = mem.alignForwardGeneric(u64, file_size, self.page_size); dwarf_segment.vmaddr = base_vmaddr; dwarf_segment.filesize = aligned_size; dwarf_segment.vmsize = aligned_size; |
