aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2008-12-19 15:55:42 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2008-12-19 15:55:42 +0100
commitacd08fa87c2e45c25f52ba12ba019ecb460d73de (patch)
treecf5c7224efe9bcccb76478acaed7d423f3ca80be
parentdd88bc97473ecad755657a587123e6da2653949a (diff)
downloadgcc-acd08fa87c2e45c25f52ba12ba019ecb460d73de.zip
gcc-acd08fa87c2e45c25f52ba12ba019ecb460d73de.tar.gz
gcc-acd08fa87c2e45c25f52ba12ba019ecb460d73de.tar.bz2
re PR bootstrap/37739 (bootstrap broken with core gcc > gcc-4.2.x)
PR bootstrap/37739 * config.host: For powerpc*-*-linux* host with 32-bit GCC, use rs6000/x-linux-relax snippet if ld is new enough, otherwise use rs6000/x-linux-O1. * config/rs6000/x-linux-relax: New file. * config/x-cflags-O1: New file. From-SVN: r142833
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config.host21
-rw-r--r--gcc/config/rs6000/x-linux-relax2
-rw-r--r--gcc/config/x-cflags-O15
4 files changed, 37 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index add2497..8575c25 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2008-12-19 Jakub Jelinek <jakub@redhat.com>
+
+ PR bootstrap/37739
+ * config.host: For powerpc*-*-linux* host with 32-bit GCC,
+ use rs6000/x-linux-relax snippet if ld is new enough,
+ otherwise use rs6000/x-linux-O1.
+ * config/rs6000/x-linux-relax: New file.
+ * config/x-cflags-O1: New file.
+
2008-12-18 Joseph Myers <joseph@codesourcery.com>
* config/rs6000/rs6000.c (rs6000_generate_compare): Condition
diff --git a/gcc/config.host b/gcc/config.host
index 2cfcd6b..939cc15 100644
--- a/gcc/config.host
+++ b/gcc/config.host
@@ -124,6 +124,27 @@ case ${host} in
host_xmake_file="${host_xmake_file} rs6000/x-rs6000"
;;
esac
+ case ${host} in
+ *-*-linux* )
+ if test "${GCC}:${ac_cv_sizeof_long}" = yes:4; then
+ # On powerpc*-*-linux* use -Wl,--relax to link cc1,
+ # if ld is new enough, otherwise force -O1 in CFLAGS.
+ host_ppc_relax_xmake_file=
+ host_ld_ver=`${CC} -Wl,--version 2>/dev/null | sed 1q`
+ if echo "$host_ld_ver" | grep GNU > /dev/null; then
+ host_ld_date=`echo $host_ld_ver \
+ | sed -n 's,^.*\([2-9][0-9][0-9][0-9]\)[-]*\([01][0-9]\)[-]*\([0-3][0-9]\).*$,\1\2\3,p'`
+ if test 0"$host_ld_date" -gt 20080806; then
+ host_ppc_relax_xmake_file=rs6000/x-linux-relax
+ fi
+ fi
+ if test -z "${host_ppc_relax_xmake_file}"; then
+ host_ppc_relax_xmake_file=x-cflags-O1
+ fi
+ host_xmake_file="${host_xmake_file} ${host_ppc_relax_xmake_file}"
+ fi
+ ;;
+ esac
;;
esac
diff --git a/gcc/config/rs6000/x-linux-relax b/gcc/config/rs6000/x-linux-relax
new file mode 100644
index 0000000..2743a94
--- /dev/null
+++ b/gcc/config/rs6000/x-linux-relax
@@ -0,0 +1,2 @@
+# At -O0 cc1 etc. are too large and -Wl,--relax is needed
+$(COMPILERS) : override LDFLAGS += -Wl,--relax
diff --git a/gcc/config/x-cflags-O1 b/gcc/config/x-cflags-O1
new file mode 100644
index 0000000..9ba1e74
--- /dev/null
+++ b/gcc/config/x-cflags-O1
@@ -0,0 +1,5 @@
+# At -O0 cc1 etc. are too large on some targets for successful
+# link; force building libbackend.a with -O1.
+ifeq ($(filter-out -O0,$(lastword $(filter -O%,$(CFLAGS)))),)
+$(OBJS) : override CFLAGS += -O1
+endif