authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-04-21 22:42:31+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2024-04-22 15:14:56+02:00
log6fd09f8d2d50525e3f58213e44f815ed577c2864
tree7b0f2935500b27e680e4f9d062b6fcffaa8bf0c4
parenta7e4d1722616ba9fabfae8b830902e3651c645e4

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


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

src/link/MachO.zig+21-21
......@@ -800,6 +800,14 @@ fn dumpArgv(self: *MachO, comp: *Compilation) !void {
800800 try argv.appendSlice(&.{ "-e", entry_name });
801801 }
802802
803 try argv.append("-o");
804 try argv.append(full_out_path);
805
806 if (self.base.isDynLib() and self.base.allow_shlib_undefined) {
807 try argv.append("-undefined");
808 try argv.append("dynamic_lookup");
809 }
810
803811 for (comp.objects) |obj| {
804812 // TODO: verify this
805813 if (obj.must_link) {
......@@ -816,19 +824,11 @@ fn dumpArgv(self: *MachO, comp: *Compilation) !void {
816824 try argv.append(p);
817825 }
818826
819 if (comp.compiler_rt_lib) |lib| try argv.append(lib.full_object_path);
820 if (comp.compiler_rt_obj) |obj| try argv.append(obj.full_object_path);
821
822 if (comp.config.link_libcpp) {
823 try argv.append(comp.libcxxabi_static_lib.?.full_object_path);
824 try argv.append(comp.libcxx_static_lib.?.full_object_path);
827 for (self.lib_dirs) |lib_dir| {
828 const arg = try std.fmt.allocPrint(arena, "-L{s}", .{lib_dir});
829 try argv.append(arg);
825830 }
826831
827 try argv.append("-o");
828 try argv.append(full_out_path);
829
830 try argv.append("-lSystem");
831
832832 for (comp.system_libs.keys()) |l_name| {
833833 const info = comp.system_libs.get(l_name).?;
834834 const arg = if (info.needed)
......@@ -840,9 +840,9 @@ fn dumpArgv(self: *MachO, comp: *Compilation) !void {
840840 try argv.append(arg);
841841 }
842842
843 for (self.lib_dirs) |lib_dir| {
844 const arg = try std.fmt.allocPrint(arena, "-L{s}", .{lib_dir});
845 try argv.append(arg);
843 for (self.framework_dirs) |f_dir| {
844 try argv.append("-F");
845 try argv.append(f_dir);
846846 }
847847
848848 for (self.frameworks) |framework| {
......@@ -856,15 +856,15 @@ fn dumpArgv(self: *MachO, comp: *Compilation) !void {
856856 try argv.append(arg);
857857 }
858858
859 for (self.framework_dirs) |f_dir| {
860 try argv.append("-F");
861 try argv.append(f_dir);
859 if (comp.config.link_libcpp) {
860 try argv.append(comp.libcxxabi_static_lib.?.full_object_path);
861 try argv.append(comp.libcxx_static_lib.?.full_object_path);
862862 }
863863
864 if (self.base.isDynLib() and self.base.allow_shlib_undefined) {
865 try argv.append("-undefined");
866 try argv.append("dynamic_lookup");
867 }
864 try argv.append("-lSystem");
865
866 if (comp.compiler_rt_lib) |lib| try argv.append(lib.full_object_path);
867 if (comp.compiler_rt_obj) |obj| try argv.append(obj.full_object_path);
868868 }
869869
870870 Compilation.dump_argv(argv.items);
src/link/MachO/Object.zig-3
......@@ -1388,7 +1388,6 @@ pub fn calcSymtabSize(self: *Object, macho_file: *MachO) !void {
13881388
13891389pub fn calcStabsSize(self: *Object, macho_file: *MachO) error{Overflow}!void {
13901390 if (self.dwarf_info) |dw| {
1391 // TODO handle multiple CUs
13921391 const cu = dw.compile_units.items[0];
13931392 const comp_dir = try cu.getCompileDir(dw) orelse return;
13941393 const tu_name = try cu.getSourceFile(dw) orelse return;
......@@ -1507,7 +1506,6 @@ pub fn writeStabs(self: *const Object, macho_file: *MachO, ctx: anytype) error{O
15071506 var index = self.output_symtab_ctx.istab;
15081507
15091508 if (self.dwarf_info) |dw| {
1510 // TODO handle multiple CUs
15111509 const cu = dw.compile_units.items[0];
15121510 const comp_dir = try cu.getCompileDir(dw) orelse return;
15131511 const tu_name = try cu.getSourceFile(dw) orelse return;
......@@ -1755,7 +1753,6 @@ pub fn hasEhFrameRecords(self: Object) bool {
17551753 return self.cies.items.len > 0;
17561754}
17571755
1758/// TODO handle multiple CUs
17591756pub fn hasDebugInfo(self: Object) bool {
17601757 if (self.dwarf_info) |dw| {
17611758 return dw.compile_units.items.len > 0;