diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 4adfdf646acbcb63c9c8bb5199d17ac5c9970366..30bd92d37f236ee0fbec757df75004e02df197eb 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 3a572475546f1d8eab8b7b2629eeb33d8bb22134..3eb391f409f269cfcd16cdc02957a1bbb20dd73f 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