Skip to content

Commit f2f1bb7

Browse files
committed
macho: update __DWARF sections before and after writing out __LINKEDIT
1 parent 92568a0 commit f2f1bb7

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

src/link/Dwarf.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1259,7 +1259,7 @@ fn writeDeclDebugInfo(self: *Dwarf, file: *File, atom: *Atom, dbg_info_buf: []co
12591259
debug_info_sect.addr = dwarf_segment.vmaddr + new_offset - dwarf_segment.fileoff;
12601260
}
12611261
debug_info_sect.size = needed_size;
1262-
d_sym.debug_line_header_dirty = true;
1262+
d_sym.debug_info_header_dirty = true;
12631263
}
12641264
const file_pos = debug_info_sect.offset + atom.off;
12651265
try pwriteDbgInfoNops(

src/link/MachO/DebugSymbols.zig

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,17 +63,16 @@ pub const Reloc = struct {
6363
pub fn populateMissingMetadata(self: *DebugSymbols, allocator: Allocator) !void {
6464
if (self.linkedit_segment_cmd_index == null) {
6565
self.linkedit_segment_cmd_index = @intCast(u8, self.segments.items.len);
66-
log.debug("found __LINKEDIT segment free space 0x{x} to 0x{x}", .{
67-
self.base.page_size,
68-
self.base.page_size * 2,
69-
});
66+
const fileoff = @intCast(u64, self.base.page_size);
67+
const needed_size = @intCast(u64, self.base.page_size) * 2;
68+
log.debug("found __LINKEDIT segment free space 0x{x} to 0x{x}", .{ fileoff, needed_size });
7069
// TODO this needs reworking
7170
try self.segments.append(allocator, .{
7271
.segname = makeStaticString("__LINKEDIT"),
73-
.vmaddr = self.base.page_size,
74-
.vmsize = self.base.page_size,
75-
.fileoff = self.base.page_size,
76-
.filesize = self.base.page_size,
72+
.vmaddr = fileoff,
73+
.vmsize = needed_size,
74+
.fileoff = fileoff,
75+
.filesize = needed_size,
7776
.maxprot = macho.PROT.READ,
7877
.initprot = macho.PROT.READ,
7978
.cmdsize = @sizeOf(macho.segment_command_64),
@@ -284,6 +283,7 @@ pub fn flushModule(self: *DebugSymbols, allocator: Allocator, options: link.Opti
284283
const lc_writer = lc_buffer.writer();
285284
var ncmds: u32 = 0;
286285

286+
self.updateDwarfSegment();
287287
try self.writeLinkeditSegmentData(&ncmds, lc_writer);
288288
self.updateDwarfSegment();
289289

0 commit comments

Comments
 (0)