libstdc++, Darwin: Limit recursive mutex init to OS versions needing it.
authorIain Sandoe <iain@sandoe.co.uk>
Sat, 3 Dec 2022 17:09:35 +0000 (17:09 +0000)
committerIain Sandoe <iain@sandoe.co.uk>
Sun, 4 Dec 2022 14:55:07 +0000 (14:55 +0000)
The problem described in pr 51906 was fixed in the next OS release.  Limit the
workaround to systems that need it.

Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
libstdc++-v3/ChangeLog:

* config/os/bsd/darwin/os_defines.h
(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC): Limit use of this macro
to OS versions that need it.

libstdc++-v3/config/os/bsd/darwin/os_defines.h

index 38fdfb5..5b611d3 100644 (file)
 // implementation is not itself a weak definition).
 #define _GLIBCXX_WEAK_DEFINITION __attribute__ ((__weak__))
 
-// Static initializer macro is buggy in darwin, see libstdc++/51906
+#if defined (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) \
+     && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1080)
+// Static initializer macro is absent for Darwin < 11 and buggy in Darwin 11,
+// see libstdc++/51906.  Fixed in Darwin 12 (OS X 10.8).
 #define _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC
+#endif
 
 // Configure checks for nanosleep fail on Darwin, but nanosleep and
 // sched_yield are always available, so use them.