From c6a18e9534025bb84f2707b3d2bd7437f2168a7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sun, 13 Jul 2025 22:58:54 +0200 Subject: [PATCH] libcxx: fix building for wasm32-wasi by disabling exceptions I accidentally regressed this in the LLVM 20 upgrade. Closes #24437. --- src/libs/libcxx.zig | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/libs/libcxx.zig b/src/libs/libcxx.zig index eebbb9cb73..12c9bdedde 100644 --- a/src/libs/libcxx.zig +++ b/src/libs/libcxx.zig @@ -211,6 +211,10 @@ pub fn buildLibCxx(comp: *Compilation, prog_node: std.Progress.Node) BuildError! try cflags.append("-DLIBCXX_BUILDING_LIBCXXABI"); try cflags.append("-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER"); + if (target.os.tag == .wasi) { + try cflags.append("-fno-exceptions"); + } + try cflags.append("-fvisibility=hidden"); try cflags.append("-fvisibility-inlines-hidden"); @@ -388,6 +392,9 @@ pub fn buildLibCxxAbi(comp: *Compilation, prog_node: std.Progress.Node) BuildErr for (libcxxabi_files) |cxxabi_src| { if (!comp.config.any_non_single_threaded and std.mem.startsWith(u8, cxxabi_src, "src/cxa_thread_atexit.cpp")) continue; + if (target.os.tag == .wasi and + (std.mem.eql(u8, cxxabi_src, "src/cxa_exception.cpp") or std.mem.eql(u8, cxxabi_src, "src/cxa_personality.cpp"))) + continue; var cflags = std.ArrayList([]const u8).init(arena); @@ -403,6 +410,10 @@ pub fn buildLibCxxAbi(comp: *Compilation, prog_node: std.Progress.Node) BuildErr try cflags.append("-DHAVE___CXA_THREAD_ATEXIT_IMPL"); } + if (target.os.tag == .wasi) { + try cflags.append("-fno-exceptions"); + } + try cflags.append("-fvisibility=hidden"); try cflags.append("-fvisibility-inlines-hidden");