authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-09-01 00:30:26+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2023-09-01 00:30:26+02:00
log611ddd426c6802c71c182e38afd60826889989f2
treec18984b0efde273f3f42d7229c0af1aa078e1437
parent21c04b119e1cf3ca58010f0a94b350aa3cc85b41

macho: forgot to include dirname when resolving dependencies


1 files changed, 9 insertions(+), 6 deletions(-)

src/link/MachO.zig+9-6
...@@ -1112,20 +1112,23 @@ pub fn parseDependentLibs(self: *MachO, dependent_libs: anytype) !void {...@@ -1112,20 +1112,23 @@ pub fn parseDependentLibs(self: *MachO, dependent_libs: anytype) !void {
11121112
1113 const parent = &self.dylibs.items[dep_id.parent];1113 const parent = &self.dylibs.items[dep_id.parent];
1114 const weak = parent.weak;1114 const weak = parent.weak;
1115 const dirname = fs.path.dirname(dep_id.id.name) orelse "";
1115 const basename = fs.path.basename(dep_id.id.name);1116 const basename = fs.path.basename(dep_id.id.name);
11161117
1117 var test_path = std.ArrayList(u8).init(gpa);1118 var arena_allocator = std.heap.ArenaAllocator.init(gpa);
1118 defer test_path.deinit();1119 defer arena_allocator.deinit();
1120 const arena = arena_allocator.allocator();
11191121
1120 var checked_paths = std.ArrayList([]const u8).init(gpa);1122 var test_path = std.ArrayList(u8).init(arena);
1121 defer checked_paths.deinit();1123 var checked_paths = std.ArrayList([]const u8).init(arena);
11221124
1123 success: {1125 success: {
1124 if (self.base.options.sysroot) |root| {1126 if (self.base.options.sysroot) |root| {
1125 if (try accessLibPath(gpa, &test_path, &checked_paths, root, basename)) break :success;1127 const dir = try fs.path.join(arena, &[_][]const u8{ root, dirname });
1128 if (try accessLibPath(gpa, &test_path, &checked_paths, dir, basename)) break :success;
1126 }1129 }
11271130
1128 if (try accessLibPath(gpa, &test_path, &checked_paths, "", basename)) break :success;1131 if (try accessLibPath(gpa, &test_path, &checked_paths, dirname, basename)) break :success;
11291132
1130 try self.reportMissingLibraryError(1133 try self.reportMissingLibraryError(
1131 checked_paths.items,1134 checked_paths.items,