From 9e50f960875601dbaaf7245cedb7d9e429678aeb Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 1 Aug 2023 21:09:12 -0700 Subject: [PATCH] MachO: put system_libs into libs not positionals Putting them in both causes collisions because the same lib ends up being linked in twice. Putting them in positionals instead of libs makes their properties about needed and weak being ignored. --- src/link/MachO/zld.zig | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/link/MachO/zld.zig b/src/link/MachO/zld.zig index c2a814b319..40cf9b217a 100644 --- a/src/link/MachO/zld.zig +++ b/src/link/MachO/zld.zig @@ -3549,17 +3549,12 @@ pub fn linkWithZld(macho_file: *MachO, comp: *Compilation, prog_node: *std.Progr try positionals.append(comp.libcxx_static_lib.?.full_object_path); } - { - // Add all system library paths to positionals. - const vals = options.system_libs.values(); - try positionals.ensureUnusedCapacity(vals.len); - for (vals) |info| positionals.appendAssumeCapacity(info.path); - } - var libs = std.StringArrayHashMap(link.SystemLib).init(arena); - for (options.system_libs.values()) |v| { - try libs.put(v.path, v); + { + const vals = options.system_libs.values(); + try libs.ensureUnusedCapacity(vals.len); + for (vals) |v| libs.putAssumeCapacity(v.path, v); } try MachO.resolveLibSystem(arena, comp, options.sysroot, target, options.lib_dirs, &libs);