From: Jonathan Wakely Date: Tue, 16 Oct 2018 14:49:29 +0000 (+0100) Subject: Define _GLIBCXX_USE_DEV_RANDOM as replacement for _GLIBCXX_USE_RANDOM_TR1 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5ae2c32a8abcc154af73692f55f6b60fc77b08ae;p=gcc.git Define _GLIBCXX_USE_DEV_RANDOM as replacement for _GLIBCXX_USE_RANDOM_TR1 Define and use a new macro with a more descriptive name. Only use the old macro in . * acinclude.m4 (GLIBCXX_CHECK_RANDOM_TR1): Replace with ... (GLIBCXX_CHECK_DEV_RANDOM): New macro with more descriptive name. Define _GLIBCXX_USE_DEV_RANDOM as well as _GLIBCXX_USE_RANDOM_TR1. * config.h.in: Regenerate. * configure: Regenerate. * configure.ac: Use GLIBCXX_CHECK_DEV_RANDOM instead of GLIBCXX_CHECK_RANDOM_TR1. crossconfig.m4: Likewise. * include/bits/random.h (random_device): Use _GLIBCXX_USE_DEV_RANDOM instead of _GLIBCXX_USE_RANDOM_TR1. * testsuite/26_numerics/random/random_device/cons/token.cc: Likewise. From-SVN: r265197 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 08bb1e8a344..bfb372dff83 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,17 @@ +2018-10-16 Jonathan Wakely + + * acinclude.m4 (GLIBCXX_CHECK_RANDOM_TR1): Replace with ... + (GLIBCXX_CHECK_DEV_RANDOM): New macro with more descriptive name. + Define _GLIBCXX_USE_DEV_RANDOM as well as _GLIBCXX_USE_RANDOM_TR1. + * config.h.in: Regenerate. + * configure: Regenerate. + * configure.ac: Use GLIBCXX_CHECK_DEV_RANDOM instead of + GLIBCXX_CHECK_RANDOM_TR1. + crossconfig.m4: Likewise. + * include/bits/random.h (random_device): Use _GLIBCXX_USE_DEV_RANDOM + instead of _GLIBCXX_USE_RANDOM_TR1. + * testsuite/26_numerics/random/random_device/cons/token.cc: Likewise. + 2018-10-16 Rainer Orth * testsuite/lib/dg-options.exp (add_options_for_net_ts): New proc. diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 6d68e907426..82a25e5f2f1 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -2073,27 +2073,31 @@ AC_DEFUN([GLIBCXX_CHECK_UCHAR_H], [ dnl -dnl Check whether "/dev/random" and "/dev/urandom" are available for the +dnl Check whether "/dev/random" and "/dev/urandom" are available for +dnl class std::random_device from C++ 2011 [rand.device], and dnl random_device of "TR1" (Chapter 5.1, "Random number generation"). dnl -AC_DEFUN([GLIBCXX_CHECK_RANDOM_TR1], [ +AC_DEFUN([GLIBCXX_CHECK_DEV_RANDOM], [ - AC_MSG_CHECKING([for "/dev/random" and "/dev/urandom" for TR1 random_device]) - AC_CACHE_VAL(glibcxx_cv_random_tr1, [ + AC_MSG_CHECKING([for "/dev/random" and "/dev/urandom" for std::random_device]) + AC_CACHE_VAL(glibcxx_cv_dev_random, [ if test -r /dev/random && test -r /dev/urandom; then - ## For MSys environment the test above is detect as false-positive - ## on mingw-targets. So disable it explicit for them. + ## For MSys environment the test above is detected as false-positive + ## on mingw-targets. So disable it explicitly for them. case ${target_os} in - *mingw*) glibcxx_cv_random_tr1=no ;; - *) glibcxx_cv_random_tr1=yes ;; + *mingw*) glibcxx_cv_dev_random=no ;; + *) glibcxx_cv_dev_random=yes ;; esac else - glibcxx_cv_random_tr1=no; + glibcxx_cv_dev_random=no; fi ]) - AC_MSG_RESULT($glibcxx_cv_random_tr1) + AC_MSG_RESULT($glibcxx_cv_dev_random) - if test x"$glibcxx_cv_random_tr1" = x"yes"; then + if test x"$glibcxx_cv_dev_random" = x"yes"; then + AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM, 1, + [Define if /dev/random and /dev/urandom are available for + std::random_device.]) AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1, 1, [Define if /dev/random and /dev/urandom are available for the random_device of TR1 (Chapter 5.1).]) diff --git a/libstdc++-v3/config.h.in b/libstdc++-v3/config.h.in index 919a1f068c0..65e7b46dc4e 100644 --- a/libstdc++-v3/config.h.in +++ b/libstdc++-v3/config.h.in @@ -924,6 +924,10 @@ this host. */ #undef _GLIBCXX_USE_DECIMAL_FLOAT +/* Define if /dev/random and /dev/urandom are available for + std::random_device. */ +#undef _GLIBCXX_USE_DEV_RANDOM + /* Define if fchmod is available in . */ #undef _GLIBCXX_USE_FCHMOD diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index d33081d544c..93a727e7cff 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -27852,32 +27852,35 @@ done CXXFLAGS="$ac_save_CXXFLAGS" - # For /dev/random and /dev/urandom for TR1. + # For /dev/random and /dev/urandom for std::random_device. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"/dev/random\" and \"/dev/urandom\" for TR1 random_device" >&5 -$as_echo_n "checking for \"/dev/random\" and \"/dev/urandom\" for TR1 random_device... " >&6; } - if test "${glibcxx_cv_random_tr1+set}" = set; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"/dev/random\" and \"/dev/urandom\" for std::random_device" >&5 +$as_echo_n "checking for \"/dev/random\" and \"/dev/urandom\" for std::random_device... " >&6; } + if test "${glibcxx_cv_dev_random+set}" = set; then : $as_echo_n "(cached) " >&6 else if test -r /dev/random && test -r /dev/urandom; then - ## For MSys environment the test above is detect as false-positive - ## on mingw-targets. So disable it explicit for them. + ## For MSys environment the test above is detected as false-positive + ## on mingw-targets. So disable it explicitly for them. case ${target_os} in - *mingw*) glibcxx_cv_random_tr1=no ;; - *) glibcxx_cv_random_tr1=yes ;; + *mingw*) glibcxx_cv_dev_random=no ;; + *) glibcxx_cv_dev_random=yes ;; esac else - glibcxx_cv_random_tr1=no; + glibcxx_cv_dev_random=no; fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_random_tr1" >&5 -$as_echo "$glibcxx_cv_random_tr1" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_dev_random" >&5 +$as_echo "$glibcxx_cv_dev_random" >&6; } + + if test x"$glibcxx_cv_dev_random" = x"yes"; then + +$as_echo "#define _GLIBCXX_USE_DEV_RANDOM 1" >>confdefs.h - if test x"$glibcxx_cv_random_tr1" = x"yes"; then $as_echo "#define _GLIBCXX_USE_RANDOM_TR1 1" >>confdefs.h @@ -47105,6 +47108,8 @@ done CXXFLAGS="$ac_save_CXXFLAGS" + $as_echo "#define _GLIBCXX_USE_DEV_RANDOM 1" >>confdefs.h + $as_echo "#define _GLIBCXX_USE_RANDOM_TR1 1" >>confdefs.h # We don't yet support AIX's TLS ABI. @@ -59737,6 +59742,8 @@ done CXXFLAGS="$ac_save_CXXFLAGS" + $as_echo "#define _GLIBCXX_USE_DEV_RANDOM 1" >>confdefs.h + $as_echo "#define _GLIBCXX_USE_RANDOM_TR1 1" >>confdefs.h diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac index 332af3706d3..e3612b036df 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -255,8 +255,8 @@ if $GLIBCXX_IS_NATIVE; then GLIBCXX_CHECK_MATH_SUPPORT GLIBCXX_CHECK_STDLIB_SUPPORT - # For /dev/random and /dev/urandom for TR1. - GLIBCXX_CHECK_RANDOM_TR1 + # For /dev/random and /dev/urandom for std::random_device. + GLIBCXX_CHECK_DEV_RANDOM # For TLS support. GCC_CHECK_TLS diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4 index 0dbfe4057bd..3de40dc138b 100644 --- a/libstdc++-v3/crossconfig.m4 +++ b/libstdc++-v3/crossconfig.m4 @@ -66,6 +66,7 @@ case "${host}" in GLIBCXX_CHECK_LINKER_FEATURES GLIBCXX_CHECK_MATH_SUPPORT GLIBCXX_CHECK_STDLIB_SUPPORT + AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM) AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1) # We don't yet support AIX's TLS ABI. #GCC_CHECK_TLS @@ -188,6 +189,7 @@ case "${host}" in GLIBCXX_CHECK_LINKER_FEATURES GLIBCXX_CHECK_MATH_SUPPORT GLIBCXX_CHECK_STDLIB_SUPPORT + AC_DEFINE(_GLIBCXX_USE_DEV_RANDOM) AC_DEFINE(_GLIBCXX_USE_RANDOM_TR1) GCC_CHECK_TLS AC_CHECK_FUNCS(__cxa_thread_atexit_impl) diff --git a/libstdc++-v3/include/bits/random.h b/libstdc++-v3/include/bits/random.h index e59c8b0221d..5e994aa8836 100644 --- a/libstdc++-v3/include/bits/random.h +++ b/libstdc++-v3/include/bits/random.h @@ -1602,7 +1602,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // constructors, destructors and member functions -#ifdef _GLIBCXX_USE_RANDOM_TR1 +#ifdef _GLIBCXX_USE_DEV_RANDOM random_device() { _M_init("default"); } explicit @@ -1629,7 +1629,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION double entropy() const noexcept { -#ifdef _GLIBCXX_USE_RANDOM_TR1 +#ifdef _GLIBCXX_USE_DEV_RANDOM return this->_M_getentropy(); #else return 0.0; @@ -1639,7 +1639,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION result_type operator()() { -#ifdef _GLIBCXX_USE_RANDOM_TR1 +#ifdef _GLIBCXX_USE_DEV_RANDOM return this->_M_getval(); #else return this->_M_getval_pretr1(); diff --git a/libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc b/libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc index e2fc507fa5a..3d945ae12a1 100644 --- a/libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc +++ b/libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_RANDOM_TR1 +#ifdef _GLIBCXX_USE_DEV_RANDOM std::random_device x("/dev/random"); #else std::random_device x("0");