dsym: recalculate DWARF segment size when finalizing
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user