[gcc/devel/omp/gcc-14] Fix 'libstdc++-v3/src/c++20/tzdb.cc' build for '__GTHREADS && !__GTHREADS_CXX0X' configurations
Thomas Schwinge
tschwinge@gcc.gnu.org
Wed Mar 19 09:09:31 GMT 2025
https://gcc.gnu.org/g:1c87964c1efc84c89d49fd94804549ff94392f9e
commit 1c87964c1efc84c89d49fd94804549ff94392f9e
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Thu Feb 20 14:08:11 2025 +0000
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 <tschwinge@baylibre.com>
(cherry picked from commit 780932620d859fa9e0190edd0c408d0bedf9179e)
Diff:
---
libstdc++-v3/ChangeLog.omp | 7 +++++++
libstdc++-v3/src/c++20/tzdb.cc | 12 +++++++++++-
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/libstdc++-v3/ChangeLog.omp b/libstdc++-v3/ChangeLog.omp
index a3487cda9291..7ede4aed9664 100644
--- a/libstdc++-v3/ChangeLog.omp
+++ b/libstdc++-v3/ChangeLog.omp
@@ -1,5 +1,12 @@
2025-03-19 Thomas Schwinge <tschwinge@baylibre.com>
+ Backported from trunk:
+ 2025-03-06 Jonathan Wakely <jwakely@redhat.com>
+ Thomas Schwinge <tschwinge@baylibre.com>
+
+ * src/c++20/tzdb.cc [__GTHREADS && !__GTHREADS_CXX0X]: Use
+ '__gnu_cxx::__mutex'.
+
Backported from trunk:
2025-03-06 Thomas Schwinge <tschwinge@baylibre.com>
diff --git a/libstdc++-v3/src/c++20/tzdb.cc b/libstdc++-v3/src/c++20/tzdb.cc
index 7e8cce7ce8cf..f6a36f422e1d 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_GTHREADS
+# include <ext/concurrence.h> // __gnu_cxx::__mutex
+#endif
#include <filesystem> // filesystem::read_symlink
#ifndef _AIX
@@ -97,11 +100,18 @@ 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_GTHREADS
+ // Use __gnu_cxx::__mutex if std::mutex isn't available.
+ using mutex = __gnu_cxx::__mutex;
+# if ! USE_ATOMIC_SHARED_PTR && defined __GTHREAD_MUTEX_INIT
+# error "TODO: __gnu_cxx::__mutex can't be initialized with 'constinit'"
+# endif
#endif
+
+#if ! USE_ATOMIC_SHARED_PTR
inline mutex& list_mutex()
{
#ifdef __GTHREAD_MUTEX_INIT
More information about the Libstdc++-cvs
mailing list