From f9859c102d7d54ce109ee7afdbd59251c233e92c Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Tue, 13 Sep 2022 11:38:14 -0700 Subject: [PATCH] fix libc++ exceptions for musl targets This reverts commit d31be31267523cadd6d59b52633f2d4a9758a3b4. The problem was happening due to an LLVM bug exposed by having LTO enabled for libunwind. The simple workaround is to disable LTO for libunwind. It can be re-enabled in the future when the upstream bug is fixed. See #12828 --- src/libunwind.zig | 3 ++- test/standalone/c_compiler/build.zig | 8 +------- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/libunwind.zig b/src/libunwind.zig index 2fe8b5e283..11666eec3c 100644 --- a/src/libunwind.zig +++ b/src/libunwind.zig @@ -109,7 +109,8 @@ pub fn buildStaticLib(comp: *Compilation) !void { .want_tsan = false, .want_pic = comp.bin_file.options.pic, .want_pie = comp.bin_file.options.pie, - .want_lto = comp.bin_file.options.lto, + // Disable LTO to avoid https://github.com/llvm/llvm-project/issues/56825 + .want_lto = false, .function_sections = comp.bin_file.options.function_sections, .emit_h = null, .strip = comp.compilerRtStrip(), diff --git a/test/standalone/c_compiler/build.zig b/test/standalone/c_compiler/build.zig index 5d51d2c651..240d535182 100644 --- a/test/standalone/c_compiler/build.zig +++ b/test/standalone/c_compiler/build.zig @@ -12,15 +12,9 @@ fn isRunnableTarget(t: CrossTarget) bool { } pub fn build(b: *Builder) void { - var mode = b.standardReleaseOptions(); + const mode = b.standardReleaseOptions(); const target = b.standardTargetOptions(.{}); - if (mode != .Debug and target.getAbi().isMusl()) { - // https://github.com/ziglang/zig/issues/12828 - std.debug.print("warn: skipping musl libc++ test that regressed with LLVM 15\n", .{}); - mode = .Debug; - } - const test_step = b.step("test", "Test the program"); const exe_c = b.addExecutable("test_c", null);