From patchwork Tue Oct 9 00:39:21 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: revised fix for nanosleep check in GLIBCXX_ENABLE_LIBSTDCXX_TIME for darwin From: Jack Howarth X-Patchwork-Id: 190167 Message-Id: <20121009003921.GA25678@bromo.med.uc.edu> To: libstdc++@gcc.gnu.org Cc: mikestump@comcast.net, iain@codesourcery.com, redi@gcc.gnu.org, paoauto-logoutoracle.com@bromo.med.uc.edu, gcc-patches@gcc.gnu.org Date: Mon, 8 Oct 2012 20:39:21 -0400 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 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