From 920ea357148bff61922608664474873e65d4c5d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sat, 4 Oct 2025 00:43:20 +0200 Subject: [PATCH 1/4] libcxxabi: sort file list according to upstream CMakeLists.txt --- src/libs/libcxx.zig | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/libs/libcxx.zig b/src/libs/libcxx.zig index 3fc91aaa66..77c55b3920 100644 --- a/src/libs/libcxx.zig +++ b/src/libs/libcxx.zig @@ -9,25 +9,30 @@ const trace = @import("../tracy.zig").trace; const Module = @import("../Package/Module.zig"); const libcxxabi_files = [_][]const u8{ - "src/abort_message.cpp", "src/cxa_aux_runtime.cpp", "src/cxa_default_handlers.cpp", "src/cxa_demangle.cpp", - "src/cxa_exception.cpp", "src/cxa_exception_storage.cpp", "src/cxa_guard.cpp", "src/cxa_handlers.cpp", - "src/cxa_noexception.cpp", - "src/cxa_personality.cpp", - "src/cxa_thread_atexit.cpp", "src/cxa_vector.cpp", "src/cxa_virtual.cpp", - "src/fallback_malloc.cpp", - "src/private_typeinfo.cpp", + "src/stdlib_exception.cpp", - "src/stdlib_new_delete.cpp", "src/stdlib_stdexcept.cpp", "src/stdlib_typeinfo.cpp", + "src/stdlib_new_delete.cpp", + + "src/abort_message.cpp", + "src/fallback_malloc.cpp", + "src/private_typeinfo.cpp", + + "src/cxa_exception.cpp", + "src/cxa_personality.cpp", + + "src/cxa_noexception.cpp", + + "src/cxa_thread_atexit.cpp", }; const libcxx_base_files = [_][]const u8{ From 43888e654998a118cde3c3ac4fb7004ffbe44323 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sat, 4 Oct 2025 00:44:21 +0200 Subject: [PATCH 2/4] libcxxabi: don't build cxa_noexception.cpp if exceptions are enabled --- src/libs/libcxx.zig | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libs/libcxx.zig b/src/libs/libcxx.zig index 77c55b3920..6fc9817096 100644 --- a/src/libs/libcxx.zig +++ b/src/libs/libcxx.zig @@ -393,11 +393,13 @@ pub fn buildLibCxxAbi(comp: *Compilation, prog_node: std.Progress.Node) BuildErr var c_source_files = try std.array_list.Managed(Compilation.CSourceFile).initCapacity(arena, libcxxabi_files.len); for (libcxxabi_files) |cxxabi_src| { - if (!comp.config.any_non_single_threaded and std.mem.startsWith(u8, cxxabi_src, "src/cxa_thread_atexit.cpp")) + if (!comp.config.any_non_single_threaded and std.mem.eql(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; + if (target.os.tag != .wasi and std.mem.eql(u8, cxxabi_src, "src/cxa_noexception.cpp")) + continue; var cflags = std.array_list.Managed([]const u8).init(arena); From ef2001c7ffdefafc9f61210d1daf3de4d460dd48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sat, 4 Oct 2025 00:44:50 +0200 Subject: [PATCH 3/4] libcxxabi: define _LIBCPP_BUILDING_LIBRARY in addition to _LIBCXXABI_BUILDING_LIBRARY --- src/libs/libcxx.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libs/libcxx.zig b/src/libs/libcxx.zig index 6fc9817096..3c296d477f 100644 --- a/src/libs/libcxx.zig +++ b/src/libs/libcxx.zig @@ -406,6 +406,7 @@ pub fn buildLibCxxAbi(comp: *Compilation, prog_node: std.Progress.Node) BuildErr try addCxxArgs(comp, arena, &cflags); try cflags.append("-DNDEBUG"); + try cflags.append("-D_LIBCPP_BUILDING_LIBRARY"); try cflags.append("-D_LIBCXXABI_BUILDING_LIBRARY"); if (!comp.config.any_non_single_threaded) { try cflags.append("-D_LIBCXXABI_HAS_NO_THREADS"); From 6870144a3b153dafdd740686bbbbae2d4489d305 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Sat, 4 Oct 2025 00:45:17 +0200 Subject: [PATCH 4/4] libcxx: don't impose _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS on users closes https://github.com/ziglang/zig/issues/25455 --- src/libs/libcxx.zig | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libs/libcxx.zig b/src/libs/libcxx.zig index 3c296d477f..4e39d1e03a 100644 --- a/src/libs/libcxx.zig +++ b/src/libs/libcxx.zig @@ -556,5 +556,4 @@ pub fn addCxxArgs( try cflags.append("-D_LIBCPP_HAS_LIBRARY_ALIGNED_ALLOCATION=0"); } } - try cflags.append("-D_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS"); }