aboutsummaryrefslogtreecommitdiff
path: root/src/link/MachO/ZigObject.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/link/MachO/ZigObject.zig')
-rw-r--r--src/link/MachO/ZigObject.zig8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/link/MachO/ZigObject.zig b/src/link/MachO/ZigObject.zig
index abaa4fe6f7..061f268892 100644
--- a/src/link/MachO/ZigObject.zig
+++ b/src/link/MachO/ZigObject.zig
@@ -471,7 +471,13 @@ pub fn flushModule(self: *ZigObject, macho_file: *MachO) !void {
self.debug_strtab_dirty = false;
}
} else {
- // TODO: relocatable
+ const sect_index = macho_file.debug_str_sect_index.?;
+ if (self.debug_strtab_dirty or dw.strtab.buffer.items.len != macho_file.sections.items(.header)[sect_index].size) {
+ const needed_size = @as(u32, @intCast(dw.strtab.buffer.items.len));
+ try macho_file.growSection(sect_index, needed_size);
+ try macho_file.base.file.?.pwriteAll(dw.strtab.buffer.items, macho_file.sections.items(.header)[sect_index].offset);
+ self.debug_strtab_dirty = false;
+ }
}
}