diff --git a/src/link/MachO.zig b/src/link/MachO.zig index 3eb34cf415..d4a30040fc 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -2231,8 +2231,11 @@ fn resolveSymbols(self: *MachO) !void { const object_id = @intCast(u16, self.objects.items.len); const object = try self.objects.addOne(self.base.allocator); - object.* = try archive.extractObject(self.base.allocator, offsets.items[0]); - try object.parse(self.base.allocator, self.base.options.target.cpu.arch); + object.* = try archive.parseObject( + self.base.allocator, + self.base.options.target.cpu.arch, + offsets.items[0], + ); try self.resolveSymbolsInObject(object_id); continue :loop; diff --git a/src/link/MachO/Archive.zig b/src/link/MachO/Archive.zig index f02ad0cfa9..6959dbac89 100644 --- a/src/link/MachO/Archive.zig +++ b/src/link/MachO/Archive.zig @@ -215,8 +215,8 @@ fn parseTableOfContents(self: *Archive, allocator: *Allocator, reader: anytype) } } -pub fn extractObject(self: Archive, allocator: *Allocator, offset: u32) !Object { - var reader = self.file.reader(); +pub fn parseObject(self: Archive, allocator: *Allocator, arch: Arch, offset: u32) !Object { + const reader = self.file.reader(); try reader.context.seekTo(offset + self.library_offset); const object_header = try reader.readStruct(ar_hdr); @@ -244,6 +244,7 @@ pub fn extractObject(self: Archive, allocator: *Allocator, offset: u32) !Object .mtime = try self.header.?.date(), }; + try object.parse(allocator, arch); try reader.context.seekTo(0); return object;