authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-02-07 12:27:49+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-02-07 19:27:26+01:00
log35ac066f1d550445519aceb098d7e3f517f98c55
treeb19b574660062aa19b6cc20633c77c8cb06751ce
parentefa1c6124d167b3144c4d4b15ebf384130d35abd

macho: fix writing SYMDEF symtab size


1 files changed, 3 insertions(+), 2 deletions(-)

src/link/MachO/Archive.zig+3-2
...@@ -213,10 +213,11 @@ pub const ArSymtab = struct {...@@ -213,10 +213,11 @@ pub const ArSymtab = struct {
213 }213 }
214214
215 pub fn write(ar: ArSymtab, format: Format, macho_file: *MachO, writer: anytype) !void {215 pub fn write(ar: ArSymtab, format: Format, macho_file: *MachO, writer: anytype) !void {
216 const ptr_width = ptrWidth(format);
216 // Header217 // Header
217 try writeHeader(SYMDEF, ar.size(format), format, writer);218 try writeHeader(SYMDEF, ar.size(format), format, writer);
218 // Symtab size219 // Symtab size
219 try writeInt(format, ar.entries.items.len * 2, writer);220 try writeInt(format, ar.entries.items.len * 2 * ptr_width, writer);
220 // Symtab entries221 // Symtab entries
221 for (ar.entries.items) |entry| {222 for (ar.entries.items) |entry| {
222 const file_off = switch (macho_file.getFile(entry.file).?) {223 const file_off = switch (macho_file.getFile(entry.file).?) {
...@@ -230,7 +231,7 @@ pub const ArSymtab = struct {...@@ -230,7 +231,7 @@ pub const ArSymtab = struct {
230 try writeInt(format, file_off, writer);231 try writeInt(format, file_off, writer);
231 }232 }
232 // Strtab size233 // Strtab size
233 const strtab_size = mem.alignForward(u64, ar.strtab.buffer.items.len, ptrWidth(format));234 const strtab_size = mem.alignForward(u64, ar.strtab.buffer.items.len, ptr_width);
234 const padding = strtab_size - ar.strtab.buffer.items.len;235 const padding = strtab_size - ar.strtab.buffer.items.len;
235 try writeInt(format, strtab_size, writer);236 try writeInt(format, strtab_size, writer);
236 // Strtab237 // Strtab