diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/glibc.zig | 3 | ||||
| -rw-r--r-- | src/link/Elf.zig | 15 |
2 files changed, 7 insertions, 11 deletions
diff --git a/src/glibc.zig b/src/glibc.zig index a1f02e2f11..7600f19503 100644 --- a/src/glibc.zig +++ b/src/glibc.zig @@ -40,10 +40,11 @@ pub const ABI = struct { } }; +// The order of the elements in this array defines the linking order. pub const libs = [_]Lib{ - .{ .name = "c", .sover = 6 }, .{ .name = "m", .sover = 6 }, .{ .name = "pthread", .sover = 0 }, + .{ .name = "c", .sover = 6 }, .{ .name = "dl", .sover = 2 }, .{ .name = "rt", .sover = 1 }, .{ .name = "ld", .sover = 2 }, diff --git a/src/link/Elf.zig b/src/link/Elf.zig index 4375661f64..c31a094093 100644 --- a/src/link/Elf.zig +++ b/src/link/Elf.zig @@ -1648,17 +1648,12 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void { // libc dep if (self.base.options.link_libc) { if (self.base.options.libc_installation != null) { - if (self.base.options.link_mode == .Static) { - try argv.append("--start-group"); - try argv.append("-lc"); - try argv.append("-lm"); - try argv.append("--end-group"); - } else { - try argv.append("-lc"); - try argv.append("-lm"); - } - + const needs_grouping = self.base.options.link_mode == .Static; + if (needs_grouping) try argv.append("--start-group"); + try argv.append("-lm"); try argv.append("-lpthread"); + try argv.append("-lc"); + if (needs_grouping) try argv.append("--end-group"); } else if (target.isGnuLibC()) { try argv.append(comp.libunwind_static_lib.?.full_object_path); for (glibc.libs) |lib| { |
