diff --git a/src/link/MachO.zig b/src/link/MachO.zig index 9983235d4f1d..43d6733132ce 100644 --- a/src/link/MachO.zig +++ b/src/link/MachO.zig @@ -572,6 +572,9 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void { try self.populateMissingMetadata(); } + var lib_not_found = false; + var framework_not_found = false; + if (needs_full_relink) { for (self.objects.items) |*object| { object.free(self.base.allocator, self); @@ -688,7 +691,6 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void { } var libs = std.ArrayList([]const u8).init(arena); - var lib_not_found = false; for (search_lib_names.items) |lib_name| { // Assume ld64 default: -search_paths_first // Look in each directory for a dylib (stub first), and then for archive @@ -752,7 +754,6 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void { } } - var framework_not_found = false; for (self.base.options.frameworks) |framework| { for (&[_][]const u8{ ".tbd", ".dylib", "" }) |ext| { if (try resolveFramework(arena, framework_dirs.items, framework, ext)) |full_path| { @@ -928,6 +929,12 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void { if (self.unresolved.count() > 0) { return error.UndefinedSymbolReference; } + if (lib_not_found) { + return error.LibraryNotFound; + } + if (framework_not_found) { + return error.FrameworkNotFound; + } try self.createTentativeDefAtoms(); try self.parseObjectsIntoAtoms();