aboutsummaryrefslogtreecommitdiff
path: root/src/link/MachO.zig
diff options
context:
space:
mode:
authorJakub Konka <kubkon@jakubkonka.com>2022-07-25 18:26:06 +0200
committerJakub Konka <kubkon@jakubkonka.com>2022-07-25 22:46:43 -0700
commit20ea44ef107828d76692e610e1ca62ee231fb4a9 (patch)
tree3cdd9e3816f57c9b5e2469af238c69e2520e68cb /src/link/MachO.zig
parentcff5d9c805aa3433cc2562c3cb29bd3201817214 (diff)
downloadzig-20ea44ef107828d76692e610e1ca62ee231fb4a9.tar.gz
zig-20ea44ef107828d76692e610e1ca62ee231fb4a9.zip
macho: fix memory leak and refactor Target usage
Diffstat (limited to 'src/link/MachO.zig')
-rw-r--r--src/link/MachO.zig18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/link/MachO.zig b/src/link/MachO.zig
index 0f2cbfa844..218a866c01 100644
--- a/src/link/MachO.zig
+++ b/src/link/MachO.zig
@@ -1415,7 +1415,7 @@ fn parseObject(self: *MachO, path: []const u8) !bool {
.mtime = mtime,
};
- object.parse(self.base.allocator, self.base.options.target) catch |err| switch (err) {
+ object.parse(self.base.allocator, self.base.options.target.cpu.arch) catch |err| switch (err) {
error.EndOfStream, error.NotObject => {
object.deinit(self.base.allocator);
return false;
@@ -1443,7 +1443,7 @@ fn parseArchive(self: *MachO, path: []const u8, force_load: bool) !bool {
.file = file,
};
- archive.parse(self.base.allocator, self.base.options.target) catch |err| switch (err) {
+ archive.parse(self.base.allocator, self.base.options.target.cpu.arch) catch |err| switch (err) {
error.EndOfStream, error.NotArchive => {
archive.deinit(self.base.allocator);
return false;
@@ -1463,7 +1463,11 @@ fn parseArchive(self: *MachO, path: []const u8, force_load: bool) !bool {
}
for (offsets.keys()) |off| {
const object = try self.objects.addOne(self.base.allocator);
- object.* = try archive.parseObject(self.base.allocator, self.base.options.target, off);
+ object.* = try archive.parseObject(
+ self.base.allocator,
+ self.base.options.target.cpu.arch,
+ off,
+ );
}
} else {
try self.archives.append(self.base.allocator, archive);
@@ -1511,7 +1515,7 @@ pub fn parseDylib(
dylib.parse(
self.base.allocator,
- self.base.options.target,
+ self.base.options.target.cpu.arch,
dylib_id,
dependent_libs,
) catch |err| switch (err) {
@@ -3126,7 +3130,11 @@ fn resolveSymbolsInArchives(self: *MachO) !void {
const object_id = @intCast(u16, self.objects.items.len);
const object = try self.objects.addOne(self.base.allocator);
- object.* = try archive.parseObject(self.base.allocator, self.base.options.target, offsets.items[0]);
+ object.* = try archive.parseObject(
+ self.base.allocator,
+ self.base.options.target.cpu.arch,
+ offsets.items[0],
+ );
try self.resolveSymbolsInObject(object, object_id);
continue :loop;