[libcxx-commits] [libcxx] [libcxx][libc] update LLVM-libc test status (PR #201236)

Michael Jones via libcxx-commits libcxx-commits at lists.llvm.org
Wed Jun 24 10:52:54 PDT 2026


https://github.com/michaelrj-google updated https://github.com/llvm/llvm-project/pull/201236

>From c655fe5e096ac51565710fc4dfdcdebef1af2791 Mon Sep 17 00:00:00 2001
From: Michael Jones <michaelrj at google.com>
Date: Tue, 2 Jun 2026 23:27:03 +0000
Subject: [PATCH 1/3] [libcxx][libc] update LLVM-libc test status

This update removes some unnecessary carveouts, marks some newly
XFAILing tests, and unmarks some now passing tests.

With this change the status of tests is:
Total Discovered Tests: 11402
  Unsupported      : 1821 (15.97%)
  Passed           : 9409 (82.52%)
  Expectedly Failed:  172 (1.51%)

Depends on #201235

Assisted-by: Automated tooling, human reviewed.
---
 libcxx/cmake/caches/Generic-llvm-libc.cmake           | 11 -----------
 libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in      |  2 +-
 ...nothrow_new_not_overridden_fno_exceptions.pass.cpp |  3 ---
 .../support.dynamic/new_dont_return_nullptr.pass.cpp  |  3 ---
 ...R30202_notify_from_pthread_created_thread.pass.cpp |  2 ++
 .../thread.thread.member/native_handle.pass.cpp       |  3 +++
 .../osyncstream/thread/several_threads.pass.cpp       |  3 +++
 .../complex.member.ops/divide_equal_complex.pass.cpp  |  3 ---
 .../complex.ops/complex_divide_complex.pass.cpp       |  3 ---
 .../complex.ops/scalar_divide_complex.pass.cpp        |  3 ---
 .../rand.dist.bern.bin/eval.PR44847.pass.cpp          |  3 +++
 .../rand.dist.bern/rand.dist.bern.bin/io.pass.cpp     |  3 +++
 .../notify_all_at_thread_exit_lwg3343.pass.cpp        |  3 +++
 .../thread.thread.this/sleep_for.signals.pass.cpp     |  3 +++
 .../std/time/time.hash/time.hash_enabled.pass.cpp     |  3 ---
 15 files changed, 21 insertions(+), 30 deletions(-)

diff --git a/libcxx/cmake/caches/Generic-llvm-libc.cmake b/libcxx/cmake/caches/Generic-llvm-libc.cmake
index 8e8a2699858b3..96bbeab040362 100644
--- a/libcxx/cmake/caches/Generic-llvm-libc.cmake
+++ b/libcxx/cmake/caches/Generic-llvm-libc.cmake
@@ -32,22 +32,11 @@ set(LIBCXX_INSTALL_LIBRARY ON CACHE BOOL "")
 set(LIBCXX_CXX_ABI libcxxabi CACHE STRING "")
 
 # Not yet fully implemented.
-set(LIBCXX_ENABLE_LOCALIZATION OFF CACHE BOOL "")
 set(LIBCXX_ENABLE_WIDE_CHARACTERS OFF CACHE BOOL "")
 
 # Still missing some components.
 set(LIBCXX_ENABLE_FILESYSTEM OFF CACHE BOOL "")
 
-# Still needs validation before turning on.
-set(LIBCXX_ENABLE_RANDOM_DEVICE OFF CACHE BOOL "")
-
-# Still missing some components.
-set(LIBCXX_ENABLE_MONOTONIC_CLOCK OFF CACHE BOOL "")
-
-# requires LIBCXX_ENABLE_MONOTONIC_CLOCK=ON
-set(LIBCXX_ENABLE_THREADS OFF CACHE BOOL "")
-set(LIBCXXABI_ENABLE_THREADS OFF CACHE BOOL "")
-
 set(LIBCXX_ENABLE_UNICODE ON CACHE BOOL "")
 set(LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
 set(LIBCXXABI_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
diff --git a/libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in b/libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in
index 605a890709400..c6bf484c69cce 100644
--- a/libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in
+++ b/libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in
@@ -10,7 +10,7 @@ config.substitutions.append(('%{compile_flags}',
     '-nostdlibinc -I %{include-dir} -I %{target-include-dir} -I @CMAKE_BINARY_DIR@/libc/include -I %{libcxx-dir}/test/support -idirafter @LIBC_KERNEL_HEADERS@'
 ))
 config.substitutions.append(('%{link_flags}',
-    '-nodefaultlibs -nostartfiles -L %{lib-dir} -lc++ -lc++abi @CMAKE_BINARY_DIR@/libc/startup/linux/crt1.o @CMAKE_BINARY_DIR@/libc/lib/libc.a @CMAKE_BINARY_DIR@/libc/lib/libm.a -static -fno-use-cxa-atexit @CMAKE_BINARY_DIR@/compiler-rt/lib/linux/libclang_rt.builtins-x86_64.a'
+    '-nodefaultlibs -nostartfiles -L %{lib-dir} -lc++ -lc++abi @CMAKE_BINARY_DIR@/libc/startup/linux/crt1.o -Wl,--start-group @CMAKE_BINARY_DIR@/libc/lib/libc.a @CMAKE_BINARY_DIR@/libc/lib/libm.a -static -fno-use-cxa-atexit @CMAKE_BINARY_DIR@/compiler-rt/lib/linux/libclang_rt.builtins-x86_64.a -Wl,--defsym,__dso_handle=0 -latomic -Wl,--end-group'
 ))
 config.substitutions.append(('%{exec}',
     '%{executor} --execdir %{temp} -- '
diff --git a/libcxx/test/libcxx/language.support/support.dynamic/assert.nothrow_new_not_overridden_fno_exceptions.pass.cpp b/libcxx/test/libcxx/language.support/support.dynamic/assert.nothrow_new_not_overridden_fno_exceptions.pass.cpp
index 39a51352eadd9..fb26bdf49cc3c 100644
--- a/libcxx/test/libcxx/language.support/support.dynamic/assert.nothrow_new_not_overridden_fno_exceptions.pass.cpp
+++ b/libcxx/test/libcxx/language.support/support.dynamic/assert.nothrow_new_not_overridden_fno_exceptions.pass.cpp
@@ -29,9 +29,6 @@
 //       spuriously fail.
 // REQUIRES: no-exceptions
 
-// No member named 'regex'.
-// XFAIL: LLVM-LIBC-FIXME
-
 #include <cstddef>
 #include <new>
 
diff --git a/libcxx/test/libcxx/language.support/support.dynamic/new_dont_return_nullptr.pass.cpp b/libcxx/test/libcxx/language.support/support.dynamic/new_dont_return_nullptr.pass.cpp
index 339e756b86fc8..02b20a8c98b21 100644
--- a/libcxx/test/libcxx/language.support/support.dynamic/new_dont_return_nullptr.pass.cpp
+++ b/libcxx/test/libcxx/language.support/support.dynamic/new_dont_return_nullptr.pass.cpp
@@ -22,9 +22,6 @@
 // REQUIRES: no-exceptions
 // UNSUPPORTED: c++03, c++11, c++14
 
-// No member named 'regex'.
-// XFAIL: LLVM-LIBC-FIXME
-
 #include <cstddef>
 #include <limits>
 #include <new>
diff --git a/libcxx/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp b/libcxx/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp
index 66251648bd50c..1df75885e4347 100644
--- a/libcxx/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp
+++ b/libcxx/test/libcxx/thread/thread.condition/PR30202_notify_from_pthread_created_thread.pass.cpp
@@ -20,6 +20,8 @@
 // Test that this function works with threads that were not created by
 // std::thread. See https://llvm.org/PR30202
 
+// Segfault
+// XFAIL: LLVM-LIBC-FIXME
 
 #include <condition_variable>
 #include <mutex>
diff --git a/libcxx/test/libcxx/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp b/libcxx/test/libcxx/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
index 96ec3332519bc..5c5c0fed58726 100644
--- a/libcxx/test/libcxx/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
+++ b/libcxx/test/libcxx/thread/thread.threads/thread.thread.class/thread.thread.member/native_handle.pass.cpp
@@ -16,6 +16,9 @@
 
 // native_handle_type native_handle();
 
+// pthread_t and int not comparable.
+// XFAIL: LLVM-LIBC-FIXME
+
 #include <thread>
 #include <new>
 #include <cstdlib>
diff --git a/libcxx/test/std/input.output/syncstream/osyncstream/thread/several_threads.pass.cpp b/libcxx/test/std/input.output/syncstream/osyncstream/thread/several_threads.pass.cpp
index dbf2ded1b532e..82d43c1673d2d 100644
--- a/libcxx/test/std/input.output/syncstream/osyncstream/thread/several_threads.pass.cpp
+++ b/libcxx/test/std/input.output/syncstream/osyncstream/thread/several_threads.pass.cpp
@@ -21,6 +21,9 @@
 // but the words should be written without interleaving. To increment the
 // change of interleaving words are written one character at a time.
 
+// segmentation fault
+// XFAIL: LLVM-LIBC-FIXME
+
 #include <cassert>
 #include <chrono>
 #include <mutex>
diff --git a/libcxx/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp b/libcxx/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp
index b9467a166e8d5..61e0d01f2ae4d 100644
--- a/libcxx/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp
+++ b/libcxx/test/std/numerics/complex.number/complex.member.ops/divide_equal_complex.pass.cpp
@@ -6,9 +6,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-// Missing some math functions that compiler-rt buildins need.
-// XFAIL: LLVM-LIBC-FIXME
-
 // <complex>
 
 // complex& operator/=(const complex& rhs); // constexpr in C++20
diff --git a/libcxx/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp b/libcxx/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp
index 4e00e87f18220..d12dfd994b0ae 100644
--- a/libcxx/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp
+++ b/libcxx/test/std/numerics/complex.number/complex.ops/complex_divide_complex.pass.cpp
@@ -6,9 +6,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-// Missing some math functions that compiler-rt buildins need.
-// XFAIL: LLVM-LIBC-FIXME
-
 // <complex>
 
 // template<class T>
diff --git a/libcxx/test/std/numerics/complex.number/complex.ops/scalar_divide_complex.pass.cpp b/libcxx/test/std/numerics/complex.number/complex.ops/scalar_divide_complex.pass.cpp
index 56d9664b49aea..f32b560c1e864 100644
--- a/libcxx/test/std/numerics/complex.number/complex.ops/scalar_divide_complex.pass.cpp
+++ b/libcxx/test/std/numerics/complex.number/complex.ops/scalar_divide_complex.pass.cpp
@@ -6,9 +6,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-// Missing some math functions that compiler-rt buildins need.
-// XFAIL: LLVM-LIBC-FIXME
-
 // <complex>
 
 // template<class T>
diff --git a/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/eval.PR44847.pass.cpp b/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/eval.PR44847.pass.cpp
index 8f7c8eb7ccc0f..22319e5b31454 100644
--- a/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/eval.PR44847.pass.cpp
+++ b/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/eval.PR44847.pass.cpp
@@ -21,6 +21,9 @@
 // Very slow when run in qemu.
 // REQUIRES: long_tests
 
+// missing lgamma_r
+// XFAIL: LLVM-LIBC-FIXME
+
 #include <random>
 #include <cassert>
 #include <cmath>
diff --git a/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp b/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp
index 35f579903a460..a53a5db3be4c0 100644
--- a/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp
+++ b/libcxx/test/std/numerics/rand/rand.dist/rand.dist.bern/rand.dist.bern.bin/io.pass.cpp
@@ -23,6 +23,9 @@
 // operator>>(basic_istream<charT, traits>& is,
 //            binomial_distribution& x);
 
+// missing lgamma_r
+// XFAIL: LLVM-LIBC-FIXME
+
 #include <random>
 #include <sstream>
 #include <cassert>
diff --git a/libcxx/test/std/thread/thread.condition/notify_all_at_thread_exit_lwg3343.pass.cpp b/libcxx/test/std/thread/thread.condition/notify_all_at_thread_exit_lwg3343.pass.cpp
index 61094eced4cb2..f1b349017b1a5 100644
--- a/libcxx/test/std/thread/thread.condition/notify_all_at_thread_exit_lwg3343.pass.cpp
+++ b/libcxx/test/std/thread/thread.condition/notify_all_at_thread_exit_lwg3343.pass.cpp
@@ -23,6 +23,9 @@
 //
 // void notify_all_at_thread_exit(condition_variable& cond, unique_lock<mutex> lk);
 
+// segmentation fault
+// XFAIL: LLVM-LIBC-FIXME
+
 #include "make_test_thread.h"
 #include "test_macros.h"
 
diff --git a/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_for.signals.pass.cpp b/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_for.signals.pass.cpp
index 1dba5d8a40976..726b5807d55e3 100644
--- a/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_for.signals.pass.cpp
+++ b/libcxx/test/std/thread/thread.threads/thread.thread.this/sleep_for.signals.pass.cpp
@@ -21,6 +21,9 @@
 // This test ensures that we sleep for the right amount of time even when
 // we get interrupted by a signal, as fixed in 58a0a70fb2f1.
 
+// missing ITIMER_REAL
+// XFAIL: LLVM-LIBC-FIXME
+
 #include <thread>
 #include <cassert>
 #include <chrono>
diff --git a/libcxx/test/std/time/time.hash/time.hash_enabled.pass.cpp b/libcxx/test/std/time/time.hash/time.hash_enabled.pass.cpp
index e3ac7e53251d5..cac7fbda0fbb3 100644
--- a/libcxx/test/std/time/time.hash/time.hash_enabled.pass.cpp
+++ b/libcxx/test/std/time/time.hash/time.hash_enabled.pass.cpp
@@ -6,9 +6,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-// No member named `leapsecond'.
-// XFAIL: LLVM-LIBC-FIXME
-
 // REQUIRES: std-at-least-c++26
 
 // <chrono>

>From d8456628ef69b9bae378a6ab7b864c6261c05470 Mon Sep 17 00:00:00 2001
From: Michael Jones <michaelrj at google.com>
Date: Wed, 3 Jun 2026 23:59:29 +0000
Subject: [PATCH 2/3] enable wchar, fix tests

---
 libcxx/cmake/caches/Generic-llvm-libc.cmake                    | 3 ++-
 .../extensions/libcxx/depr/depr.c.headers/include_as_c.sh.cpp  | 3 +++
 .../test/std/depr/depr.c.headers/inttypes_h.compile.pass.cpp   | 3 +++
 libcxx/test/std/depr/depr.c.headers/wchar_h.compile.pass.cpp   | 3 +++
 libcxx/test/std/depr/depr.c.headers/wctype_h.compile.pass.cpp  | 3 +++
 libcxx/test/std/strings/c.strings/cwchar.pass.cpp              | 3 +++
 libcxx/test/std/strings/c.strings/cwctype.pass.cpp             | 3 +++
 libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp | 3 +++
 8 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/libcxx/cmake/caches/Generic-llvm-libc.cmake b/libcxx/cmake/caches/Generic-llvm-libc.cmake
index 96bbeab040362..2a4df69bec105 100644
--- a/libcxx/cmake/caches/Generic-llvm-libc.cmake
+++ b/libcxx/cmake/caches/Generic-llvm-libc.cmake
@@ -32,7 +32,7 @@ set(LIBCXX_INSTALL_LIBRARY ON CACHE BOOL "")
 set(LIBCXX_CXX_ABI libcxxabi CACHE STRING "")
 
 # Not yet fully implemented.
-set(LIBCXX_ENABLE_WIDE_CHARACTERS OFF CACHE BOOL "")
+set(LIBCXX_ENABLE_WIDE_CHARACTERS ON CACHE BOOL "")
 
 # Still missing some components.
 set(LIBCXX_ENABLE_FILESYSTEM OFF CACHE BOOL "")
@@ -47,5 +47,6 @@ set(CMAKE_BUILD_TYPE "Release" CACHE STRING "")
 set(LLVM_ENABLE_RUNTIMES "compiler-rt;libc;libunwind;libcxxabi;libcxx" CACHE STRING "")
 set(LLVM_LIBC_FULL_BUILD ON CACHE BOOL "")
 set(LLVM_LIBC_INCLUDE_SCUDO ON CACHE BOOL "")
+set(LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS ON CACHE BOOL "")
 set(COMPILER_RT_BUILD_GWP_ASAN OFF CACHE BOOL "")
 set(COMPILER_RT_BUILD_SCUDO_STANDALONE_WITH_LLVM_LIBC ON CACHE BOOL "")
diff --git a/libcxx/test/extensions/libcxx/depr/depr.c.headers/include_as_c.sh.cpp b/libcxx/test/extensions/libcxx/depr/depr.c.headers/include_as_c.sh.cpp
index dd9847f63253b..4b8297145e35a 100644
--- a/libcxx/test/extensions/libcxx/depr/depr.c.headers/include_as_c.sh.cpp
+++ b/libcxx/test/extensions/libcxx/depr/depr.c.headers/include_as_c.sh.cpp
@@ -9,6 +9,9 @@
 // We're building as C, so this test doesn't work when building with modules.
 // ADDITIONAL_COMPILE_FLAGS: -fno-modules
 
+// Incompatible redeclaration of wcschr and wmemchr builtins
+// XFAIL: LLVM-LIBC-FIXME
+
 // GCC complains about unrecognized arguments because we're compiling the
 // file as C, but we're passing C++ flags on the command-line.
 // UNSUPPORTED: gcc
diff --git a/libcxx/test/std/depr/depr.c.headers/inttypes_h.compile.pass.cpp b/libcxx/test/std/depr/depr.c.headers/inttypes_h.compile.pass.cpp
index eaae3aa3417e4..a730debab2e9b 100644
--- a/libcxx/test/std/depr/depr.c.headers/inttypes_h.compile.pass.cpp
+++ b/libcxx/test/std/depr/depr.c.headers/inttypes_h.compile.pass.cpp
@@ -8,6 +8,9 @@
 
 // test <inttypes.h>
 
+// Missing wcstoimax, wcstoumax
+// XFAIL: LLVM-LIBC-FIXME
+
 #include <inttypes.h>
 
 #include "test_macros.h"
diff --git a/libcxx/test/std/depr/depr.c.headers/wchar_h.compile.pass.cpp b/libcxx/test/std/depr/depr.c.headers/wchar_h.compile.pass.cpp
index 98d028c5181d5..df7bda3baf8af 100644
--- a/libcxx/test/std/depr/depr.c.headers/wchar_h.compile.pass.cpp
+++ b/libcxx/test/std/depr/depr.c.headers/wchar_h.compile.pass.cpp
@@ -8,6 +8,9 @@
 
 // UNSUPPORTED: no-wide-characters
 
+// Missing fwprintf, fwscanf, swscanf, vfwprintf, vfwscanf, vswprintf, vswscanf, wcsftime, vwscanf, wscanf
+// XFAIL: LLVM-LIBC-FIXME
+
 // <wchar.h>
 
 #include <wchar.h>
diff --git a/libcxx/test/std/depr/depr.c.headers/wctype_h.compile.pass.cpp b/libcxx/test/std/depr/depr.c.headers/wctype_h.compile.pass.cpp
index 4e2fb319336f1..221c219918614 100644
--- a/libcxx/test/std/depr/depr.c.headers/wctype_h.compile.pass.cpp
+++ b/libcxx/test/std/depr/depr.c.headers/wctype_h.compile.pass.cpp
@@ -8,6 +8,9 @@
 
 // UNSUPPORTED: no-wide-characters
 
+// Missing WEOF, wctrans_t
+// XFAIL: LLVM-LIBC-FIXME
+
 // towctrans and wctrans were added in Android API 26.
 // TODO: Switch from UNSUPPORTED to XFAIL once the Android CI Docker sysroot is
 // updated.
diff --git a/libcxx/test/std/strings/c.strings/cwchar.pass.cpp b/libcxx/test/std/strings/c.strings/cwchar.pass.cpp
index 0caf4b9913b50..1758a703b3b62 100644
--- a/libcxx/test/std/strings/c.strings/cwchar.pass.cpp
+++ b/libcxx/test/std/strings/c.strings/cwchar.pass.cpp
@@ -10,6 +10,9 @@
 
 // UNSUPPORTED: no-wide-characters
 
+// Missing fwprintf, fwscanf, swscanf, vfwprintf, vfwscanf, vswprintf, vswscanf, wcsftime, vwscanf, wscanf
+// XFAIL: LLVM-LIBC-FIXME
+
 #include <cwchar>
 #include <ctime>
 #include <cstdarg>
diff --git a/libcxx/test/std/strings/c.strings/cwctype.pass.cpp b/libcxx/test/std/strings/c.strings/cwctype.pass.cpp
index 0deabf51ed59c..3de582714d01d 100644
--- a/libcxx/test/std/strings/c.strings/cwctype.pass.cpp
+++ b/libcxx/test/std/strings/c.strings/cwctype.pass.cpp
@@ -10,6 +10,9 @@
 
 // UNSUPPORTED: no-wide-characters
 
+// Missing WEOF, towctrans, wctrans_t
+// XFAIL: LLVM-LIBC-FIXME
+
 // towctrans and wctrans were added in Android API 26.
 // TODO: Switch from UNSUPPORTED to XFAIL once the Android CI Docker sysroot is
 // updated.
diff --git a/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp b/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp
index fff5ede848b57..bd4bd47671a81 100644
--- a/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp
+++ b/libcxx/test/std/strings/string.conversions/to_wstring.pass.cpp
@@ -20,6 +20,9 @@
 // wstring to_wstring(double val);
 // wstring to_wstring(long double val);
 
+// Missing swprintf (currently a stub that infinite loops)
+// UNSUPPORTED: LLVM-LIBC-FIXME
+
 #include <string>
 #include <cassert>
 #include <limits>

>From b7715770622aea7b9eeb47a73d3a6019142d0ab3 Mon Sep 17 00:00:00 2001
From: Michael Jones <michaelrj at google.com>
Date: Wed, 24 Jun 2026 17:52:24 +0000
Subject: [PATCH 3/3] move where `__dso_handle` is defined

---
 libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in b/libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in
index c6bf484c69cce..00ecac1662804 100644
--- a/libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in
+++ b/libcxx/test/configs/llvm-libc++-llvm-libc.cfg.in
@@ -10,7 +10,7 @@ config.substitutions.append(('%{compile_flags}',
     '-nostdlibinc -I %{include-dir} -I %{target-include-dir} -I @CMAKE_BINARY_DIR@/libc/include -I %{libcxx-dir}/test/support -idirafter @LIBC_KERNEL_HEADERS@'
 ))
 config.substitutions.append(('%{link_flags}',
-    '-nodefaultlibs -nostartfiles -L %{lib-dir} -lc++ -lc++abi @CMAKE_BINARY_DIR@/libc/startup/linux/crt1.o -Wl,--start-group @CMAKE_BINARY_DIR@/libc/lib/libc.a @CMAKE_BINARY_DIR@/libc/lib/libm.a -static -fno-use-cxa-atexit @CMAKE_BINARY_DIR@/compiler-rt/lib/linux/libclang_rt.builtins-x86_64.a -Wl,--defsym,__dso_handle=0 -latomic -Wl,--end-group'
+    '-nodefaultlibs -nostartfiles -L %{lib-dir} -lc++ -lc++abi @CMAKE_BINARY_DIR@/libc/startup/linux/crt1.o -Wl,--start-group @CMAKE_BINARY_DIR@/libc/lib/libc.a @CMAKE_BINARY_DIR@/libc/lib/libm.a -static -fno-use-cxa-atexit @CMAKE_BINARY_DIR@/compiler-rt/lib/linux/libclang_rt.builtins-x86_64.a -latomic -Wl,--end-group -Wl,--defsym,__dso_handle=0'
 ))
 config.substitutions.append(('%{exec}',
     '%{executor} --execdir %{temp} -- '



More information about the libcxx-commits mailing list