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 2fe8b5e2837f254aa7844253b1473fae8fa46e1b..11666eec3c9118e38a4fc06d396cd61a457574dd 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 5d51d2c651ba2516e47d0b30b54f852befcfccb8..240d53518204e3928406dd59bec94d41d9b1f7a5 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); -- 2.54.0