authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2020-12-22 10:57:58+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2020-12-22 10:57:58+01:00
log34663abc9090d7b3afc2bc83d159c1d950b23e1d
tree574197640525af263c0679763634c70a7e635cbb
parentf106a46fd293605fab7cb776d36bb22cc482e692

macho: pad out LINKEDIT upto specified filesize


1 files changed, 4 insertions(+), 1 deletions(-)

src/link/MachO.zig+4-1
...@@ -2280,6 +2280,7 @@ fn updateLinkeditSegmentSizes(self: *MachO) !void {...@@ -2280,6 +2280,7 @@ fn updateLinkeditSegmentSizes(self: *MachO) !void {
2280 const filesize = final_offset - linkedit_segment.inner.fileoff;2280 const filesize = final_offset - linkedit_segment.inner.fileoff;
2281 linkedit_segment.inner.filesize = filesize;2281 linkedit_segment.inner.filesize = filesize;
2282 linkedit_segment.inner.vmsize = mem.alignForwardGeneric(u64, filesize, self.page_size);2282 linkedit_segment.inner.vmsize = mem.alignForwardGeneric(u64, filesize, self.page_size);
2283 try self.base.file.?.pwriteAll(&[_]u8{ 0 }, final_offset);
2283 self.load_commands_dirty = true;2284 self.load_commands_dirty = true;
2284}2285}
22852286
...@@ -2299,7 +2300,9 @@ fn writeLoadCommands(self: *MachO) !void {...@@ -2299,7 +2300,9 @@ fn writeLoadCommands(self: *MachO) !void {
2299 try lc.write(writer);2300 try lc.write(writer);
2300 }2301 }
23012302
2302 try self.base.file.?.pwriteAll(buffer, @sizeOf(macho.mach_header_64));2303 const off = @sizeOf(macho.mach_header_64);
2304 log.debug("writing {} load commands from 0x{x} to 0x{x}", .{self.load_commands.items.len, off, off + sizeofcmds});
2305 try self.base.file.?.pwriteAll(buffer, off);
2303 self.load_commands_dirty = false;2306 self.load_commands_dirty = false;
2304}2307}
23052308