authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-04-21 22:42:31+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-04-23 17:15:47-07:00
log8e0a802ea1bb34a3f82ff4d2f7e2d40fc57726f2
tree0f3252155a74c38fbfc7df6cb76c475fd27eabb3
parenteb5d67b146da7af693bc45f61e69070b0d6b27bb

link/macho: make --verbose-link represent the actual linker line


2 files changed, 21 insertions(+), 24 deletions(-)

src/link/MachO.zig+21-21
......@@ -797,6 +797,14 @@ fn dumpArgv(self: *MachO, comp: *Compilation) !void {
797797 try argv.appendSlice(&.{ "-e", entry_name });
798798 }
799799
800 try argv.append("-o");
801 try argv.append(full_out_path);
802
803 if (self.base.isDynLib() and self.base.allow_shlib_undefined) {
804 try argv.append("-undefined");
805 try argv.append("dynamic_lookup");
806 }
807
800808 for (comp.objects) |obj| {
801809 // TODO: verify this
802810 if (obj.must_link) {
......@@ -813,19 +821,11 @@ fn dumpArgv(self: *MachO, comp: *Compilation) !void {
813821 try argv.append(p);
814822 }
815823
816 if (comp.compiler_rt_lib) |lib| try argv.append(lib.full_object_path);
817 if (comp.compiler_rt_obj) |obj| try argv.append(obj.full_object_path);
818
819 if (comp.config.link_libcpp) {
820 try argv.append(comp.libcxxabi_static_lib.?.full_object_path);
821 try argv.append(comp.libcxx_static_lib.?.full_object_path);
824 for (self.lib_dirs) |lib_dir| {
825 const arg = try std.fmt.allocPrint(arena, "-L{s}", .{lib_dir});
826 try argv.append(arg);
822827 }
823828
824 try argv.append("-o");
825 try argv.append(full_out_path);
826
827 try argv.append("-lSystem");
828
829829 for (comp.system_libs.keys()) |l_name| {
830830 const info = comp.system_libs.get(l_name).?;
831831 const arg = if (info.needed)
......@@ -837,9 +837,9 @@ fn dumpArgv(self: *MachO, comp: *Compilation) !void {
837837 try argv.append(arg);
838838 }
839839
840 for (self.lib_dirs) |lib_dir| {
841 const arg = try std.fmt.allocPrint(arena, "-L{s}", .{lib_dir});
842 try argv.append(arg);
840 for (self.framework_dirs) |f_dir| {
841 try argv.append("-F");
842 try argv.append(f_dir);
843843 }
844844
845845 for (self.frameworks) |framework| {
......@@ -853,15 +853,15 @@ fn dumpArgv(self: *MachO, comp: *Compilation) !void {
853853 try argv.append(arg);
854854 }
855855
856 for (self.framework_dirs) |f_dir| {
857 try argv.append("-F");
858 try argv.append(f_dir);
856 if (comp.config.link_libcpp) {
857 try argv.append(comp.libcxxabi_static_lib.?.full_object_path);
858 try argv.append(comp.libcxx_static_lib.?.full_object_path);
859859 }
860860
861 if (self.base.isDynLib() and self.base.allow_shlib_undefined) {
862 try argv.append("-undefined");
863 try argv.append("dynamic_lookup");
864 }
861 try argv.append("-lSystem");
862
863 if (comp.compiler_rt_lib) |lib| try argv.append(lib.full_object_path);
864 if (comp.compiler_rt_obj) |obj| try argv.append(obj.full_object_path);
865865 }
866866
867867 Compilation.dump_argv(argv.items);
src/link/MachO/Object.zig-3
......@@ -1385,7 +1385,6 @@ pub fn calcSymtabSize(self: *Object, macho_file: *MachO) !void {
13851385
13861386pub fn calcStabsSize(self: *Object, macho_file: *MachO) error{Overflow}!void {
13871387 if (self.dwarf_info) |dw| {
1388 // TODO handle multiple CUs
13891388 const cu = dw.compile_units.items[0];
13901389 const comp_dir = try cu.getCompileDir(dw) orelse return;
13911390 const tu_name = try cu.getSourceFile(dw) orelse return;
......@@ -1504,7 +1503,6 @@ pub fn writeStabs(self: *const Object, macho_file: *MachO, ctx: anytype) error{O
15041503 var index = self.output_symtab_ctx.istab;
15051504
15061505 if (self.dwarf_info) |dw| {
1507 // TODO handle multiple CUs
15081506 const cu = dw.compile_units.items[0];
15091507 const comp_dir = try cu.getCompileDir(dw) orelse return;
15101508 const tu_name = try cu.getSourceFile(dw) orelse return;
......@@ -1750,7 +1748,6 @@ pub fn hasEhFrameRecords(self: Object) bool {
17501748 return self.cies.items.len > 0;
17511749}
17521750
1753/// TODO handle multiple CUs
17541751pub fn hasDebugInfo(self: Object) bool {
17551752 if (self.dwarf_info) |dw| {
17561753 return dw.compile_units.items.len > 0;