On Thu, 20 Feb 2025 at 17:28, Thomas Schwinge <tschwi...@baylibre.com> wrote: > > Hi! > > On 2025-02-20T16:36:56+0000, Jonathan Wakely <jwak...@redhat.com> wrote: > > On 20/02/25 15:50 +0100, Thomas Schwinge wrote: > >>From 820e015494e25187c9a5ffbd69911ec6ce612789 Mon Sep 17 00:00:00 2001 > >>From: Jonathan Wakely <jwak...@redhat.com> > >>Date: Thu, 20 Feb 2025 14:08:11 +0000 > >>Subject: [PATCH] Fix 'libstdc++-v3/src/c++20/tzdb.cc' build for '__GTHREADS > >>&& > >> !__GTHREADS_CXX0X' configurations > >> > >> libstdc++-v3/ > >> * src/c++20/tzdb.cc [__GTHREADS && !__GTHREADS_CXX0X]: Use > >> '__gnu_cxx::__mutex'. > >> > >>Co-authored-by: Thomas Schwinge <tschwi...@baylibre.com> > >>--- > >> libstdc++-v3/src/c++20/tzdb.cc | 8 +++++++- > >> 1 file changed, 7 insertions(+), 1 deletion(-) > >> > >>diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc > >>index 7e8cce7ce8c..70ba7b0ef53 100644 > >>--- a/libstdc++-v3/src/c++20/tzdb.cc > >>+++ b/libstdc++-v3/src/c++20/tzdb.cc > >>@@ -35,6 +35,9 @@ > >> #include <atomic> // atomic<T*>, atomic<int> > >> #include <memory> // atomic<shared_ptr<T>> > >> #include <mutex> // mutex > >>+#if defined __GTHREADS && ! defined _GLIBCXX_HAS_GHTREADS > >>+# include <ext/concurrence.h> // __gnu_cxx::__mutex > >>+#endif > >> #include <filesystem> // filesystem::read_symlink > >> > >> #ifndef _AIX > >>@@ -97,11 +100,14 @@ namespace std::chrono > >> { > >> namespace > >> { > >>-#if ! USE_ATOMIC_SHARED_PTR > >> #ifndef __GTHREADS > >> // Dummy no-op mutex type for single-threaded targets. > >> struct mutex { void lock() { } void unlock() { } }; > >>+#elif ! defined _GLIBCXX_HAS_GHTREADS > > > > This still has my GHTREADS typo. > > Eh. I had fixed that, but apparently lost it. Re-fixed. > > > A comment here would be good too: > > > > // Use __gnu_cxx::__mutex is std::mutex isn't available. > > Added. > > >>+ using mutex = __gnu_cxx::__mutex; > >> #endif > >>+ > >>+#if ! USE_ATOMIC_SHARED_PTR > >> inline mutex& list_mutex() > >> { > >> #ifdef __GTHREAD_MUTEX_INIT > > > > Strictly speaking, we also need a change here, because unlike > > std::mutex, __gnu_cxx::__mutex can't be initialized with `constinit`. > > But that can wait, because it's not needed for your configuration. > > I've added an '#error' for such a configuration. (But happy to drop, if > you think that's overkill.)
That's great, thanks. No existing targets should be broken by that new #error, because they would be failing to build already. > > Please see v2 of > "Fix 'libstdc++-v3/src/c++20/tzdb.cc' build for '__GTHREADS && > !__GTHREADS_CXX0X' configurations" > attached. Still only GCN, nvptx build-tested. OK for trunk if testing goes well. Is this needed for gcc-14 too?