re PR libstdc++/55741 (bootstrap fails in libstdc++-v3/src/c++11/thread.cc)
PR libstdc++/55741 * acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Check for Sleep. * config.h.in: Regenerate. * configure: Regenerate. * src/c++11/thread.cc (__sleep_for): Use Sleep if available. From-SVN: r194635
This commit is contained in:
parent
d5ae0ba663
commit
8ed812cc4b
5 changed files with 61 additions and 5 deletions
|
@ -1,3 +1,11 @@
|
|||
2012-12-20 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||
|
||||
PR libstdc++/55741
|
||||
* acinclude.m4 (GLIBCXX_ENABLE_LIBSTDCXX_TIME): Check for Sleep.
|
||||
* config.h.in: Regenerate.
|
||||
* configure: Regenerate.
|
||||
* src/c++11/thread.cc (__sleep_for): Use Sleep if available.
|
||||
|
||||
2012-12-18 Jonathan Wakely <jwakely.gcc@gmail.com>
|
||||
|
||||
* doc/xml/manual/abi.xml: Update URLs for C++ ABI.
|
||||
|
|
|
@ -1301,6 +1301,17 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
|
|||
AC_MSG_RESULT($ac_has_usleep)
|
||||
fi
|
||||
|
||||
if test x"$ac_has_nanosleep$ac_has_sleep" = x"nono"; then
|
||||
AC_MSG_CHECKING([for Sleep])
|
||||
AC_TRY_COMPILE([#include <windows.h>],
|
||||
[Sleep(1)],
|
||||
[ac_has_win32_sleep=yes],[ac_has_win32_sleep=no])
|
||||
if test x"$ac_has_win32_sleep" = x"yes"; then
|
||||
AC_DEFINE(HAVE_WIN32_SLEEP,1, [Defined if Sleep exists.])
|
||||
fi
|
||||
AC_MSG_RESULT($ac_has_win32_sleep)
|
||||
fi
|
||||
|
||||
AC_SUBST(GLIBCXX_LIBS)
|
||||
|
||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||
|
|
|
@ -460,6 +460,9 @@
|
|||
/* Define to 1 if you have the <wctype.h> header file. */
|
||||
#undef HAVE_WCTYPE_H
|
||||
|
||||
/* Defined if Sleep exists. */
|
||||
#undef HAVE_WIN32_SLEEP
|
||||
|
||||
/* Define if writev is available in <sys/uio.h>. */
|
||||
#undef HAVE_WRITEV
|
||||
|
||||
|
|
29
libstdc++-v3/configure
vendored
29
libstdc++-v3/configure
vendored
|
@ -19900,6 +19900,35 @@ $as_echo "#define HAVE_USLEEP 1" >>confdefs.h
|
|||
$as_echo "$ac_has_usleep" >&6; }
|
||||
fi
|
||||
|
||||
if test x"$ac_has_nanosleep$ac_has_sleep" = x"nono"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Sleep" >&5
|
||||
$as_echo_n "checking for Sleep... " >&6; }
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
#include <windows.h>
|
||||
int
|
||||
main ()
|
||||
{
|
||||
Sleep(1)
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_cxx_try_compile "$LINENO"; then :
|
||||
ac_has_win32_sleep=yes
|
||||
else
|
||||
ac_has_win32_sleep=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
if test x"$ac_has_win32_sleep" = x"yes"; then
|
||||
|
||||
$as_echo "#define HAVE_WIN32_SLEEP 1" >>confdefs.h
|
||||
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_has_win32_sleep" >&5
|
||||
$as_echo "$ac_has_win32_sleep" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
|
||||
CXXFLAGS="$ac_save_CXXFLAGS"
|
||||
|
|
|
@ -61,6 +61,8 @@ static inline int get_nprocs()
|
|||
#ifndef _GLIBCXX_USE_NANOSLEEP
|
||||
# ifdef _GLIBCXX_HAVE_SLEEP
|
||||
# include <unistd.h>
|
||||
# elif defined(_GLIBCXX_HAVE_WIN32_SLEEP)
|
||||
# include <windows.h>
|
||||
# else
|
||||
# error "No sleep function known for this target"
|
||||
# endif
|
||||
|
@ -170,9 +172,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
static_cast<long>(__ns.count())
|
||||
};
|
||||
::nanosleep(&__ts, 0);
|
||||
#else
|
||||
# ifdef _GLIBCXX_HAVE_SLEEP
|
||||
# ifdef _GLIBCXX_HAVE_USLEEP
|
||||
#elif defined(_GLIBCXX_HAVE_SLEEP)
|
||||
# ifdef _GLIBCXX_HAVE_USLEEP
|
||||
::sleep(__s.count());
|
||||
if (__ns.count() > 0)
|
||||
{
|
||||
|
@ -181,10 +182,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
|||
__us = 1;
|
||||
::usleep(__us);
|
||||
}
|
||||
# else
|
||||
# else
|
||||
::sleep(__s.count() + (__ns >= 1000000));
|
||||
# endif
|
||||
# endif
|
||||
#elif defined(_GLIBCXX_HAVE_WIN32_SLEEP)
|
||||
unsigned long ms = __ns.count() / 1000000;
|
||||
if (__ns.count() > 0 && ms == 0)
|
||||
ms = 1;
|
||||
::Sleep(chrono::milliseconds(__s).count() + ms);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue