aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-08-01 21:09:12 -0700
committerAndrew Kelley <andrew@ziglang.org>2023-08-03 09:52:14 -0700
commit9e50f960875601dbaaf7245cedb7d9e429678aeb (patch)
tree7c0327ad202c92969a2549560048e8c3d22a0e2d /src
parent2725c20a723f7c2eca455a081a4d499723a21ac4 (diff)
downloadzig-9e50f960875601dbaaf7245cedb7d9e429678aeb.tar.gz
zig-9e50f960875601dbaaf7245cedb7d9e429678aeb.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/link/MachO/zld.zig13
1 files 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);