public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/gcc] rhel-f41-base: 4.8.0-0.3
@ 2026-06-29 12:25 Jakub Jelinek
  0 siblings, 0 replies; only message in thread
From: Jakub Jelinek @ 2026-06-29 12:25 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/gcc
Branch : rhel-f41-base
Commit : e835ae255ac5374bdb2ae7af71bcc4f54dff3756
Author : Jakub Jelinek <jakub@redhat.com>
Date   : 2013-01-06T12:13:05+01:00
Stats  : +1985/-2174 in 40 file(s)
URL    : https://src.fedoraproject.org/rpms/gcc/c/e835ae255ac5374bdb2ae7af71bcc4f54dff3756?branch=rhel-f41-base

Log:
4.8.0-0.3

---
diff --git a/.gitignore b/.gitignore
index 84a6258..599ab06 100644
--- a/.gitignore
+++ b/.gitignore
@@ -47,3 +47,6 @@
 /gcc-4.7.2-20121015.tar.bz2
 /gcc-4.7.2-20121105.tar.bz2
 /gcc-4.7.2-20121109.tar.bz2
+/cloog-0.17.0.tar.gz
+/isl-0.10.tar.bz2
+/gcc-4.8.0-20130106.tar.bz2

diff --git a/gcc.spec b/gcc.spec
index 5ed22ea..506eee3 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20121109
-%global SVNREV 193356
-%global gcc_version 4.7.2
+%global DATE 20130106
+%global SVNREV 194938
+%global gcc_version 4.8.0
 # Note, gcc_release must be integer, if you want to add suffixes to
 # %{release}, append them after %{gcc_release} on Release: line.
-%global gcc_release 9
+%global gcc_release 0.3
 %global _unpackaged_files_terminate_build 0
 %global multilib_64_archs sparc64 ppc64 s390x x86_64
 %ifarch %{ix86} x86_64 ia64 ppc ppc64 alpha
@@ -11,7 +11,11 @@
 %else
 %global build_ada 0
 %endif
+%if 0%{?rhel} >= 7
+%global build_java 0
+%else
 %global build_java 1
+%endif
 %ifarch %{ix86} x86_64 ppc ppc64 s390 s390x %{arm}
 %global build_go 1
 %else
@@ -22,6 +26,21 @@
 %else
 %global build_libquadmath 0
 %endif
+%ifarch %{ix86} x86_64
+%global build_libasan 1
+%else
+%global build_libasan 0
+%endif
+%ifarch x86_64
+%global build_libtsan 1
+%else
+%global build_libtsan 0
+%endif
+%ifarch %{ix86} x86_64 ppc ppc64 s390 s390x %{arm}
+%global build_libatomic 1
+%else
+%global build_libatomic 0
+%endif
 %ifarch %{ix86} x86_64 %{arm} alpha ppc ppc64
 %global build_libitm 1
 %else
@@ -64,6 +83,10 @@ Group: Development/Languages
 # svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_7-branch@%{SVNREV} gcc-%{version}-%{DATE}
 # tar cf - gcc-%{version}-%{DATE} | bzip2 -9 > gcc-%{version}-%{DATE}.tar.bz2
 Source0: gcc-%{version}-%{DATE}.tar.bz2
+%global isl_version 0.10
+Source1: ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-%{isl_version}.tar.bz2
+%global cloog_version 0.17.0
+Source2: ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-%{cloog_version}.tar.gz
 %global fastjar_ver 0.97
 Source4: http://download.savannah.nongnu.org/releases/fastjar/fastjar-%{fastjar_ver}.tar.gz
 URL: http://gcc.gnu.org
@@ -118,14 +141,6 @@ BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1
 %ifarch ia64
 BuildRequires: libunwind >= 0.98
 %endif
-%if %{build_cloog}
-%if 0%{?fedora} >= 15 || 0%{?rhel} >= 7
-BuildRequires: ppl >= 0.11.2, ppl-devel >= 0.11.2
-%else
-BuildRequires: ppl >= 0.10, ppl-devel >= 0.10
-%endif
-BuildRequires: cloog-ppl >= 0.15, cloog-ppl-devel >= 0.15
-%endif
 %if %{build_libstdcxx_docs}
 BuildRequires: doxygen >= 1.7.1
 BuildRequires: graphviz
@@ -163,33 +178,28 @@ Requires: libgomp = %{version}-%{release}
 Obsoletes: gcc-gnat < %{version}-%{release}
 Obsoletes: libgnat < %{version}-%{release}
 %endif
-%if %{build_cloog}
-Requires: cloog-ppl >= 0.15
-%endif
 Requires(post): /sbin/install-info
 Requires(preun): /sbin/install-info
 AutoReq: true
 Provides: bundled(libiberty)
 
-Patch0: gcc47-hack.patch
-Patch1: gcc47-c++-builtin-redecl.patch
-Patch2: gcc47-java-nomulti.patch
-Patch3: gcc47-ppc32-retaddr.patch
-Patch5: gcc47-rh330771.patch
-Patch6: gcc47-i386-libgomp.patch
-Patch7: gcc47-sparc-config-detection.patch
-Patch8: gcc47-libgomp-omp_h-multilib.patch
-Patch9: gcc47-libtool-no-rpath.patch
-Patch10: gcc47-cloog-dl.patch
-Patch11: gcc47-pr38757.patch
-Patch12: gcc47-libstdc++-docs.patch
-Patch13: gcc47-no-add-needed.patch
-Patch14: gcc47-ppl-0.10.patch
-Patch15: gcc47-libitm-fno-exceptions.patch
-Patch16: gcc47-rh837630.patch
-Patch17: gcc47-arm-hfp-ldso.patch
-Patch18: gcc47-pr55137.patch
-Patch19: gcc47-pr55236.patch
+Patch0: gcc48-hack.patch
+Patch1: gcc48-java-nomulti.patch
+Patch2: gcc48-ppc32-retaddr.patch
+Patch3: gcc48-rh330771.patch
+Patch4: gcc48-i386-libgomp.patch
+Patch5: gcc48-sparc-config-detection.patch
+Patch6: gcc48-libgomp-omp_h-multilib.patch
+Patch7: gcc48-libtool-no-rpath.patch
+Patch8: gcc48-cloog-dl.patch
+Patch9: gcc48-cloog-dl2.patch
+Patch10: gcc48-pr38757.patch
+Patch11: gcc48-libstdc++-docs.patch
+Patch12: gcc48-no-add-needed.patch
+Patch13: gcc48-asan-ppc.patch
+Patch14: gcc48-pr55341.patch
+Patch15: gcc48-pr55608.patch
+Patch16: gcc48-pr55844.patch
 
 Patch1000: fastjar-0.97-segfault.patch
 Patch1001: fastjar-0.97-len1.patch
@@ -446,6 +456,61 @@ Requires: libitm-devel = %{version}-%{release}
 %description -n libitm-static
 This package contains GNU Transactional Memory static libraries.
 
+%package -n libatomic 
+Summary: The GNU Atomic library
+Group: System Environment/Libraries
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n libatomic
+This package contains the GNU Atomic library
+which is a GCC support runtime library for atomic operations not supported
+by hardware.
+
+%package -n libatomic-static
+Summary: The GNU Atomic static library
+Group: Development/Libraries
+Requires: libatomic = %{version}-%{release}
+
+%description -n libatomic-static
+This package contains GNU Atomic static libraries.
+
+%package -n libasan
+Summary: The Address Sanitizer runtime library
+Group: System Environment/Libraries
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n libasan
+This package contains the Address Sanitizer library
+which is used for -fsanitize=address instrumented programs.
+
+%package -n libasan-static
+Summary: The Address Sanitizer static library
+Group: Development/Libraries
+Requires: libasan = %{version}-%{release}
+
+%description -n libasan-static
+This package contains Address Sanitizer static runtime library.
+
+%package -n libtsan
+Summary: The Thread Sanitizer runtime library
+Group: System Environment/Libraries
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n libtsan
+This package contains the Thread Sanitizer library
+which is used for -fsanitize=thread instrumented programs.
+
+%package -n libtsan-static
+Summary: The Thread Sanitizer static library
+Group: Development/Libraries
+Requires: libtsan = %{version}-%{release}
+
+%description -n libtsan-static
+This package contains Thread Sanitizer static runtime library.
+
 %package java
 Summary: Java support for GCC
 Group: Development/Languages
@@ -668,34 +733,28 @@ package or when debugging this package.
 %endif
 
 %prep
-%setup -q -n gcc-%{version}-%{DATE}
+%setup -q -n gcc-%{version}-%{DATE} -a 1 -a 2
 %patch0 -p0 -b .hack~
-%patch1 -p0 -b .c++-builtin-redecl~
-%patch2 -p0 -b .java-nomulti~
-%patch3 -p0 -b .ppc32-retaddr~
-%patch5 -p0 -b .rh330771~
-%patch6 -p0 -b .i386-libgomp~
-%patch7 -p0 -b .sparc-config-detection~
-%patch8 -p0 -b .libgomp-omp_h-multilib~
-%patch9 -p0 -b .libtool-no-rpath~
+%patch1 -p0 -b .java-nomulti~
+%patch2 -p0 -b .ppc32-retaddr~
+%patch3 -p0 -b .rh330771~
+%patch4 -p0 -b .i386-libgomp~
+%patch5 -p0 -b .sparc-config-detection~
+%patch6 -p0 -b .libgomp-omp_h-multilib~
+%patch7 -p0 -b .libtool-no-rpath~
 %if %{build_cloog}
-%patch10 -p0 -b .cloog-dl~
+%patch8 -p0 -b .cloog-dl~
+%patch9 -p0 -b .cloog-dl2~
 %endif
-%patch11 -p0 -b .pr38757~
+%patch10 -p0 -b .pr38757~
 %if %{build_libstdcxx_docs}
-%patch12 -p0 -b .libstdc++-docs~
-%endif
-%patch13 -p0 -b .no-add-needed~
-%if 0%{?fedora} < 15 && 0%{?rhel} < 7
-%patch14 -p0 -b .ppl-0.10~
-%endif
-%patch15 -p0 -b .libitm-fno-exceptions~
-%patch16 -p0 -b .rh837630~
-%if 0%{?fedora} >= 18 || 0%{?rhel} >= 7
-%patch17 -p0 -b .arm-hfp-ldso~
+%patch11 -p0 -b .libstdc++-docs~
 %endif
-%patch18 -p0 -b .pr55137~
-%patch19 -p0 -b .pr55236~
+%patch12 -p0 -b .no-add-needed~
+%patch13 -p0 -b .asan-ppc~
+%patch14 -p0 -b .pr55341~
+%patch15 -p0 -b .pr55608~
+%patch16 -p0 -b .pr55844~
 
 %if 0%{?_enable_debug_packages}
 cat > split-debuginfo.sh <<\EOF
@@ -837,8 +896,8 @@ cd java_hacks
 cp -a ../../libjava/classpath/tools/external external
 mkdir -p gnu/classpath/tools
 cp -a ../../libjava/classpath/tools/gnu/classpath/tools/{common,javah,getopt} gnu/classpath/tools/
-cp -a ../../libjava/classpath/tools/resource/gnu/classpath/tools/common/Messages.properties gnu/classpath/tools/common
-cp -a ../../libjava/classpath/tools/resource/gnu/classpath/tools/getopt/Messages.properties gnu/classpath/tools/getopt
+cp -a ../../libjava/classpath/tools/resource/gnu/classpath/tools/common/messages.properties gnu/classpath/tools/common
+cp -a ../../libjava/classpath/tools/resource/gnu/classpath/tools/getopt/messages.properties gnu/classpath/tools/getopt
 cd external/asm; for i in `find . -name \*.java`; do gcj --encoding ISO-8859-1 -C $i -I.; done; cd ../..
 for i in `find gnu -name \*.java`; do gcj -C $i -I. -Iexternal/asm/; done
 gcj -findirect-dispatch -O2 -fmain=gnu.classpath.tools.javah.Main -I. -Iexternal/asm/ `find . -name \*.class` -o gjavah.real
@@ -858,6 +917,48 @@ cd ..
 %endif
 %endif
 
+%if %{build_cloog}
+mkdir isl-build isl-install
+%ifarch s390 s390x
+ISL_FLAG_PIC=-fPIC
+%else
+ISL_FLAG_PIC=-fpic
+%endif
+cd isl-build
+../../isl-%{isl_version}/configure --disable-shared \
+  CC=/usr/bin/gcc CXX=/usr/bin/g++ \
+  CFLAGS="${CFLAGS:-%optflags} $ISL_FLAG_PIC" --prefix=`cd ..; pwd`/isl-install
+make %{?_smp_mflags}
+make install
+cd ..
+
+mkdir cloog-build cloog-install
+cd cloog-build
+cat >> ../../cloog-%{cloog_version}/source/isl/constraints.c << \EOF
+#include <isl/flow.h>
+static void __attribute__((used)) *s1 = (void *) isl_union_map_compute_flow;
+static void __attribute__((used)) *s2 = (void *) isl_map_dump;
+EOF
+sed -i 's|libcloog|libgcc48privatecloog|g' \
+  ../../cloog-%{cloog_version}/{,test/}Makefile.{am,in}
+isl_prefix=`cd ../isl-install; pwd` \
+../../cloog-%{cloog_version}/configure --with-isl=system \
+  --with-isl-prefix=`cd ../isl-install; pwd` \
+  CC=/usr/bin/gcc CXX=/usr/bin/g++ \
+  CFLAGS="${CFLAGS:-%optflags}" CXXFLAGS="${CXXFLAGS:-%optflags}" \
+   --prefix=`cd ..; pwd`/cloog-install
+sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
+sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
+make %{?_smp_mflags}
+make %{?_smp_mflags} install
+cd ../cloog-install/lib
+rm libgcc48privatecloog-isl.so{,.3}
+mv libgcc48privatecloog-isl.so.3.0.0 libcloog-isl.so.3
+ln -sf libcloog-isl.so.3 libcloog-isl.so
+ln -sf libcloog-isl.so.3 libcloog.so
+cd ../..
+%endif
+
 CC=gcc
 OPT_FLAGS=`echo %{optflags}|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
 OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'`
@@ -901,12 +1002,12 @@ enablelada=,ada
 %if %{build_go}
 enablelgo=,go
 %endif
-CC="$CC" CFLAGS="$OPT_FLAGS" CXXFLAGS="`echo $OPT_FLAGS | sed 's/ -Wall / /g'`" \
+CC="$CC" CFLAGS="$OPT_FLAGS" \
+	CXXFLAGS="`echo " $OPT_FLAGS " | sed 's/ -Wall / /g;s/ -fexceptions / /g'`" \
 	XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" GCJFLAGS="$OPT_FLAGS" \
 	../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
 	--with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap \
 	--enable-shared --enable-threads=posix --enable-checking=release \
-	--disable-build-with-cxx --disable-build-poststage1-with-cxx \
 	--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
 	--enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu \
 	--enable-languages=c,c++,objc,obj-c++,java,fortran${enablelada}${enablelgo},lto \
@@ -924,9 +1025,9 @@ CC="$CC" CFLAGS="$OPT_FLAGS" CXXFLAGS="`echo $OPT_FLAGS | sed 's/ -Wall / /g'`" 
 	--disable-libjava-multilib \
 %endif
 %if %{build_cloog}
-	--with-ppl --disable-ppl-version-check --with-cloog \
+	--with-isl=`pwd`/isl-install --with-cloog=`pwd`/cloog-install \
 %else
-	--without-ppl --without-cloog \
+	--without-isl --without-cloog \
 %endif
 %ifarch %{arm}
 	--disable-sjlj-exceptions \
@@ -980,6 +1081,10 @@ GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
 GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
 %endif
 
+%if %{build_cloog}
+cp -a cloog-install/lib/libcloog-isl.so.3 gcc/
+%endif
+
 # Make generated man pages even if Pod::Man is not new enough
 perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl
 for i in ../gcc/doc/*.texi; do
@@ -1001,9 +1106,9 @@ cd ..
 mkdir -p rpm.doc/gfortran rpm.doc/objc
 mkdir -p rpm.doc/boehm-gc rpm.doc/fastjar rpm.doc/libffi rpm.doc/libjava
 mkdir -p rpm.doc/go rpm.doc/libgo rpm.doc/libquadmath rpm.doc/libitm
-mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}
+mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp,libatomic,libsanitizer}
 
-for i in {gcc,gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}/ChangeLog*; do
+for i in {gcc,gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp,libatomic,libsanitizer}/ChangeLog*; do
 	cp -p $i rpm.doc/changelogs/$i
 done
 
@@ -1088,6 +1193,10 @@ chmod 644 %{buildroot}%{_infodir}/gnat*
 FULLPATH=%{buildroot}%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
 FULLEPATH=%{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
 
+%if %{build_cloog}
+cp -a cloog-install/lib/libcloog-isl.so.3 $FULLPATH/
+%endif
+
 # fix some things
 ln -sf gcc %{buildroot}%{_prefix}/bin/cc
 rm -f %{buildroot}%{_prefix}/lib/cpp
@@ -1275,7 +1384,7 @@ ln -sf ../../../libgomp.so.1.* libgomp.so
 ln -sf ../../../libmudflap.so.0.* libmudflap.so
 ln -sf ../../../libmudflapth.so.0.* libmudflapth.so
 %if %{build_go}
-ln -sf ../../../libgo.so.0.* libgo.so
+ln -sf ../../../libgo.so.3.* libgo.so
 %endif
 %if %{build_libquadmath}
 ln -sf ../../../libquadmath.so.0.* libquadmath.so
@@ -1283,10 +1392,16 @@ ln -sf ../../../libquadmath.so.0.* libquadmath.so
 %if %{build_libitm}
 ln -sf ../../../libitm.so.1.* libitm.so
 %endif
+%if %{build_libatomic}
+ln -sf ../../../libatomic.so.1.* libatomic.so
+%endif
+%if %{build_libasan}
+ln -sf ../../../libasan.so.0.* libasan.so
+%endif
 %if %{build_java}
-ln -sf ../../../libgcj.so.13.* libgcj.so
-ln -sf ../../../libgcj-tools.so.13.* libgcj-tools.so
-ln -sf ../../../libgij.so.13.* libgij.so
+ln -sf ../../../libgcj.so.14.* libgcj.so
+ln -sf ../../../libgcj-tools.so.14.* libgcj-tools.so
+ln -sf ../../../libgij.so.14.* libgij.so
 %endif
 else
 ln -sf ../../../../%{_lib}/libobjc.so.4 libobjc.so
@@ -1296,7 +1411,7 @@ ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so
 ln -sf ../../../../%{_lib}/libmudflap.so.0.* libmudflap.so
 ln -sf ../../../../%{_lib}/libmudflapth.so.0.* libmudflapth.so
 %if %{build_go}
-ln -sf ../../../../%{_lib}/libgo.so.0.* libgo.so
+ln -sf ../../../../%{_lib}/libgo.so.3.* libgo.so
 %endif
 %if %{build_libquadmath}
 ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so
@@ -1304,10 +1419,20 @@ ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so
 %if %{build_libitm}
 ln -sf ../../../../%{_lib}/libitm.so.1.* libitm.so
 %endif
+%if %{build_libatomic}
+ln -sf ../../../../%{_lib}/libatomic.so.1.* libatomic.so
+%endif
+%if %{build_libasan}
+ln -sf ../../../../%{_lib}/libasan.so.0.* libasan.so
+%endif
+%if %{build_libtsan}
+rm -f libtsan.so
+echo 'INPUT ( %{_prefix}/%{_lib}/'`echo ../../../../%{_lib}/libtsan.so.0.* | sed 's,^.*libt,libt,'`' )' > libtsan.so
+%endif
 %if %{build_java}
-ln -sf ../../../../%{_lib}/libgcj.so.13.* libgcj.so
-ln -sf ../../../../%{_lib}/libgcj-tools.so.13.* libgcj-tools.so
-ln -sf ../../../../%{_lib}/libgij.so.13.* libgij.so
+ln -sf ../../../../%{_lib}/libgcj.so.14.* libgcj.so
+ln -sf ../../../../%{_lib}/libgcj-tools.so.14.* libgcj-tools.so
+ln -sf ../../../../%{_lib}/libgij.so.14.* libgij.so
 %endif
 fi
 %if %{build_java}
@@ -1325,6 +1450,15 @@ mv -f %{buildroot}%{_prefix}/%{_lib}/libquadmath.*a $FULLLPATH/
 %if %{build_libitm}
 mv -f %{buildroot}%{_prefix}/%{_lib}/libitm.*a $FULLLPATH/
 %endif
+%if %{build_libatomic}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libatomic.*a $FULLLPATH/
+%endif
+%if %{build_libasan}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libasan.*a $FULLLPATH/
+%endif
+%if %{build_libtsan}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan.*a $FULLLPATH/
+%endif
 %if %{build_go}
 mv -f %{buildroot}%{_prefix}/%{_lib}/libgo.*a $FULLLPATH/
 mv -f %{buildroot}%{_prefix}/%{_lib}/libgobegin.*a $FULLLPATH/
@@ -1381,8 +1515,8 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libmudflap.so.0.* | sed 's
 echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libmudflapth.so.0.* | sed 's,^.*libm,libm,'`' )' > 64/libmudflapth.so
 %if %{build_go}
 rm -f libgo.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.0.* | sed 's,^.*libg,libg,'`' )' > libgo.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.0.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.3.* | sed 's,^.*libg,libg,'`' )' > libgo.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.3.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
 %endif
 %if %{build_libquadmath}
 rm -f libquadmath.so
@@ -1394,10 +1528,20 @@ rm -f libitm.so
 echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libitm.so.1.* | sed 's,^.*libi,libi,'`' )' > libitm.so
 echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libitm.so.1.* | sed 's,^.*libi,libi,'`' )' > 64/libitm.so
 %endif
+%if %{build_libatomic}
+rm -f libatomic.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > libatomic.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > 64/libatomic.so
+%endif
+%if %{build_libasan}
+rm -f libasan.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libasan.so.0.* | sed 's,^.*liba,liba,'`' )' > libasan.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libasan.so.0.* | sed 's,^.*liba,liba,'`' )' > 64/libasan.so
+%endif
 %if %{build_java}
-ln -sf ../`echo ../../../../lib/libgcj.so.13.* | sed s~/lib/~/lib64/~` 64/libgcj.so
-ln -sf ../`echo ../../../../lib/libgcj-tools.so.13.* | sed s~/lib/~/lib64/~` 64/libgcj-tools.so
-ln -sf ../`echo ../../../../lib/libgij.so.13.* | sed s~/lib/~/lib64/~` 64/libgij.so
+ln -sf ../`echo ../../../../lib/libgcj.so.14.* | sed s~/lib/~/lib64/~` 64/libgcj.so
+ln -sf ../`echo ../../../../lib/libgcj-tools.so.14.* | sed s~/lib/~/lib64/~` 64/libgcj-tools.so
+ln -sf ../`echo ../../../../lib/libgij.so.14.* | sed s~/lib/~/lib64/~` 64/libgij.so
 ln -sf lib32/libgcj_bc.so libgcj_bc.so
 ln -sf ../lib64/libgcj_bc.so 64/libgcj_bc.so
 %endif
@@ -1421,6 +1565,14 @@ ln -sf ../lib64/libquadmath.a 64/libquadmath.a
 ln -sf lib32/libitm.a libitm.a
 ln -sf ../lib64/libitm.a 64/libitm.a
 %endif
+%if %{build_libatomic}
+ln -sf lib32/libatomic.a libatomic.a
+ln -sf ../lib64/libatomic.a 64/libatomic.a
+%endif
+%if %{build_libasan}
+ln -sf lib32/libasan.a libasan.a
+ln -sf ../lib64/libasan.a 64/libasan.a
+%endif
 %if %{build_go}
 ln -sf lib32/libgo.a libgo.a
 ln -sf ../lib64/libgo.a 64/libgo.a
@@ -1447,8 +1599,8 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libmudflap.so.0.* | sed 's
 echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libmudflapth.so.0.* | sed 's,^.*libm,libm,'`' )' > 32/libmudflapth.so
 %if %{build_go}
 rm -f libgo.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.0.* | sed 's,^.*libg,libg,'`' )' > libgo.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.0.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.3.* | sed 's,^.*libg,libg,'`' )' > libgo.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.3.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
 %endif
 %if %{build_libquadmath}
 rm -f libquadmath.so
@@ -1460,10 +1612,20 @@ rm -f libitm.so
 echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libitm.so.1.* | sed 's,^.*libi,libi,'`' )' > libitm.so
 echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libitm.so.1.* | sed 's,^.*libi,libi,'`' )' > 32/libitm.so
 %endif
+%if %{build_libatomic}
+rm -f libatomic.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > libatomic.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libatomic.so.1.* | sed 's,^.*liba,liba,'`' )' > 32/libatomic.so
+%endif
+%if %{build_libasan}
+rm -f libasan.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libasan.so.0.* | sed 's,^.*liba,liba,'`' )' > libasan.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libasan.so.0.* | sed 's,^.*liba,liba,'`' )' > 32/libasan.so
+%endif
 %if %{build_java}
-ln -sf ../`echo ../../../../lib64/libgcj.so.13.* | sed s~/../lib64/~/~` 32/libgcj.so
-ln -sf ../`echo ../../../../lib64/libgcj-tools.so.13.* | sed s~/../lib64/~/~` 32/libgcj-tools.so
-ln -sf ../`echo ../../../../lib64/libgij.so.13.* | sed s~/../lib64/~/~` 32/libgij.so
+ln -sf ../`echo ../../../../lib64/libgcj.so.14.* | sed s~/../lib64/~/~` 32/libgcj.so
+ln -sf ../`echo ../../../../lib64/libgcj-tools.so.14.* | sed s~/../lib64/~/~` 32/libgcj-tools.so
+ln -sf ../`echo ../../../../lib64/libgij.so.14.* | sed s~/../lib64/~/~` 32/libgij.so
 %endif
 mv -f %{buildroot}%{_prefix}/lib/libobjc.*a 32/
 mv -f %{buildroot}%{_prefix}/lib/libgomp.*a 32/
@@ -1487,6 +1649,14 @@ ln -sf lib64/libquadmath.a libquadmath.a
 ln -sf ../lib32/libitm.a 32/libitm.a
 ln -sf lib64/libitm.a libitm.a
 %endif
+%if %{build_libatomic}
+ln -sf ../lib32/libatomic.a 32/libatomic.a
+ln -sf lib64/libatomic.a libatomic.a
+%endif
+%if %{build_libasan}
+ln -sf ../lib32/libasan.a 32/libasan.a
+ln -sf lib64/libasan.a libasan.a
+%endif
 %if %{build_go}
 ln -sf ../lib32/libgo.a 32/libgo.a
 ln -sf lib64/libgo.a libgo.a
@@ -1516,6 +1686,12 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libq
 %if %{build_libitm}
 ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libitm.a 32/libitm.a
 %endif
+%if %{build_libatomic}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libatomic.a 32/libatomic.a
+%endif
+%if %{build_libasan}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libasan.a 32/libasan.a
+%endif
 %if %{build_go}
 ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgo.a 32/libgo.a
 ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgobegin.a 32/libgobegin.a
@@ -1534,7 +1710,8 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/adal
 strip -g `find . \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \
 		    -o -name libmudflap.a -o -name libmudflapth.a \
 		    -o -name libgcc.a -o -name libgcov.a -o -name libquadmath.a \
-		    -o -name libitm.a -o -name libgo.a -o -name libcaf\*.a \) \
+		    -o -name libitm.a -o -name libgo.a -o -name libcaf\*.a \
+		    -o -name libatomic.a -o -name libasan.a -o -name libtsan.a \) \
 		 -a -type f`
 popd
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgfortran.so.3.*
@@ -1546,8 +1723,17 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libquadmath.so.0.*
 %if %{build_libitm}
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.*
 %endif
+%if %{build_libatomic}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libatomic.so.1.*
+%endif
+%if %{build_libasan}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libasan.so.0.*
+%endif
+%if %{build_libtsan}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libtsan.so.0.*
+%endif
 %if %{build_go}
-chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.0.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.3.*
 %endif
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libobjc.so.4.*
 
@@ -1615,6 +1801,7 @@ rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcc-ranlib || :
 # Remove libraries for the other arch on multilib arches
 rm -f %{buildroot}%{_prefix}/lib/lib*.so*
 rm -f %{buildroot}%{_prefix}/lib/lib*.a
+rm -f %{buildroot}/lib/libgcc_s*.so*
 %if %{build_go}
 rm -rf %{buildroot}%{_prefix}/lib/go/%{gcc_version}/%{gcc_target_platform}
 %ifnarch sparc64 ppc64
@@ -1625,6 +1812,7 @@ ln -sf %{multilib_32_arch}-%{_vendor}-%{_target_os} %{buildroot}%{_prefix}/lib/g
 %ifarch sparcv9 ppc
 rm -f %{buildroot}%{_prefix}/lib64/lib*.so*
 rm -f %{buildroot}%{_prefix}/lib64/lib*.a
+rm -f %{buildroot}/lib64/libgcc_s*.so*
 %if %{build_go}
 rm -rf %{buildroot}%{_prefix}/lib64/go/%{gcc_version}/%{gcc_target_platform}
 %endif
@@ -1846,6 +2034,18 @@ fi
 
 %postun -n libitm -p /sbin/ldconfig
 
+%post -n libatomic -p /sbin/ldconfig
+
+%postun -n libatomic -p /sbin/ldconfig
+
+%post -n libasan -p /sbin/ldconfig
+
+%postun -n libasan -p /sbin/ldconfig
+
+%post -n libtsan -p /sbin/ldconfig
+
+%postun -n libtsan -p /sbin/ldconfig
+
 %post -n libgo -p /sbin/ldconfig
 
 %postun -n libgo -p /sbin/ldconfig
@@ -1930,6 +2130,9 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/adxintrin.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/prfchwintrin.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/rdseedintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/fxsrintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xsaveintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xsaveoptintrin.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm_malloc.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm3dnow.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cpuid.h
@@ -1968,6 +2171,9 @@ fi
 %if %{build_libitm}
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libitm.spec
 %endif
+%if %{build_cloog}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libcloog-isl.so.*
+%endif
 %ifarch sparcv9 ppc
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/crt*.o
@@ -1989,6 +2195,14 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libitm.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libitm.so
 %endif
+%if %{build_libatomic}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libatomic.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libatomic.so
+%endif
+%if %{build_libasan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libasan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libasan.so
+%endif
 %endif
 %ifarch %{multilib_64_archs}
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
@@ -2011,6 +2225,14 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libitm.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libitm.so
 %endif
+%if %{build_libatomic}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libatomic.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libatomic.so
+%endif
+%if %{build_libasan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libasan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libasan.so
+%endif
 %endif
 %ifarch sparcv9 sparc64 ppc ppc64
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.a
@@ -2025,6 +2247,28 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libitm.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libitm.so
 %endif
+%if %{build_libatomic}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libatomic.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libatomic.so
+%endif
+%if %{build_libasan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libasan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libasan.so
+%endif
+%if %{build_libtsan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libtsan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libtsan.so
+%endif
+%else
+%if %{build_libatomic}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libatomic.so
+%endif
+%if %{build_libasan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libasan.so
+%endif
+%if %{build_libtsan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libtsan.so
+%endif
 %endif
 %dir %{_prefix}/libexec/getconf
 %{_prefix}/libexec/getconf/default
@@ -2573,6 +2817,68 @@ fi
 %endif
 %endif
 
+%if %{build_libatomic}
+%files -n libatomic
+%defattr(-,root,root,-)
+%{_prefix}/%{_lib}/libatomic.so.1*
+
+%files -n libatomic-static
+%defattr(-,root,root,-)
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libatomic.a
+%endif
+%ifarch sparc64 ppc64
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libatomic.a
+%endif
+%ifnarch sparcv9 sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libatomic.a
+%endif
+%doc rpm.doc/changelogs/libatomic/ChangeLog*
+%endif
+
+%if %{build_libasan}
+%files -n libasan
+%defattr(-,root,root,-)
+%{_prefix}/%{_lib}/libasan.so.0*
+
+%files -n libasan-static
+%defattr(-,root,root,-)
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libasan.a
+%endif
+%ifarch sparc64 ppc64
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libasan.a
+%endif
+%ifnarch sparcv9 sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libasan.a
+%endif
+%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
+%endif
+
+%if %{build_libtsan}
+%files -n libtsan
+%defattr(-,root,root,-)
+%{_prefix}/%{_lib}/libtsan.so.0*
+
+%files -n libtsan-static
+%defattr(-,root,root,-)
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libtsan.a
+%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
+%endif
+
 %if %{build_go}
 %files go
 %defattr(-,root,root,-)
@@ -2608,7 +2914,7 @@ fi
 
 %files -n libgo
 %defattr(-,root,root,-)
-%{_prefix}/%{_lib}/libgo.so.0*
+%{_prefix}/%{_lib}/libgo.so.3*
 %doc rpm.doc/libgo/*
 
 %files -n libgo-devel
@@ -2669,450 +2975,5 @@ fi
 %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
 
 %changelog
-* Fri Nov 30 2012 Tom Callaway <spot@fedoraproject.org> 4.7.2-9
-- rebuild for new ppl/cloog
-- pass --disable-ppl-version-check (for ppl 1.0)
-
-* Fri Nov  9 2012 Jakub Jelinek <jakub@redhat.com> 4.7.2-8
-- update from the 4.7 branch
-  - PRs fortran/54917, libstdc++/28811, libstdc++/54482, libstdc++/55028,
-	libstdc++/55215, middle-end/55219, target/55204,
-	tree-optimization/54986
-- further debug info quality improvements
-- fix reassociation (PR c++/55137)
-- fix range test optimization with -fwrapv (PR tree-optimization/55236)
-- add BuildRequires hostname (#875001)
-- __cxa_vec_new[23] overflow checking (#875009)
-
-* Mon Nov  5 2012 Jakub Jelinek <jakub@redhat.com> 4.7.2-7
-- update from the 4.7 branch
-  - PRs c++/54984, c++/54988, debug/54828, libstdc++/55047, libstdc++/55123,
-	libstdc++/55169, middle-end/54945, rtl-optimization/53701,
-	rtl-optimization/54870, target/53975, target/54892, target/55019,
-	target/55175, tree-optimization/53708, tree-optimization/54146,
-	tree-optimization/54877, tree-optimization/54902,
-	tree-optimization/54920, tree-optimization/54985
-- backported s390{,x} zEC12 enablement (#805114)
-- backport of selected debug info quality improvements
-  - PRs debug/54402, debug/54693, debug/54953, debug/54970, debug/54971
-- optimize away overflow checking for new char[n]; and similar cases
-  where n is multiplied by 1
-
-* Mon Oct 15 2012 Jon Ciesla <limburgher@gmail.com> 4.7.2-6
-- Provides: bundled(libiberty)
-
-* Mon Oct 15 2012 Jakub Jelinek <jakub@redhat.com> 4.7.2-5
-- update from the 4.7 branch
-  - PRs fortran/54784, libfortran/54736, libstdc++/54861
-
-* Tue Oct  9 2012 Jakub Jelinek <jakub@redhat.com> 4.7.2-4
-- update from the 4.7 branch
-  - PRs c++/54777, c++/54858, debug/53135, target/54741, target/54785,
-	target/54854
-- backport of selected debug info quality improvements (#851467)
-  - PRs debug/48866, debug/52983, debug/53740, debug/53923, debug/54519,
-	debug/54551
-
-* Mon Oct  1 2012 Jakub Jelinek <jakub@redhat.com> 4.7.2-3
-- update from the 4.7 branch
-  - PRs target/54083, target/54703, target/54746, testsuite/54007
-- backport operator new[] overflow checking (#850911, PR c++/19351)
-
-* Fri Sep 21 2012 Jakub Jelinek <jakub@redhat.com> 4.7.2-2
-- update from the 4.7 branch
-  - PRs c/54103, c/54552, libstdc++/54102, middle-end/54638, other/43620
-
-* Thu Sep 20 2012 Jakub Jelinek <jakub@redhat.com> 4.7.2-1
-- update from the 4.7 branch
-  - GCC 4.7.2 release
-  - PRs c++/53661, lto/54312, tree-optimization/54563
-
-* Thu Sep 13 2012 Jakub Jelinek <jakub@redhat.com> 4.7.1-8
-- update from the 4.7 branch
-  - PRs c++/53836, c++/53839, c++/54086, c++/54197, c++/54253, c++/54341,
-	c++/54506, c++/54511, c/54363, c/54428, c/54559, debug/54534,
-	driver/54335, fortran/53306, fortran/54208, fortran/54225,
-	fortran/54435, fortran/54443, fortran/54556, gcov-profile/54487,
-	libstdc++/54172, libstdc++/54185, libstdc++/54297, libstdc++/54351,
-	libstdc++/54376, libstdc++/54388, lto/53572, middle-end/53667,
-	middle-end/53992, middle-end/54146, middle-end/54486,
-	middle-end/54515, rtl-optimization/54088, rtl-optimization/54369,
-	rtl-optimization/54455, target/45070, target/46254, target/54212,
-	target/54220, target/54252, target/54436, target/54461,
-	target/54476, target/54536, tree-opt/54494,
-	tree-optimization/53922, tree-optimization/54498
-- fix up _mm_f{,n}m{add,sub}_s{s,d} fma intrinsics (PR target/54564)
-
-* Mon Aug 13 2012 Jakub Jelinek <jakub@redhat.com> 4.7.1-7
-- update from the 4.7 branch
-  - PR rtl-optimization/53942
-- backport -mrdseed, -mprfchw and -madx support
-
-* Fri Aug 10 2012 Jakub Jelinek <jakub@redhat.com> 4.7.1-6
-- update from the 4.7 branch
-  - PRs libstdc++/54036, libstdc++/54075, rtl-optimization/54157,
-	target/33135, target/52530
-
-* Fri Jul 20 2012 Jakub Jelinek <jakub@redhat.com> 4.7.1-5
-- update from the 4.7 branch
-  - PRs c++/54026, middle-end/54017, rtl-optimization/52250, target/53877,
-	target/54029
-  - fix endless hang of C++ compiler (#841814, PR c++/54038)
-
-* Wed Jul 18 2012 Jakub Jelinek <jakub@redhat.com> 4.7.1-4
-- update from the 4.7 branch
-  - PRs c++/53549, c++/53989, c++/53995, libstdc++/53978
-
-* Mon Jul 16 2012 Jakub Jelinek <jakub@redhat.com> 4.7.1-3
-- update from the 4.7 branch
-  - C++11 ABI change - std::list and std::pair in C++11 ABI compatible again
-    with C++03, but ABI incompatible with C++11 in GCC 4.7.[01]
-  - PRs bootstrap/52947, c++/53733, c++/53816, c++/53821, c++/53826,
-	c++/53882, c++/53953, fortran/53732, libstdc++/49561,
-	libstdc++/53578, libstdc++/53657, libstdc++/53830, libstdc++/53872,
-	middle-end/38474, middle-end/50708, middle-end/52621,
-	middle-end/52786, middle-end/53433, rtl-optimization/53908,
-	target/53110, target/53811, target/53853, target/53961,
-	testsuite/20771, tree-optimization/53693
-- backport -mrtm and -mhle support (PRs target/53194, target/53201,
-  target/53315)
-- fix up ppc32 *movdi_internal32 pattern (#837630)
-- apply ld.so arm hfp patch on all arm arches
-- enable go support on arm
-
-* Fri Jul 13 2012 Jakub Jelinek <jakub@redhat.com> 4.7.1-2
-- change ld.so pathname for arm hfp for F18+
-
-* Fri Jun 29 2012 Jakub Jelinek <jakub@redhat.com> 4.7.1-1
-- update from the 4.7 branch
-  - GCC 4.7.1 release
-  - PRs ada/53592, c++/51214, c++/52637, c++/52841, c++/52988, c++/53202,
-	c++/53305, c++/53498, c++/53524, c++/53594, c++/53599, c++/53602,
-	c++/53616, c++/53651, c++/53752, debug/53682, fortran/50619,
-	fortran/53597, fortran/53685, fortran/53691, gcov-profile/53744,
-	libgomp/52993, libstdc++/53270, libstdc++/53678, middle-end/53470,
-	middle-end/53580, middle-end/53790, preprocessor/37215,
-	rtl-optimization/53589, rtl-optimization/53700, target/52908,
-	target/53559, target/53595, target/53621, target/53759,
-	tree-optimization/52558
-
-* Mon Jun  4 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-7
-- update from the 4.7 branch
-  - PRs ada/53517, c++/52725, c++/52905, c++/52973, c++/53137, c++/53220,
-	c++/53356, c++/53484, c++/53491, c++/53500, c++/53503,
-	fortran/53521, libstdc++/52007, middle-end/47530, middle-end/48124,
-	middle-end/48493, middle-end/52080, middle-end/52097,
-	middle-end/52979, middle-end/53008, middle-end/53471,
-	middle-end/53501, rtl-optimization/52528, rtl-optimization/53519,
-	target/46261, target/52642, target/52667, tree-optimization/53438,
-	tree-optimization/53505, tree-optimization/53516,
-	tree-optimization/53550
-
-* Fri May 25 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-6
-- update from the 4.7 branch
-  - PRs ada/52362, ada/52494, bootstrap/53183, c++/53209, c++/53301,
-	c/53418, debug/52727, fortran/53310, fortran/53389, libstdc++/52700,
-	middle-end/51071, middle-end/52584, middle-end/53460,
-	rtl-optimization/52804, target/46098, target/53256, target/53272,
-	target/53358, target/53385, target/53416, target/53435, target/53448,
-	tree-optimization/53364, tree-optimization/53366,
-	tree-optimization/53408, tree-optimization/53409,
-	tree-optimization/53410, tree-optimization/53436,
-	tree-optimization/53465
-
-* Mon May  7 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-5
-- update from the 4.7 branch
-  - PRs fortran/53111, fortran/53255, target/48496, target/52999,
-	target/53228, tree-optimization/52633, tree-optimization/52870,
-	tree-optimization/53195, tree-optimization/53239
-
-* Fri May  4 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-4
-- update from the 4.7 branch
-  - PRs c++/53186, fortran/52864, libstdc++/53193, lto/52605,
-	target/52684, target/53199, tree-optimization/53144
-  - fix up gcc-ar, gcc-nm and gcc-ranlib (#818311, PR plugins/53126)
-
-* Wed May  2 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-3
-- update from the 4.7 branch
-  - PRs bootstrap/52840, c++/38543, c++/50303, c++/50830, c++/53003,
-	c/51527, c/52880, c/53060, fortran/53148, libstdc++/52689,
-	libstdc++/52839, libstdc++/53027, libstdc++/53067, libstdc++/53115,
-	middle-end/52939, middle-end/52999, middle-end/53084,
-	middle-end/53136, rtl-optimization/53160, target/52932,
-	target/53020, target/53033, target/53065, target/53120,
-	target/53138, testsuite/52641, testsuite/53046,
-	tree-optimization/53085, tree-optimization/53163,
-	tree-optimizations/52891
-- fix ARM SELECT_CC_MODE ICE (#817086, PR target/53187)
-- fix predictive commoning debug info ICE (PR debug/53174)
-
-* Mon Apr 16 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-2
-- update from the 4.7 branch
-  - PRs c++/52292, c++/52380, c++/52465, c++/52487, c++/52596, c++/52671,
-	c++/52672, c++/52685, c++/52718, c++/52743, c++/52746, c++/52759,
-	c++/52796, c++/52824, c++/52906, c/52682, c/52862, fortran/52452,
-	fortran/52668, fortran/52893, libgfortran/52758, libitm/52854,
-	libstdc++/52433, libstdc++/52476, libstdc++/52540, libstdc++/52591,
-	libstdc++/52699, libstdc++/52799, libstdc++/52822, libstdc++/52924,
-	libstdc++/52942, middle-end/51893, middle-end/52493,
-	middle-end/52547, middle-end/52580, middle-end/52640,
-	middle-end/52691, middle-end/52693, middle-end/52720,
-	middle-end/52750, middle-end/52894, other/52545,
-	rtl-optimization/52543, target/48596, target/48806, target/50310,
-	target/52461, target/52484, target/52488, target/52496, target/52499,
-	target/52505, target/52506, target/52507, target/52508, target/52610,
-	target/52692, target/52698, target/52717, target/52736, target/52737,
-	target/52775, tree-optimization/52406, tree-optimization/52678,
-	tree-optimization/52701, tree-optimization/52754,
-	tree-optimization/52835, tree-optimization/52943,
-	tree-optimization/52969
-- avoid duplicate pointers in C++ debug info due to injected class name
-  (PR debug/45088)
-- libjava locale fixes (#712013)
-
-* Thu Mar 22 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-1
-- update from the 4.7 branch
-  - GCC 25th Anniversary 4.7.0 release
-  - fix up new auto mangling
-
-* Thu Mar 15 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.20
-- update from the 4.7 branch
-  - PRs fortran/52469, libitm/52526, libstdc++/52456, target/52450
-  - fix __builtin_ir{ound,int}{,f,l} expansion (#803689, PR middle-end/52592)
-  - fix up devirtualization (#802731, PR c++/52582)
-- fix up user defined literal operator"" lookup (PR c++/52521)
-- avoid false positive -Wunused-but-set-* warnings with __builtin_shuffle
-  (PR c/52577)
-
-* Thu Mar  8 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.19
-- update from trunk and the 4.7 branch
-  - PRs libstdc++/51785, middle-end/52419, middle-end/52443,
-	middle-end/52463, rtl-optimization/52417, target/49939,
-	target/51417, target/52408, target/52437, target/52481,
-	testsuite/52297, tree-opt/52242, tree-optimization/52424,
-	tree-optimization/52429, tree-optimization/52445
-  - fix up mangling of operator"" (PR c++/52521)
-- decrease size of .debug_ranges by ~ 20% (PR debug/51902)
-- add support for demangling operator""
-- package %{_prefix}/bin/gcc-{ar,nm,ranlib} binaries for LTO
-
-* Wed Feb 29 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.18
-- update from trunk
-  - PRs boehm-gc/48299, bootstrap/52397, bootstrap/52414, fortran/52386,
-	libstdc++/52191, lto/52400, middle-end/51752, target/49448,
-	target/51534, target/52148, target/52407, tree-optimization/52395,
-	tree-optimization/52402, tree-optimization/53207
-  - fix bootstrap on ppc*/arm/s390*
-
-* Mon Feb 27 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.17
-- update from trunk
-  - PRs boehm-gc/52179, libffi/52223, libstdc++/52188, middle-end/52355,
-	middle-end/52361, target/49263, target/49461, target/50580,
-	target/52352, target/52375, target/52390, testsuite/52201,
-	tree-optimization/52376
-
-* Fri Feb 24 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.16
-- update from trunk
-  - fix vtable for std::num_get<char, std::istreambuf_iterator<char,
-    std::char_traits<char> > > and vtable for std::num_get<wchar_t,
-    std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >
-    ABI breakage
-  - PR bootstrap/52287
-
-* Thu Feb 23 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.15
-- update from trunk
-  - PRs c/52290, fortran/52335, go/52349, libstdc++/50349, lto/50616,
-	middle-end/52329, rtl-optimization/50063, target/18145, target/52330,
-	tree-optimization/52019
-- disable go on arm again, still not ready there
-
-* Tue Feb 21 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.14
-- update from trunk
-  - PRs c++/51415, c++/52126, c++/52248, c++/52312, fortran/52295,
-	libstdc++/47058, libstdc++/52189, libstdc++/52241, libstdc++/52300,
-	libstdc++/52309, libstdc++/52317, middle-end/52141, middle-end/52314,
-	rtl-optimization/52208, target/50166, target/51753, target/52137,
-	target/52238, target/52294, testsuite/52229, translation/52232,
-	translation/52234, translation/52245, translation/52246,
-	translation/52262, translation/52273, tree-optimization/52285,
-	tree-optimization/52286, tree-optimization/52298,
-	tree-optimization/52318, tree-optimization/52324
-
-* Thu Feb 16 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.13
-- update from trunk
-  - PRs boehm-gc/48514, bootstrap/52172, c++/39055, c++/51910, c++/52215,
-	c/52181, c/52190, debug/52165, debug/52260, driver/48524,
-	fortran/32380, fortran/52151, go/48411, go/51874, libffi/52221,
-	libitm/52042, libitm/52220, libstdc++/51368, lto/52178,
-	middle-end/48600, middle-end/51867, middle-end/51929,
-	middle-end/52140, middle-end/52142, middle-end/52177,
-	middle-end/52209, middle-end/52214, middle-end/52230,
-	rtl-optimization/52175, target/51921, target/52146, target/52199,
-	target/52205, target/52261, testsuite/50076, translation/52193,
-	translation/52211, translation/52264, tree-optimization/50031,
-	tree-optimization/50561, tree-optimization/52210,
-	tree-optimization/52244, tree-optimization/52255
-  - fix asm goto handling in templates (#790221, PR c++/52247)
-- reenable go on ppc/ppc64/s390/s390x/arm
-
-* Wed Feb  8 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.12
-- update from trunk
-  - PRs c++/52035, fortran/51514, gcov-profile/52150, libstdc++/51296,
-	libstdc++/51906, middle-end/24306, middle-end/51994,
-	middle-end/52074, rtl-optimization/52139, rtl-optimization/52170,
-	target/40068, target/52152, target/52154, target/52155,
-	tree-optimization/46886
-  - fix up build on ppc*
-  - don't look for lto plugin/lto-wrapper if -E/-S/-c or in cpp
-- move liblto_plugin.so* back into gcc subpackage
-
-* Mon Feb  6 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.11
-- update from trunk
-  - PRs bootstrap/52039, bootstrap/52041, bootstrap/52058, c++/48680,
-	c++/51327, c++/51370, c++/51852, c++/52043, c++/52088, c/52118,
-	debug/52001, debug/52027, debug/52048, fortran/32373, fortran/41587,
-	fortran/41600, fortran/46356, fortran/48705, fortran/48847,
-	fortran/51754, fortran/51808, fortran/51870, fortran/51943,
-	fortran/51946, fortran/51953, fortran/51958, fortran/51970,
-	fortran/51972, fortran/51977, fortran/52012, fortran/52013,
-	fortran/52016, fortran/52022, fortran/52024, fortran/52029,
-	fortran/52038, fortran/52093, fortran/52102, go/47656, go/48501,
-	libitm/51822, libjava/48512, libstdc++/49445, libstdc++/51649,
-	libstdc++/51795, libstdc++/51798, libstdc++/51811, libstdc++/51956,
-	libstdc++/52068, libstdc++/52104, libstdc++/52119, libstdc++/52128,
-	middle-end/43967, middle-end/47982, middle-end/48071,
-	middle-end/51389, middle-end/51959, middle-end/51998,
-	middle-end/52047, rtl-optimization/49800, rtl-optimization/51374,
-	rtl-optimization/51978, rtl-optimization/52092,
-	rtl-optimization/52095, rtl-optimization/52113, target/51500,
-	target/51835, target/51871, target/51920, target/51974, target/52079,
-	target/52107, target/52125, target/52129, testsuite/51875,
-	testsuite/52011, tree-optimization/48794, tree-optimization/50444,
-	tree-optimization/50955, tree-optimization/50969,
-	tree-optimization/51528, tree-optimization/51990,
-	tree-optimization/52020, tree-optimization/52028,
-	tree-optimization/52045, tree-optimization/52046,
-	tree-optimization/52073, tree-optimization/52091,
-	tree-optimization/52115
-  - fix i?86 mem += reg; mem cmp 0 8-bit peephole2 (#786570, PR target/52086)
-  - fix fortran ICE on elemental call (#785433, PR fortran/52059)
-- fix up /lib/cpp symlink for UsrMove (#787460)
-- move LTO plugin into cpp subpackage (#787345)
-- fix debug ICE with i387 reg-stack (#787518, PR debug/52132)
-- fix ARM combine bug (PR rtl-optimization/52060)
-- fix a DWARF4 .debug_types DIE cloning bug (PR debug/51950)
-
-* Thu Jan 26 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.10
-- update from trunk
-  - PRs bootstrap/51985, c++/51223, c++/51812, c++/51917, c++/51928,
-	c++/51930, c++/51973, c++/51992, driver/47249, fortran/51966,
-	fortran/51995, libstdc++/49829, lto/51698, middle-end/45678,
-	middle-end/51986, rtl-optimization/48308, rtl-optimization/48374
-  - fix data-ref handling of non-volatile inline asms (#784242,
-    PR tree-optimization/51987)
-- fix ARM ICE with invalid peephole (#784748, PR target/52006)
-
-* Mon Jan 23 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.9
-- update from trunk
-  - PRs ada/46192, c++/51344, c++/51398, c++/51402, c++/51832, c++/51919,
-	c++/51922, debug/45682, fortran/50556, fortran/51056, fortran/51904,
-	fortran/51913, fortran/51948, libgcj/23182, libgfortran/51899,
-	libitm/51830, libstdc++/50982, lto/51916, middle-end/45416,
-	rtl-optimization/40761, rtl-optimization/51924, target/47096,
-	target/49868, target/50313, target/50887, target/51106, target/51819,
-	target/51900, target/51915, target/51931, target/51934,
-	testsuite/51941, tree-optimization/51895, tree-optimization/51903,
-	tree-optimization/51914, tree-optimization/51949
-  - fix REE pass (#783481, PR rtl-optimization/51933)
-  - further overload fixes with using decls (#783586, PR c++/51925)
-- fix ICE during expansion with BLKmode MEM_REF (#782868, PR middle-end/51895)
-- fix ppc64 profiledbootstrap (PR target/51957)
-- revert broken stack layout change (PR tree-optimization/46590)
-- fix ARM ICE on neon insn splitting (PR target/51968)
-
-* Thu Jan 19 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.8
-- update from trunk
-  - PRs bootstrap/50237, c++/51225, c++/51889, fortran/48426, fortran/51634,
-	go/50656, libmudflap/40778, libstdc++/51845, libstdc++/51866,
-	lto/51280, middle-end/51192, rtl-optimization/48496,
-	rtl-optimization/51505, tree-optimization/37997,
-	tree-optimization/46590
-- fix a reload bug on s390 (#773565, PR rtl-optimization/51856)
-
-* Tue Jan 17 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.7
-- update from trunk
-  - PRs bootstrap/51860, c++/14179, c++/20681, c++/50012, c++/51403,
-	c++/51620, c++/51633, c++/51714, c++/51777, c++/51813, c++/51827,
-	c++/51854, c++/51868, c/12245, fortran/36755, fortran/48351,
-	fortran/51800, fortran/51809, fortran/51816, fortran/51842,
-	fortran/51869, libitm/51173, libitm/51855, middle-end/51782,
-	middle-end/8081, other/51165, rtl-optimization/51821, target/47852,
-	target/50925, target/51756, tree-optimization/51865
-  - fix up ppc64 bootstrap with -mminimal-toc (#773040, PR bootstrap/51872)
-  - fix up -ftree-tail-merge (#782231, PR tree-optimization/51877)
-- package up arm and sparc specific headers (#781765)
-- enable libitm and disable go on ppc/ppc64
-- fix up big-endian libstdc++ miscompilation (PR middle-end/50325)
-- fix up arm neon vectorization ICEs (PR target/51876)
-
-* Thu Jan 12 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.6
-- update from trunk
-  - PRs ada/41929, bootstrap/51705, bootstrap/51796, c++/47450,
-	c++/48051, c++/50855, c++/51322, c++/51433, c++/51565,
-	c++/51613, c++/51614, c++/51818, c++/6057, debug/51471,
-	fortran/51057, fortran/51578, fortran/51616, fortran/51652,
-	fortran/51758, fortran/51791, fortran/51792, gcov-profile/50127,
-	gcov-profile/51715, gcov-profile/51717, libstdc++/51673,
-	middle-end/51516, middle-end/51806, preprocessor/33919,
-	preprocessor/51776, rtl-optimization/51271, target/47333,
-	rarget/49868, testsuite/51655, tree-optimization/49642,
-	tree-optimization/50913, tree-optimization/51600,
-	tree-optimization/51680, tree-optimization/51694,
-	tree-optimization/51759, tree-optimization/51775,
-	tree-optimization/51799, tree-optimization/51801
-
-* Fri Jan  6 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.5
-- update from trunk
-  - PRs c++/51541, fortran/48946, libstdc++/51504, lto/51774,
-	rtl-optimization/51771, target/51681, tree-optimization/51315
-- disable go on s390{,x}
-- disable profiledbootstrap on arm and sparc* for now
-
-* Thu Jan  5 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.4
-- update from trunk
-  - PRs bootstrap/51072, bootstrap/51648, debug/51746, debug/51762,
-	lto/41576, lto/50490, middle-end/44777, middle-end/49710,
-	middle-end/51472, middle-end/51761, middle-end/51764,
-	middle-end/51768, other/51171, rtl-optimization/51767,
-	tree-optimization/51624, tree-optimization/51760
-- disable go on arm (#771482)
-- enable profiledbootstrap
-
-* Wed Jan  4 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.3
-- update from trunk
-  - PRs bootstrap/51006, bootstrap/51734, c++/29273, c++/51064, c++/51738,
-	debug/51695, fortran/49693, fortran/50981, middle-end/51696,
-	middle-end/51750, other/51163, other/51164, tree-optimization/49651
-- fix up libitm.so.1
-
-* Tue Jan  3 2012 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.2
-- update from trunk
-  - PRs bootstrap/51686, bootstrap/51725, c++/15867, c++/16603, c++/20140,
-	c++/23211, c++/51316, c++/51379, c++/51397, c++/51462, c++/51507,
-	c++/51547, c++/51666, c++/51669, c++/51675, c++/51723, debug/51650,
-	driver/48306, fortran/46262, fortran/46328, fortran/51052,
-	fortran/51502, fortran/51529, fortran/51682, libfortran/51646,
-	libgcj/49193, libstdc++/48362, libstdc++/49204, libstdc++/51608,
-	libstdc++/51701, libstdc++/51711, lto/51650, middle-end/48641,
-	middle-end/51200, middle-end/51212, middle-end/51252,
-	middle-end/51730, other/51679, pch/51722, rtl-optimization/50396,
-	rtl-optimization/51069, rtl-optimization/51667, target/27468,
-	target/47643, target/51345, target/51552, target/51623, target/51643,
-	target/51729, testsuite/50722, testsuite/51645, testsuite/51702,
-	tree-optimization/43491, tree-optimization/51070,
-	tree-optimization/51269, tree-optimization/51683,
-	tree-optimization/51684, tree-optimization/51692,
-	tree-optimization/51704, tree-optimization/51719
-
-* Wed Dec 21 2011 Jakub Jelinek <jakub@redhat.com> 4.7.0-0.1
+* Sun Jan  6 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.3
 - new package

diff --git a/gcc47-arm-hfp-ldso.patch b/gcc47-arm-hfp-ldso.patch
deleted file mode 100644
index 2f0b8c4..0000000
--- a/gcc47-arm-hfp-ldso.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-2012-05-01  Richard Earnshaw  <rearnsha@arm.com>
-
-	* arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_DEFAULT): Avoid ifdef
-	comparing enumeration values.  Update comments.
-
-2012-04-26  Michael Hope  <michael.hope@linaro.org>
-	    Richard Earnshaw  <rearnsha@arm.com>
-
-	* config/arm/linux-eabi.h (GLIBC_DYNAMIC_LINKER_SOFT_FLOAT): Define.
-	(GLIBC_DYNAMIC_LINKER_HARD_FLOAT): Define.
-	(GLIBC_DYNAMIC_LINKER_DEFAULT): Define.
-	(GLIBC_DYNAMIC_LINKER):	Redefine to use the hard float path.
-
---- gcc/config/arm/linux-eabi.h	(revision 186858)
-+++ gcc/config/arm/linux-eabi.h	(revision 187012)
-@@ -32,7 +32,8 @@
-   while (false)
- 
- /* We default to a soft-float ABI so that binaries can run on all
--   target hardware.  */
-+   target hardware.  If you override this to use the hard-float ABI then
-+   change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well.  */
- #undef  TARGET_DEFAULT_FLOAT_ABI
- #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT
- 
-@@ -59,10 +60,23 @@
- #undef  SUBTARGET_EXTRA_LINK_SPEC
- #define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION
- 
--/* Use ld-linux.so.3 so that it will be possible to run "classic"
--   GNU/Linux binaries on an EABI system.  */
-+/* GNU/Linux on ARM currently supports three dynamic linkers:
-+   - ld-linux.so.2 - for the legacy ABI
-+   - ld-linux.so.3 - for the EABI-derived soft-float ABI
-+   - ld-linux-armhf.so.3 - for the EABI-derived hard-float ABI.
-+   All the dynamic linkers live in /lib.
-+   We default to soft-float, but this can be overridden by changing both
-+   GLIBC_DYNAMIC_LINKER_DEFAULT and TARGET_DEFAULT_FLOAT_ABI.  */
-+
- #undef  GLIBC_DYNAMIC_LINKER
--#define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.3"
-+#define GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "/lib/ld-linux.so.3"
-+#define GLIBC_DYNAMIC_LINKER_HARD_FLOAT "/lib/ld-linux-armhf.so.3"
-+#define GLIBC_DYNAMIC_LINKER_DEFAULT GLIBC_DYNAMIC_LINKER_SOFT_FLOAT
-+
-+#define GLIBC_DYNAMIC_LINKER \
-+   "%{mfloat-abi=hard:" GLIBC_DYNAMIC_LINKER_HARD_FLOAT "} \
-+    %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
-+    %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
- 
- /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
-    use the GNU/Linux version, not the generic BPABI version.  */

diff --git a/gcc47-c++-builtin-redecl.patch b/gcc47-c++-builtin-redecl.patch
deleted file mode 100644
index fa30745..0000000
--- a/gcc47-c++-builtin-redecl.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-2007-10-02  Jakub Jelinek  <jakub@redhat.com>
-
-	* decl.c (duplicate_decls): When redeclaring a builtin function,
-	keep the merged decl builtin whenever types match, even if new
-	decl defines a function.
-
-	* gcc.dg/builtins-85.c: New test.
-	* g++.dg/ext/builtin30.C: New test.
-
---- gcc/cp/decl.c.jj	2007-10-01 22:11:09.000000000 +0200
-+++ gcc/cp/decl.c	2007-10-02 11:39:46.000000000 +0200
-@@ -2137,39 +2137,37 @@ duplicate_decls (tree newdecl, tree oldd
- 	  DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl);
- 	  DECL_RESULT (olddecl) = DECL_RESULT (newdecl);
- 	}
-+      /* If redeclaring a builtin function, it stays built in.  */
-+      if (types_match && DECL_BUILT_IN (olddecl))
-+	{
-+	  DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
-+	  DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
-+	  /* If we're keeping the built-in definition, keep the rtl,
-+	     regardless of declaration matches.  */
-+	  COPY_DECL_RTL (olddecl, newdecl);
-+	  if (DECL_BUILT_IN_CLASS (newdecl) == BUILT_IN_NORMAL)
-+	    {
-+	      enum built_in_function fncode = DECL_FUNCTION_CODE (newdecl);
-+	      switch (fncode)
-+		{
-+		  /* If a compatible prototype of these builtin functions
-+		     is seen, assume the runtime implements it with the
-+		     expected semantics.  */
-+		case BUILT_IN_STPCPY:
-+		  if (builtin_decl_explicit_p (fncode))
-+		    set_builtin_decl_implicit_p (fncode, true);
-+		  break;
-+		default:
-+		  break;
-+		}
-+	    }
-+	}
-       if (new_defines_function)
- 	/* If defining a function declared with other language
- 	   linkage, use the previously declared language linkage.  */
- 	SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl));
-       else if (types_match)
- 	{
--	  /* If redeclaring a builtin function, and not a definition,
--	     it stays built in.  */
--	  if (DECL_BUILT_IN (olddecl))
--	    {
--	      DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
--	      DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
--	      /* If we're keeping the built-in definition, keep the rtl,
--		 regardless of declaration matches.  */
--	      COPY_DECL_RTL (olddecl, newdecl);
--	      if (DECL_BUILT_IN_CLASS (newdecl) == BUILT_IN_NORMAL)
--		{
--		  enum built_in_function fncode = DECL_FUNCTION_CODE (newdecl);
--		  switch (fncode)
--		    {
--		      /* If a compatible prototype of these builtin functions
--			 is seen, assume the runtime implements it with the
--			 expected semantics.  */
--		    case BUILT_IN_STPCPY:
--		      if (builtin_decl_explicit_p (fncode))
--			set_builtin_decl_implicit_p (fncode, true);
--		      break;
--		    default:
--		      break;
--		    }
--		}
--	    }
--
- 	  DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
- 	  /* Don't clear out the arguments if we're just redeclaring a
- 	     function.  */
---- gcc/testsuite/gcc.dg/builtins-85.c.jj	2007-10-02 11:23:51.000000000 +0200
-+++ gcc/testsuite/gcc.dg/builtins-85.c	2007-10-02 11:24:12.000000000 +0200
-@@ -0,0 +1,25 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2" } */
-+
-+typedef __SIZE_TYPE__ size_t;
-+extern void __chk_fail (void);
-+extern int snprintf (char *, size_t, const char *, ...);
-+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
-+{
-+  if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
-+    __chk_fail ();
-+  return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
-+}
-+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
-+
-+char buf[10];
-+
-+int
-+main (void)
-+{
-+  snprintf (buf, 10, "%d%d\n", 10, 10);
-+  return 0;
-+}
-+
-+/* { dg-final { scan-assembler "mysnprintf" } } */
-+/* { dg-final { scan-assembler-not "__chk_fail" } } */
---- gcc/testsuite/g++.dg/ext/builtin30.C.jj	2007-10-02 11:19:45.000000000 +0200
-+++ gcc/testsuite/g++.dg/ext/builtin30.C	2007-10-02 11:23:26.000000000 +0200
-@@ -0,0 +1,27 @@
-+// { dg-do compile }
-+// { dg-options "-O2" }
-+
-+typedef __SIZE_TYPE__ size_t;
-+extern "C" {
-+extern void __chk_fail (void);
-+extern int snprintf (char *, size_t, const char *, ...);
-+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
-+{
-+  if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
-+    __chk_fail ();
-+  return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
-+}
-+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
-+}
-+
-+char buf[10];
-+
-+int
-+main (void)
-+{
-+  snprintf (buf, 10, "%d%d\n", 10, 10);
-+  return 0;
-+}
-+
-+// { dg-final { scan-assembler "mysnprintf" } }
-+// { dg-final { scan-assembler-not "__chk_fail" } }

diff --git a/gcc47-cloog-dl.patch b/gcc47-cloog-dl.patch
deleted file mode 100644
index 1ed7165..0000000
--- a/gcc47-cloog-dl.patch
+++ /dev/null
@@ -1,472 +0,0 @@
-2011-01-04  Jakub Jelinek  <jakub@redhat.com>
-
-	* Makefile.in (BACKENDLIBS): Link against -ldl instead of
-	-lcloog -lppl.
-	(graphite.o, graphite%.o): Force -O, remove -fkeep-inline-functions.
-	(GRAPHITE_CLOOG_UTIL_H, GRAPHITE_POLY_H): New.
-	(graphite*.o): Adjust dependencies.
-	* graphite-cloog-compat.h: Include <dlfcn.h>.  Reference libcloog and
-	libppl symbols through pointers in cloog_pointers__ variable.
-	* graphite.c (init_cloog_pointers): New function.
-	(graphite_transform_loops): Call init_cloog_pointers.
-	* graphite-clast-to-gimple.c (gcc_type_for_iv_of_clast_loop): Rename
-	stmt_for argument to stmt_fora.
-	* graphite-poly.h: Include graphite-cloog-util.h.
-
---- gcc/Makefile.in.jj	2011-01-03 13:44:14.163900902 +0100
-+++ gcc/Makefile.in	2011-01-04 17:48:53.588775911 +0100
-@@ -962,6 +962,8 @@ GCC_PLUGIN_H = gcc-plugin.h highlev-plug
- PLUGIN_H = plugin.h $(GCC_PLUGIN_H)
- PLUGIN_VERSION_H = plugin-version.h configargs.h
- LIBFUNCS_H = libfuncs.h $(HASHTAB_H)
-+GRAPHITE_CLOOG_UTIL_H = graphite-cloog-util.h graphite-cloog-compat.h
-+GRAPHITE_POLY_H = graphite-poly.h $(GRAPHITE_CLOOG_UTIL_H)
- 
- #\f
- # Now figure out from those variables how to compile and link.
-@@ -1016,7 +1018,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
- # and the system's installed libraries.
- LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBIBERTY) \
- 	$(LIBDECNUMBER) $(HOST_LIBS)
--BACKENDLIBS = $(CLOOGLIBS) $(PPLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
-+BACKENDLIBS = $(GMPLIBS) $(if $(CLOOGLIBS),-ldl) $(PLUGINLIBS) $(HOST_LIBS) \
- 	$(ZLIB)
- # Any system libraries needed just for GNAT.
- SYSLIBS = @GNAT_LIBEXC@
-@@ -2602,40 +2604,40 @@ sese.o : sese.c sese.h $(CONFIG_H) $(SYS
-    $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) tree-pass.h value-prof.h
- graphite.o : graphite.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) \
-    $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h \
--   $(DBGCNT_H) graphite-ppl.h graphite-poly.h graphite-scop-detection.h \
-+   $(DBGCNT_H) graphite-ppl.h $(GRAPHITE_POLY_H) graphite-scop-detection.h \
-    graphite-clast-to-gimple.h graphite-sese-to-poly.h
- graphite-blocking.o : graphite-blocking.c $(CONFIG_H) $(SYSTEM_H) \
-    coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
--   sese.h graphite-ppl.h graphite-poly.h
-+   sese.h graphite-ppl.h $(GRAPHITE_POLY_H)
- graphite-clast-to-gimple.o : graphite-clast-to-gimple.c $(CONFIG_H) \
-    $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \
--   $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h graphite-cloog-util.h \
--   graphite-ppl.h graphite-poly.h graphite-clast-to-gimple.h \
-+   $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h $(GRAPHITE_CLOOG_UTIL_H) \
-+   graphite-ppl.h $(GRAPHITE_POLY_H) graphite-clast-to-gimple.h \
-    graphite-dependences.h graphite-cloog-compat.h
- graphite-cloog-util.o : graphite-cloog-util.c $(CONFIG_H) $(SYSTEM_H) \
--   coretypes.h graphite-cloog-util.h graphite-cloog-compat.h
-+   coretypes.h $(GRAPHITE_CLOOG_UTIL_H) graphite-cloog-compat.h
- graphite-dependences.o : graphite-dependences.c $(CONFIG_H) $(SYSTEM_H) \
-    coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
--   sese.h graphite-ppl.h graphite-poly.h graphite-dependences.h \
--   graphite-cloog-util.h
-+   sese.h graphite-ppl.h $(GRAPHITE_POLY_H) graphite-dependences.h \
-+   $(GRAPHITE_CLOOG_UTIL_H)
- graphite-flattening.o : graphite-flattening.c $(CONFIG_H) $(SYSTEM_H)	\
-    coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
--   sese.h graphite-ppl.h graphite-poly.h
-+   sese.h graphite-ppl.h $(GRAPHITE_POLY_H)
- graphite-interchange.o : graphite-interchange.c $(CONFIG_H) $(SYSTEM_H) \
-    coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
--   sese.h graphite-ppl.h graphite-poly.h
-+   sese.h graphite-ppl.h $(GRAPHITE_POLY_H)
- graphite-poly.o : graphite-poly.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
-    $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_DUMP_H) gimple-pretty-print.h \
--   $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h graphite-ppl.h graphite-poly.h \
--   graphite-dependences.h graphite-cloog-util.h
-+   $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h graphite-ppl.h $(GRAPHITE_POLY_H) \
-+   graphite-dependences.h $(GRAPHITE_CLOOG_UTIL_H)
- graphite-ppl.o : graphite-ppl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
--   graphite-cloog-util.h graphite-ppl.h
-+   $(GRAPHITE_CLOOG_UTIL_H) graphite-ppl.h
- graphite-scop-detection.o : graphite-scop-detection.c $(CONFIG_H) $(SYSTEM_H) \
-    coretypes.h $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) $(TREE_PASS_H) \
--   sese.h graphite-ppl.h graphite-poly.h graphite-scop-detection.h
-+   sese.h graphite-ppl.h $(GRAPHITE_POLY_H) graphite-scop-detection.h
- graphite-sese-to-poly.o : graphite-sese-to-poly.c $(CONFIG_H) \
-    $(SYSTEM_H) coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) \
--   $(TREE_DATA_REF_H) domwalk.h sese.h graphite-ppl.h graphite-poly.h \
-+   $(TREE_DATA_REF_H) domwalk.h sese.h graphite-ppl.h $(GRAPHITE_POLY_H) \
-    graphite-sese-to-poly.h
- tree-vect-loop.o: tree-vect-loop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
-    $(TM_H) $(GGC_H) $(TREE_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) \
-@@ -3454,6 +3456,15 @@ $(common_out_object_file): $(common_out_
- 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
- 	  $< $(OUTPUT_OPTION)
- 
-+graphite%.o : \
-+  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
-+graphite.o : \
-+  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
-+graphite%.o : \
-+  ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
-+graphite.o : \
-+  ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
-+
- # Build auxiliary files that support ecoff format.
- mips-tfile: mips-tfile.o $(LIBDEPS)
- 	$(LINKER) $(LINKERFLAGS) $(LDFLAGS) -o $@ \
---- gcc/graphite-cloog-compat.h.jj	2011-01-03 12:53:05.000000000 +0100
-+++ gcc/graphite-cloog-compat.h	2011-01-04 17:34:09.857757544 +0100
-@@ -272,4 +272,279 @@ static inline int cloog_matrix_nrows (Cl
-    return m->NbRows;
- }
- #endif /* CLOOG_ORG  */
-+
-+#include <dlfcn.h>
-+#if PPL_VERSION_MAJOR == 0 && PPL_VERSION_MINOR < 11
-+#define DYNSYMS_PPL11
-+#else
-+#define DYNSYMS_PPL11 \
-+  DYNSYM (ppl_new_PIP_Problem_from_constraints); \
-+  DYNSYM (ppl_PIP_Problem_is_satisfiable); \
-+  DYNSYM (ppl_delete_PIP_Problem);
-+#endif
-+#define DYNSYMS \
-+  DYNSYM (cloog_block_alloc); \
-+  DYNSYM (cloog_block_list_free); \
-+  DYNSYM (cloog_block_list_malloc); \
-+  DYNSYM (cloog_clast_create); \
-+  DYNSYM (cloog_clast_free); \
-+  DYNSYM (cloog_domain_free); \
-+  DYNSYM (cloog_domain_matrix2domain); \
-+  DYNSYM (cloog_initialize); \
-+  DYNSYM (cloog_loop_malloc); \
-+  DYNSYM (cloog_matrix_alloc); \
-+  DYNSYM (cloog_matrix_copy); \
-+  DYNSYM (cloog_matrix_free); \
-+  DYNSYM (cloog_matrix_print); \
-+  DYNSYM (cloog_names_malloc); \
-+  DYNSYM (cloog_names_scalarize); \
-+  DYNSYM (cloog_options_free); \
-+  DYNSYM (cloog_options_malloc); \
-+  DYNSYM (cloog_program_dump_cloog); \
-+  DYNSYM (cloog_program_extract_scalars); \
-+  DYNSYM (cloog_program_free); \
-+  DYNSYM (cloog_program_generate); \
-+  DYNSYM (cloog_program_malloc); \
-+  DYNSYM (cloog_program_print); \
-+  DYNSYM (cloog_program_scatter); \
-+  DYNSYM (cloog_statement_alloc); \
-+  DYNSYM (cloog_domain_union); \
-+  DYNSYM (cloog_matrix_read); \
-+  DYNSYM (cloog_new_pol); \
-+  DYNSYM (cloog_vector_gcd); \
-+  DYNSYM (ppl_finalize); \
-+  DYNSYM (ppl_assign_Coefficient_from_mpz_t); \
-+  DYNSYM (ppl_assign_Linear_Expression_from_Linear_Expression); \
-+  DYNSYM (ppl_Coefficient_to_mpz_t); \
-+  DYNSYM (ppl_Constraint_coefficient); \
-+  DYNSYM (ppl_Constraint_inhomogeneous_term); \
-+  DYNSYM (ppl_Constraint_space_dimension); \
-+  DYNSYM (ppl_Constraint_System_begin); \
-+  DYNSYM (ppl_Constraint_System_const_iterator_dereference); \
-+  DYNSYM (ppl_Constraint_System_const_iterator_equal_test); \
-+  DYNSYM (ppl_Constraint_System_const_iterator_increment); \
-+  DYNSYM (ppl_Constraint_System_end); \
-+  DYNSYM (ppl_Constraint_System_insert_Constraint); \
-+  DYNSYM (ppl_Constraint_System_space_dimension); \
-+  DYNSYM (ppl_Constraint_type); \
-+  DYNSYM (ppl_delete_Coefficient); \
-+  DYNSYM (ppl_delete_Constraint); \
-+  DYNSYM (ppl_delete_Constraint_System_const_iterator); \
-+  DYNSYM (ppl_delete_Linear_Expression); \
-+  DYNSYM (ppl_delete_Pointset_Powerset_C_Polyhedron); \
-+  DYNSYM (ppl_delete_Pointset_Powerset_C_Polyhedron_iterator); \
-+  DYNSYM (ppl_delete_Polyhedron); \
-+  DYNSYM (ppl_Linear_Expression_add_to_coefficient); \
-+  DYNSYM (ppl_Linear_Expression_add_to_inhomogeneous); \
-+  DYNSYM (ppl_Linear_Expression_coefficient); \
-+  DYNSYM (ppl_Linear_Expression_inhomogeneous_term); \
-+  DYNSYM (ppl_Linear_Expression_space_dimension); \
-+  DYNSYM (ppl_new_Coefficient); \
-+  DYNSYM (ppl_new_Coefficient_from_mpz_t); \
-+  DYNSYM (ppl_new_Constraint); \
-+  DYNSYM (ppl_new_Constraint_System); \
-+  DYNSYM (ppl_new_Constraint_System_const_iterator); \
-+  DYNSYM (ppl_new_C_Polyhedron_from_C_Polyhedron); \
-+  DYNSYM (ppl_new_C_Polyhedron_from_space_dimension); \
-+  DYNSYM (ppl_new_C_Polyhedron_recycle_Constraint_System); \
-+  DYNSYM (ppl_new_Linear_Expression); \
-+  DYNSYM (ppl_new_Linear_Expression_from_Constraint); \
-+  DYNSYM (ppl_new_Linear_Expression_from_Linear_Expression); \
-+  DYNSYM (ppl_new_Linear_Expression_with_dimension); \
-+  DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron); \
-+  DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron); \
-+  DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension); \
-+  DYNSYM (ppl_new_Pointset_Powerset_C_Polyhedron_iterator); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_add_constraint); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_difference_assign); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_intersection_assign); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_is_empty); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_begin); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_end); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_iterator_increment); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_maximize); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_minimize); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_size); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_space_dimension); \
-+  DYNSYM (ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign); \
-+  DYNSYM (ppl_Polyhedron_add_constraint); \
-+  DYNSYM (ppl_Polyhedron_add_constraints); \
-+  DYNSYM (ppl_Polyhedron_add_space_dimensions_and_embed); \
-+  DYNSYM (ppl_Polyhedron_get_constraints); \
-+  DYNSYM (ppl_Polyhedron_map_space_dimensions); \
-+  DYNSYM (ppl_Polyhedron_remove_space_dimensions); \
-+  DYNSYM (ppl_Polyhedron_space_dimension); \
-+  DYNSYM (ppl_subtract_Linear_Expression_from_Linear_Expression); \
-+  DYNSYM (pprint); \
-+  DYNSYM (stmt_block); \
-+  DYNSYM (stmt_for); \
-+  DYNSYM (stmt_guard); \
-+  DYNSYM (stmt_root); \
-+  DYNSYM (stmt_user); \
-+  DYNSYM (stmt_ass); \
-+  DYNSYM (ppl_delete_Constraint_System); \
-+  DYNSYM (ppl_initialize); \
-+  DYNSYM (ppl_new_Constraint_System_from_Constraint); \
-+  DYNSYM (ppl_new_C_Polyhedron_from_Constraint_System); \
-+  DYNSYM (ppl_Polyhedron_affine_image); \
-+  DYNSYM (ppl_io_fprint_Pointset_Powerset_C_Polyhedron); \
-+  DYNSYMS_PPL11
-+extern struct cloog_pointers_s__
-+{
-+  bool inited;
-+  void *h;
-+#define DYNSYM(x) __typeof (x) *p_##x
-+  DYNSYMS
-+#undef DYNSYM
-+} cloog_pointers__;
-+
-+#define cloog_block_alloc (*cloog_pointers__.p_cloog_block_alloc)
-+#define cloog_block_list_free (*cloog_pointers__.p_cloog_block_list_free)
-+#define cloog_block_list_malloc (*cloog_pointers__.p_cloog_block_list_malloc)
-+#define cloog_clast_create (*cloog_pointers__.p_cloog_clast_create)
-+#define cloog_clast_free (*cloog_pointers__.p_cloog_clast_free)
-+#define cloog_domain_free (*cloog_pointers__.p_cloog_domain_free)
-+#define cloog_domain_matrix2domain (*cloog_pointers__.p_cloog_domain_matrix2domain)
-+#define cloog_initialize (*cloog_pointers__.p_cloog_initialize)
-+#ifndef CLOOG_ORG
-+#undef cloog_loop_malloc
-+#define cloog_loop_malloc(STATE) (*cloog_pointers__.p_cloog_loop_malloc) ()
-+#else
-+#define cloog_loop_malloc (*cloog_pointers__.p_cloog_loop_malloc)
-+#endif
-+#define cloog_matrix_alloc (*cloog_pointers__.p_cloog_matrix_alloc)
-+#define cloog_matrix_copy (*cloog_pointers__.p_cloog_matrix_copy)
-+#define cloog_matrix_free (*cloog_pointers__.p_cloog_matrix_free)
-+#define cloog_matrix_print (*cloog_pointers__.p_cloog_matrix_print)
-+#define cloog_names_malloc (*cloog_pointers__.p_cloog_names_malloc)
-+#define cloog_names_scalarize (*cloog_pointers__.p_cloog_names_scalarize)
-+#define cloog_options_free (*cloog_pointers__.p_cloog_options_free)
-+#ifndef CLOOG_ORG
-+#undef cloog_options_malloc
-+#define cloog_options_malloc(STATE) (*cloog_pointers__.p_cloog_options_malloc) ()
-+#undef cloog_program_dump_cloog
-+#define cloog_program_dump_cloog(DUMPFILE, PROGRAM, SCATTERINGLIST) \
-+  (*cloog_pointers__.p_cloog_program_dump_cloog) (DUMPFILE, PROGRAM)
-+#undef cloog_program_extract_scalars
-+#define cloog_program_extract_scalars(PROG, SCATT, OPT) \
-+  (*cloog_pointers__.p_cloog_program_extract_scalars) (PROG, SCATT)
-+#else
-+#define cloog_options_malloc (*cloog_pointers__.p_cloog_options_malloc)
-+#define cloog_program_dump_cloog (*cloog_pointers__.p_cloog_program_dump_cloog)
-+#define cloog_program_extract_scalars (*cloog_pointers__.p_cloog_program_extract_scalars)
-+#endif
-+#define cloog_program_free (*cloog_pointers__.p_cloog_program_free)
-+#define cloog_program_generate (*cloog_pointers__.p_cloog_program_generate)
-+#define cloog_program_malloc (*cloog_pointers__.p_cloog_program_malloc)
-+#define cloog_program_print (*cloog_pointers__.p_cloog_program_print)
-+#ifndef CLOOG_ORG
-+#undef cloog_program_scatter
-+#define cloog_program_scatter(PROG, SCATT, OPT) \
-+  (*cloog_pointers__.p_cloog_program_scatter) (PROG, SCATT)
-+#undef cloog_statement_alloc
-+#define cloog_statement_alloc(STATE, INDEX) \
-+  (*cloog_pointers__.p_cloog_statement_alloc) (INDEX)
-+#else
-+#define cloog_program_scatter (*cloog_pointers__.p_cloog_program_scatter)
-+#define cloog_statement_alloc (*cloog_pointers__.p_cloog_statement_alloc)
-+#endif
-+#define cloog_domain_union (*cloog_pointers__.p_cloog_domain_union)
-+#define cloog_matrix_read (*cloog_pointers__.p_cloog_matrix_read)
-+#define cloog_new_pol (*cloog_pointers__.p_cloog_new_pol)
-+#define cloog_vector_gcd (*cloog_pointers__.p_cloog_vector_gcd)
-+#define ppl_finalize (*cloog_pointers__.p_ppl_finalize)
-+#define ppl_assign_Coefficient_from_mpz_t (*cloog_pointers__.p_ppl_assign_Coefficient_from_mpz_t)
-+#define ppl_assign_Linear_Expression_from_Linear_Expression (*cloog_pointers__.p_ppl_assign_Linear_Expression_from_Linear_Expression)
-+#define ppl_Coefficient_to_mpz_t (*cloog_pointers__.p_ppl_Coefficient_to_mpz_t)
-+#define ppl_Constraint_coefficient (*cloog_pointers__.p_ppl_Constraint_coefficient)
-+#define ppl_Constraint_inhomogeneous_term (*cloog_pointers__.p_ppl_Constraint_inhomogeneous_term)
-+#define ppl_Constraint_space_dimension (*cloog_pointers__.p_ppl_Constraint_space_dimension)
-+#define ppl_Constraint_System_begin (*cloog_pointers__.p_ppl_Constraint_System_begin)
-+#define ppl_Constraint_System_const_iterator_dereference (*cloog_pointers__.p_ppl_Constraint_System_const_iterator_dereference)
-+#define ppl_Constraint_System_const_iterator_equal_test (*cloog_pointers__.p_ppl_Constraint_System_const_iterator_equal_test)
-+#define ppl_Constraint_System_const_iterator_increment (*cloog_pointers__.p_ppl_Constraint_System_const_iterator_increment)
-+#define ppl_Constraint_System_end (*cloog_pointers__.p_ppl_Constraint_System_end)
-+#define ppl_Constraint_System_insert_Constraint (*cloog_pointers__.p_ppl_Constraint_System_insert_Constraint)
-+#define ppl_Constraint_System_space_dimension (*cloog_pointers__.p_ppl_Constraint_System_space_dimension)
-+#define ppl_Constraint_type (*cloog_pointers__.p_ppl_Constraint_type)
-+#define ppl_delete_Coefficient (*cloog_pointers__.p_ppl_delete_Coefficient)
-+#define ppl_delete_Constraint (*cloog_pointers__.p_ppl_delete_Constraint)
-+#define ppl_delete_Constraint_System_const_iterator (*cloog_pointers__.p_ppl_delete_Constraint_System_const_iterator)
-+#define ppl_delete_Linear_Expression (*cloog_pointers__.p_ppl_delete_Linear_Expression)
-+#define ppl_delete_Pointset_Powerset_C_Polyhedron (*cloog_pointers__.p_ppl_delete_Pointset_Powerset_C_Polyhedron)
-+#define ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (*cloog_pointers__.p_ppl_delete_Pointset_Powerset_C_Polyhedron_iterator)
-+#define ppl_delete_Polyhedron (*cloog_pointers__.p_ppl_delete_Polyhedron)
-+#define ppl_Linear_Expression_add_to_coefficient (*cloog_pointers__.p_ppl_Linear_Expression_add_to_coefficient)
-+#define ppl_Linear_Expression_add_to_inhomogeneous (*cloog_pointers__.p_ppl_Linear_Expression_add_to_inhomogeneous)
-+#define ppl_Linear_Expression_coefficient (*cloog_pointers__.p_ppl_Linear_Expression_coefficient)
-+#define ppl_Linear_Expression_inhomogeneous_term (*cloog_pointers__.p_ppl_Linear_Expression_inhomogeneous_term)
-+#define ppl_Linear_Expression_space_dimension (*cloog_pointers__.p_ppl_Linear_Expression_space_dimension)
-+#define ppl_new_Coefficient (*cloog_pointers__.p_ppl_new_Coefficient)
-+#define ppl_new_Coefficient_from_mpz_t (*cloog_pointers__.p_ppl_new_Coefficient_from_mpz_t)
-+#define ppl_new_Constraint (*cloog_pointers__.p_ppl_new_Constraint)
-+#define ppl_new_Constraint_System (*cloog_pointers__.p_ppl_new_Constraint_System)
-+#define ppl_new_Constraint_System_const_iterator (*cloog_pointers__.p_ppl_new_Constraint_System_const_iterator)
-+#define ppl_new_C_Polyhedron_from_C_Polyhedron (*cloog_pointers__.p_ppl_new_C_Polyhedron_from_C_Polyhedron)
-+#define ppl_new_C_Polyhedron_from_space_dimension (*cloog_pointers__.p_ppl_new_C_Polyhedron_from_space_dimension)
-+#define ppl_new_C_Polyhedron_recycle_Constraint_System (*cloog_pointers__.p_ppl_new_C_Polyhedron_recycle_Constraint_System)
-+#define ppl_new_Linear_Expression (*cloog_pointers__.p_ppl_new_Linear_Expression)
-+#define ppl_new_Linear_Expression_from_Constraint (*cloog_pointers__.p_ppl_new_Linear_Expression_from_Constraint)
-+#define ppl_new_Linear_Expression_from_Linear_Expression (*cloog_pointers__.p_ppl_new_Linear_Expression_from_Linear_Expression)
-+#define ppl_new_Linear_Expression_with_dimension (*cloog_pointers__.p_ppl_new_Linear_Expression_with_dimension)
-+#define ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_from_C_Polyhedron)
-+#define ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_from_Pointset_Powerset_C_Polyhedron)
-+#define ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_from_space_dimension)
-+#define ppl_new_Pointset_Powerset_C_Polyhedron_iterator (*cloog_pointers__.p_ppl_new_Pointset_Powerset_C_Polyhedron_iterator)
-+#define ppl_Pointset_Powerset_C_Polyhedron_add_constraint (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_add_constraint)
-+#define ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_add_space_dimensions_and_embed)
-+#define ppl_Pointset_Powerset_C_Polyhedron_difference_assign (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_difference_assign)
-+#define ppl_Pointset_Powerset_C_Polyhedron_intersection_assign (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_intersection_assign)
-+#define ppl_Pointset_Powerset_C_Polyhedron_is_empty (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_is_empty)
-+#define ppl_Pointset_Powerset_C_Polyhedron_iterator_begin (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_begin)
-+#define ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_dereference)
-+#define ppl_Pointset_Powerset_C_Polyhedron_iterator_end (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_end)
-+#define ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_equal_test)
-+#define ppl_Pointset_Powerset_C_Polyhedron_iterator_increment (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_iterator_increment)
-+#define ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_map_space_dimensions)
-+#define ppl_Pointset_Powerset_C_Polyhedron_maximize (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_maximize)
-+#define ppl_Pointset_Powerset_C_Polyhedron_minimize (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_minimize)
-+#define ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_remove_space_dimensions)
-+#define ppl_Pointset_Powerset_C_Polyhedron_size (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_size)
-+#define ppl_Pointset_Powerset_C_Polyhedron_space_dimension (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_space_dimension)
-+#define ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign (*cloog_pointers__.p_ppl_Pointset_Powerset_C_Polyhedron_upper_bound_assign)
-+#define ppl_Polyhedron_add_constraint (*cloog_pointers__.p_ppl_Polyhedron_add_constraint)
-+#define ppl_Polyhedron_add_constraints (*cloog_pointers__.p_ppl_Polyhedron_add_constraints)
-+#define ppl_Polyhedron_add_space_dimensions_and_embed (*cloog_pointers__.p_ppl_Polyhedron_add_space_dimensions_and_embed)
-+#define ppl_Polyhedron_get_constraints (*cloog_pointers__.p_ppl_Polyhedron_get_constraints)
-+#define ppl_Polyhedron_map_space_dimensions (*cloog_pointers__.p_ppl_Polyhedron_map_space_dimensions)
-+#define ppl_Polyhedron_remove_space_dimensions (*cloog_pointers__.p_ppl_Polyhedron_remove_space_dimensions)
-+#define ppl_Polyhedron_space_dimension (*cloog_pointers__.p_ppl_Polyhedron_space_dimension)
-+#define ppl_subtract_Linear_Expression_from_Linear_Expression (*cloog_pointers__.p_ppl_subtract_Linear_Expression_from_Linear_Expression)
-+#define pprint (*cloog_pointers__.p_pprint)
-+#define stmt_block (*cloog_pointers__.p_stmt_block)
-+#define stmt_for (*cloog_pointers__.p_stmt_for)
-+#define stmt_guard (*cloog_pointers__.p_stmt_guard)
-+#define stmt_root (*cloog_pointers__.p_stmt_root)
-+#define stmt_user (*cloog_pointers__.p_stmt_user)
-+#define stmt_ass (*cloog_pointers__.p_stmt_ass)
-+#define ppl_delete_Constraint_System (*cloog_pointers__.p_ppl_delete_Constraint_System)
-+#define ppl_initialize (*cloog_pointers__.p_ppl_initialize)
-+#define ppl_new_Constraint_System_from_Constraint (*cloog_pointers__.p_ppl_new_Constraint_System_from_Constraint)
-+#define ppl_new_C_Polyhedron_from_Constraint_System (*cloog_pointers__.p_ppl_new_C_Polyhedron_from_Constraint_System)
-+#define ppl_Polyhedron_affine_image (*cloog_pointers__.p_ppl_Polyhedron_affine_image)
-+#define ppl_io_fprint_Pointset_Powerset_C_Polyhedron (*cloog_pointers__.p_ppl_io_fprint_Pointset_Powerset_C_Polyhedron)
-+#if !(PPL_VERSION_MAJOR == 0 && PPL_VERSION_MINOR < 11)
-+#define ppl_new_PIP_Problem_from_constraints (*cloog_pointers__.p_ppl_new_PIP_Problem_from_constraints)
-+#define ppl_PIP_Problem_is_satisfiable (*cloog_pointers__.p_ppl_PIP_Problem_is_satisfiable)
-+#define ppl_delete_PIP_Problem (*cloog_pointers__.p_ppl_delete_PIP_Problem)
-+#endif
-+
-+#define cloog_finalize (*cloog_pointers__.p_ppl_finalize)
-+
-+
- #endif /* GRAPHITE_CLOOG_COMPAT_H  */
---- gcc/graphite.c.jj	2011-01-03 12:53:05.194056513 +0100
-+++ gcc/graphite.c	2011-01-04 16:18:32.385007767 +0100
-@@ -56,6 +56,35 @@ along with GCC; see the file COPYING3.  
- 
- CloogState *cloog_state;
- 
-+__typeof (cloog_pointers__) cloog_pointers__;
-+
-+static bool
-+init_cloog_pointers (void)
-+{
-+  void *h;
-+
-+  if (cloog_pointers__.inited)
-+    return cloog_pointers__.h != NULL;
-+  h = dlopen ("libcloog.so.0", RTLD_LAZY);
-+  cloog_pointers__.h = h;
-+  if (h == NULL)
-+    return false;
-+#define DYNSYM(x) \
-+  do \
-+    { \
-+      union { __typeof (cloog_pointers__.p_##x) p; void *q; } u; \
-+      u.q = dlsym (h, #x); \
-+      if (u.q == NULL) \
-+	return false; \
-+      cloog_pointers__.p_##x = u.p; \
-+    } \
-+  while (0)
-+  DYNSYMS
-+#undef DYNSYM
-+  return true;
-+}
-+
-+
- /* Print global statistics to FILE.  */
- 
- static void
-@@ -201,6 +230,12 @@ graphite_initialize (void)
-       return false;
-     }
- 
-+  if (!init_cloog_pointers ())
-+    {
-+      sorry ("Graphite loop optimizations cannot be used");
-+      return false;
-+    }
-+
-   scev_reset ();
-   recompute_all_dominators ();
-   initialize_original_copy_tables ();
---- gcc/graphite-clast-to-gimple.c.jj	2011-01-03 12:53:05.000000000 +0100
-+++ gcc/graphite-clast-to-gimple.c	2011-01-04 16:29:55.738007463 +0100
-@@ -836,7 +836,7 @@ clast_get_body_of_loop (struct clast_stm
-    from STMT_FOR.  */
- 
- static tree
--type_for_clast_for (struct clast_for *stmt_for, ivs_params_p ip)
-+type_for_clast_for (struct clast_for *stmt_fora, ivs_params_p ip)
- {
-   mpz_t bound_one, bound_two;
-   tree lb_type, ub_type;
-@@ -844,8 +844,8 @@ type_for_clast_for (struct clast_for *st
-   mpz_init (bound_one);
-   mpz_init (bound_two);
- 
--  lb_type = type_for_clast_expr (stmt_for->LB, ip, bound_one, bound_two);
--  ub_type = type_for_clast_expr (stmt_for->UB, ip, bound_one, bound_two);
-+  lb_type = type_for_clast_expr (stmt_fora->LB, ip, bound_one, bound_two);
-+  ub_type = type_for_clast_expr (stmt_fora->UB, ip, bound_one, bound_two);
- 
-   mpz_clear (bound_one);
-   mpz_clear (bound_two);
---- gcc/graphite-poly.h.jj	2011-01-03 12:53:05.000000000 +0100
-+++ gcc/graphite-poly.h	2011-01-04 17:35:53.308788629 +0100
-@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3.  
- #ifndef GCC_GRAPHITE_POLY_H
- #define GCC_GRAPHITE_POLY_H
- 
-+#include "graphite-cloog-util.h"
-+
- typedef struct poly_dr *poly_dr_p;
- DEF_VEC_P(poly_dr_p);
- DEF_VEC_ALLOC_P (poly_dr_p, heap);

diff --git a/gcc47-hack.patch b/gcc47-hack.patch
deleted file mode 100644
index 1903e95..0000000
--- a/gcc47-hack.patch
+++ /dev/null
@@ -1,102 +0,0 @@
---- libada/Makefile.in.jj	2009-01-14 12:07:35.000000000 +0100
-+++ libada/Makefile.in	2009-01-15 14:25:33.000000000 +0100
-@@ -66,18 +66,40 @@ libsubdir := $(libdir)/gcc/$(target_nonc
- ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
- ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
- 
-+DEFAULTMULTIFLAGS :=
-+ifeq ($(MULTISUBDIR),)
-+targ:=$(subst -, ,$(target))
-+arch:=$(word 1,$(targ))
-+ifeq ($(words $(targ)),2)
-+osys:=$(word 2,$(targ))
-+else
-+osys:=$(word 3,$(targ))
-+endif
-+ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch) $(osys))),)
-+ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64)
-+DEFAULTMULTIFLAGS := -m64
-+else
-+ifeq ($(strip $(filter-out s390%, $(arch))),)
-+DEFAULTMULTIFLAGS := -m31
-+else
-+DEFAULTMULTIFLAGS := -m32
-+endif
-+endif
-+endif
-+endif
-+
- # exeext should not be used because it's the *host* exeext.  We're building
- # a *target* library, aren't we?!?  Likewise for CC.  Still, provide bogus
- # definitions just in case something slips through the safety net provided
- # by recursive make invocations in gcc/ada/Makefile.in
- LIBADA_FLAGS_TO_PASS = \
-         "MAKEOVERRIDES=" \
--        "LDFLAGS=$(LDFLAGS)" \
-+        "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \
-         "LN_S=$(LN_S)" \
-         "SHELL=$(SHELL)" \
--        "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
--        "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
--        "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
-+        "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
-+        "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
-+        "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
-         "PICFLAG_FOR_TARGET=$(PICFLAG)" \
-         "THREAD_KIND=$(THREAD_KIND)" \
-         "TRACE=$(TRACE)" \
-@@ -88,7 +110,7 @@ LIBADA_FLAGS_TO_PASS = \
-         "exeext=.exeext.should.not.be.used " \
- 	'CC=the.host.compiler.should.not.be.needed' \
- 	"GCC_FOR_TARGET=$(CC)" \
--        "CFLAGS=$(CFLAGS)"
-+        "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
- 
- # Rules to build gnatlib.
- .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
---- gcc/ada/sem_util.adb	(revision 161677)
-+++ gcc/ada/sem_util.adb	(working copy)
-@@ -5487,7 +5487,7 @@ package body Sem_Util is
-             Exp           : Node_Id;
-             Assn          : Node_Id;
-             Choice        : Node_Id;
--            Comp_Type     : Entity_Id;
-+            Comp_Type     : Entity_Id := Empty;
-             Is_Array_Aggr : Boolean;
- 
-          begin
---- config-ml.in.jj	2010-06-30 09:50:44.000000000 +0200
-+++ config-ml.in	2010-07-02 21:24:17.994211151 +0200
-@@ -516,6 +516,8 @@ multi-do:
- 				ADAFLAGS="$(ADAFLAGS) $${flags}" \
- 				prefix="$(prefix)" \
- 				exec_prefix="$(exec_prefix)" \
-+				mandir="$(mandir)" \
-+				infodir="$(infodir)" \
- 				GCJFLAGS="$(GCJFLAGS) $${flags}" \
- 				GOCFLAGS="$(GOCFLAGS) $${flags}" \
- 				CXXFLAGS="$(CXXFLAGS) $${flags}" \
---- libjava/Makefile.am.jj	2010-07-09 11:17:33.729604090 +0200
-+++ libjava/Makefile.am	2010-07-09 13:16:41.894375641 +0200
-@@ -710,7 +710,8 @@ if USE_LIBGCJ_BC
- ## later.
- 	@echo Installing dummy lib libgcj_bc.so.1.0.0; \
- 	rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
--	mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+	$(INSTALL) $(INSTALL_STRIP_FLAG) $(here)/.libs/libgcj_bc.so $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+	rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0; \
- 	$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
- 	-o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
- 	rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
---- libjava/Makefile.in.jj	2010-07-09 11:17:34.000000000 +0200
-+++ libjava/Makefile.in	2010-07-09 13:18:07.542572270 +0200
-@@ -12665,7 +12665,8 @@ install-exec-hook: install-binPROGRAMS i
- 	install-libexecsubPROGRAMS
- @USE_LIBGCJ_BC_TRUE@	@echo Installing dummy lib libgcj_bc.so.1.0.0; \
- @USE_LIBGCJ_BC_TRUE@	rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
--@USE_LIBGCJ_BC_TRUE@	mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+@USE_LIBGCJ_BC_TRUE@	$(INSTALL) $(INSTALL_STRIP_FLAG) $(here)/.libs/libgcj_bc.so $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+@USE_LIBGCJ_BC_TRUE@	rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0; \
- @USE_LIBGCJ_BC_TRUE@	$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
- @USE_LIBGCJ_BC_TRUE@	-o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
- @USE_LIBGCJ_BC_TRUE@	rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \

diff --git a/gcc47-i386-libgomp.patch b/gcc47-i386-libgomp.patch
deleted file mode 100644
index f6a6b91..0000000
--- a/gcc47-i386-libgomp.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- libgomp/configure.tgt.jj	2008-01-10 20:53:48.000000000 +0100
-+++ libgomp/configure.tgt	2008-03-27 12:44:51.000000000 +0100
-@@ -44,14 +44,14 @@ if test $enable_linux_futex = yes; then
- 	;;
- 
-     # Note that bare i386 is not included here.  We need cmpxchg.
--    i[456]86-*-linux*)
-+    i[456]86-*-linux*)
- 	config_path="linux/x86 linux posix"
- 	case " ${CC} ${CFLAGS} " in
- 	  *" -m64 "*)
- 	    ;;
- 	  *)
- 	    if test -z "$with_arch"; then
--	      XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
-+	      XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
- 	    fi
- 	esac
- 	;;
-@@ -63,7 +63,7 @@ if test $enable_linux_futex = yes; then
- 	config_path="linux/x86 linux posix"
- 	case " ${CC} ${CFLAGS} " in
- 	  *" -m32 "*)
--	    XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686"
-+	    XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
- 	    ;;
- 	esac
- 	;;

diff --git a/gcc47-java-nomulti.patch b/gcc47-java-nomulti.patch
deleted file mode 100644
index 17334aa..0000000
--- a/gcc47-java-nomulti.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- libjava/configure.ac.jj	2007-12-07 17:55:50.000000000 +0100
-+++ libjava/configure.ac	2007-12-07 18:36:56.000000000 +0100
-@@ -82,6 +82,13 @@ AC_ARG_ENABLE(java-maintainer-mode,
- 	[allow rebuilding of .class and .h files]))
- AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" = yes)
- 
-+AC_ARG_ENABLE(libjava-multilib,
-+	AS_HELP_STRING([--enable-libjava-multilib], [build libjava as multilib]))
-+if test "$enable_libjava_multilib" = no; then
-+  multilib=no
-+  ac_configure_args="$ac_configure_args --disable-multilib"
-+fi
-+
- # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
- GCC_NO_EXECUTABLES
- 
---- libjava/configure.jj	2007-12-07 17:55:50.000000000 +0100
-+++ libjava/configure	2007-12-07 18:39:58.000000000 +0100
-@@ -1021,6 +1021,8 @@ Optional Features:
-                           default=yes
-   --enable-java-maintainer-mode
-                           allow rebuilding of .class and .h files
-+  --enable-libjava-multilib
-+                          build libjava as multilib
-   --disable-dependency-tracking  speeds up one-time build
-   --enable-dependency-tracking   do not reject slow dependency extractors
-   --enable-maintainer-mode  enable make rules and dependencies not useful
-@@ -1973,6 +1975,16 @@ else
- fi
- 
- 
-+# Check whether --enable-libjava-multilib was given.
-+if test "${enable_libjava_multilib+set}" = set; then
-+  enableval=$enable_libjava_multilib;
-+fi
-+
-+if test "$enable_libjava_multilib" = no; then
-+  multilib=no
-+  ac_configure_args="$ac_configure_args --disable-multilib"
-+fi
-+
- # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
- 
- 

diff --git a/gcc47-libgomp-omp_h-multilib.patch b/gcc47-libgomp-omp_h-multilib.patch
deleted file mode 100644
index d0e98d1..0000000
--- a/gcc47-libgomp-omp_h-multilib.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-2008-06-09  Jakub Jelinek  <jakub@redhat.com>
-
-	* omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs.
-
---- libgomp/omp.h.in.jj	2008-06-09 13:34:05.000000000 +0200
-+++ libgomp/omp.h.in	2008-06-09 13:34:48.000000000 +0200
-@@ -42,8 +42,8 @@ typedef struct
- 
- typedef struct
- {
--  unsigned char _x[@OMP_NEST_LOCK_SIZE@] 
--    __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
-+  unsigned char _x[8 + sizeof (void *)] 
-+    __attribute__((__aligned__(sizeof (void *))));
- } omp_nest_lock_t;
- #endif
- 

diff --git a/gcc47-libitm-fno-exceptions.patch b/gcc47-libitm-fno-exceptions.patch
deleted file mode 100644
index 8b9d590..0000000
--- a/gcc47-libitm-fno-exceptions.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-2011-12-22  Jakub Jelinek  <jakub@redhat.com>
-
-	* Makefile.am (beginend.lo): Append -fno-exceptions to
-	CXXFLAGS.
-	* Makefile.in: Regenerated.
-
---- libitm/Makefile.am.jj	2011-12-20 13:47:57.000000000 +0100
-+++ libitm/Makefile.am	2011-12-22 09:14:06.663469165 +0100
-@@ -72,6 +72,8 @@ endif
- if ARCH_X86_AVX
- x86_avx.lo : XCFLAGS += -mavx
- endif
-+beginend.lo : CXXCOMPILE += -fno-exceptions
-+beginend.lo : LTCXXCOMPILE += -fno-exceptions
- 
- if ARCH_FUTEX
- libitm_la_SOURCES += futex.cc
---- libitm/Makefile.in.jj	2011-12-20 13:47:57.000000000 +0100
-+++ libitm/Makefile.in	2011-12-22 09:14:29.466329944 +0100
-@@ -1278,6 +1278,8 @@ vpath % $(strip $(search_path))
- @LIBITM_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBITM_BUILD_VERSIONED_SHLIB_TRUE@	 > $@ || (rm -f $@ ; exit 1)
- @ARCH_X86_TRUE@x86_sse.lo : XCFLAGS += -msse
- @ARCH_X86_AVX_TRUE@x86_avx.lo : XCFLAGS += -mavx
-+beginend.lo : CXXCOMPILE += -fno-exceptions
-+beginend.lo : LTCXXCOMPILE += -fno-exceptions
- 
- all-local: $(STAMP_GENINSRC)
- 

diff --git a/gcc47-libjava-prims-ctype.patch b/gcc47-libjava-prims-ctype.patch
deleted file mode 100644
index 027e1e7..0000000
--- a/gcc47-libjava-prims-ctype.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-2011-10-27  Jakub Jelinek  <jakub@redhat.com>
-
-	* prims.cc (__NO_CTYPE): For glibc define this before including
-	ctype.h.
-
---- libjava/prims.cc	2009-04-28 06:02:30.000000000 +0200
-+++ libjava/prims.cc	2011-10-27 12:57:42.748752380 +0200
-@@ -38,6 +38,14 @@ details.  */
- #endif
- 
- #ifndef DISABLE_GETENV_PROPERTIES
-+#ifdef __GLIBC__
-+/* glibc 2.15+ provides even for C++ inline optimized ::isspace etc.
-+   Unfortunately those inlines are throw (), and call a function pointer
-+   (which is throw () too, but with -fnon-call-exceptions this results
-+   in a __cxa_call_unexpected call.  This macro disables the optimized
-+   version.  */
-+#define __NO_CTYPE 1
-+#endif
- #include <ctype.h>
- #include <java-props.h>
- #define PROCESS_GCJ_PROPERTIES process_gcj_properties()

diff --git a/gcc47-libstdc++-docs.patch b/gcc47-libstdc++-docs.patch
deleted file mode 100644
index f65091f..0000000
--- a/gcc47-libstdc++-docs.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- libstdc++-v3/doc/html/index.html.jj	2011-01-03 12:53:21.282829010 +0100
-+++ libstdc++-v3/doc/html/index.html	2011-01-04 18:06:28.999851145 +0100
-@@ -5,6 +5,8 @@
-       <a class="link" href="http://www.fsf.org/" target="_top">FSF
-       </a>
-     </p><p>
-+      Release 4.7.2
-+    </p><p>
-       Permission is granted to copy, distribute and/or modify this
-       document under the terms of the GNU Free Documentation
-       License, Version 1.2 or any later version published by the
---- libstdc++-v3/doc/html/api.html.jj	2011-01-03 12:53:21.000000000 +0100
-+++ libstdc++-v3/doc/html/api.html	2011-01-04 18:12:01.672757784 +0100
-@@ -19,8 +19,11 @@
-   member functions for the library classes, finding out what is in a
-   particular include file, looking at inheritance diagrams, etc.
- </p><p>
--  The API documentation, rendered into HTML, can be viewed online:
-+  The API documentation, rendered into HTML, can be viewed here:
- </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
-+      <a class="link" href="api/index.html" target="_top">for the 4.7 release, local
-+      </a>
-+    </p></li><li class="listitem"><p>
-       <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release
-       </a>
-     </p></li><li class="listitem"><p>

diff --git a/gcc47-libtool-no-rpath.patch b/gcc47-libtool-no-rpath.patch
deleted file mode 100644
index 466c661..0000000
--- a/gcc47-libtool-no-rpath.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-libtool sucks.
---- ltmain.sh.jj	2007-12-07 14:53:21.000000000 +0100
-+++ ltmain.sh	2008-09-05 21:51:48.000000000 +0200
-@@ -5394,6 +5394,7 @@ EOF
- 	  rpath="$finalize_rpath"
- 	  test "$mode" != relink && rpath="$compile_rpath$rpath"
- 	  for libdir in $rpath; do
-+	    case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
- 	    if test -n "$hardcode_libdir_flag_spec"; then
- 	      if test -n "$hardcode_libdir_separator"; then
- 		if test -z "$hardcode_libdirs"; then
-@@ -6071,6 +6072,7 @@ EOF
-       rpath=
-       hardcode_libdirs=
-       for libdir in $compile_rpath $finalize_rpath; do
-+	case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
- 	if test -n "$hardcode_libdir_flag_spec"; then
- 	  if test -n "$hardcode_libdir_separator"; then
- 	    if test -z "$hardcode_libdirs"; then
-@@ -6120,6 +6122,7 @@ EOF
-       rpath=
-       hardcode_libdirs=
-       for libdir in $finalize_rpath; do
-+	case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
- 	if test -n "$hardcode_libdir_flag_spec"; then
- 	  if test -n "$hardcode_libdir_separator"; then
- 	    if test -z "$hardcode_libdirs"; then

diff --git a/gcc47-no-add-needed.patch b/gcc47-no-add-needed.patch
deleted file mode 100644
index 7e38b0b..0000000
--- a/gcc47-no-add-needed.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-2010-02-08  Roland McGrath  <roland@redhat.com>
-
-	* config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the
-	linker.
-	* config/gnu-user.h (LINK_EH_SPEC): Likewise.
-	* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
-	* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
-
---- gcc/config/alpha/elf.h.jj	2011-01-03 12:52:31.118056764 +0100
-+++ gcc/config/alpha/elf.h	2011-01-04 18:14:10.931874160 +0100
-@@ -438,7 +438,7 @@ extern int alpha_this_gpdisp_sequence_nu
-    I imagine that other systems will catch up.  In the meantime, it
-    doesn't harm to make sure that the data exists to be used later.  */
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
- #endif
- 
- /* A C statement (sans semicolon) to output to the stdio stream STREAM
---- gcc/config/ia64/linux.h.jj	2011-01-03 13:02:11.462994522 +0100
-+++ gcc/config/ia64/linux.h	2011-01-04 18:14:10.931874160 +0100
-@@ -77,7 +77,7 @@ do {						\
-    Signalize that because we have fde-glibc, we don't need all C shared libs
-    linked against -lgcc_s.  */
- #undef LINK_EH_SPEC
--#define LINK_EH_SPEC ""
-+#define LINK_EH_SPEC "--no-add-needed "
- 
- /* Put all *tf routines in libgcc.  */
- #undef LIBGCC2_HAS_TF_MODE
---- gcc/config/gnu-user.h.jj	2011-01-03 12:53:03.739057299 +0100
-+++ gcc/config/gnu-user.h	2011-01-04 18:14:10.932814884 +0100
-@@ -82,7 +82,7 @@ see the files COPYING3 and COPYING.RUNTI
- #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
- 
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
- #endif
- 
- #undef LINK_GCC_C_SEQUENCE_SPEC
---- gcc/config/rs6000/sysv4.h.jj	2011-01-03 13:02:18.255994215 +0100
-+++ gcc/config/rs6000/sysv4.h	2011-01-04 18:14:10.933888871 +0100
-@@ -820,7 +820,7 @@ extern int fixuplabelno;
-   -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
- 
- #if defined(HAVE_LD_EH_FRAME_HDR)
--# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
- #endif
- 
- #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \

diff --git a/gcc47-ppc32-retaddr.patch b/gcc47-ppc32-retaddr.patch
deleted file mode 100644
index e9ae1bc..0000000
--- a/gcc47-ppc32-retaddr.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-2005-11-28  Jakub Jelinek  <jakub@redhat.com>
-
-	* config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
-	read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
-	instead of doing an extran indirection from frame_pointer_rtx.
-
-	* gcc.dg/20051128-1.c: New test.
-
---- gcc/config/rs6000/rs6000.c.jj	2005-11-26 14:38:01.000000000 +0100
-+++ gcc/config/rs6000/rs6000.c	2005-11-28 20:32:18.000000000 +0100
-@@ -13166,17 +13166,22 @@ rs6000_return_addr (int count, rtx frame
-      don't try to be too clever here.  */
-   if (count != 0 || (DEFAULT_ABI != ABI_AIX && flag_pic))
-     {
-+      rtx x;
-       cfun->machine->ra_needs_full_frame = 1;
- 
--      return
--	gen_rtx_MEM
--	  (Pmode,
--	   memory_address
--	   (Pmode,
--	    plus_constant (copy_to_reg
--			   (gen_rtx_MEM (Pmode,
--					 memory_address (Pmode, frame))),
--			   RETURN_ADDRESS_OFFSET)));
-+      if (count == 0)
-+	{
-+	  gcc_assert (frame == frame_pointer_rtx);
-+	  x = arg_pointer_rtx;
-+	}
-+      else
-+	{
-+	  x = memory_address (Pmode, frame);
-+	  x = copy_to_reg (gen_rtx_MEM (Pmode, x));
-+	}
-+
-+      x = plus_constant (x, RETURN_ADDRESS_OFFSET);
-+      return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
-     }
- 
-   cfun->machine->ra_need_lr = 1;
---- gcc/testsuite/gcc.dg/20051128-1.c.jj	2005-10-10 11:21:41.096999000 +0200
-+++ gcc/testsuite/gcc.dg/20051128-1.c	2005-11-28 12:30:57.000000000 +0100
-@@ -0,0 +1,41 @@
-+/* { dg-do run } */
-+/* { dg-options "-O2 -fpic" } */
-+
-+extern void exit (int);
-+extern void abort (void);
-+
-+int b;
-+
-+struct A
-+{
-+  void *pad[147];
-+  void *ra, *h;
-+  long o;
-+};
-+
-+void
-+__attribute__((noinline))
-+foo (struct A *a, void *x)
-+{
-+  __builtin_memset (a, 0, sizeof (a));
-+  if (!b)
-+    exit (0);
-+}
-+
-+void
-+__attribute__((noinline))
-+bar (void)
-+{
-+  struct A a;
-+
-+  __builtin_unwind_init ();
-+  foo (&a, __builtin_return_address (0));
-+}
-+
-+int
-+main (void)
-+{
-+  bar ();
-+  abort ();
-+  return 0;
-+}

diff --git a/gcc47-ppl-0.10.patch b/gcc47-ppl-0.10.patch
deleted file mode 100644
index 45b07f4..0000000
--- a/gcc47-ppl-0.10.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-2011-01-28  Jakub Jelinek  <jakub@redhat.com>
-
-	Revert:
-	2011-01-25  Sebastian Pop  <sebastian.pop@amd.com>
-
-	* configure: Regenerated.
-	* configure.ac: Check for version 0.11 (or later revision) of PPL.
-gcc/
-	* doc/install.texi: Update the expected version number of PPL to 0.11.
-	* graphite-ppl.c (ppl_powerset_is_empty): Remove now dead code under
-	#if PPL_VERSION_MINOR < 11.
-
---- gcc/doc/install.texi	(revision 169207)
-+++ gcc/doc/install.texi	(revision 169206)
-@@ -362,7 +362,7 @@ installed but it is not in your default 
- @option{--with-mpc} configure option should be used.  See also
- @option{--with-mpc-lib} and @option{--with-mpc-include}.
- 
--@item Parma Polyhedra Library (PPL) version 0.11
-+@item Parma Polyhedra Library (PPL) version 0.10
- 
- Necessary to build GCC with the Graphite loop optimizations.
- It can be downloaded from @uref{http://www.cs.unipr.it/ppl/Download/}.
---- gcc/graphite-ppl.c	(revision 169207)
-+++ gcc/graphite-ppl.c	(revision 169206)
-@@ -521,6 +521,15 @@ debug_gmp_value (mpz_t val)
- bool
- ppl_powerset_is_empty (ppl_Pointset_Powerset_C_Polyhedron_t ps)
- {
-+#if PPL_VERSION_MAJOR == 0 && PPL_VERSION_MINOR < 11
-+  /* On PPL 0.10,
-+     ppl_Pointset_Powerset_C_Polyhedron_contains_integer_point (ps)
-+     takes too long on some cases and so we call _is_empty instead.  */
-+  return ppl_Pointset_Powerset_C_Polyhedron_is_empty (ps);
-+
-+#else
-+  /* On PPL 0.11 or later, we can check for integer feasibility using
-+     the PIP solver.  */
-   ppl_PIP_Problem_t pip;
-   ppl_dimension_type d;
-   ppl_const_Constraint_System_t pcs;
-@@ -561,6 +570,7 @@ ppl_powerset_is_empty (ppl_Pointset_Powe
-   ppl_delete_Pointset_Powerset_C_Polyhedron_iterator (end);
- 
-   return !has_integer_solutions;
-+#endif
- }
- 
- #endif
---- configure.ac	(revision 169207)
-+++ configure.ac	(revision 169206)
-@@ -1688,9 +1688,9 @@ if test "x$with_ppl" != xno; then
-   if test "$enable_ppl_version_check" != no; then
-     saved_CFLAGS="$CFLAGS"
-     CFLAGS="$CFLAGS $pplinc $gmpinc"
--    AC_MSG_CHECKING([for version 0.11 (revision 0 or later) of PPL])
-+    AC_MSG_CHECKING([for version 0.10 (revision 0 or later) of PPL])
-     AC_TRY_COMPILE([#include "ppl_c.h"],[
--    #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 11
-+    #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 10
-     choke me
-     #endif
-     ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); ppllibs= ; pplinc= ; with_ppl=no ])
---- configure	(revision 169207)
-+++ configure	(revision 169206)
-@@ -5775,8 +5775,8 @@ fi
-   if test "$enable_ppl_version_check" != no; then
-     saved_CFLAGS="$CFLAGS"
-     CFLAGS="$CFLAGS $pplinc $gmpinc"
--    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.11 (revision 0 or later) of PPL" >&5
--$as_echo_n "checking for version 0.11 (revision 0 or later) of PPL... " >&6; }
-+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for version 0.10 (revision 0 or later) of PPL" >&5
-+$as_echo_n "checking for version 0.10 (revision 0 or later) of PPL... " >&6; }
-     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
- /* end confdefs.h.  */
- #include "ppl_c.h"
-@@ -5784,7 +5784,7 @@ int
- main ()
- {
- 
--    #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 11
-+    #if PPL_VERSION_MAJOR != 0 || PPL_VERSION_MINOR < 10
-     choke me
-     #endif
- 
---- gcc/testsuite/gcc.dg/graphite/interchange-11.c.jj	2011-01-28 09:38:11.000000000 +0100
-+++ gcc/testsuite/gcc.dg/graphite/interchange-11.c	2011-01-28 11:06:56.461429848 +0100
-@@ -46,5 +46,5 @@ main (void)
-   return 0;
- }
- 
--/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
-+/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */
- /* { dg-final { cleanup-tree-dump "graphite" } } */
---- gcc/testsuite/gcc.dg/graphite/interchange-13.c.jj	2011-01-28 09:38:12.000000000 +0100
-+++ gcc/testsuite/gcc.dg/graphite/interchange-13.c	2011-01-28 11:07:08.182429223 +0100
-@@ -50,5 +50,5 @@ main (void)
- }
- 
- 
--/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
-+/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */
- /* { dg-final { cleanup-tree-dump "graphite" } } */
---- gcc/testsuite/gcc.dg/graphite/interchange-1.c.jj	2011-01-28 09:38:13.000000000 +0100
-+++ gcc/testsuite/gcc.dg/graphite/interchange-1.c	2011-01-28 11:06:42.160429193 +0100
-@@ -49,5 +49,5 @@ main (void)
-   return 0;
- }
- 
--/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } } */
-+/* { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } } */
- /* { dg-final { cleanup-tree-dump "graphite" } } */
---- gcc/testsuite/gfortran.dg/graphite/interchange-3.f90.jj	2011-01-28 09:38:05.000000000 +0100
-+++ gcc/testsuite/gfortran.dg/graphite/interchange-3.f90	2011-01-28 11:07:46.313420441 +0100
-@@ -24,5 +24,5 @@ Program FOO
- 
- end Program FOO
- 
--! { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" } }
-+! { dg-final { scan-tree-dump-times "will be interchanged" 1 "graphite" { xfail *-*-* } } }
- ! { dg-final { cleanup-tree-dump "graphite" } }

diff --git a/gcc47-pr38757.patch b/gcc47-pr38757.patch
deleted file mode 100644
index 5fd23ea..0000000
--- a/gcc47-pr38757.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-2009-03-18  Jakub Jelinek  <jakub@redhat.com>
-
-	PR debug/38757
-	* langhooks.h (struct lang_hooks): Add source_language langhook.
-	* langhooks-def.h (LANG_HOOKS_SOURCE_LANGUAGE): Define to NULL.
-	(LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_SOURCE_LANGUAGE.
-	* c-lang.c (c_source_language): New function.
-	(LANG_HOOKS_SOURCE_LANGUAGE): Define.
-	* dwarf2out.c (add_prototyped_attribute): Add DW_AT_prototype
-	also for DW_LANG_{C,C99,ObjC}.
-	(gen_compile_unit_die): Use lang_hooks.source_language () to
-	determine if DW_LANG_C99 or DW_LANG_C89 should be returned.
-
---- gcc/langhooks.h.jj	2011-01-03 12:53:05.125745450 +0100
-+++ gcc/langhooks.h	2011-01-04 17:59:43.166744926 +0100
-@@ -467,6 +467,10 @@ struct lang_hooks
-      gimplification.  */
-   bool deep_unsharing;
- 
-+  /* Return year of the source language standard version if the FE supports
-+     multiple versions of the standard.  */
-+  int (*source_language) (void);
-+
-   /* Whenever you add entries here, make sure you adjust langhooks-def.h
-      and langhooks.c accordingly.  */
- };
---- gcc/langhooks-def.h.jj	2011-01-03 12:53:05.000000000 +0100
-+++ gcc/langhooks-def.h	2011-01-04 18:00:44.858851030 +0100
-@@ -118,6 +118,7 @@ extern void lhd_omp_firstprivatize_type_
- #define LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS	NULL
- #define LANG_HOOKS_EH_USE_CXA_END_CLEANUP	false
- #define LANG_HOOKS_DEEP_UNSHARING	false
-+#define LANG_HOOKS_SOURCE_LANGUAGE	NULL
- 
- /* Attribute hooks.  */
- #define LANG_HOOKS_ATTRIBUTE_TABLE		NULL
-@@ -307,7 +308,8 @@ extern void lhd_end_section (void);
-   LANG_HOOKS_EH_RUNTIME_TYPE, \
-   LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS, \
-   LANG_HOOKS_EH_USE_CXA_END_CLEANUP, \
--  LANG_HOOKS_DEEP_UNSHARING \
-+  LANG_HOOKS_DEEP_UNSHARING, \
-+  LANG_HOOKS_SOURCE_LANGUAGE \
- }
- 
- #endif /* GCC_LANG_HOOKS_DEF_H */
---- gcc/c-lang.c.jj	2011-01-03 12:53:05.376056936 +0100
-+++ gcc/c-lang.c	2011-01-04 17:59:43.167743798 +0100
-@@ -36,6 +36,12 @@ along with GCC; see the file COPYING3.
- 
- enum c_language_kind c_language = clk_c;
- 
-+static int
-+c_source_language (void)
-+{
-+  return flag_isoc99 ? 1999 : 1989;
-+}
-+
- /* Lang hooks common to C and ObjC are declared in c-objc-common.h;
-    consequently, there should be very few hooks below.  */
- 
-@@ -45,6 +51,8 @@ enum c_language_kind c_language = clk_c;
- #define LANG_HOOKS_INIT c_objc_common_init
- #undef LANG_HOOKS_INIT_TS
- #define LANG_HOOKS_INIT_TS c_common_init_ts
-+#undef LANG_HOOKS_SOURCE_LANGUAGE
-+#define LANG_HOOKS_SOURCE_LANGUAGE c_source_language
- 
- /* Each front end provides its own lang hook initializer.  */
- struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
---- gcc/dwarf2out.c.jj	2011-01-03 12:53:05.102056475 +0100
-+++ gcc/dwarf2out.c	2011-01-04 18:03:14.534151763 +0100
-@@ -15793,9 +15793,18 @@ add_bit_size_attribute (dw_die_ref die, 
- static inline void
- add_prototyped_attribute (dw_die_ref die, tree func_type)
- {
--  if (get_AT_unsigned (comp_unit_die (), DW_AT_language) == DW_LANG_C89
--      && prototype_p (func_type))
--    add_AT_flag (die, DW_AT_prototyped, 1);
-+  switch (get_AT_unsigned (comp_unit_die (), DW_AT_language))
-+    {
-+    case DW_LANG_C:
-+    case DW_LANG_C89:
-+    case DW_LANG_C99:
-+    case DW_LANG_ObjC:
-+      if (prototype_p (func_type))
-+	add_AT_flag (die, DW_AT_prototyped, 1);
-+      break;
-+    default:
-+      break;
-+    }
- }
- 
- /* Add an 'abstract_origin' attribute below a given DIE.  The DIE is found
-@@ -18438,6 +18447,10 @@ gen_compile_unit_die (const char *filena
- 	  if (strcmp (language_string, "GNU Go") == 0)
- 	    language = DW_LANG_Go;
- 	}
-+      else if (strcmp (language_string, "GNU C") == 0
-+	       && lang_hooks.source_language
-+	       && lang_hooks.source_language () >= 1999)
-+	language = DW_LANG_C99;
-     }
- 
-   add_AT_unsigned (die, DW_AT_language, language);

diff --git a/gcc47-pr55137.patch b/gcc47-pr55137.patch
deleted file mode 100644
index 0595ac5..0000000
--- a/gcc47-pr55137.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-2012-11-07  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/55137
-	* fold-const.c (fold_binary_loc) <associate>: Don't introduce
-	TREE_OVERFLOW through reassociation.  If type doesn't have defined
-	overflow, but one or both of the operands do, use the wrapping type
-	for reassociation and only convert to type at the end.
-
-	* g++.dg/opt/pr55137.C: New test.
-	* gcc.c-torture/execute/pr55137.c: New test.
-
---- gcc/fold-const.c.jj	2012-11-07 09:16:41.929494183 +0100
-+++ gcc/fold-const.c	2012-11-07 09:47:12.227710542 +0100
-@@ -10309,6 +10309,7 @@ fold_binary_loc (location_t loc,
- 	{
- 	  tree var0, con0, lit0, minus_lit0;
- 	  tree var1, con1, lit1, minus_lit1;
-+	  tree atype = type;
- 	  bool ok = true;
- 
- 	  /* Split both trees into variables, constants, and literals.  Then
-@@ -10324,11 +10325,25 @@ fold_binary_loc (location_t loc,
- 	  if (code == MINUS_EXPR)
- 	    code = PLUS_EXPR;
- 
--	  /* With undefined overflow we can only associate constants with one
--	     variable, and constants whose association doesn't overflow.  */
-+	  /* With undefined overflow prefer doing association in a type
-+	     which wraps on overflow, if that is one of the operand types.  */
- 	  if ((POINTER_TYPE_P (type) && POINTER_TYPE_OVERFLOW_UNDEFINED)
- 	      || (INTEGRAL_TYPE_P (type) && !TYPE_OVERFLOW_WRAPS (type)))
- 	    {
-+	      if (INTEGRAL_TYPE_P (TREE_TYPE (arg0))
-+		  && TYPE_OVERFLOW_WRAPS (TREE_TYPE (arg0)))
-+		atype = TREE_TYPE (arg0);
-+	      else if (INTEGRAL_TYPE_P (TREE_TYPE (arg1))
-+		       && TYPE_OVERFLOW_WRAPS (TREE_TYPE (arg1)))
-+		atype = TREE_TYPE (arg1);
-+	      gcc_assert (TYPE_PRECISION (atype) == TYPE_PRECISION (type));
-+	    }
-+
-+	  /* With undefined overflow we can only associate constants with one
-+	     variable, and constants whose association doesn't overflow.  */
-+	  if ((POINTER_TYPE_P (atype) && POINTER_TYPE_OVERFLOW_UNDEFINED)
-+	      || (INTEGRAL_TYPE_P (atype) && !TYPE_OVERFLOW_WRAPS (atype)))
-+	    {
- 	      if (var0 && var1)
- 		{
- 		  tree tmp0 = var0;
-@@ -10343,16 +10358,6 @@ fold_binary_loc (location_t loc,
- 		  if (!operand_equal_p (tmp0, tmp1, 0))
- 		    ok = false;
- 		}
--
--	      if (ok && lit0 && lit1)
--		{
--		  tree tmp0 = fold_convert (type, lit0);
--		  tree tmp1 = fold_convert (type, lit1);
--
--		  if (!TREE_OVERFLOW (tmp0) && !TREE_OVERFLOW (tmp1)
--		      && TREE_OVERFLOW (fold_build2 (code, type, tmp0, tmp1)))
--		    ok = false;
--		}
- 	    }
- 
- 	  /* Only do something if we found more than two objects.  Otherwise,
-@@ -10363,10 +10368,16 @@ fold_binary_loc (location_t loc,
- 		       + (lit0 != 0) + (lit1 != 0)
- 		       + (minus_lit0 != 0) + (minus_lit1 != 0))))
- 	    {
--	      var0 = associate_trees (loc, var0, var1, code, type);
--	      con0 = associate_trees (loc, con0, con1, code, type);
--	      lit0 = associate_trees (loc, lit0, lit1, code, type);
--	      minus_lit0 = associate_trees (loc, minus_lit0, minus_lit1, code, type);
-+	      bool any_overflows = false;
-+	      if (lit0) any_overflows |= TREE_OVERFLOW (lit0);
-+	      if (lit1) any_overflows |= TREE_OVERFLOW (lit1);
-+	      if (minus_lit0) any_overflows |= TREE_OVERFLOW (minus_lit0);
-+	      if (minus_lit1) any_overflows |= TREE_OVERFLOW (minus_lit1);
-+	      var0 = associate_trees (loc, var0, var1, code, atype);
-+	      con0 = associate_trees (loc, con0, con1, code, atype);
-+	      lit0 = associate_trees (loc, lit0, lit1, code, atype);
-+	      minus_lit0 = associate_trees (loc, minus_lit0, minus_lit1,
-+					    code, atype);
- 
- 	      /* Preserve the MINUS_EXPR if the negative part of the literal is
- 		 greater than the positive part.  Otherwise, the multiplicative
-@@ -10380,38 +10391,45 @@ fold_binary_loc (location_t loc,
- 		      && tree_int_cst_lt (lit0, minus_lit0))
- 		    {
- 		      minus_lit0 = associate_trees (loc, minus_lit0, lit0,
--						    MINUS_EXPR, type);
-+						    MINUS_EXPR, atype);
- 		      lit0 = 0;
- 		    }
- 		  else
- 		    {
- 		      lit0 = associate_trees (loc, lit0, minus_lit0,
--					      MINUS_EXPR, type);
-+					      MINUS_EXPR, atype);
- 		      minus_lit0 = 0;
- 		    }
- 		}
-+
-+	      /* Don't introduce overflows through reassociation.  */
-+	      if (!any_overflows
-+		  && ((lit0 && TREE_OVERFLOW (lit0))
-+		      || (minus_lit0 && TREE_OVERFLOW (minus_lit0))))
-+		return NULL_TREE;
-+
- 	      if (minus_lit0)
- 		{
- 		  if (con0 == 0)
- 		    return
- 		      fold_convert_loc (loc, type,
- 					associate_trees (loc, var0, minus_lit0,
--							 MINUS_EXPR, type));
-+							 MINUS_EXPR, atype));
- 		  else
- 		    {
- 		      con0 = associate_trees (loc, con0, minus_lit0,
--					      MINUS_EXPR, type);
-+					      MINUS_EXPR, atype);
- 		      return
- 			fold_convert_loc (loc, type,
- 					  associate_trees (loc, var0, con0,
--							   PLUS_EXPR, type));
-+							   PLUS_EXPR, atype));
- 		    }
- 		}
- 
--	      con0 = associate_trees (loc, con0, lit0, code, type);
-+	      con0 = associate_trees (loc, con0, lit0, code, atype);
- 	      return
- 		fold_convert_loc (loc, type, associate_trees (loc, var0, con0,
--							      code, type));
-+							      code, atype));
- 	    }
- 	}
- 
---- gcc/testsuite/g++.dg/opt/pr55137.C.jj	2012-11-07 09:31:45.027160654 +0100
-+++ gcc/testsuite/g++.dg/opt/pr55137.C	2012-11-07 09:31:45.028160649 +0100
-@@ -0,0 +1,4 @@
-+// PR c++/55137
-+// { dg-do compile }
-+
-+enum E { F = -1 + (int) (sizeof (int) - 1) };
---- gcc/testsuite/gcc.c-torture/execute/pr55137.c.jj	2012-11-07 09:44:11.226768063 +0100
-+++ gcc/testsuite/gcc.c-torture/execute/pr55137.c	2012-11-07 09:44:24.380691303 +0100
-@@ -0,0 +1,30 @@
-+/* PR c++/55137 */
-+
-+extern void abort (void);
-+
-+int
-+foo (unsigned int x)
-+{
-+  return ((int) (x + 1U) + 1) < (int) x;
-+}
-+
-+int
-+bar (unsigned int x)
-+{
-+  return (int) (x + 1U) + 1;
-+}
-+
-+int
-+baz (unsigned int x)
-+{
-+  return x + 1U;
-+}
-+
-+int
-+main ()
-+{
-+  if (foo (__INT_MAX__) != (bar (__INT_MAX__) < __INT_MAX__)
-+      || foo (__INT_MAX__) != ((int) baz (__INT_MAX__) + 1 < __INT_MAX__))
-+    abort ();
-+  return 0;
-+}

diff --git a/gcc47-pr55236.patch b/gcc47-pr55236.patch
deleted file mode 100644
index e661544..0000000
--- a/gcc47-pr55236.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-2012-11-08  Jakub Jelinek  <jakub@redhat.com>
-
-	PR tree-optimization/55236
-	* fold-const.c (make_range_step) <case NEGATE_EXPR>: For -fwrapv
-	and signed ARG0_TYPE, force low and high to be non-NULL.
-
-	* gcc.dg/pr55236.c: New test.
-
---- gcc/fold-const.c.jj	2012-11-07 11:24:34.000000000 +0100
-+++ gcc/fold-const.c	2012-11-08 16:54:38.978339040 +0100
-@@ -3880,6 +3880,17 @@ make_range_step (location_t loc, enum tr
-       return arg0;
- 
-     case NEGATE_EXPR:
-+      /* If flag_wrapv and ARG0_TYPE is signed, make sure
-+	 low and high are non-NULL, then normalize will DTRT.  */
-+      if (!TYPE_UNSIGNED (arg0_type)
-+	  && !TYPE_OVERFLOW_UNDEFINED (arg0_type))
-+	{
-+	  if (low == NULL_TREE)
-+	    low = TYPE_MIN_VALUE (arg0_type);
-+	  if (high == NULL_TREE)
-+	    high = TYPE_MAX_VALUE (arg0_type);
-+	}
-+
-       /* (-x) IN [a,b] -> x in [-b, -a]  */
-       n_low = range_binop (MINUS_EXPR, exp_type,
- 			   build_int_cst (exp_type, 0),
---- gcc/testsuite/gcc.dg/pr55236.c.jj	2012-11-08 16:40:49.171781137 +0100
-+++ gcc/testsuite/gcc.dg/pr55236.c	2012-11-08 16:41:20.044578919 +0100
-@@ -0,0 +1,31 @@
-+/* PR tree-optimization/55236 */
-+/* { dg-do run } */
-+/* { dg-options "-O2 -fwrapv" } */
-+
-+extern void abort ();
-+
-+__attribute__((noinline, noclone)) void
-+foo (int i)
-+{
-+  if (i > 0)
-+    abort ();
-+  i = -i;
-+  if (i < 0)
-+    return;
-+  abort ();
-+}
-+
-+__attribute__((noinline, noclone)) void
-+bar (int i)
-+{
-+  if (i > 0 || (-i) >= 0)
-+    abort ();
-+}
-+
-+int
-+main ()
-+{
-+  foo (-__INT_MAX__ - 1);
-+  bar (-__INT_MAX__ - 1);
-+  return 0;
-+}

diff --git a/gcc47-rh330771.patch b/gcc47-rh330771.patch
deleted file mode 100644
index 102730f..0000000
--- a/gcc47-rh330771.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-2007-10-16  Jakub Jelinek  <jakub@redhat.com>
-
-	* Makefile.am (libgcj_tools_la_LIBADD): Add.
-	* Makefile.in: Regenerated.
-
---- libjava/Makefile.am.jj	2009-05-06 08:14:50.000000000 +0200
-+++ libjava/Makefile.am	2009-05-06 10:26:43.000000000 +0200
-@@ -550,7 +550,7 @@ libgcj_tools_la_LDFLAGS = -rpath $(toole
-  $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
-  $(LIBJAVA_LDFLAGS_LIBMATH)
- 
--libgcj_tools_la_LIBADD = libgcj.la
-+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
- libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec \
-  $(libgcj_tools_la_version_dep)
- if BUILD_SUBLIBS
---- libjava/Makefile.in.jj	2009-05-06 08:14:49.000000000 +0200
-+++ libjava/Makefile.in	2009-05-06 10:27:18.000000000 +0200
-@@ -1110,7 +1110,7 @@ libgcj_tools_la_LDFLAGS = -rpath $(toole
-  $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
-  $(LIBJAVA_LDFLAGS_LIBMATH)
- 
--libgcj_tools_la_LIBADD = libgcj.la
-+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
- libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec \
- 	$(libgcj_tools_la_version_dep) $(am__append_19)
- libgcj_tools_la_LINK = $(LIBLINK) $(libgcj_tools_la_LDFLAGS) \

diff --git a/gcc47-rh837630.patch b/gcc47-rh837630.patch
deleted file mode 100644
index d7d1e94..0000000
--- a/gcc47-rh837630.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-2012-07-16  Alan Modra  <amodra@gmail.com>
-
-	* config/rs6000/rs6000.md (*movdi_internal32): Use m constraint instead
-	of o<>.
-
---- gcc/config/rs6000/rs6000.md	2012-07-16 10:14:43.198085150 +0200
-+++ gcc/config/rs6000/rs6000.md	2012-07-16 10:33:31.856023210 +0200
-@@ -10145,7 +10145,7 @@
- ; List r->r after r->"o<>", otherwise reload will try to reload a
- ; non-offsettable address by using r->r which won't make progress.
- (define_insn "*movdi_internal32"
--  [(set (match_operand:DI 0 "rs6000_nonimmediate_operand" "=o<>,r,r,*d,*d,m,r,?wa")
-+  [(set (match_operand:DI 0 "rs6000_nonimmediate_operand" "=m,r,r,*d,*d,m,r,?wa")
- 	(match_operand:DI 1 "input_operand" "r,r,m,d,m,d,IJKnGHF,O"))]
-   "! TARGET_POWERPC64
-    && (gpc_reg_operand (operands[0], DImode)

diff --git a/gcc47-sparc-config-detection.patch b/gcc47-sparc-config-detection.patch
deleted file mode 100644
index 97fed22..0000000
--- a/gcc47-sparc-config-detection.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- gcc/config.gcc.jj	2008-04-24 15:42:46.000000000 -0500
-+++ gcc/config.gcc	2008-04-24 15:44:51.000000000 -0500
-@@ -2421,7 +2421,7 @@ sparc-*-rtems*)
- 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
- 	tmake_file="sparc/t-sparc sparc/t-elf sparc/t-rtems t-rtems"
- 	;;
--sparc-*-linux*)
-+sparc-*-linux* | sparcv9-*-linux*)
- 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
- 	extra_options="${extra_options} sparc/long-double-switch.opt"
- 	case ${target} in
-@@ -2474,7 +2474,7 @@ sparc64-*-rtems*)
- 	extra_options="${extra_options}"
- 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64 t-rtems"
- 	;;
--sparc64-*-linux*)
-+sparc64*-*-linux*)
- 	tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default-64.h sparc/linux64.h sparc/tso.h"
- 	extra_options="${extra_options} sparc/long-double-switch.opt"
- 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
---- libgcc/config.host.jj	2008-04-24 15:46:19.000000000 -0500
-+++ libgcc/config.host	2008-04-24 15:46:49.000000000 -0500
-@@ -1002,7 +1002,7 @@ sparc-*-elf*)
- 	tmake_file="${tmake_file} t-fdpbit t-crtfm"
- 	extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
- 	;;
--sparc-*-linux*)		# SPARC's running GNU/Linux, libc6
-+sparc-*-linux* | sparcv9-*-linux*)		# SPARC's running GNU/Linux, libc6
- 	tmake_file="${tmake_file} t-crtfm"
- 	if test "${host_address}" = 64; then
- 		tmake_file="$tmake_file sparc/t-linux64"
-@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
- 	tmake_file="$tmake_file t-crtfm"
- 	extra_parts="$extra_parts crtfastmath.o"
- 	;;
--sparc64-*-linux*)		# 64-bit SPARC's running GNU/Linux
-+sparc64*-*-linux*)		# 64-bit SPARC's running GNU/Linux
- 	extra_parts="$extra_parts crtfastmath.o"
- 	tmake_file="${tmake_file} t-crtfm sparc/t-linux"
- 	if test "${host_address}" = 64; then

diff --git a/gcc48-asan-ppc.patch b/gcc48-asan-ppc.patch
new file mode 100644
index 0000000..30ab38f
--- /dev/null
+++ b/gcc48-asan-ppc.patch
@@ -0,0 +1,145 @@
+2012-12-21  Jakub Jelinek  <jakub@redhat.com>
+
+	* varasm.c (output_constant_def_contents): For asan_protect_global
+	protected strings, adjust DECL_ALIGN if needed, before testing for
+	anchored symbols.
+	(place_block_symbol): Adjust size for asan protected STRING_CSTs if
+	TREE_CONSTANT_POOL_ADDRESS_P.  Increase alignment for asan protected
+	normal decls.
+	(output_object_block): For asan protected decls, emit asan padding
+	after their contents.
+	* asan.c (asan_protect_global): Don't check TREE_ASM_WRITTEN here.
+	(asan_finish_file): Test it here instead.
+
+--- gcc/varasm.c.jj	2012-12-20 19:10:19.856526720 +0100
++++ gcc/varasm.c	2012-12-21 10:37:44.481999545 +0100
+@@ -3252,6 +3252,7 @@ output_constant_def_contents (rtx symbol
+   tree decl = SYMBOL_REF_DECL (symbol);
+   tree exp = DECL_INITIAL (decl);
+   unsigned int align;
++  bool asan_protected = false;
+ 
+   /* Make sure any other constants whose addresses appear in EXP
+      are assigned label numbers.  */
+@@ -3260,6 +3261,14 @@ output_constant_def_contents (rtx symbol
+   /* We are no longer deferring this constant.  */
+   TREE_ASM_WRITTEN (decl) = TREE_ASM_WRITTEN (exp) = 1;
+ 
++  if (flag_asan && TREE_CODE (exp) == STRING_CST
++      && asan_protect_global (exp))
++    {
++      asan_protected = true;
++      DECL_ALIGN (decl) = MAX (DECL_ALIGN (decl),
++			       ASAN_RED_ZONE_SIZE * BITS_PER_UNIT);
++    }
++
+   /* If the constant is part of an object block, make sure that the
+      decl has been positioned within its block, but do not write out
+      its definition yet.  output_object_blocks will do that later.  */
+@@ -3267,15 +3276,8 @@ output_constant_def_contents (rtx symbol
+     place_block_symbol (symbol);
+   else
+     {
+-      bool asan_protected = false;
+       align = DECL_ALIGN (decl);
+       switch_to_section (get_constant_section (exp, align));
+-      if (flag_asan && TREE_CODE (exp) == STRING_CST
+-	  && asan_protect_global (exp))
+-	{
+-	  asan_protected = true;
+-	  align = MAX (align, ASAN_RED_ZONE_SIZE * BITS_PER_UNIT);
+-	}
+       if (align > BITS_PER_UNIT)
+ 	ASM_OUTPUT_ALIGN (asm_out_file, floor_log2 (align / BITS_PER_UNIT));
+       assemble_constant_contents (exp, XSTR (symbol, 0), align);
+@@ -6968,6 +6970,10 @@ place_block_symbol (rtx symbol)
+       decl = SYMBOL_REF_DECL (symbol);
+       alignment = DECL_ALIGN (decl);
+       size = get_constant_size (DECL_INITIAL (decl));
++      if (flag_asan
++	  && TREE_CODE (DECL_INITIAL (decl)) == STRING_CST
++	  && asan_protect_global (DECL_INITIAL (decl)))
++	size += asan_red_zone_size (size);
+     }
+   else
+     {
+@@ -6975,7 +6981,11 @@ place_block_symbol (rtx symbol)
+       alignment = DECL_ALIGN (decl);
+       size = tree_low_cst (DECL_SIZE_UNIT (decl), 1);
+       if (flag_asan && asan_protect_global (decl))
+-	size += asan_red_zone_size (size);
++	{
++	  size += asan_red_zone_size (size);
++	  alignment = MAX (alignment,
++			   ASAN_RED_ZONE_SIZE * BITS_PER_UNIT);
++	}
+     }
+ 
+   /* Calculate the object's offset from the start of the block.  */
+@@ -7114,16 +7124,34 @@ output_object_block (struct object_block
+ 	}
+       else if (TREE_CONSTANT_POOL_ADDRESS_P (symbol))
+ 	{
++	  HOST_WIDE_INT size;
+ 	  decl = SYMBOL_REF_DECL (symbol);
+ 	  assemble_constant_contents (DECL_INITIAL (decl), XSTR (symbol, 0),
+ 				      DECL_ALIGN (decl));
+-	  offset += get_constant_size (DECL_INITIAL (decl));
++	  size = get_constant_size (DECL_INITIAL (decl));
++	  offset += size;
++	  if (flag_asan
++	      && TREE_CODE (DECL_INITIAL (decl)) == STRING_CST
++	      && asan_protect_global (DECL_INITIAL (decl)))
++	    {
++	      size = asan_red_zone_size (size);
++	      assemble_zeros (size);
++	      offset += size;
++	    }
+ 	}
+       else
+ 	{
++	  HOST_WIDE_INT size;
+ 	  decl = SYMBOL_REF_DECL (symbol);
+ 	  assemble_variable_contents (decl, XSTR (symbol, 0), false);
+-	  offset += tree_low_cst (DECL_SIZE_UNIT (decl), 1);
++	  size = tree_low_cst (DECL_SIZE_UNIT (decl), 1);
++	  offset += size;
++	  if (flag_asan && asan_protect_global (decl))
++	    {
++	      size = asan_red_zone_size (size);
++	      assemble_zeros (size);
++	      offset += size;
++	    }
+ 	}
+     }
+ }
+--- gcc/asan.c.jj	2012-12-20 11:38:14.000000000 +0100
++++ gcc/asan.c	2012-12-21 10:49:45.364823759 +0100
+@@ -463,7 +463,6 @@ asan_protect_global (tree decl)
+       || DECL_THREAD_LOCAL_P (decl)
+       /* Externs will be protected elsewhere.  */
+       || DECL_EXTERNAL (decl)
+-      || !TREE_ASM_WRITTEN (decl)
+       || !DECL_RTL_SET_P (decl)
+       /* Comdat vars pose an ABI problem, we can't know if
+ 	 the var that is selected by the linker will have
+@@ -1699,7 +1698,8 @@ asan_finish_file (void)
+   tree fn = builtin_decl_implicit (BUILT_IN_ASAN_INIT);
+   append_to_statement_list (build_call_expr (fn, 0), &asan_ctor_statements);
+   FOR_EACH_DEFINED_VARIABLE (vnode)
+-    if (asan_protect_global (vnode->symbol.decl))
++    if (TREE_ASM_WRITTEN (vnode->symbol.decl)
++	&& asan_protect_global (vnode->symbol.decl))
+       ++gcount;
+   htab_t const_desc_htab = constant_pool_htab ();
+   htab_traverse (const_desc_htab, count_string_csts, &gcount);
+@@ -1721,7 +1721,8 @@ asan_finish_file (void)
+       DECL_IGNORED_P (var) = 1;
+       vec_alloc (v, gcount);
+       FOR_EACH_DEFINED_VARIABLE (vnode)
+-	if (asan_protect_global (vnode->symbol.decl))
++	if (TREE_ASM_WRITTEN (vnode->symbol.decl)
++	    && asan_protect_global (vnode->symbol.decl))
+ 	  asan_add_global (vnode->symbol.decl, TREE_TYPE (type), v);
+       struct asan_add_string_csts_data aascd;
+       aascd.type = TREE_TYPE (type);

diff --git a/gcc48-cloog-dl.patch b/gcc48-cloog-dl.patch
new file mode 100644
index 0000000..344bf6d
--- /dev/null
+++ b/gcc48-cloog-dl.patch
@@ -0,0 +1,474 @@
+--- gcc/Makefile.in.jj	2012-12-13 17:09:20.000000000 +0100
++++ gcc/Makefile.in	2012-12-14 11:45:22.585670055 +0100
+@@ -1022,7 +1022,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
+ # and the system's installed libraries.
+ LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
+ 	$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
+-BACKENDLIBS = $(CLOOGLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
++BACKENDLIBS = $(if $(CLOOGLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
+ 	$(ZLIB)
+ # Any system libraries needed just for GNAT.
+ SYSLIBS = @GNAT_LIBEXC@
+@@ -3442,6 +3442,15 @@ $(common_out_object_file): $(common_out_
+     $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(OPTS_H) $(TM_H) $(TM_P_H) $(MACHMODE_H)
+ 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
+ 	  $< $(OUTPUT_OPTION)
++
++graphite%.o : \
++  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++graphite.o : \
++  ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
++graphite%.o : \
++  ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
++graphite.o : \
++  ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
+ #\f
+ # Generate header and source files from the machine description,
+ # and compile them.
+--- gcc/graphite-poly.h.jj	2012-12-13 11:31:27.000000000 +0100
++++ gcc/graphite-poly.h	2012-12-14 13:41:41.970800726 +0100
+@@ -22,6 +22,369 @@ along with GCC; see the file COPYING3.
+ #ifndef GCC_GRAPHITE_POLY_H
+ #define GCC_GRAPHITE_POLY_H
+ 
++#include <isl/aff.h>
++#include <isl/schedule.h>
++#include <isl/ilp.h>
++#include <isl/flow.h>
++#include <isl/options.h>
++#include <cloog/isl/cloog.h>
++#include <dlfcn.h>
++#define DYNSYMS \
++  DYNSYM (clast_pprint); \
++  DYNSYM (cloog_clast_create_from_input); \
++  DYNSYM (cloog_clast_free); \
++  DYNSYM (cloog_domain_from_isl_set); \
++  DYNSYM (cloog_input_alloc); \
++  DYNSYM (cloog_isl_state_malloc); \
++  DYNSYM (cloog_options_free); \
++  DYNSYM (cloog_options_malloc); \
++  DYNSYM (cloog_scattering_from_isl_map); \
++  DYNSYM (cloog_state_free); \
++  DYNSYM (cloog_union_domain_add_domain); \
++  DYNSYM (cloog_union_domain_alloc); \
++  DYNSYM (cloog_union_domain_set_name); \
++  DYNSYM (isl_aff_add_coefficient_si); \
++  DYNSYM (isl_aff_add_constant); \
++  DYNSYM (isl_aff_free); \
++  DYNSYM (isl_aff_get_coefficient); \
++  DYNSYM (isl_aff_get_space); \
++  DYNSYM (isl_aff_mod); \
++  DYNSYM (isl_aff_set_coefficient_si); \
++  DYNSYM (isl_aff_set_constant_si); \
++  DYNSYM (isl_aff_zero_on_domain); \
++  DYNSYM (isl_band_free); \
++  DYNSYM (isl_band_get_children); \
++  DYNSYM (isl_band_get_partial_schedule); \
++  DYNSYM (isl_band_has_children); \
++  DYNSYM (isl_band_list_free); \
++  DYNSYM (isl_band_list_get_band); \
++  DYNSYM (isl_band_list_get_ctx); \
++  DYNSYM (isl_band_list_n_band); \
++  DYNSYM (isl_band_member_is_zero_distance); \
++  DYNSYM (isl_band_n_member); \
++  DYNSYM (isl_basic_map_add_constraint); \
++  DYNSYM (isl_basic_map_project_out); \
++  DYNSYM (isl_basic_map_universe); \
++  DYNSYM (isl_constraint_set_coefficient); \
++  DYNSYM (isl_constraint_set_coefficient_si); \
++  DYNSYM (isl_constraint_set_constant); \
++  DYNSYM (isl_constraint_set_constant_si); \
++  DYNSYM (isl_ctx_alloc); \
++  DYNSYM (isl_ctx_free); \
++  DYNSYM (isl_equality_alloc); \
++  DYNSYM (isl_id_alloc); \
++  DYNSYM (isl_id_copy); \
++  DYNSYM (isl_id_free); \
++  DYNSYM (isl_inequality_alloc); \
++  DYNSYM (isl_local_space_copy); \
++  DYNSYM (isl_local_space_free); \
++  DYNSYM (isl_local_space_from_space); \
++  DYNSYM (isl_local_space_range); \
++  DYNSYM (isl_map_add_constraint); \
++  DYNSYM (isl_map_add_dims); \
++  DYNSYM (isl_map_align_params); \
++  DYNSYM (isl_map_apply_range); \
++  DYNSYM (isl_map_copy); \
++  DYNSYM (isl_map_dim); \
++  DYNSYM (isl_map_dump); \
++  DYNSYM (isl_map_equate); \
++  DYNSYM (isl_map_fix_si); \
++  DYNSYM (isl_map_flat_product); \
++  DYNSYM (isl_map_flat_range_product); \
++  DYNSYM (isl_map_free); \
++  DYNSYM (isl_map_from_basic_map); \
++  DYNSYM (isl_map_from_pw_aff); \
++  DYNSYM (isl_map_from_union_map); \
++  DYNSYM (isl_map_get_ctx); \
++  DYNSYM (isl_map_get_space); \
++  DYNSYM (isl_map_get_tuple_id); \
++  DYNSYM (isl_map_insert_dims); \
++  DYNSYM (isl_map_intersect); \
++  DYNSYM (isl_map_intersect_domain); \
++  DYNSYM (isl_map_intersect_range); \
++  DYNSYM (isl_map_is_empty); \
++  DYNSYM (isl_map_lex_ge); \
++  DYNSYM (isl_map_lex_le); \
++  DYNSYM (isl_map_n_out); \
++  DYNSYM (isl_map_range); \
++  DYNSYM (isl_map_set_tuple_id); \
++  DYNSYM (isl_map_universe); \
++  DYNSYM (isl_options_set_on_error); \
++  DYNSYM (isl_options_set_schedule_fuse); \
++  DYNSYM (isl_options_set_schedule_max_constant_term); \
++  DYNSYM (isl_options_set_schedule_maximize_band_depth); \
++  DYNSYM (isl_printer_free); \
++  DYNSYM (isl_printer_print_aff); \
++  DYNSYM (isl_printer_print_constraint); \
++  DYNSYM (isl_printer_print_map); \
++  DYNSYM (isl_printer_print_set); \
++  DYNSYM (isl_printer_to_file); \
++  DYNSYM (isl_pw_aff_add); \
++  DYNSYM (isl_pw_aff_alloc); \
++  DYNSYM (isl_pw_aff_copy); \
++  DYNSYM (isl_pw_aff_eq_set); \
++  DYNSYM (isl_pw_aff_free); \
++  DYNSYM (isl_pw_aff_from_aff); \
++  DYNSYM (isl_pw_aff_ge_set); \
++  DYNSYM (isl_pw_aff_gt_set); \
++  DYNSYM (isl_pw_aff_is_cst); \
++  DYNSYM (isl_pw_aff_le_set); \
++  DYNSYM (isl_pw_aff_lt_set); \
++  DYNSYM (isl_pw_aff_mod); \
++  DYNSYM (isl_pw_aff_mul); \
++  DYNSYM (isl_pw_aff_ne_set); \
++  DYNSYM (isl_pw_aff_nonneg_set); \
++  DYNSYM (isl_pw_aff_set_tuple_id); \
++  DYNSYM (isl_pw_aff_sub); \
++  DYNSYM (isl_pw_aff_zero_set); \
++  DYNSYM (isl_schedule_free); \
++  DYNSYM (isl_schedule_get_band_forest); \
++  DYNSYM (isl_set_add_constraint); \
++  DYNSYM (isl_set_add_dims); \
++  DYNSYM (isl_set_apply); \
++  DYNSYM (isl_set_coalesce); \
++  DYNSYM (isl_set_copy); \
++  DYNSYM (isl_set_dim); \
++  DYNSYM (isl_set_fix_si); \
++  DYNSYM (isl_set_free); \
++  DYNSYM (isl_set_from_cloog_domain); \
++  DYNSYM (isl_set_get_space); \
++  DYNSYM (isl_set_get_tuple_id); \
++  DYNSYM (isl_set_intersect); \
++  DYNSYM (isl_set_is_empty); \
++  DYNSYM (isl_set_max); \
++  DYNSYM (isl_set_min); \
++  DYNSYM (isl_set_nat_universe); \
++  DYNSYM (isl_set_project_out); \
++  DYNSYM (isl_set_set_tuple_id); \
++  DYNSYM (isl_set_universe); \
++  DYNSYM (isl_space_add_dims); \
++  DYNSYM (isl_space_alloc); \
++  DYNSYM (isl_space_copy); \
++  DYNSYM (isl_space_dim); \
++  DYNSYM (isl_space_domain); \
++  DYNSYM (isl_space_find_dim_by_id); \
++  DYNSYM (isl_space_free); \
++  DYNSYM (isl_space_from_domain); \
++  DYNSYM (isl_space_get_tuple_id); \
++  DYNSYM (isl_space_params_alloc); \
++  DYNSYM (isl_space_range); \
++  DYNSYM (isl_space_set_alloc); \
++  DYNSYM (isl_space_set_dim_id); \
++  DYNSYM (isl_space_set_tuple_id); \
++  DYNSYM (isl_union_map_add_map); \
++  DYNSYM (isl_union_map_align_params); \
++  DYNSYM (isl_union_map_apply_domain); \
++  DYNSYM (isl_union_map_apply_range); \
++  DYNSYM (isl_union_map_compute_flow); \
++  DYNSYM (isl_union_map_copy); \
++  DYNSYM (isl_union_map_empty); \
++  DYNSYM (isl_union_map_flat_range_product); \
++  DYNSYM (isl_union_map_foreach_map); \
++  DYNSYM (isl_union_map_free); \
++  DYNSYM (isl_union_map_from_map); \
++  DYNSYM (isl_union_map_get_ctx); \
++  DYNSYM (isl_union_map_get_space); \
++  DYNSYM (isl_union_map_gist_domain); \
++  DYNSYM (isl_union_map_gist_range); \
++  DYNSYM (isl_union_map_intersect_domain); \
++  DYNSYM (isl_union_map_is_empty); \
++  DYNSYM (isl_union_map_subtract); \
++  DYNSYM (isl_union_map_union); \
++  DYNSYM (isl_union_set_add_set); \
++  DYNSYM (isl_union_set_compute_schedule); \
++  DYNSYM (isl_union_set_copy); \
++  DYNSYM (isl_union_set_empty); \
++  DYNSYM (isl_union_set_from_set); \
++  DYNSYM (stmt_ass); \
++  DYNSYM (stmt_block); \
++  DYNSYM (stmt_for); \
++  DYNSYM (stmt_guard); \
++  DYNSYM (stmt_root); \
++  DYNSYM (stmt_user);
++extern struct cloog_pointers_s__
++{
++  bool inited;
++  void *h;
++#define DYNSYM(x) __typeof (x) *p_##x
++  DYNSYMS
++#undef DYNSYM
++} cloog_pointers__;
++
++#define cloog_block_alloc (*cloog_pointers__.p_cloog_block_alloc)
++#define clast_pprint (*cloog_pointers__.p_clast_pprint)
++#define cloog_clast_create_from_input (*cloog_pointers__.p_cloog_clast_create_from_input)
++#define cloog_clast_free (*cloog_pointers__.p_cloog_clast_free)
++#define cloog_domain_from_isl_set (*cloog_pointers__.p_cloog_domain_from_isl_set)
++#define cloog_input_alloc (*cloog_pointers__.p_cloog_input_alloc)
++#define cloog_isl_state_malloc (*cloog_pointers__.p_cloog_isl_state_malloc)
++#define cloog_options_free (*cloog_pointers__.p_cloog_options_free)
++#define cloog_options_malloc (*cloog_pointers__.p_cloog_options_malloc)
++#define cloog_scattering_from_isl_map (*cloog_pointers__.p_cloog_scattering_from_isl_map)
++#define cloog_state_free (*cloog_pointers__.p_cloog_state_free)
++#define cloog_union_domain_add_domain (*cloog_pointers__.p_cloog_union_domain_add_domain)
++#define cloog_union_domain_alloc (*cloog_pointers__.p_cloog_union_domain_alloc)
++#define cloog_union_domain_set_name (*cloog_pointers__.p_cloog_union_domain_set_name)
++#define isl_aff_add_coefficient_si (*cloog_pointers__.p_isl_aff_add_coefficient_si)
++#define isl_aff_add_constant (*cloog_pointers__.p_isl_aff_add_constant)
++#define isl_aff_free (*cloog_pointers__.p_isl_aff_free)
++#define isl_aff_get_coefficient (*cloog_pointers__.p_isl_aff_get_coefficient)
++#define isl_aff_get_space (*cloog_pointers__.p_isl_aff_get_space)
++#define isl_aff_mod (*cloog_pointers__.p_isl_aff_mod)
++#define isl_aff_set_coefficient_si (*cloog_pointers__.p_isl_aff_set_coefficient_si)
++#define isl_aff_set_constant_si (*cloog_pointers__.p_isl_aff_set_constant_si)
++#define isl_aff_zero_on_domain (*cloog_pointers__.p_isl_aff_zero_on_domain)
++#define isl_band_free (*cloog_pointers__.p_isl_band_free)
++#define isl_band_get_children (*cloog_pointers__.p_isl_band_get_children)
++#define isl_band_get_partial_schedule (*cloog_pointers__.p_isl_band_get_partial_schedule)
++#define isl_band_has_children (*cloog_pointers__.p_isl_band_has_children)
++#define isl_band_list_free (*cloog_pointers__.p_isl_band_list_free)
++#define isl_band_list_get_band (*cloog_pointers__.p_isl_band_list_get_band)
++#define isl_band_list_get_ctx (*cloog_pointers__.p_isl_band_list_get_ctx)
++#define isl_band_list_n_band (*cloog_pointers__.p_isl_band_list_n_band)
++#define isl_band_member_is_zero_distance (*cloog_pointers__.p_isl_band_member_is_zero_distance)
++#define isl_band_n_member (*cloog_pointers__.p_isl_band_n_member)
++#define isl_basic_map_add_constraint (*cloog_pointers__.p_isl_basic_map_add_constraint)
++#define isl_basic_map_project_out (*cloog_pointers__.p_isl_basic_map_project_out)
++#define isl_basic_map_universe (*cloog_pointers__.p_isl_basic_map_universe)
++#define isl_constraint_set_coefficient (*cloog_pointers__.p_isl_constraint_set_coefficient)
++#define isl_constraint_set_coefficient_si (*cloog_pointers__.p_isl_constraint_set_coefficient_si)
++#define isl_constraint_set_constant (*cloog_pointers__.p_isl_constraint_set_constant)
++#define isl_constraint_set_constant_si (*cloog_pointers__.p_isl_constraint_set_constant_si)
++#define isl_ctx_alloc (*cloog_pointers__.p_isl_ctx_alloc)
++#define isl_ctx_free (*cloog_pointers__.p_isl_ctx_free)
++#define isl_equality_alloc (*cloog_pointers__.p_isl_equality_alloc)
++#define isl_id_alloc (*cloog_pointers__.p_isl_id_alloc)
++#define isl_id_copy (*cloog_pointers__.p_isl_id_copy)
++#define isl_id_free (*cloog_pointers__.p_isl_id_free)
++#define isl_inequality_alloc (*cloog_pointers__.p_isl_inequality_alloc)
++#define isl_local_space_copy (*cloog_pointers__.p_isl_local_space_copy)
++#define isl_local_space_free (*cloog_pointers__.p_isl_local_space_free)
++#define isl_local_space_from_space (*cloog_pointers__.p_isl_local_space_from_space)
++#define isl_local_space_range (*cloog_pointers__.p_isl_local_space_range)
++#define isl_map_add_constraint (*cloog_pointers__.p_isl_map_add_constraint)
++#define isl_map_add_dims (*cloog_pointers__.p_isl_map_add_dims)
++#define isl_map_align_params (*cloog_pointers__.p_isl_map_align_params)
++#define isl_map_apply_range (*cloog_pointers__.p_isl_map_apply_range)
++#define isl_map_copy (*cloog_pointers__.p_isl_map_copy)
++#define isl_map_dim (*cloog_pointers__.p_isl_map_dim)
++#define isl_map_dump (*cloog_pointers__.p_isl_map_dump)
++#define isl_map_equate (*cloog_pointers__.p_isl_map_equate)
++#define isl_map_fix_si (*cloog_pointers__.p_isl_map_fix_si)
++#define isl_map_flat_product (*cloog_pointers__.p_isl_map_flat_product)
++#define isl_map_flat_range_product (*cloog_pointers__.p_isl_map_flat_range_product)
++#define isl_map_free (*cloog_pointers__.p_isl_map_free)
++#define isl_map_from_basic_map (*cloog_pointers__.p_isl_map_from_basic_map)
++#define isl_map_from_pw_aff (*cloog_pointers__.p_isl_map_from_pw_aff)
++#define isl_map_from_union_map (*cloog_pointers__.p_isl_map_from_union_map)
++#define isl_map_get_ctx (*cloog_pointers__.p_isl_map_get_ctx)
++#define isl_map_get_space (*cloog_pointers__.p_isl_map_get_space)
++#define isl_map_get_tuple_id (*cloog_pointers__.p_isl_map_get_tuple_id)
++#define isl_map_insert_dims (*cloog_pointers__.p_isl_map_insert_dims)
++#define isl_map_intersect (*cloog_pointers__.p_isl_map_intersect)
++#define isl_map_intersect_domain (*cloog_pointers__.p_isl_map_intersect_domain)
++#define isl_map_intersect_range (*cloog_pointers__.p_isl_map_intersect_range)
++#define isl_map_is_empty (*cloog_pointers__.p_isl_map_is_empty)
++#define isl_map_lex_ge (*cloog_pointers__.p_isl_map_lex_ge)
++#define isl_map_lex_le (*cloog_pointers__.p_isl_map_lex_le)
++#define isl_map_n_out (*cloog_pointers__.p_isl_map_n_out)
++#define isl_map_range (*cloog_pointers__.p_isl_map_range)
++#define isl_map_set_tuple_id (*cloog_pointers__.p_isl_map_set_tuple_id)
++#define isl_map_universe (*cloog_pointers__.p_isl_map_universe)
++#define isl_options_set_on_error (*cloog_pointers__.p_isl_options_set_on_error)
++#define isl_options_set_schedule_fuse (*cloog_pointers__.p_isl_options_set_schedule_fuse)
++#define isl_options_set_schedule_max_constant_term (*cloog_pointers__.p_isl_options_set_schedule_max_constant_term)
++#define isl_options_set_schedule_maximize_band_depth (*cloog_pointers__.p_isl_options_set_schedule_maximize_band_depth)
++#define isl_printer_free (*cloog_pointers__.p_isl_printer_free)
++#define isl_printer_print_aff (*cloog_pointers__.p_isl_printer_print_aff)
++#define isl_printer_print_constraint (*cloog_pointers__.p_isl_printer_print_constraint)
++#define isl_printer_print_map (*cloog_pointers__.p_isl_printer_print_map)
++#define isl_printer_print_set (*cloog_pointers__.p_isl_printer_print_set)
++#define isl_printer_to_file (*cloog_pointers__.p_isl_printer_to_file)
++#define isl_pw_aff_add (*cloog_pointers__.p_isl_pw_aff_add)
++#define isl_pw_aff_alloc (*cloog_pointers__.p_isl_pw_aff_alloc)
++#define isl_pw_aff_copy (*cloog_pointers__.p_isl_pw_aff_copy)
++#define isl_pw_aff_eq_set (*cloog_pointers__.p_isl_pw_aff_eq_set)
++#define isl_pw_aff_free (*cloog_pointers__.p_isl_pw_aff_free)
++#define isl_pw_aff_from_aff (*cloog_pointers__.p_isl_pw_aff_from_aff)
++#define isl_pw_aff_ge_set (*cloog_pointers__.p_isl_pw_aff_ge_set)
++#define isl_pw_aff_gt_set (*cloog_pointers__.p_isl_pw_aff_gt_set)
++#define isl_pw_aff_is_cst (*cloog_pointers__.p_isl_pw_aff_is_cst)
++#define isl_pw_aff_le_set (*cloog_pointers__.p_isl_pw_aff_le_set)
++#define isl_pw_aff_lt_set (*cloog_pointers__.p_isl_pw_aff_lt_set)
++#define isl_pw_aff_mod (*cloog_pointers__.p_isl_pw_aff_mod)
++#define isl_pw_aff_mul (*cloog_pointers__.p_isl_pw_aff_mul)
++#define isl_pw_aff_ne_set (*cloog_pointers__.p_isl_pw_aff_ne_set)
++#define isl_pw_aff_nonneg_set (*cloog_pointers__.p_isl_pw_aff_nonneg_set)
++#define isl_pw_aff_set_tuple_id (*cloog_pointers__.p_isl_pw_aff_set_tuple_id)
++#define isl_pw_aff_sub (*cloog_pointers__.p_isl_pw_aff_sub)
++#define isl_pw_aff_zero_set (*cloog_pointers__.p_isl_pw_aff_zero_set)
++#define isl_schedule_free (*cloog_pointers__.p_isl_schedule_free)
++#define isl_schedule_get_band_forest (*cloog_pointers__.p_isl_schedule_get_band_forest)
++#define isl_set_add_constraint (*cloog_pointers__.p_isl_set_add_constraint)
++#define isl_set_add_dims (*cloog_pointers__.p_isl_set_add_dims)
++#define isl_set_apply (*cloog_pointers__.p_isl_set_apply)
++#define isl_set_coalesce (*cloog_pointers__.p_isl_set_coalesce)
++#define isl_set_copy (*cloog_pointers__.p_isl_set_copy)
++#define isl_set_dim (*cloog_pointers__.p_isl_set_dim)
++#define isl_set_fix_si (*cloog_pointers__.p_isl_set_fix_si)
++#define isl_set_free (*cloog_pointers__.p_isl_set_free)
++#define isl_set_from_cloog_domain (*cloog_pointers__.p_isl_set_from_cloog_domain)
++#define isl_set_get_space (*cloog_pointers__.p_isl_set_get_space)
++#define isl_set_get_tuple_id (*cloog_pointers__.p_isl_set_get_tuple_id)
++#define isl_set_intersect (*cloog_pointers__.p_isl_set_intersect)
++#define isl_set_is_empty (*cloog_pointers__.p_isl_set_is_empty)
++#define isl_set_max (*cloog_pointers__.p_isl_set_max)
++#define isl_set_min (*cloog_pointers__.p_isl_set_min)
++#define isl_set_nat_universe (*cloog_pointers__.p_isl_set_nat_universe)
++#define isl_set_project_out (*cloog_pointers__.p_isl_set_project_out)
++#define isl_set_set_tuple_id (*cloog_pointers__.p_isl_set_set_tuple_id)
++#define isl_set_universe (*cloog_pointers__.p_isl_set_universe)
++#define isl_space_add_dims (*cloog_pointers__.p_isl_space_add_dims)
++#define isl_space_alloc (*cloog_pointers__.p_isl_space_alloc)
++#define isl_space_copy (*cloog_pointers__.p_isl_space_copy)
++#define isl_space_dim (*cloog_pointers__.p_isl_space_dim)
++#define isl_space_domain (*cloog_pointers__.p_isl_space_domain)
++#define isl_space_find_dim_by_id (*cloog_pointers__.p_isl_space_find_dim_by_id)
++#define isl_space_free (*cloog_pointers__.p_isl_space_free)
++#define isl_space_from_domain (*cloog_pointers__.p_isl_space_from_domain)
++#define isl_space_get_tuple_id (*cloog_pointers__.p_isl_space_get_tuple_id)
++#define isl_space_params_alloc (*cloog_pointers__.p_isl_space_params_alloc)
++#define isl_space_range (*cloog_pointers__.p_isl_space_range)
++#define isl_space_set_alloc (*cloog_pointers__.p_isl_space_set_alloc)
++#define isl_space_set_dim_id (*cloog_pointers__.p_isl_space_set_dim_id)
++#define isl_space_set_tuple_id (*cloog_pointers__.p_isl_space_set_tuple_id)
++#define isl_union_map_add_map (*cloog_pointers__.p_isl_union_map_add_map)
++#define isl_union_map_align_params (*cloog_pointers__.p_isl_union_map_align_params)
++#define isl_union_map_apply_domain (*cloog_pointers__.p_isl_union_map_apply_domain)
++#define isl_union_map_apply_range (*cloog_pointers__.p_isl_union_map_apply_range)
++#define isl_union_map_compute_flow (*cloog_pointers__.p_isl_union_map_compute_flow)
++#define isl_union_map_copy (*cloog_pointers__.p_isl_union_map_copy)
++#define isl_union_map_empty (*cloog_pointers__.p_isl_union_map_empty)
++#define isl_union_map_flat_range_product (*cloog_pointers__.p_isl_union_map_flat_range_product)
++#define isl_union_map_foreach_map (*cloog_pointers__.p_isl_union_map_foreach_map)
++#define isl_union_map_free (*cloog_pointers__.p_isl_union_map_free)
++#define isl_union_map_from_map (*cloog_pointers__.p_isl_union_map_from_map)
++#define isl_union_map_get_ctx (*cloog_pointers__.p_isl_union_map_get_ctx)
++#define isl_union_map_get_space (*cloog_pointers__.p_isl_union_map_get_space)
++#define isl_union_map_gist_domain (*cloog_pointers__.p_isl_union_map_gist_domain)
++#define isl_union_map_gist_range (*cloog_pointers__.p_isl_union_map_gist_range)
++#define isl_union_map_intersect_domain (*cloog_pointers__.p_isl_union_map_intersect_domain)
++#define isl_union_map_is_empty (*cloog_pointers__.p_isl_union_map_is_empty)
++#define isl_union_map_subtract (*cloog_pointers__.p_isl_union_map_subtract)
++#define isl_union_map_union (*cloog_pointers__.p_isl_union_map_union)
++#define isl_union_set_add_set (*cloog_pointers__.p_isl_union_set_add_set)
++#define isl_union_set_compute_schedule (*cloog_pointers__.p_isl_union_set_compute_schedule)
++#define isl_union_set_copy (*cloog_pointers__.p_isl_union_set_copy)
++#define isl_union_set_empty (*cloog_pointers__.p_isl_union_set_empty)
++#define isl_union_set_from_set (*cloog_pointers__.p_isl_union_set_from_set)
++#define stmt_ass (*cloog_pointers__.p_stmt_ass)
++#define stmt_block (*cloog_pointers__.p_stmt_block)
++#define stmt_for (*cloog_pointers__.p_stmt_for)
++#define stmt_guard (*cloog_pointers__.p_stmt_guard)
++#define stmt_root (*cloog_pointers__.p_stmt_root)
++#define stmt_user (*cloog_pointers__.p_stmt_user)
++
+ typedef struct poly_dr *poly_dr_p;
+ 
+ typedef struct poly_bb *poly_bb_p;
+--- gcc/graphite.c.jj	2012-12-13 11:31:00.000000000 +0100
++++ gcc/graphite.c	2012-12-14 13:40:44.155136961 +0100
+@@ -66,6 +66,34 @@ along with GCC; see the file COPYING3.
+ 
+ CloogState *cloog_state;
+ 
++__typeof (cloog_pointers__) cloog_pointers__;
++
++static bool
++init_cloog_pointers (void)
++{
++  void *h;
++
++  if (cloog_pointers__.inited)
++    return cloog_pointers__.h != NULL;
++  h = dlopen ("libcloog-isl.so.3", RTLD_LAZY);
++  cloog_pointers__.h = h;
++  if (h == NULL)
++    return false;
++#define DYNSYM(x) \
++  do \
++    { \
++      union { __typeof (cloog_pointers__.p_##x) p; void *q; } u; \
++      u.q = dlsym (h, #x); \
++      if (u.q == NULL) \
++	return false; \
++      cloog_pointers__.p_##x = u.p; \
++    } \
++  while (0)
++  DYNSYMS
++#undef DYNSYM
++  return true;
++}
++
+ /* Print global statistics to FILE.  */
+ 
+ static void
+@@ -264,6 +292,15 @@ graphite_transform_loops (void)
+   if (parallelized_function_p (cfun->decl))
+     return;
+ 
++  if (number_of_loops () <= 1)
++    return;
++
++  if (!init_cloog_pointers ())
++    {
++      sorry ("Graphite loop optimizations cannot be used");
++      return;
++    }
++
+   ctx = isl_ctx_alloc ();
+   isl_options_set_on_error(ctx, ISL_ON_ERROR_ABORT);
+   if (!graphite_initialize (ctx))
+--- gcc/graphite-clast-to-gimple.c.jj	2012-12-13 11:31:27.000000000 +0100
++++ gcc/graphite-clast-to-gimple.c	2012-12-14 13:27:47.196519858 +0100
+@@ -910,7 +910,7 @@ compute_bounds_for_loop (struct clast_fo
+    from STMT_FOR.  */
+ 
+ static tree
+-type_for_clast_for (struct clast_for *stmt_for, ivs_params_p ip)
++type_for_clast_for (struct clast_for *stmt_fora, ivs_params_p ip)
+ {
+   mpz_t bound_one, bound_two;
+   tree lb_type, ub_type;
+@@ -918,8 +918,8 @@ type_for_clast_for (struct clast_for *st
+   mpz_init (bound_one);
+   mpz_init (bound_two);
+ 
+-  lb_type = type_for_clast_expr (stmt_for->LB, ip, bound_one, bound_two);
+-  ub_type = type_for_clast_expr (stmt_for->UB, ip, bound_one, bound_two);
++  lb_type = type_for_clast_expr (stmt_fora->LB, ip, bound_one, bound_two);
++  ub_type = type_for_clast_expr (stmt_fora->UB, ip, bound_one, bound_two);
+ 
+   mpz_clear (bound_one);
+   mpz_clear (bound_two);

diff --git a/gcc48-cloog-dl2.patch b/gcc48-cloog-dl2.patch
new file mode 100644
index 0000000..77ffb89
--- /dev/null
+++ b/gcc48-cloog-dl2.patch
@@ -0,0 +1,74 @@
+2011-04-04  Jakub Jelinek  <jakub@redhat.com>
+
+	* toplev.c (toplev_main_argv): New variable.
+	(toplev_main): Initialize it.
+	* graphite.c (init_cloog_pointers): Load libcloog-isl.so.3 from gcc's private
+	directory.
+
+--- gcc/toplev.c.jj	2008-12-09 23:59:10.000000000 +0100
++++ gcc/toplev.c	2009-01-27 14:33:52.000000000 +0100
+@@ -107,6 +107,8 @@ static bool no_backend;
+ /* Length of line when printing switch values.  */
+ #define MAX_LINE 75
+ 
++const char **toplev_main_argv;
++
+ /* Decoded options, and number of such options.  */
+ struct cl_decoded_option *save_decoded_options;
+ unsigned int save_decoded_options_count;
+@@ -1909,6 +1911,8 @@ toplev_main (int argc, char **argv)
+ 
+   expandargv (&argc, &argv);
+ 
++  toplev_main_argv = CONST_CAST2 (const char **, char **, argv);
++
+   /* Initialization of GCC's environment, and diagnostics.  */
+   general_init (argv[0]);
+ 
+--- gcc/graphite.c.jj	2010-12-01 10:24:32.000000000 -0500
++++ gcc/graphite.c	2010-12-01 11:46:07.832118193 -0500
+@@ -72,11 +72,39 @@ __typeof (cloog_pointers__) cloog_pointe
+ static bool
+ init_cloog_pointers (void)
+ {
+-  void *h;
+-
+-  if (cloog_pointers__.inited)
+-    return cloog_pointers__.h != NULL;
+-  h = dlopen ("libcloog-isl.so.3", RTLD_LAZY);
++  void *h = NULL;
++  extern const char **toplev_main_argv;
++  char *buf, *p;
++  size_t len;
++
++  if (cloog_pointers__.inited)
++    return cloog_pointers__.h != NULL;
++  len = progname - toplev_main_argv[0];
++  buf = XALLOCAVAR (char, len + sizeof "libcloog-isl.so.3");
++  memcpy (buf, toplev_main_argv[0], len);
++  strcpy (buf + len, "libcloog-isl.so.3");
++  len += sizeof "libcloog-isl.so.3";
++  p = strstr (buf, "/libexec/");
++  if (p != NULL)
++    {
++      while (1)
++	{
++	  char *q = strstr (p + 8, "/libexec/");
++	  if (q == NULL)
++	    break;
++	  p = q;
++	}
++      memmove (p + 4, p + 8, len - (p + 8 - buf));
++      h = dlopen (buf, RTLD_LAZY);
++      if (h == NULL)
++	{
++	  len = progname - toplev_main_argv[0];
++	  memcpy (buf, toplev_main_argv[0], len);
++	  strcpy (buf + len, "libcloog-isl.so.3");
++	}
++    }
++  if (h == NULL)
++    h = dlopen (buf, RTLD_LAZY);
+   cloog_pointers__.h = h;
+   if (h == NULL)
+     return false;

diff --git a/gcc48-hack.patch b/gcc48-hack.patch
new file mode 100644
index 0000000..1903e95
--- /dev/null
+++ b/gcc48-hack.patch
@@ -0,0 +1,102 @@
+--- libada/Makefile.in.jj	2009-01-14 12:07:35.000000000 +0100
++++ libada/Makefile.in	2009-01-15 14:25:33.000000000 +0100
+@@ -66,18 +66,40 @@ libsubdir := $(libdir)/gcc/$(target_nonc
+ ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
+ ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
+ 
++DEFAULTMULTIFLAGS :=
++ifeq ($(MULTISUBDIR),)
++targ:=$(subst -, ,$(target))
++arch:=$(word 1,$(targ))
++ifeq ($(words $(targ)),2)
++osys:=$(word 2,$(targ))
++else
++osys:=$(word 3,$(targ))
++endif
++ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch) $(osys))),)
++ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64)
++DEFAULTMULTIFLAGS := -m64
++else
++ifeq ($(strip $(filter-out s390%, $(arch))),)
++DEFAULTMULTIFLAGS := -m31
++else
++DEFAULTMULTIFLAGS := -m32
++endif
++endif
++endif
++endif
++
+ # exeext should not be used because it's the *host* exeext.  We're building
+ # a *target* library, aren't we?!?  Likewise for CC.  Still, provide bogus
+ # definitions just in case something slips through the safety net provided
+ # by recursive make invocations in gcc/ada/Makefile.in
+ LIBADA_FLAGS_TO_PASS = \
+         "MAKEOVERRIDES=" \
+-        "LDFLAGS=$(LDFLAGS)" \
++        "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \
+         "LN_S=$(LN_S)" \
+         "SHELL=$(SHELL)" \
+-        "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
+-        "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
+-        "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
++        "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
++        "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
++        "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
+         "PICFLAG_FOR_TARGET=$(PICFLAG)" \
+         "THREAD_KIND=$(THREAD_KIND)" \
+         "TRACE=$(TRACE)" \
+@@ -88,7 +110,7 @@ LIBADA_FLAGS_TO_PASS = \
+         "exeext=.exeext.should.not.be.used " \
+ 	'CC=the.host.compiler.should.not.be.needed' \
+ 	"GCC_FOR_TARGET=$(CC)" \
+-        "CFLAGS=$(CFLAGS)"
++        "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
+ 
+ # Rules to build gnatlib.
+ .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
+--- gcc/ada/sem_util.adb	(revision 161677)
++++ gcc/ada/sem_util.adb	(working copy)
+@@ -5487,7 +5487,7 @@ package body Sem_Util is
+             Exp           : Node_Id;
+             Assn          : Node_Id;
+             Choice        : Node_Id;
+-            Comp_Type     : Entity_Id;
++            Comp_Type     : Entity_Id := Empty;
+             Is_Array_Aggr : Boolean;
+ 
+          begin
+--- config-ml.in.jj	2010-06-30 09:50:44.000000000 +0200
++++ config-ml.in	2010-07-02 21:24:17.994211151 +0200
+@@ -516,6 +516,8 @@ multi-do:
+ 				ADAFLAGS="$(ADAFLAGS) $${flags}" \
+ 				prefix="$(prefix)" \
+ 				exec_prefix="$(exec_prefix)" \
++				mandir="$(mandir)" \
++				infodir="$(infodir)" \
+ 				GCJFLAGS="$(GCJFLAGS) $${flags}" \
+ 				GOCFLAGS="$(GOCFLAGS) $${flags}" \
+ 				CXXFLAGS="$(CXXFLAGS) $${flags}" \
+--- libjava/Makefile.am.jj	2010-07-09 11:17:33.729604090 +0200
++++ libjava/Makefile.am	2010-07-09 13:16:41.894375641 +0200
+@@ -710,7 +710,8 @@ if USE_LIBGCJ_BC
+ ## later.
+ 	@echo Installing dummy lib libgcj_bc.so.1.0.0; \
+ 	rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
+-	mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
++	$(INSTALL) $(INSTALL_STRIP_FLAG) $(here)/.libs/libgcj_bc.so $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
++	rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0; \
+ 	$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
+ 	-o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
+ 	rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
+--- libjava/Makefile.in.jj	2010-07-09 11:17:34.000000000 +0200
++++ libjava/Makefile.in	2010-07-09 13:18:07.542572270 +0200
+@@ -12665,7 +12665,8 @@ install-exec-hook: install-binPROGRAMS i
+ 	install-libexecsubPROGRAMS
+ @USE_LIBGCJ_BC_TRUE@	@echo Installing dummy lib libgcj_bc.so.1.0.0; \
+ @USE_LIBGCJ_BC_TRUE@	rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
+-@USE_LIBGCJ_BC_TRUE@	mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
++@USE_LIBGCJ_BC_TRUE@	$(INSTALL) $(INSTALL_STRIP_FLAG) $(here)/.libs/libgcj_bc.so $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
++@USE_LIBGCJ_BC_TRUE@	rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0; \
+ @USE_LIBGCJ_BC_TRUE@	$(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
+ @USE_LIBGCJ_BC_TRUE@	-o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
+ @USE_LIBGCJ_BC_TRUE@	rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \

diff --git a/gcc48-i386-libgomp.patch b/gcc48-i386-libgomp.patch
new file mode 100644
index 0000000..45883a6
--- /dev/null
+++ b/gcc48-i386-libgomp.patch
@@ -0,0 +1,20 @@
+--- libgomp/configure.tgt.jj	2008-01-10 20:53:48.000000000 +0100
++++ libgomp/configure.tgt	2008-03-27 12:44:51.000000000 +0100
+@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then
+ 	    ;;
+ 	  *)
+ 	    if test -z "$with_arch"; then
+-	      XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
++	      XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
+ 	    fi
+ 	esac
+ 	;;
+@@ -79,7 +79,7 @@ if test $enable_linux_futex = yes; then
+ 	config_path="linux/x86 linux posix"
+ 	case " ${CC} ${CFLAGS} " in
+ 	  *" -m32 "*)
+-	    XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686"
++	    XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
+ 	    ;;
+ 	esac
+ 	;;

diff --git a/gcc48-java-nomulti.patch b/gcc48-java-nomulti.patch
new file mode 100644
index 0000000..17334aa
--- /dev/null
+++ b/gcc48-java-nomulti.patch
@@ -0,0 +1,44 @@
+--- libjava/configure.ac.jj	2007-12-07 17:55:50.000000000 +0100
++++ libjava/configure.ac	2007-12-07 18:36:56.000000000 +0100
+@@ -82,6 +82,13 @@ AC_ARG_ENABLE(java-maintainer-mode,
+ 	[allow rebuilding of .class and .h files]))
+ AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" = yes)
+ 
++AC_ARG_ENABLE(libjava-multilib,
++	AS_HELP_STRING([--enable-libjava-multilib], [build libjava as multilib]))
++if test "$enable_libjava_multilib" = no; then
++  multilib=no
++  ac_configure_args="$ac_configure_args --disable-multilib"
++fi
++
+ # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
+ GCC_NO_EXECUTABLES
+ 
+--- libjava/configure.jj	2007-12-07 17:55:50.000000000 +0100
++++ libjava/configure	2007-12-07 18:39:58.000000000 +0100
+@@ -1021,6 +1021,8 @@ Optional Features:
+                           default=yes
+   --enable-java-maintainer-mode
+                           allow rebuilding of .class and .h files
++  --enable-libjava-multilib
++                          build libjava as multilib
+   --disable-dependency-tracking  speeds up one-time build
+   --enable-dependency-tracking   do not reject slow dependency extractors
+   --enable-maintainer-mode  enable make rules and dependencies not useful
+@@ -1973,6 +1975,16 @@ else
+ fi
+ 
+ 
++# Check whether --enable-libjava-multilib was given.
++if test "${enable_libjava_multilib+set}" = set; then
++  enableval=$enable_libjava_multilib;
++fi
++
++if test "$enable_libjava_multilib" = no; then
++  multilib=no
++  ac_configure_args="$ac_configure_args --disable-multilib"
++fi
++
+ # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
+ 
+ 

diff --git a/gcc48-libgomp-omp_h-multilib.patch b/gcc48-libgomp-omp_h-multilib.patch
new file mode 100644
index 0000000..d0e98d1
--- /dev/null
+++ b/gcc48-libgomp-omp_h-multilib.patch
@@ -0,0 +1,17 @@
+2008-06-09  Jakub Jelinek  <jakub@redhat.com>
+
+	* omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs.
+
+--- libgomp/omp.h.in.jj	2008-06-09 13:34:05.000000000 +0200
++++ libgomp/omp.h.in	2008-06-09 13:34:48.000000000 +0200
+@@ -42,8 +42,8 @@ typedef struct
+ 
+ typedef struct
+ {
+-  unsigned char _x[@OMP_NEST_LOCK_SIZE@] 
+-    __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@)));
++  unsigned char _x[8 + sizeof (void *)] 
++    __attribute__((__aligned__(sizeof (void *))));
+ } omp_nest_lock_t;
+ #endif
+ 

diff --git a/gcc48-libstdc++-docs.patch b/gcc48-libstdc++-docs.patch
new file mode 100644
index 0000000..fa0d081
--- /dev/null
+++ b/gcc48-libstdc++-docs.patch
@@ -0,0 +1,26 @@
+--- libstdc++-v3/doc/html/index.html.jj	2011-01-03 12:53:21.282829010 +0100
++++ libstdc++-v3/doc/html/index.html	2011-01-04 18:06:28.999851145 +0100
+@@ -5,6 +5,8 @@
+       <a class="link" href="http://www.fsf.org/" target="_top">FSF
+       </a>
+     </p><p>
++      Release 4.8.0
++    </p><p>
+       Permission is granted to copy, distribute and/or modify this
+       document under the terms of the GNU Free Documentation
+       License, Version 1.2 or any later version published by the
+--- libstdc++-v3/doc/html/api.html.jj	2011-01-03 12:53:21.000000000 +0100
++++ libstdc++-v3/doc/html/api.html	2011-01-04 18:12:01.672757784 +0100
+@@ -19,8 +19,11 @@
+   member functions for the library classes, finding out what is in a
+   particular include file, looking at inheritance diagrams, etc.
+ </p><p>
+-  The API documentation, rendered into HTML, can be viewed online:
++  The API documentation, rendered into HTML, can be viewed here:
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
++      <a class="link" href="api/index.html" target="_top">for the 4.8 release, local
++      </a>
++    </p></li><li class="listitem"><p>
+       <a class="link" href="http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.4/index.html" target="_top">for the 3.4 release
+       </a>
+     </p></li><li class="listitem"><p>

diff --git a/gcc48-libtool-no-rpath.patch b/gcc48-libtool-no-rpath.patch
new file mode 100644
index 0000000..466c661
--- /dev/null
+++ b/gcc48-libtool-no-rpath.patch
@@ -0,0 +1,27 @@
+libtool sucks.
+--- ltmain.sh.jj	2007-12-07 14:53:21.000000000 +0100
++++ ltmain.sh	2008-09-05 21:51:48.000000000 +0200
+@@ -5394,6 +5394,7 @@ EOF
+ 	  rpath="$finalize_rpath"
+ 	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+ 	  for libdir in $rpath; do
++	    case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
+ 	    if test -n "$hardcode_libdir_flag_spec"; then
+ 	      if test -n "$hardcode_libdir_separator"; then
+ 		if test -z "$hardcode_libdirs"; then
+@@ -6071,6 +6072,7 @@ EOF
+       rpath=
+       hardcode_libdirs=
+       for libdir in $compile_rpath $finalize_rpath; do
++	case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
+ 	if test -n "$hardcode_libdir_flag_spec"; then
+ 	  if test -n "$hardcode_libdir_separator"; then
+ 	    if test -z "$hardcode_libdirs"; then
+@@ -6120,6 +6122,7 @@ EOF
+       rpath=
+       hardcode_libdirs=
+       for libdir in $finalize_rpath; do
++	case "$libdir" in /usr/lib|/usr/lib64|/usr/lib/../lib|/usr/lib/../lib64) continue;; esac
+ 	if test -n "$hardcode_libdir_flag_spec"; then
+ 	  if test -n "$hardcode_libdir_separator"; then
+ 	    if test -z "$hardcode_libdirs"; then

diff --git a/gcc48-no-add-needed.patch b/gcc48-no-add-needed.patch
new file mode 100644
index 0000000..b6ca777
--- /dev/null
+++ b/gcc48-no-add-needed.patch
@@ -0,0 +1,50 @@
+2010-02-08  Roland McGrath  <roland@redhat.com>
+
+	* config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the
+	linker.
+	* config/gnu-user.h (LINK_EH_SPEC): Likewise.
+	* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
+	* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
+
+--- gcc/config/alpha/elf.h.jj	2011-01-03 12:52:31.118056764 +0100
++++ gcc/config/alpha/elf.h	2011-01-04 18:14:10.931874160 +0100
+@@ -165,5 +165,5 @@ extern int alpha_this_gpdisp_sequence_nu
+    I imagine that other systems will catch up.  In the meantime, it
+    doesn't harm to make sure that the data exists to be used later.  */
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+--- gcc/config/ia64/linux.h.jj	2011-01-03 13:02:11.462994522 +0100
++++ gcc/config/ia64/linux.h	2011-01-04 18:14:10.931874160 +0100
+@@ -77,7 +77,7 @@ do {						\
+    Signalize that because we have fde-glibc, we don't need all C shared libs
+    linked against -lgcc_s.  */
+ #undef LINK_EH_SPEC
+-#define LINK_EH_SPEC ""
++#define LINK_EH_SPEC "--no-add-needed "
+ 
+ /* Put all *tf routines in libgcc.  */
+ #undef LIBGCC2_HAS_TF_MODE
+--- gcc/config/gnu-user.h.jj	2011-01-03 12:53:03.739057299 +0100
++++ gcc/config/gnu-user.h	2011-01-04 18:14:10.932814884 +0100
+@@ -82,7 +82,7 @@ see the files COPYING3 and COPYING.RUNTI
+ #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
+ 
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+ 
+ #undef LINK_GCC_C_SEQUENCE_SPEC
+--- gcc/config/rs6000/sysv4.h.jj	2011-01-03 13:02:18.255994215 +0100
++++ gcc/config/rs6000/sysv4.h	2011-01-04 18:14:10.933888871 +0100
+@@ -820,7 +820,7 @@ extern int fixuplabelno;
+   -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
+ 
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+ 
+ #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \

diff --git a/gcc48-ppc32-retaddr.patch b/gcc48-ppc32-retaddr.patch
new file mode 100644
index 0000000..78120cc
--- /dev/null
+++ b/gcc48-ppc32-retaddr.patch
@@ -0,0 +1,87 @@
+2005-11-28  Jakub Jelinek  <jakub@redhat.com>
+
+	* config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
+	read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
+	instead of doing an extran indirection from frame_pointer_rtx.
+
+	* gcc.dg/20051128-1.c: New test.
+
+--- gcc/config/rs6000/rs6000.c.jj	2005-11-26 14:38:01.000000000 +0100
++++ gcc/config/rs6000/rs6000.c	2005-11-28 20:32:18.000000000 +0100
+@@ -18325,18 +18325,22 @@ rs6000_return_addr (int count, rtx frame
+      don't try to be too clever here.  */
+   if (count != 0 || (DEFAULT_ABI != ABI_AIX && flag_pic))
+     {
++      rtx x;
+       cfun->machine->ra_needs_full_frame = 1;
+ 
+-      return
+-	gen_rtx_MEM
+-	  (Pmode,
+-	   memory_address
+-	   (Pmode,
+-	    plus_constant (Pmode,
+-			   copy_to_reg
+-			   (gen_rtx_MEM (Pmode,
+-					 memory_address (Pmode, frame))),
+-			   RETURN_ADDRESS_OFFSET)));
++      if (count == 0)
++	{
++	  gcc_assert (frame == frame_pointer_rtx);
++	  x = arg_pointer_rtx;
++	}
++      else
++	{
++	  x = memory_address (Pmode, frame);
++	  x = copy_to_reg (gen_rtx_MEM (Pmode, x));
++	}
++
++      x = plus_constant (Pmode, x, RETURN_ADDRESS_OFFSET);
++      return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
+     }
+ 
+   cfun->machine->ra_need_lr = 1;
+--- gcc/testsuite/gcc.dg/20051128-1.c.jj	2005-10-10 11:21:41.096999000 +0200
++++ gcc/testsuite/gcc.dg/20051128-1.c	2005-11-28 12:30:57.000000000 +0100
+@@ -0,0 +1,41 @@
++/* { dg-do run } */
++/* { dg-options "-O2 -fpic" } */
++
++extern void exit (int);
++extern void abort (void);
++
++int b;
++
++struct A
++{
++  void *pad[147];
++  void *ra, *h;
++  long o;
++};
++
++void
++__attribute__((noinline))
++foo (struct A *a, void *x)
++{
++  __builtin_memset (a, 0, sizeof (a));
++  if (!b)
++    exit (0);
++}
++
++void
++__attribute__((noinline))
++bar (void)
++{
++  struct A a;
++
++  __builtin_unwind_init ();
++  foo (&a, __builtin_return_address (0));
++}
++
++int
++main (void)
++{
++  bar ();
++  abort ();
++  return 0;
++}

diff --git a/gcc48-pr38757.patch b/gcc48-pr38757.patch
new file mode 100644
index 0000000..4206584
--- /dev/null
+++ b/gcc48-pr38757.patch
@@ -0,0 +1,106 @@
+2009-03-18  Jakub Jelinek  <jakub@redhat.com>
+
+	PR debug/38757
+	* langhooks.h (struct lang_hooks): Add source_language langhook.
+	* langhooks-def.h (LANG_HOOKS_SOURCE_LANGUAGE): Define to NULL.
+	(LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_SOURCE_LANGUAGE.
+	* dwarf2out.c (add_prototyped_attribute): Add DW_AT_prototype
+	also for DW_LANG_{C,C99,ObjC}.
+	(gen_compile_unit_die): Use lang_hooks.source_language () to
+	determine if DW_LANG_C99 or DW_LANG_C89 should be returned.
+c/
+	* c-lang.c (c_source_language): New function.
+	(LANG_HOOKS_SOURCE_LANGUAGE): Define.
+
+--- gcc/langhooks.h.jj	2011-01-03 12:53:05.125745450 +0100
++++ gcc/langhooks.h	2011-01-04 17:59:43.166744926 +0100
+@@ -467,6 +467,10 @@ struct lang_hooks
+      gimplification.  */
+   bool deep_unsharing;
+ 
++  /* Return year of the source language standard version if the FE supports
++     multiple versions of the standard.  */
++  int (*source_language) (void);
++
+   /* Whenever you add entries here, make sure you adjust langhooks-def.h
+      and langhooks.c accordingly.  */
+ };
+--- gcc/langhooks-def.h.jj	2011-01-03 12:53:05.000000000 +0100
++++ gcc/langhooks-def.h	2011-01-04 18:00:44.858851030 +0100
+@@ -118,6 +118,7 @@ extern void lhd_omp_firstprivatize_type_
+ #define LANG_HOOKS_BLOCK_MAY_FALLTHRU	hook_bool_const_tree_true
+ #define LANG_HOOKS_EH_USE_CXA_END_CLEANUP	false
+ #define LANG_HOOKS_DEEP_UNSHARING	false
++#define LANG_HOOKS_SOURCE_LANGUAGE	NULL
+ 
+ /* Attribute hooks.  */
+ #define LANG_HOOKS_ATTRIBUTE_TABLE		NULL
+@@ -303,7 +304,8 @@ extern void lhd_end_section (void);
+   LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS, \
+   LANG_HOOKS_BLOCK_MAY_FALLTHRU, \
+   LANG_HOOKS_EH_USE_CXA_END_CLEANUP, \
+-  LANG_HOOKS_DEEP_UNSHARING \
++  LANG_HOOKS_DEEP_UNSHARING, \
++  LANG_HOOKS_SOURCE_LANGUAGE \
+ }
+ 
+ #endif /* GCC_LANG_HOOKS_DEF_H */
+--- gcc/c/c-lang.c.jj	2011-01-03 12:53:05.376056936 +0100
++++ gcc/c/c-lang.c	2011-01-04 17:59:43.167743798 +0100
+@@ -36,6 +36,12 @@ along with GCC; see the file COPYING3.
+ 
+ enum c_language_kind c_language = clk_c;
+ 
++static int
++c_source_language (void)
++{
++  return flag_isoc99 ? 1999 : 1989;
++}
++
+ /* Lang hooks common to C and ObjC are declared in c-objc-common.h;
+    consequently, there should be very few hooks below.  */
+ 
+@@ -45,6 +51,8 @@ enum c_language_kind c_language = clk_c;
+ #define LANG_HOOKS_INIT c_objc_common_init
+ #undef LANG_HOOKS_INIT_TS
+ #define LANG_HOOKS_INIT_TS c_common_init_ts
++#undef LANG_HOOKS_SOURCE_LANGUAGE
++#define LANG_HOOKS_SOURCE_LANGUAGE c_source_language
+ 
+ /* Each front end provides its own lang hook initializer.  */
+ struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
+--- gcc/dwarf2out.c.jj	2011-01-03 12:53:05.102056475 +0100
++++ gcc/dwarf2out.c	2011-01-04 18:03:14.534151763 +0100
+@@ -16109,9 +16109,18 @@ add_bit_size_attribute (dw_die_ref die,
+ static inline void
+ add_prototyped_attribute (dw_die_ref die, tree func_type)
+ {
+-  if (get_AT_unsigned (comp_unit_die (), DW_AT_language) == DW_LANG_C89
+-      && prototype_p (func_type))
+-    add_AT_flag (die, DW_AT_prototyped, 1);
++  switch (get_AT_unsigned (comp_unit_die (), DW_AT_language))
++    {
++    case DW_LANG_C:
++    case DW_LANG_C89:
++    case DW_LANG_C99:
++    case DW_LANG_ObjC:
++      if (prototype_p (func_type))
++	add_AT_flag (die, DW_AT_prototyped, 1);
++      break;
++    default:
++      break;
++    }
+ }
+ 
+ /* Add an 'abstract_origin' attribute below a given DIE.  The DIE is found
+@@ -18915,6 +18924,10 @@ gen_compile_unit_die (const char *filena
+ 	  if (strcmp (language_string, "GNU Go") == 0)
+ 	    language = DW_LANG_Go;
+ 	}
++      else if (strcmp (language_string, "GNU C") == 0
++	       && lang_hooks.source_language
++	       && lang_hooks.source_language () >= 1999)
++	language = DW_LANG_C99;
+     }
+   /* Use a degraded Fortran setting in strict DWARF2 so is_fortran works.  */
+   else if (strcmp (language_string, "GNU Fortran") == 0)

diff --git a/gcc48-pr55341.patch b/gcc48-pr55341.patch
new file mode 100644
index 0000000..10cdabb
--- /dev/null
+++ b/gcc48-pr55341.patch
@@ -0,0 +1,74 @@
+2012-12-19  Jakub Jelinek  <jakub@redhat.com>
+
+	PR fortran/55341
+	* asan.c (asan_clear_shadow): New function.
+	(asan_emit_stack_protection): Use it.
+
+--- gcc/asan.c.jj	2012-12-13 00:05:04.000000000 +0100
++++ gcc/asan.c	2012-12-19 12:25:57.676365851 +0100
+@@ -270,6 +270,45 @@ asan_shadow_cst (unsigned char shadow_by
+   return GEN_INT (trunc_int_for_mode (val, SImode));
+ }
+ 
++/* Clear shadow memory at SHADOW_MEM, LEN bytes.  Can't call a library call here
++   though.  */
++
++static void
++asan_clear_shadow (rtx shadow_mem, HOST_WIDE_INT len)
++{
++  rtx insn, insns, top_label, end, addr, tmp, jump;
++
++  start_sequence ();
++  clear_storage (shadow_mem, GEN_INT (len), BLOCK_OP_NORMAL);
++  insns = get_insns ();
++  end_sequence ();
++  for (insn = insns; insn; insn = NEXT_INSN (insn))
++    if (CALL_P (insn))
++      break;
++  if (insn == NULL_RTX)
++    {
++      emit_insn (insns);
++      return;
++    }
++
++  gcc_assert ((len & 3) == 0);
++  top_label = gen_label_rtx ();
++  addr = force_reg (Pmode, XEXP (shadow_mem, 0));
++  shadow_mem = adjust_automodify_address (shadow_mem, SImode, addr, 0);
++  end = force_reg (Pmode, plus_constant (Pmode, addr, len));
++  emit_label (top_label);
++
++  emit_move_insn (shadow_mem, const0_rtx);
++  tmp = expand_simple_binop (Pmode, PLUS, addr, GEN_INT (4), addr,
++                             true, OPTAB_LIB_WIDEN);
++  if (tmp != addr)
++    emit_move_insn (addr, tmp);
++  emit_cmp_and_jump_insns (addr, end, LT, NULL_RTX, Pmode, true, top_label);
++  jump = get_last_insn ();
++  gcc_assert (JUMP_P (jump));
++  add_reg_note (jump, REG_BR_PROB, GEN_INT (REG_BR_PROB_BASE * 80 / 100));
++}
++
+ /* Insert code to protect stack vars.  The prologue sequence should be emitted
+    directly, epilogue sequence returned.  BASE is the register holding the
+    stack base, against which OFFSETS array offsets are relative to, OFFSETS
+@@ -404,8 +443,7 @@ asan_emit_stack_protection (rtx base, HO
+ 				       (last_offset - prev_offset)
+ 				       >> ASAN_SHADOW_SHIFT);
+ 	  prev_offset = last_offset;
+-	  clear_storage (shadow_mem, GEN_INT (last_size >> ASAN_SHADOW_SHIFT),
+-			 BLOCK_OP_NORMAL);
++	  asan_clear_shadow (shadow_mem, last_size >> ASAN_SHADOW_SHIFT);
+ 	  last_offset = offset;
+ 	  last_size = 0;
+ 	}
+@@ -418,8 +456,7 @@ asan_emit_stack_protection (rtx base, HO
+       shadow_mem = adjust_address (shadow_mem, VOIDmode,
+ 				   (last_offset - prev_offset)
+ 				   >> ASAN_SHADOW_SHIFT);
+-      clear_storage (shadow_mem, GEN_INT (last_size >> ASAN_SHADOW_SHIFT),
+-		     BLOCK_OP_NORMAL);
++      asan_clear_shadow (shadow_mem, last_size >> ASAN_SHADOW_SHIFT);
+     }
+ 
+   do_pending_stack_adjust ();

diff --git a/gcc48-pr55608.patch b/gcc48-pr55608.patch
new file mode 100644
index 0000000..6ad174a
--- /dev/null
+++ b/gcc48-pr55608.patch
@@ -0,0 +1,258 @@
+2012-12-06  Jakub Jelinek  <jakub@redhat.com>
+
+	PR debug/55608
+	* dwarf2out.c (tree_add_const_value_attribute): Call ggc_free (array)
+	on failure.
+	(resolve_one_addr): Fail if referenced STRING_CST hasn't been written.
+	(string_cst_pool_decl): New function.
+	(resolve_addr_in_expr): Optimize DWARF location expression
+	DW_OP_addr DW_OP_stack_value where DW_OP_addr refers to some variable
+	which doesn't live in memory, but has DW_AT_location or
+	DW_AT_const_value, or refers to a string literal, into
+	DW_OP_GNU_implicit_pointer.
+	(resolve_addr): If removing DW_AT_location of a variable because
+	it was DW_OP_addr of address of the variable, but the variable doesn't
+	live in memory, try to emit const value attribute for the initializer.
+
+--- gcc/dwarf2out.c.jj	2012-11-21 18:44:25.847837373 +0100
++++ gcc/dwarf2out.c	2012-12-06 17:22:14.348761149 +0100
+@@ -15492,6 +15492,7 @@ tree_add_const_value_attribute (dw_die_r
+ 	      add_AT_vec (die, DW_AT_const_value, size, 1, array);
+ 	      return true;
+ 	    }
++	  ggc_free (array);
+ 	}
+     }
+   return false;
+@@ -22370,6 +22371,10 @@ resolve_one_addr (rtx *addr, void *data
+       if (!rtl || !MEM_P (rtl))
+ 	return 1;
+       rtl = XEXP (rtl, 0);
++      if (GET_CODE (rtl) == SYMBOL_REF
++	  && SYMBOL_REF_DECL (rtl)
++	  && !TREE_ASM_WRITTEN (SYMBOL_REF_DECL (rtl)))
++	return 1;
+       vec_safe_push (used_rtx_array, rtl);
+       *addr = rtl;
+       return 0;
+@@ -22394,6 +22399,46 @@ resolve_one_addr (rtx *addr, void *data
+   return 0;
+ }
+ 
++/* For STRING_CST, return SYMBOL_REF of its constant pool entry,
++   if possible, and create DW_TAG_dwarf_procedure that can be referenced
++   from DW_OP_GNU_implicit_pointer if the string hasn't been seen yet.  */
++
++static rtx
++string_cst_pool_decl (tree t)
++{
++  rtx rtl = output_constant_def (t, 1);
++  unsigned char *array;
++  dw_loc_descr_ref l;
++  tree decl;
++  size_t len;
++  dw_die_ref ref;
++
++  if (!rtl || !MEM_P (rtl))
++    return NULL_RTX;
++  rtl = XEXP (rtl, 0);
++  if (GET_CODE (rtl) != SYMBOL_REF
++      || SYMBOL_REF_DECL (rtl) == NULL_TREE)
++    return NULL_RTX;
++
++  decl = SYMBOL_REF_DECL (rtl);
++  if (lookup_decl_die (decl))
++    return rtl;
++
++  len = TREE_STRING_LENGTH (t);
++  vec_safe_push (used_rtx_array, rtl);
++  ref = new_die (DW_TAG_dwarf_procedure, comp_unit_die (), decl);
++  array = (unsigned char *) ggc_alloc_atomic (len);
++  memcpy (array, TREE_STRING_POINTER (t), len);
++  l = new_loc_descr (DW_OP_implicit_value, len, 0);
++  l->dw_loc_oprnd2.val_class = dw_val_class_vec;
++  l->dw_loc_oprnd2.v.val_vec.length = len;
++  l->dw_loc_oprnd2.v.val_vec.elt_size = 1;
++  l->dw_loc_oprnd2.v.val_vec.array = array;
++  add_AT_loc (ref, DW_AT_location, l);
++  equate_decl_number_to_die (decl, ref);
++  return rtl;
++}
++
+ /* Helper function for resolve_addr, handle one location
+    expression, return false if at least one CONST_STRING or SYMBOL_REF in
+    the location list couldn't be resolved.  */
+@@ -22402,23 +22447,81 @@ static bool
+ resolve_addr_in_expr (dw_loc_descr_ref loc)
+ {
+   dw_loc_descr_ref keep = NULL;
+-  for (; loc; loc = loc->dw_loc_next)
++  bool start_of_dw_expr = true;
++  for (; loc; start_of_dw_expr = (loc->dw_loc_opc == DW_OP_piece
++				  || loc->dw_loc_opc == DW_OP_bit_piece),
++	      loc = loc->dw_loc_next)
+     switch (loc->dw_loc_opc)
+       {
+       case DW_OP_addr:
+ 	if (resolve_one_addr (&loc->dw_loc_oprnd1.v.val_addr, NULL))
+-	  return false;
++	  {
++	    if (start_of_dw_expr
++		&& loc->dw_loc_next
++		&& loc->dw_loc_next->dw_loc_opc == DW_OP_stack_value
++		&& !dwarf_strict)
++	      {
++		rtx rtl = loc->dw_loc_oprnd1.v.val_addr;
++		HOST_WIDE_INT offset = 0;
++		dw_die_ref ref = NULL;
++		tree decl;
++
++		if (GET_CODE (rtl) == CONST
++		    && GET_CODE (XEXP (rtl, 0)) == PLUS
++		    && CONST_INT_P (XEXP (XEXP (rtl, 0), 1)))
++		  {
++		    offset = INTVAL (XEXP (XEXP (rtl, 0), 1));
++		    rtl = XEXP (XEXP (rtl, 0), 0);
++		  }
++		if (GET_CODE (rtl) == CONST_STRING)
++		  {
++		    size_t len = strlen (XSTR (rtl, 0)) + 1;
++		    tree t = build_string (len, XSTR (rtl, 0));
++		    tree tlen = size_int (len - 1);
++
++		    TREE_TYPE (t)
++		      = build_array_type (char_type_node,
++					  build_index_type (tlen));
++		    rtl = string_cst_pool_decl (t);
++		    if (!rtl)
++		      return false;
++		  }
++		if (GET_CODE (rtl) == SYMBOL_REF
++		    && SYMBOL_REF_DECL (rtl))
++		  {
++		    decl = SYMBOL_REF_DECL (rtl);
++		    if (TREE_CODE (decl) == VAR_DECL
++			&& !DECL_EXTERNAL (decl))
++		      {
++			ref = lookup_decl_die (decl);
++			if (ref
++			    && (get_AT (ref, DW_AT_location)
++				|| get_AT (ref, DW_AT_const_value)))
++			  {
++			    loc->dw_loc_opc = DW_OP_GNU_implicit_pointer;
++			    loc->dw_loc_oprnd1.val_class
++			      = dw_val_class_die_ref;
++			    loc->dw_loc_oprnd1.val_entry = NULL;
++			    loc->dw_loc_oprnd1.v.val_die_ref.die = ref;
++			    loc->dw_loc_oprnd1.v.val_die_ref.external = 0;
++			    loc->dw_loc_next = loc->dw_loc_next->dw_loc_next;
++			    loc->dw_loc_oprnd2.v.val_int = offset;
++			    break;
++			  }
++		      }
++		  }
++	      }
++	    return false;
++	  }
+ 	break;
+       case DW_OP_GNU_addr_index:
+       case DW_OP_GNU_const_index:
+-        {
+-          if ((loc->dw_loc_opc == DW_OP_GNU_addr_index
+-               || (loc->dw_loc_opc == DW_OP_GNU_const_index && loc->dtprel))
+-              && resolve_one_addr (&loc->dw_loc_oprnd1.val_entry->addr.rtl,
+-                                   NULL))
+-            return false;
+-        }
+-       break;
++	if ((loc->dw_loc_opc == DW_OP_GNU_addr_index
++	     || (loc->dw_loc_opc == DW_OP_GNU_const_index && loc->dtprel))
++	    && resolve_one_addr (&loc->dw_loc_oprnd1.val_entry->addr.rtl,
++				 NULL))
++	  return false;
++	break;
+       case DW_OP_const4u:
+       case DW_OP_const8u:
+ 	if (loc->dtprel
+@@ -22601,8 +22704,79 @@ resolve_addr (dw_die_ref die)
+ 	       || l->dw_loc_next != NULL)
+ 	      && !resolve_addr_in_expr (l))
+ 	    {
+-              if (dwarf_split_debug_info)
+-                remove_loc_list_addr_table_entries (l);
++	      if (dwarf_split_debug_info)
++		remove_loc_list_addr_table_entries (l);
++	      if (l != NULL
++		  && l->dw_loc_next == NULL
++		  && l->dw_loc_opc == DW_OP_addr
++		  && GET_CODE (l->dw_loc_oprnd1.v.val_addr) == SYMBOL_REF
++		  && SYMBOL_REF_DECL (l->dw_loc_oprnd1.v.val_addr)
++		  && a->dw_attr == DW_AT_location)
++		{
++		  tree decl = SYMBOL_REF_DECL (l->dw_loc_oprnd1.v.val_addr);
++		  remove_AT (die, a->dw_attr);
++		  ix--;
++		  if (TREE_CODE (decl) == VAR_DECL
++		      && lookup_decl_die (decl) == die
++		      && !DECL_EXTERNAL (decl)
++		      && TREE_STATIC (decl)
++		      && DECL_INITIAL (decl)
++		      && !DECL_P (DECL_INITIAL (decl))
++		      && !get_AT (die, DW_AT_const_value))
++		    {
++		      tree init = DECL_INITIAL (decl);
++		      HOST_WIDE_INT offset = 0;
++		      /* For variables that have been optimized away and thus
++			 don't have a memory location, see if we can emit
++			 DW_AT_const_value instead.  */
++		      if (tree_add_const_value_attribute (die, init))
++			break;
++		      if (dwarf_strict)
++			break;
++		      STRIP_NOPS (init);
++		      if (TREE_CODE (init) == POINTER_PLUS_EXPR
++			  && host_integerp (TREE_OPERAND (init, 1), 0))
++			{
++			  offset = tree_low_cst (TREE_OPERAND (init, 1), 0);
++			  init = TREE_OPERAND (init, 0);
++			  STRIP_NOPS (init);
++			}
++		      if (TREE_CODE (init) != ADDR_EXPR)
++			break;
++		      if ((TREE_CODE (TREE_OPERAND (init, 0)) == STRING_CST
++			   && !TREE_ASM_WRITTEN (TREE_OPERAND (init, 0)))
++			  || (TREE_CODE (TREE_OPERAND (init, 0)) == VAR_DECL
++			      && !DECL_EXTERNAL (TREE_OPERAND (init, 0))
++			      && TREE_OPERAND (init, 0) != decl))
++			{
++			  dw_die_ref ref;
++			  tree decl;
++
++			  if (TREE_CODE (TREE_OPERAND (init, 0)) == STRING_CST)
++			    {
++			      rtx rtl
++				= string_cst_pool_decl (TREE_OPERAND (init, 0));
++			      if (!rtl)
++				break;
++			      decl = SYMBOL_REF_DECL (rtl);
++			    }
++			  else
++			    decl = TREE_OPERAND (init, 0);
++			  ref = lookup_decl_die (decl);
++			  if (ref == NULL
++			      || (!get_AT (ref, DW_AT_location)
++				  && !get_AT (ref, DW_AT_const_value)))
++			    break;
++			  l = new_loc_descr (DW_OP_GNU_implicit_pointer, 0,
++					     offset);
++			  l->dw_loc_oprnd1.val_class = dw_val_class_die_ref;
++			  l->dw_loc_oprnd1.v.val_die_ref.die = ref;
++			  l->dw_loc_oprnd1.v.val_die_ref.external = 0;
++			  add_AT_loc (die, DW_AT_location, l);
++			}
++		    }
++		  break;
++		}
+ 	      remove_AT (die, a->dw_attr);
+ 	      ix--;
+ 	    }

diff --git a/gcc48-pr55844.patch b/gcc48-pr55844.patch
new file mode 100644
index 0000000..f4e7f7b
--- /dev/null
+++ b/gcc48-pr55844.patch
@@ -0,0 +1,15 @@
+2012-12-19  Jakub Jelinek  <jakub@redhat.com>
+
+	PR sanitizer/55844
+	* c-c++-common/asan/null-deref-1.c: Add -fno-shrink-wrap to
+	dg-options.
+
+--- gcc/testsuite/c-c++-common/asan/null-deref-1.c.jj	2012-12-13 00:02:50.000000000 +0100
++++ gcc/testsuite/c-c++-common/asan/null-deref-1.c	2012-12-19 12:30:05.354962160 +0100
+@@ -1,5 +1,5 @@
+ /* { dg-do run } */
+-/* { dg-options "-fno-omit-frame-pointer" } */
++/* { dg-options "-fno-omit-frame-pointer -fno-shrink-wrap" } */
+ /* { dg-additional-options "-mno-omit-leaf-frame-pointer" { target { i?86-*-* x86_64-*-* } } } */
+ /* { dg-shouldfail "asan" } */
+ 

diff --git a/gcc48-rh330771.patch b/gcc48-rh330771.patch
new file mode 100644
index 0000000..102730f
--- /dev/null
+++ b/gcc48-rh330771.patch
@@ -0,0 +1,27 @@
+2007-10-16  Jakub Jelinek  <jakub@redhat.com>
+
+	* Makefile.am (libgcj_tools_la_LIBADD): Add.
+	* Makefile.in: Regenerated.
+
+--- libjava/Makefile.am.jj	2009-05-06 08:14:50.000000000 +0200
++++ libjava/Makefile.am	2009-05-06 10:26:43.000000000 +0200
+@@ -550,7 +550,7 @@ libgcj_tools_la_LDFLAGS = -rpath $(toole
+  $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
+  $(LIBJAVA_LDFLAGS_LIBMATH)
+ 
+-libgcj_tools_la_LIBADD = libgcj.la
++libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
+ libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec \
+  $(libgcj_tools_la_version_dep)
+ if BUILD_SUBLIBS
+--- libjava/Makefile.in.jj	2009-05-06 08:14:49.000000000 +0200
++++ libjava/Makefile.in	2009-05-06 10:27:18.000000000 +0200
+@@ -1110,7 +1110,7 @@ libgcj_tools_la_LDFLAGS = -rpath $(toole
+  $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
+  $(LIBJAVA_LDFLAGS_LIBMATH)
+ 
+-libgcj_tools_la_LIBADD = libgcj.la
++libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
+ libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec \
+ 	$(libgcj_tools_la_version_dep) $(am__append_19)
+ libgcj_tools_la_LINK = $(LIBLINK) $(libgcj_tools_la_LDFLAGS) \

diff --git a/gcc48-sparc-config-detection.patch b/gcc48-sparc-config-detection.patch
new file mode 100644
index 0000000..97fed22
--- /dev/null
+++ b/gcc48-sparc-config-detection.patch
@@ -0,0 +1,40 @@
+--- gcc/config.gcc.jj	2008-04-24 15:42:46.000000000 -0500
++++ gcc/config.gcc	2008-04-24 15:44:51.000000000 -0500
+@@ -2421,7 +2421,7 @@ sparc-*-rtems*)
+ 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
+ 	tmake_file="sparc/t-sparc sparc/t-elf sparc/t-rtems t-rtems"
+ 	;;
+-sparc-*-linux*)
++sparc-*-linux* | sparcv9-*-linux*)
+ 	tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
+ 	extra_options="${extra_options} sparc/long-double-switch.opt"
+ 	case ${target} in
+@@ -2474,7 +2474,7 @@ sparc64-*-rtems*)
+ 	extra_options="${extra_options}"
+ 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64 t-rtems"
+ 	;;
+-sparc64-*-linux*)
++sparc64*-*-linux*)
+ 	tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default-64.h sparc/linux64.h sparc/tso.h"
+ 	extra_options="${extra_options} sparc/long-double-switch.opt"
+ 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
+--- libgcc/config.host.jj	2008-04-24 15:46:19.000000000 -0500
++++ libgcc/config.host	2008-04-24 15:46:49.000000000 -0500
+@@ -1002,7 +1002,7 @@ sparc-*-elf*)
+ 	tmake_file="${tmake_file} t-fdpbit t-crtfm"
+ 	extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
+ 	;;
+-sparc-*-linux*)		# SPARC's running GNU/Linux, libc6
++sparc-*-linux* | sparcv9-*-linux*)		# SPARC's running GNU/Linux, libc6
+ 	tmake_file="${tmake_file} t-crtfm"
+ 	if test "${host_address}" = 64; then
+ 		tmake_file="$tmake_file sparc/t-linux64"
+@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
+ 	tmake_file="$tmake_file t-crtfm"
+ 	extra_parts="$extra_parts crtfastmath.o"
+ 	;;
+-sparc64-*-linux*)		# 64-bit SPARC's running GNU/Linux
++sparc64*-*-linux*)		# 64-bit SPARC's running GNU/Linux
+ 	extra_parts="$extra_parts crtfastmath.o"
+ 	tmake_file="${tmake_file} t-crtfm sparc/t-linux"
+ 	if test "${host_address}" = 64; then

diff --git a/sources b/sources
index 7dd2612..b2fdb99 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,4 @@
 2659f09c2e43ef8b7d4406321753f1b2  fastjar-0.97.tar.gz
-2136a229e204d8a4425e21034e56c706  gcc-4.7.2-20121109.tar.bz2
+0aa3302c81f65ca62c114e5264f8a802  cloog-0.17.0.tar.gz
+c1ece653891bb2a5f55ca25e3f4e8f35  isl-0.10.tar.bz2
+b9be0ed1988a3624a5f405666f72d220  gcc-4.8.0-20130106.tar.bz2

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-06-29 12:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-29 12:25 [rpms/gcc] rhel-f41-base: 4.8.0-0.3 Jakub Jelinek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox