On Fri, 12 Nov 2021, 20:24 Hans-Peter Nilsson via Libstdc++, <
libstd...@gcc.gnu.org> wrote:

> Since r12-5056-g3439657b0286, there has been a regression in
> test results; an additional 100 FAILs running the g++ and
> libstdc++ testsuite on cris-elf, a newlib target.  The
> failures are linker errors, not finding a definition for
> getentropy.  It appears newlib has since 2017-12-03
> declarations of getentropy and arc4random, and provides an
> implementation of arc4random using getentropy, but provides no
> definition of getentropy, not even a stub yielding ENOSYS.
> This is similar to what it does for many other functions too.
>
> While fixing newlib (like adding said stub) would likely help,
> it still leaves older newlib releases hanging.  Thankfully,
> the libstdc++ configury test can be improved to try linking
> where possible; using the bespoke GCC_TRY_COMPILE_OR_LINK
> instead of AC_TRY_COMPILE.  BTW, I see a lack of consistency;
> some tests use AC_TRY_COMPILE and some GCC_TRY_COMPILE_OR_LINK
> for no apparent reason,


Almost certainly due to me not knowing what I'm doing.


but this commit just amends
> r12-5056-g3439657b0286.
>
> Testing for cris-elf is underway and the log says so far the
> related regressions are fixed.  Ok to commit?
>


OK, thanks!



> libstdc++-v3:
>         PR libstdc++/103166
>         * acinclude.m4 (GLIBCXX_CHECK_GETENTROPY,
> GLIBCXX_CHECK_ARC4RANDOM):
>         Use GCC_TRY_COMPILE_OR_LINK instead of AC_TRY_COMPILE.
>         * configure: Regenerate.
> ---
>  libstdc++-v3/acinclude.m4 |  4 ++--
>  libstdc++-v3/configure    | 53
> +++++++++++++++++++++++++++++++++++++++++++++--
>  2 files changed, 53 insertions(+), 4 deletions(-)
>
> diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
> index 4adfdf646acb..30bd92d37f23 100644
> --- a/libstdc++-v3/acinclude.m4
> +++ b/libstdc++-v3/acinclude.m4
> @@ -4839,7 +4839,7 @@ AC_DEFUN([GLIBCXX_CHECK_GETENTROPY], [
>    AC_LANG_CPLUSPLUS
>    AC_MSG_CHECKING([for getentropy])
>    AC_CACHE_VAL(glibcxx_cv_getentropy, [
> -      AC_TRY_COMPILE(
> +      GCC_TRY_COMPILE_OR_LINK(
>         [#include <unistd.h>],
>         [unsigned i;
>          ::getentropy(&i, sizeof(i));],
> @@ -4862,7 +4862,7 @@ AC_DEFUN([GLIBCXX_CHECK_ARC4RANDOM], [
>    AC_LANG_CPLUSPLUS
>    AC_MSG_CHECKING([for arc4random])
>    AC_CACHE_VAL(glibcxx_cv_arc4random, [
> -      AC_TRY_COMPILE(
> +      GCC_TRY_COMPILE_OR_LINK(
>         [#include <stdlib.h>],
>         [unsigned i = ::arc4random();],
>         [glibcxx_cv_arc4random=yes], [glibcxx_cv_arc4random=no])
> diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
> index 3a572475546f..3eb391f409f2 100755
> --- a/libstdc++-v3/configure
> +++ b/libstdc++-v3/configure
> @@ -75445,7 +75445,8 @@ $as_echo_n "checking for getentropy... " >&6; }
>    $as_echo_n "(cached) " >&6
>  else
>
> -      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +      if test x$gcc_no_link = xyes; then
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
>  /* end confdefs.h.  */
>  #include <unistd.h>
>  int
> @@ -75463,6 +75464,30 @@ else
>    glibcxx_cv_getentropy=no
>  fi
>  rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +else
> +  if test x$gcc_no_link = xyes; then
> +  as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES."
> "$LINENO" 5
> +fi
> +cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#include <unistd.h>
> +int
> +main ()
> +{
> +unsigned i;
> +        ::getentropy(&i, sizeof(i));
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_cxx_try_link "$LINENO"; then :
> +  glibcxx_cv_getentropy=yes
> +else
> +  glibcxx_cv_getentropy=no
> +fi
> +rm -f core conftest.err conftest.$ac_objext \
> +    conftest$ac_exeext conftest.$ac_ext
> +fi
>
>  fi
>
> @@ -75496,7 +75521,8 @@ $as_echo_n "checking for arc4random... " >&6; }
>    $as_echo_n "(cached) " >&6
>  else
>
> -      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +      if test x$gcc_no_link = xyes; then
> +  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
>  /* end confdefs.h.  */
>  #include <stdlib.h>
>  int
> @@ -75513,6 +75539,29 @@ else
>    glibcxx_cv_arc4random=no
>  fi
>  rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
> +else
> +  if test x$gcc_no_link = xyes; then
> +  as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES."
> "$LINENO" 5
> +fi
> +cat confdefs.h - <<_ACEOF >conftest.$ac_ext
> +/* end confdefs.h.  */
> +#include <stdlib.h>
> +int
> +main ()
> +{
> +unsigned i = ::arc4random();
> +  ;
> +  return 0;
> +}
> +_ACEOF
> +if ac_fn_cxx_try_link "$LINENO"; then :
> +  glibcxx_cv_arc4random=yes
> +else
> +  glibcxx_cv_arc4random=no
> +fi
> +rm -f core conftest.err conftest.$ac_objext \
> +    conftest$ac_exeext conftest.$ac_ext
> +fi
>
>  fi
>
> --
> 2.11.0
>
>

Reply via email to