aboutsummaryrefslogtreecommitdiff
path: root/src/link/Elf.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-05-13 11:52:58 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-05-13 17:40:39 -0400
commit76a259799d5bac3effabd1df44c0dec9e4fa16d4 (patch)
tree8316f31b4728d4fa1a5b2a4024cf6fadd84a3981 /src/link/Elf.zig
parent173142cc3662e9ecd54c8e957763515712203f9c (diff)
downloadzig-76a259799d5bac3effabd1df44c0dec9e4fa16d4.tar.gz
zig-76a259799d5bac3effabd1df44c0dec9e4fa16d4.zip
stage2: only build and link libunwind when linking libc++
Diffstat (limited to 'src/link/Elf.zig')
-rw-r--r--src/link/Elf.zig10
1 files changed, 3 insertions, 7 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig
index fbbe40022a..b94e562eb7 100644
--- a/src/link/Elf.zig
+++ b/src/link/Elf.zig
@@ -1643,20 +1643,19 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void {
if (self.base.options.link_libcpp) {
try argv.append(comp.libcxxabi_static_lib.?.full_object_path);
try argv.append(comp.libcxx_static_lib.?.full_object_path);
+ if (target_util.libcNeedsLibUnwind(target)) {
+ try argv.append(comp.libunwind_static_lib.?.full_object_path);
+ }
}
// libc dep
if (self.base.options.link_libc) {
if (self.base.options.libc_installation != null) {
- if (target_util.libcNeedsLibUnwind(target)) {
- try argv.append(comp.libunwind_static_lib.?.full_object_path);
- }
const needs_grouping = self.base.options.link_mode == .Static;
if (needs_grouping) try argv.append("--start-group");
try argv.appendSlice(target_util.libcFullLinkFlags(target));
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| {
const lib_path = try std.fmt.allocPrint(arena, "{s}{c}lib{s}.so.{d}", .{
comp.glibc_so_files.?.dir_path, fs.path.sep, lib.name, lib.sover,
@@ -1665,13 +1664,10 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void {
}
try argv.append(try comp.get_libc_crt_file(arena, "libc_nonshared.a"));
} else if (target.isMusl()) {
- try argv.append(comp.libunwind_static_lib.?.full_object_path);
try argv.append(try comp.get_libc_crt_file(arena, switch (self.base.options.link_mode) {
.Static => "libc.a",
.Dynamic => "libc.so",
}));
- } else if (self.base.options.link_libcpp) {
- try argv.append(comp.libunwind_static_lib.?.full_object_path);
} else {
unreachable; // Compiler was supposed to emit an error for not being able to provide libc.
}