This patch is for PR 79193 and 88999, problems where libstdc++ is
mis-configuring itself when building for a bare-metal target because it
thinks it can link programs without pulling in the BSP that provides
low-level I/O support. (Specifically, this was observed on nios2-elf
with Newlib and GDB semihosting.) It'll build just fine if it
recognizes that it can only compile programs and not link them, but it's
confused because using an empty program to test for ability to link
succeeds.
Is this configure change OK, and suitable for stage 4?
BTW, I did run autoconf in every subdirectory that contains a
configure.ac, but it appears only libstc++-v3 actually uses this test;
all the other regenerated configure scripts were unchanged.
-Sandra
>From 44b769a9b5e01a58c9b89b24ca5a00fc1ff53012 Mon Sep 17 00:00:00 2001
From: Sandra Loosemore <san...@codesourcery.com>
Date: Wed, 5 Feb 2020 10:03:58 -0800
Subject: [PATCH] Use a non-empty test program to test ability to link.
On bare-metal targets, I/O support is typically provided by a BSP and
requires a linker script and/or hosting library to be specified on the
linker command line. Linking an empty program with the default linker
script may succeed, however, which confuses libstdc++ configuration
when programs that probe for the presence of various I/O features fail
with link errors.
2020-02-05 Sandra Loosemore <san...@codesourcery.com>
PR libstdc++/79193
PR libstdc++/88999
config/
* no-executables.m4: Use a non-empty program to test for linker
support.
libstdc++v-3/
* configure: Regenerated.
---
config/ChangeLog | 8 ++++++++
config/no-executables.m4 | 4 +++-
libstdc++-v3/ChangeLog | 7 +++++++
libstdc++-v3/configure | 4 ++--
4 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/config/ChangeLog b/config/ChangeLog
index f1fec81..d2a12bd 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,11 @@
+2020-02-05 Sandra Loosemore <san...@codesourcery.com>
+
+ PR libstdc++/79193
+ PR libstdc++/88999
+
+ * no-executables.m4: Use a non-empty program to test for linker
+ support.
+
2020-02-01 Andrew Burgess <andrew.burg...@embecosm.com>
* lib-link.m4 (AC_LIB_LINKFLAGS_BODY): Update shell syntax.
diff --git a/config/no-executables.m4 b/config/no-executables.m4
index 9061624..6842f84 100644
--- a/config/no-executables.m4
+++ b/config/no-executables.m4
@@ -25,7 +25,9 @@ AC_BEFORE([$0], [_AC_COMPILER_EXEEXT])
AC_BEFORE([$0], [AC_LINK_IFELSE])
m4_define([_AC_COMPILER_EXEEXT],
-[AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
+[AC_LANG_CONFTEST([AC_LANG_PROGRAM(
+ [#include <stdio.h>],
+ [printf ("hello world\n");])])
# FIXME: Cleanup?
AS_IF([AC_TRY_EVAL(ac_link)], [gcc_no_link=no], [gcc_no_link=yes])
if test x$gcc_no_link = xyes; then
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 76a6e2b..46ab7c0 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,10 @@
+2020-02-05 Sandra Loosemore <san...@codesourcery.com>
+
+ PR libstdc++/79193
+ PR libstdc++/88999
+
+ * configure: Regenerated.
+
2020-02-05 Jonathan Wakely <jwak...@redhat.com>
* include/bits/iterator_concepts.h (iter_reference_t)
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index a39c33b..9f9c5a2 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -4130,11 +4130,11 @@ done
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-
+#include <stdio.h>
int
main ()
{
-
+printf ("hello world\n");
;
return 0;
}
--
2.8.1