Define and use a new macro with a more descriptive name. Only use the old macro in <tr1/random.h>.
* 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. Tested x86_64-linux, committed to trunk.
commit 7940f92133f3334da610880e061bb753ec9d795a Author: Jonathan Wakely <jwak...@redhat.com> Date: Wed Jul 4 15:54:19 2018 +0100 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 <tr1/random.h>. * 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. 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/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");