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 {
11121112
11131113 const parent = &self.dylibs.items[dep_id.parent];
11141114 const weak = parent.weak;
1115 const dirname = fs.path.dirname(dep_id.id.name) orelse "";
11151116 const basename = fs.path.basename(dep_id.id.name);
11161117
1117 var test_path = std.ArrayList(u8).init(gpa);
1118 defer test_path.deinit();
1118 var arena_allocator = std.heap.ArenaAllocator.init(gpa);
1119 defer arena_allocator.deinit();
1120 const arena = arena_allocator.allocator();
11191121
1120 var checked_paths = std.ArrayList([]const u8).init(gpa);
1121 defer checked_paths.deinit();
1122 var test_path = std.ArrayList(u8).init(arena);
1123 var checked_paths = std.ArrayList([]const u8).init(arena);
11221124
11231125 success: {
11241126 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;
11261129 }
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
11301133 try self.reportMissingLibraryError(
11311134 checked_paths.items,