authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-12-04 13:40:05+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-12-04 16:58:45+01:00
loga84b67468c1494107686642b8d2c4b6a2aee5148
tree83090a58ad45517145ef61009e7a232a2ca0f7d4
parent280dad0283652aa176d0a67b8d90e9edc0869c5b

dsym: recalculate DWARF segment size when finalizing


2 files changed, 9 insertions(+), 7 deletions(-)

src/link/Dwarf.zig+2-2
...@@ -1172,7 +1172,7 @@ pub fn commitDeclState(...@@ -1172,7 +1172,7 @@ pub fn commitDeclState(
1172 if (needed_size > d_sym.allocatedSize(debug_line_sect.offset)) {1172 if (needed_size > d_sym.allocatedSize(debug_line_sect.offset)) {
1173 const new_offset = d_sym.findFreeSpace(needed_size, 1);1173 const new_offset = d_sym.findFreeSpace(needed_size, 1);
1174 const existing_size = last_src_fn.off;1174 const existing_size = last_src_fn.off;
1175 log.debug("moving __debug_line section: {} bytes from 0x{x} to 0x{x}", .{1175 std.log.scoped(.dsym).debug("moving __debug_line section: {} bytes from 0x{x} to 0x{x}", .{
1176 existing_size,1176 existing_size,
1177 debug_line_sect.offset,1177 debug_line_sect.offset,
1178 new_offset,1178 new_offset,
...@@ -1468,7 +1468,7 @@ fn writeDeclDebugInfo(self: *Dwarf, file: *File, atom: *Atom, dbg_info_buf: []co...@@ -1468,7 +1468,7 @@ fn writeDeclDebugInfo(self: *Dwarf, file: *File, atom: *Atom, dbg_info_buf: []co
1468 if (needed_size > d_sym.allocatedSize(debug_info_sect.offset)) {1468 if (needed_size > d_sym.allocatedSize(debug_info_sect.offset)) {
1469 const new_offset = d_sym.findFreeSpace(needed_size, 1);1469 const new_offset = d_sym.findFreeSpace(needed_size, 1);
1470 const existing_size = last_decl.off;1470 const existing_size = last_decl.off;
1471 log.debug("moving __debug_info section: {} bytes from 0x{x} to 0x{x}", .{1471 std.log.scoped(.dsym).debug("moving __debug_info section: {} bytes from 0x{x} to 0x{x}", .{
1472 existing_size,1472 existing_size,
1473 debug_info_sect.offset,1473 debug_info_sect.offset,
1474 new_offset,1474 new_offset,
src/link/MachO/DebugSymbols.zig+7-5
...@@ -332,11 +332,13 @@ fn finalizeDwarfSegment(self: *DebugSymbols, macho_file: *MachO) void {...@@ -332,11 +332,13 @@ fn finalizeDwarfSegment(self: *DebugSymbols, macho_file: *MachO) void {
332 break :blk last_seg.vmaddr + last_seg.vmsize;332 break :blk last_seg.vmaddr + last_seg.vmsize;
333 };333 };
334 const dwarf_segment = self.getDwarfSegmentPtr();334 const dwarf_segment = self.getDwarfSegmentPtr();
335 const aligned_size = mem.alignForwardGeneric(335
336 u64,336 var file_size: u64 = 0;
337 dwarf_segment.filesize,337 for (self.sections.items) |header| {
338 self.page_size,338 file_size = @max(file_size, header.offset + header.size);
339 );339 }
340
341 const aligned_size = mem.alignForwardGeneric(u64, file_size, self.page_size);
340 dwarf_segment.vmaddr = base_vmaddr;342 dwarf_segment.vmaddr = base_vmaddr;
341 dwarf_segment.filesize = aligned_size;343 dwarf_segment.filesize = aligned_size;
342 dwarf_segment.vmsize = aligned_size;344 dwarf_segment.vmsize = aligned_size;