diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2021-07-31 16:06:50 +0200 |
|---|---|---|
| committer | Jakub Konka <kubkon@jakubkonka.com> | 2021-08-01 09:06:56 +0200 |
| commit | 2e30bf23aa4515682038bc69ffc0b7d06b734be9 (patch) | |
| tree | 398094ba11df0ba0b771b705195766b541090619 | |
| parent | 0b15ba8334bc03b59a975e579aac01a6b3fc2109 (diff) | |
| download | zig-2e30bf23aa4515682038bc69ffc0b7d06b734be9.tar.gz zig-2e30bf23aa4515682038bc69ffc0b7d06b734be9.zip | |
macho: cleanup extracting objects from archives
| -rw-r--r-- | src/link/MachO.zig | 7 | ||||
| -rw-r--r-- | src/link/MachO/Archive.zig | 5 |
2 files changed, 8 insertions, 4 deletions
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; |
