authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-12-12 14:03:13+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2021-12-12 14:03:13+01:00
loga76910b691179390b122b9c42a5575c00d40583a
treec644b3255c21b351dad5cbad657a838762e3aa43
parentdbfcebf8d88b91c5a85366da09a4ce69c0bb5dc6
parent4ce62087502c2b1eca7d5721f3face5bc4fe538b

Merge branch 'motiejus-framework-not-found'


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

src/link/MachO.zig+9-2
...@@ -572,6 +572,9 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void {...@@ -572,6 +572,9 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void {
572 try self.populateMissingMetadata();572 try self.populateMissingMetadata();
573 }573 }
574574
575 var lib_not_found = false;
576 var framework_not_found = false;
577
575 if (needs_full_relink) {578 if (needs_full_relink) {
576 for (self.objects.items) |*object| {579 for (self.objects.items) |*object| {
577 object.free(self.base.allocator, self);580 object.free(self.base.allocator, self);
...@@ -688,7 +691,6 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void {...@@ -688,7 +691,6 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void {
688 }691 }
689692
690 var libs = std.ArrayList([]const u8).init(arena);693 var libs = std.ArrayList([]const u8).init(arena);
691 var lib_not_found = false;
692 for (search_lib_names.items) |lib_name| {694 for (search_lib_names.items) |lib_name| {
693 // Assume ld64 default: -search_paths_first695 // Assume ld64 default: -search_paths_first
694 // Look in each directory for a dylib (stub first), and then for archive696 // 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 {...@@ -752,7 +754,6 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void {
752 }754 }
753 }755 }
754756
755 var framework_not_found = false;
756 for (self.base.options.frameworks) |framework| {757 for (self.base.options.frameworks) |framework| {
757 for (&[_][]const u8{ ".tbd", ".dylib", "" }) |ext| {758 for (&[_][]const u8{ ".tbd", ".dylib", "" }) |ext| {
758 if (try resolveFramework(arena, framework_dirs.items, framework, ext)) |full_path| {759 if (try resolveFramework(arena, framework_dirs.items, framework, ext)) |full_path| {
...@@ -928,6 +929,12 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void {...@@ -928,6 +929,12 @@ pub fn flushModule(self: *MachO, comp: *Compilation) !void {
928 if (self.unresolved.count() > 0) {929 if (self.unresolved.count() > 0) {
929 return error.UndefinedSymbolReference;930 return error.UndefinedSymbolReference;
930 }931 }
932 if (lib_not_found) {
933 return error.LibraryNotFound;
934 }
935 if (framework_not_found) {
936 return error.FrameworkNotFound;
937 }
931938
932 try self.createTentativeDefAtoms();939 try self.createTentativeDefAtoms();
933 try self.parseObjectsIntoAtoms();940 try self.parseObjectsIntoAtoms();