stage2: build and provide libunwind when compiling for native libc

5ac91794cce8bd53916a378815be01e4365d53d9 made Zig link against the
system libc when targeting the native C ABI. However this made it stop
putting libunwind.a on the linker line when it needed to sometimes,
causing undefined symbols when linking against C++ code.
This commit is contained in:
Andrew Kelley 2021-05-12 22:25:20 -07:00
parent 344dc0cc0f
commit a7aa3ca66c
2 changed files with 3 additions and 1 deletions

View File

@ -3278,7 +3278,6 @@ fn wantBuildLibUnwindFromSource(comp: *Compilation) bool {
.Exe => true,
};
return comp.bin_file.options.link_libc and is_exe_or_dyn_lib and
comp.bin_file.options.libc_installation == null and
comp.bin_file.options.object_format != .c and
target_util.libcNeedsLibUnwind(comp.getTarget());
}

View File

@ -1648,6 +1648,9 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void {
// 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");
// This matches the order of glibc.libs