mirror of
				https://gitlab.alpinelinux.org/alpine/aports.git
				synced 2025-10-31 16:31:40 +01:00 
			
		
		
		
	This fixes dependencies and restores the patch from ce2915cb0a7f7391fe51ad12af0df0f0746742a6 that was lost when rebasing.
		
			
				
	
	
		
			381 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			381 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Patch-Source: https://github.com/zephyrproject-rtos/gcc/pull/8
 | |
| 
 | |
| From 55addb0c0c5ff5e0aab85574aa26abf175af85c8 Mon Sep 17 00:00:00 2001
 | |
| From: Stephanos Ioannidis <root@stephanos.io>
 | |
| Date: Mon, 25 Jul 2022 23:10:41 +0900
 | |
| Subject: [PATCH] libstdc++: Do not check getentropy and arc4random for cross builds
 | |
| 
 | |
| The "getentropy" and "arc4random" check may not yield a correct result
 | |
| for the cross compile builds because linking is often not available for
 | |
| them and the C library headers (notoriously, newlib) may still declare
 | |
| these function prototypes even if they are not actually part of the
 | |
| final library -- for this reason, this commit disables the "getentropy"
 | |
| and "arc4random" checks for non-native builds.
 | |
| 
 | |
| This effectively prevents the std::random_device from making use of
 | |
| these functions when `--with-newlib` is specified, which is indeed a
 | |
| correct behaviour because the newlib does not provide a default stub
 | |
| for the "getentropy" function (also note that the newlib "arc4random"
 | |
| implementation internally calls the missing "getentropy" function).
 | |
| 
 | |
| For other C libraries, the `GLIBCXX_CROSSCONFIG` function may hard-code
 | |
| the availability of these functions by manually defining
 | |
| `HAVE_GETENTROPY` and `HAVE_ARC4RANDOM`, or by calling the
 | |
| `GLIBCXX_CHECK_GETENTROPY` and `GLIBCXX_CHECK_ARC4RANDOM` functions.
 | |
| 
 | |
| libstdc++-v3:
 | |
| 	* configure.ac: Relocate GLIBCXX_CHECK_GETENTROPY and
 | |
| 	GLIBCXX_CHECK_ARC4RANDOM
 | |
| 	* configure: Regenerate.
 | |
| 
 | |
| Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
 | |
| ---
 | |
|  libstdc++-v3/configure    | 300 +++++++++++++++++++-------------------
 | |
|  libstdc++-v3/configure.ac |   8 +-
 | |
|  2 files changed, 154 insertions(+), 154 deletions(-)
 | |
| 
 | |
| diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
 | |
| index 0ce74e8202443..5d43b56b03ffa 100755
 | |
| --- a/libstdc++-v3/configure
 | |
| +++ b/libstdc++-v3/configure
 | |
| @@ -28088,6 +28088,156 @@ $as_echo "#define _GLIBCXX_USE_RANDOM_TR1 1" >>confdefs.h
 | |
|  
 | |
|  
 | |
|  
 | |
| +  # Check for other random number APIs
 | |
| +
 | |
| +
 | |
| +
 | |
| +  ac_ext=cpp
 | |
| +ac_cpp='$CXXCPP $CPPFLAGS'
 | |
| +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 | |
| +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 | |
| +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 | |
| +
 | |
| +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getentropy" >&5
 | |
| +$as_echo_n "checking for getentropy... " >&6; }
 | |
| +if ${glibcxx_cv_getentropy+:} false; then :
 | |
| +  $as_echo_n "(cached) " >&6
 | |
| +else
 | |
| +
 | |
| +      if test x$gcc_no_link = xyes; then
 | |
| +  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_compile "$LINENO"; then :
 | |
| +  glibcxx_cv_getentropy=yes
 | |
| +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
 | |
| +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_getentropy" >&5
 | |
| +$as_echo "$glibcxx_cv_getentropy" >&6; }
 | |
| +
 | |
| +  if test $glibcxx_cv_getentropy = yes; then
 | |
| +
 | |
| +$as_echo "#define HAVE_GETENTROPY 1" >>confdefs.h
 | |
| +
 | |
| +  fi
 | |
| +  ac_ext=c
 | |
| +ac_cpp='$CPP $CPPFLAGS'
 | |
| +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 | |
| +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 | |
| +ac_compiler_gnu=$ac_cv_c_compiler_gnu
 | |
| +
 | |
| +
 | |
| +
 | |
| +
 | |
| +
 | |
| +  ac_ext=cpp
 | |
| +ac_cpp='$CXXCPP $CPPFLAGS'
 | |
| +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 | |
| +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 | |
| +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 | |
| +
 | |
| +  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for arc4random" >&5
 | |
| +$as_echo_n "checking for arc4random... " >&6; }
 | |
| +if ${glibcxx_cv_arc4random+:} false; then :
 | |
| +  $as_echo_n "(cached) " >&6
 | |
| +else
 | |
| +
 | |
| +      if test x$gcc_no_link = xyes; then
 | |
| +  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_compile "$LINENO"; then :
 | |
| +  glibcxx_cv_arc4random=yes
 | |
| +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
 | |
| +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_arc4random" >&5
 | |
| +$as_echo "$glibcxx_cv_arc4random" >&6; }
 | |
| +
 | |
| +  if test $glibcxx_cv_arc4random = yes; then
 | |
| +
 | |
| +$as_echo "#define HAVE_ARC4RANDOM 1" >>confdefs.h
 | |
| +
 | |
| +  fi
 | |
| +  ac_ext=c
 | |
| +ac_cpp='$CPP $CPPFLAGS'
 | |
| +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 | |
| +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 | |
| +ac_compiler_gnu=$ac_cv_c_compiler_gnu
 | |
| +
 | |
| +
 | |
| +
 | |
|    # For TLS support.
 | |
|  
 | |
|  
 | |
| @@ -75519,156 +75669,6 @@ $as_echo "#define _GLIBCXX_X86_RDSEED 1" >>confdefs.h
 | |
|    fi
 | |
|  
 | |
|  
 | |
| -# Check for other random number APIs
 | |
| -
 | |
| -
 | |
| -
 | |
| -  ac_ext=cpp
 | |
| -ac_cpp='$CXXCPP $CPPFLAGS'
 | |
| -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 | |
| -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 | |
| -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 | |
| -
 | |
| -  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getentropy" >&5
 | |
| -$as_echo_n "checking for getentropy... " >&6; }
 | |
| -if ${glibcxx_cv_getentropy+:} false; then :
 | |
| -  $as_echo_n "(cached) " >&6
 | |
| -else
 | |
| -
 | |
| -      if test x$gcc_no_link = xyes; then
 | |
| -  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_compile "$LINENO"; then :
 | |
| -  glibcxx_cv_getentropy=yes
 | |
| -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
 | |
| -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_getentropy" >&5
 | |
| -$as_echo "$glibcxx_cv_getentropy" >&6; }
 | |
| -
 | |
| -  if test $glibcxx_cv_getentropy = yes; then
 | |
| -
 | |
| -$as_echo "#define HAVE_GETENTROPY 1" >>confdefs.h
 | |
| -
 | |
| -  fi
 | |
| -  ac_ext=c
 | |
| -ac_cpp='$CPP $CPPFLAGS'
 | |
| -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 | |
| -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 | |
| -ac_compiler_gnu=$ac_cv_c_compiler_gnu
 | |
| -
 | |
| -
 | |
| -
 | |
| -
 | |
| -
 | |
| -  ac_ext=cpp
 | |
| -ac_cpp='$CXXCPP $CPPFLAGS'
 | |
| -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 | |
| -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 | |
| -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 | |
| -
 | |
| -  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for arc4random" >&5
 | |
| -$as_echo_n "checking for arc4random... " >&6; }
 | |
| -if ${glibcxx_cv_arc4random+:} false; then :
 | |
| -  $as_echo_n "(cached) " >&6
 | |
| -else
 | |
| -
 | |
| -      if test x$gcc_no_link = xyes; then
 | |
| -  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_compile "$LINENO"; then :
 | |
| -  glibcxx_cv_arc4random=yes
 | |
| -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
 | |
| -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $glibcxx_cv_arc4random" >&5
 | |
| -$as_echo "$glibcxx_cv_arc4random" >&6; }
 | |
| -
 | |
| -  if test $glibcxx_cv_arc4random = yes; then
 | |
| -
 | |
| -$as_echo "#define HAVE_ARC4RANDOM 1" >>confdefs.h
 | |
| -
 | |
| -  fi
 | |
| -  ac_ext=c
 | |
| -ac_cpp='$CPP $CPPFLAGS'
 | |
| -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 | |
| -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 | |
| -ac_compiler_gnu=$ac_cv_c_compiler_gnu
 | |
| -
 | |
| -
 | |
| -
 | |
|  # This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
 | |
|  
 | |
|    # Do checks for resource limit functions.
 | |
| diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
 | |
| index e59bcdb29441f..05cdfcddbc43b 100644
 | |
| --- a/libstdc++-v3/configure.ac
 | |
| +++ b/libstdc++-v3/configure.ac
 | |
| @@ -269,6 +269,10 @@ if $GLIBCXX_IS_NATIVE; then
 | |
|    # For /dev/random and /dev/urandom for std::random_device.
 | |
|    GLIBCXX_CHECK_DEV_RANDOM
 | |
|  
 | |
| +  # Check for other random number APIs
 | |
| +  GLIBCXX_CHECK_GETENTROPY
 | |
| +  GLIBCXX_CHECK_ARC4RANDOM
 | |
| +
 | |
|    # For TLS support.
 | |
|    GCC_CHECK_TLS
 | |
|  
 | |
| @@ -474,10 +478,6 @@ GLIBCXX_CHECK_X86_RDRAND
 | |
|  # Check if assembler supports rdseed opcode.
 | |
|  GLIBCXX_CHECK_X86_RDSEED
 | |
|  
 | |
| -# Check for other random number APIs
 | |
| -GLIBCXX_CHECK_GETENTROPY
 | |
| -GLIBCXX_CHECK_ARC4RANDOM
 | |
| -
 | |
|  # This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
 | |
|  GLIBCXX_CONFIGURE_TESTSUITE
 | |
|  
 |