[PATCH] revised fix for nanosleep check in GLIBCXX_ENABLE_LIBSTDCXX_TIME for darwin
Jack Howarth
howarth@bromo.med.uc.edu
Tue Oct 9 00:39:00 GMT 2012
The --enable-libstdcxx-time=yes configure option fails to validate the
presence of a usable nanosleep() call on darwin due to its use of pre-2008
POSIX timers. As both nanosleep() and sched_yield() have always been available
on darwin, the attached patch simply defines _GLIBCXX_USE_NANOSLEEP and
_GLIBCXX_USE_SCHED_YIELD in config/os/bsd/darwin/os_defines.h. This also has
the advantage of effectively making --enable-libstdcxx-time=yes the default
on darwin. Regression tested on x86_64-apple-darwin12.
Okay for gcc trunk as well as gcc-4_7-branch/gcc-4_6-branch/gcc-4_5-branch?
Jack
libstdc++-v3/
2012-10-08 Jack Howarth <howarth@bromo.med.uc.edu>
PR libstdc++/54847
* config/os/bsd/darwin/os_defines.h (_GLIBCXX_USE_NANOSLEEP): Define.
(_GLIBCXX_USE_SCHED_YIELD): Likewise.
Index: libstdc++-v3/config/os/bsd/darwin/os_defines.h
===================================================================
--- libstdc++-v3/config/os/bsd/darwin/os_defines.h (revision 192222)
+++ libstdc++-v3/config/os/bsd/darwin/os_defines.h (working copy)
@@ -42,4 +42,9 @@
// Static initializer macro is buggy in darwin, see libstdc++/51906
#define _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC
+// Use nanosleep and sched_yield in libc for time.clock and
+// thread.thread.this in C++11 standard.
+#define _GLIBCXX_USE_NANOSLEEP 1
+#define _GLIBCXX_USE_SCHED_YIELD 1
+
#endif
More information about the Gcc-patches
mailing list