aboutsummaryrefslogtreecommitdiff
path: root/src/link
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2021-07-31 16:06:50 +0200
committerJakub Konka <kubkon@jakubkonka.com>2021-08-01 09:06:56 +0200
commit2e30bf23aa4515682038bc69ffc0b7d06b734be9 (patch)
tree398094ba11df0ba0b771b705195766b541090619 /src/link
parent0b15ba8334bc03b59a975e579aac01a6b3fc2109 (diff)
downloadzig-2e30bf23aa4515682038bc69ffc0b7d06b734be9.tar.gz
zig-2e30bf23aa4515682038bc69ffc0b7d06b734be9.zip
macho: cleanup extracting objects from archives
Diffstat (limited to 'src/link')
-rw-r--r--src/link/MachO.zig7
-rw-r--r--src/link/MachO/Archive.zig5
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;