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

A new commit has been pushed.

Repo   : rpms/gcc
Branch : rhel-f41-base
Commit : cc2a83d68626b45e110287103d5f54c6babe05c9
Author : Jakub Jelinek <jakub@redhat.com>
Date   : 2016-01-27T13:37:40+01:00
Stats  : +2354/-3008 in 33 file(s)
URL    : https://src.fedoraproject.org/rpms/gcc/c/cc2a83d68626b45e110287103d5f54c6babe05c9?branch=rhel-f41-base

Log:
6.0.0-0.5

---
diff --git a/.gitignore b/.gitignore
index 5847a92..381c27e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,28 +1 @@
-/gcc-5.0.0-20150123.tar.bz2
-/gcc-5.0.0-20150130.tar.bz2
-/gcc-5.0.0-20150205.tar.bz2
-/gcc-5.0.0-20150206.tar.bz2
-/gcc-5.0.0-20150208.tar.bz2
-/gcc-5.0.0-20150210.tar.bz2
-/gcc-5.0.0-20150212.tar.bz2
-/gcc-5.0.0-20150214.tar.bz2
-/gcc-5.0.0-20150216.tar.bz2
-/gcc-5.0.0-20150217.tar.bz2
-/gcc-5.0.0-20150224.tar.bz2
-/gcc-5.0.0-20150226.tar.bz2
-/gcc-5.0.0-20150313.tar.bz2
-/gcc-5.0.0-20150316.tar.bz2
-/gcc-5.0.0-20150319.tar.bz2
-/gcc-5.0.0-20150407.tar.bz2
-/gcc-5.0.1-20150413.tar.bz2
-/gcc-5.0.1-20150417.tar.bz2
-/gcc-5.1.1-20150422.tar.bz2
-/gcc-5.1.1-20150606.tar.bz2
-/gcc-5.1.1-20150612.tar.bz2
-/gcc-5.1.1-20150618.tar.bz2
-/gcc-5.1.1-20150707.tar.bz2
-/gcc-5.2.1-20150716.tar.bz2
-/gcc-5.2.1-20150902.tar.bz2
-/gcc-5.2.1-20150929.tar.bz2
-/gcc-5.2.1-20151104.tar.bz2
-/gcc-5.3.1-20151207.tar.bz2
+/gcc-6.0.0-20160127.tar.bz2

diff --git a/gcc.spec b/gcc.spec
index 19894ce..57fd459 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20151207
-%global SVNREV 231358
-%global gcc_version 5.3.1
+%global DATE 20160127
+%global SVNREV 232870
+%global gcc_version 6.0.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 3
+%global gcc_release 0.5
 %global _unpackaged_files_terminate_build 0
 %global _performance_build 1
 # Hardening slows the compiler way too much.
@@ -24,22 +24,22 @@
 %else
 %global build_libquadmath 0
 %endif
-%ifarch %{ix86} x86_64 ppc ppc64 ppc64p7 %{arm} aarch64
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 %{arm} aarch64
 %global build_libasan 1
 %else
 %global build_libasan 0
 %endif
-%ifarch x86_64
+%ifarch x86_64 aarch64
 %global build_libtsan 1
 %else
 %global build_libtsan 0
 %endif
-%ifarch x86_64
+%ifarch x86_64 aarch64
 %global build_liblsan 1
 %else
 %global build_liblsan 0
 %endif
-%ifarch %{ix86} x86_64 ppc ppc64 ppc64p7 %{arm} aarch64
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64le ppc64p7 %{arm} aarch64
 %global build_libubsan 1
 %else
 %global build_libubsan 0
@@ -93,7 +93,7 @@ License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2
 Group: Development/Languages
 # The source for this package was pulled from upstream's vcs.  Use the
 # following commands to generate the tarball:
-# svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-5-branch@%{SVNREV} gcc-%{version}-%{DATE}
+# svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-6-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.14
@@ -192,22 +192,20 @@ Requires(preun): /sbin/install-info
 AutoReq: true
 Provides: bundled(libiberty)
 
-Patch0: gcc5-hack.patch
-Patch1: gcc5-java-nomulti.patch
-Patch2: gcc5-ppc32-retaddr.patch
-Patch3: gcc5-rh330771.patch
-Patch4: gcc5-i386-libgomp.patch
-Patch5: gcc5-sparc-config-detection.patch
-Patch6: gcc5-libgomp-omp_h-multilib.patch
-Patch7: gcc5-libtool-no-rpath.patch
-Patch8: gcc5-isl-dl.patch
-Patch10: gcc5-libstdc++-docs.patch
-Patch11: gcc5-no-add-needed.patch
-Patch12: gcc5-libgo-p224.patch
-Patch13: gcc5-aarch64-async-unw-tables.patch
-Patch14: gcc5-libsanitize-aarch64-va42.patch
-Patch15: gcc5-pr65689.patch
-Patch16: gcc5-rh1279639.patch
+Patch0: gcc6-hack.patch
+Patch1: gcc6-java-nomulti.patch
+Patch2: gcc6-ppc32-retaddr.patch
+Patch3: gcc6-rh330771.patch
+Patch4: gcc6-i386-libgomp.patch
+Patch5: gcc6-sparc-config-detection.patch
+Patch6: gcc6-libgomp-omp_h-multilib.patch
+Patch7: gcc6-libtool-no-rpath.patch
+Patch8: gcc6-isl-dl.patch
+Patch9: gcc6-libstdc++-docs.patch
+Patch10: gcc6-no-add-needed.patch
+Patch11: gcc6-libgo-p224.patch
+Patch12: gcc6-aarch64-async-unw-tables.patch
+Patch13: gcc6-libsanitize-aarch64-va42.patch
 
 # On ARM EABI systems, we do want -gnueabi to be part of the
 # target triple.
@@ -225,11 +223,11 @@ Patch16: gcc5-rh1279639.patch
 %endif
 
 %description
-The gcc package contains the GNU Compiler Collection version 5.
+The gcc package contains the GNU Compiler Collection version 6.
 You'll need this package in order to compile C code.
 
 %package -n libgcc
-Summary: GCC version 5 shared support library
+Summary: GCC version 6 shared support library
 Group: System Environment/Libraries
 Autoreq: false
 %if !%{build_ada}
@@ -765,16 +763,13 @@ package or when debugging this package.
 %patch8 -p0 -b .isl-dl~
 %endif
 %if %{build_libstdcxx_docs}
-%patch10 -p0 -b .libstdc++-docs~
+%patch9 -p0 -b .libstdc++-docs~
 %endif
-%patch11 -p0 -b .no-add-needed~
-%patch12 -p0 -b .libgo-p224~
+%patch10 -p0 -b .no-add-needed~
+%patch11 -p0 -b .libgo-p224~
 rm -f libgo/go/crypto/elliptic/p224{,_test}.go
-%patch13 -p0 -b .aarch64-async-unw-tables~
-%patch14 -p0 -b .libsanitize-aarch64-va42~
-%patch15 -p0 -b .pr65689~
-%patch16 -p0 -b .rh1279639~
-sed -i -e 's/ -Wl,-z,nodlopen//g' gcc/ada/gcc-interface/Makefile.in
+%patch12 -p0 -b .aarch64-async-unw-tables~
+%patch13 -p0 -b .libsanitize-aarch64-va42~
 
 %if 0%{?_enable_debug_packages}
 mkdir dwz-wrapper
@@ -834,7 +829,7 @@ if [ -f "${BUILDDIR}"/debugfiles.list \
   done
   cp -a "${BUILDDIR}"/debugfiles-base.list "${BUILDDIR}"/debugfiles-remove.list
 %if %{build_go}
-  libgoso=`basename .%{_prefix}/%{_lib}/libgo.so.7.*`
+  libgoso=`basename .%{_prefix}/%{_lib}/libgo.so.8.*`
   for f in %{_prefix}/bin/go.gcc \
 	   %{_prefix}/bin/gofmt.gcc \
 	   %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cgo \
@@ -845,8 +840,8 @@ if [ -f "${BUILDDIR}"/debugfiles.list \
     rm -f usr/lib/debug$f.debug
     echo "/usr/lib/debug$f.debug" >> "${BUILDDIR}"/debugfiles-remove.list
   done
-  rm -f usr/lib/debug%{_prefix}/%{_lib}/libgo.so.7.debug
-  echo "/usr/lib/debug%{_prefix}/%{_lib}/libgo.so.7.debug" >> "${BUILDDIR}"/debugfiles-remove.list
+  rm -f usr/lib/debug%{_prefix}/%{_lib}/libgo.so.8.debug
+  echo "/usr/lib/debug%{_prefix}/%{_lib}/libgo.so.8.debug" >> "${BUILDDIR}"/debugfiles-remove.list
   for f in `find usr/lib/debug/.build-id -type l`; do
     if ls -l "$f" | egrep -q -- '->.*(/bin/go.gcc|/bin/gofmt.gcc|/cgo|lib[0-9]*/libgo\.so)'; then
       echo "/$f" >> "${BUILDDIR}"/debugfiles-remove.list
@@ -1001,13 +996,8 @@ CONFIGURE_OPTS="\
 %endif
 %endif
 %ifarch ppc64le
-%if 0%{?rhel} >= 7
 	--with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \
 %endif
-%if 0%{?fedora} > 21 && 0%{?fedora} < 24
-	--with-cpu-32=power7 --with-tune-32=power8 --with-cpu-64=power7 --with-tune-64=power8 \
-%endif
-%endif
 %ifarch ppc
 	--build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
 %endif
@@ -1168,8 +1158,6 @@ ln -sf gfortran %{buildroot}%{_prefix}/bin/f95
 rm -f %{buildroot}%{_infodir}/dir
 gzip -9 %{buildroot}%{_infodir}/*.info*
 ln -sf gcc %{buildroot}%{_prefix}/bin/gnatgcc
-
-# Own %%{_fmoddir}
 mkdir -p %{buildroot}%{_fmoddir}
 
 %if %{build_go}
@@ -1345,7 +1333,7 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so
 ln -sf ../../../libgfortran.so.3.* libgfortran.so
 ln -sf ../../../libgomp.so.1.* libgomp.so
 %if %{build_go}
-ln -sf ../../../libgo.so.7.* libgo.so
+ln -sf ../../../libgo.so.8.* libgo.so
 %endif
 %if %{build_libquadmath}
 ln -sf ../../../libquadmath.so.0.* libquadmath.so
@@ -1357,7 +1345,7 @@ ln -sf ../../../libitm.so.1.* libitm.so
 ln -sf ../../../libatomic.so.1.* libatomic.so
 %endif
 %if %{build_libasan}
-ln -sf ../../../libasan.so.2.* libasan.so
+ln -sf ../../../libasan.so.3.* libasan.so
 mv ../../../libasan_preinit.o libasan_preinit.o
 %endif
 %if %{build_libubsan}
@@ -1367,8 +1355,8 @@ ln -sf ../../../libubsan.so.0.* libubsan.so
 ln -sf ../../../libcilkrts.so.5.* libcilkrts.so
 %endif
 %if %{build_libmpx}
-ln -sf ../../../libmpx.so.0.* libmpx.so
-ln -sf ../../../libmpxwrappers.so.0.* libmpxwrappers.so
+ln -sf ../../../libmpx.so.2.* libmpx.so
+ln -sf ../../../libmpxwrappers.so.2.* libmpxwrappers.so
 %endif
 else
 ln -sf ../../../../%{_lib}/libobjc.so.4 libobjc.so
@@ -1376,7 +1364,7 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so
 ln -sf ../../../../%{_lib}/libgfortran.so.3.* libgfortran.so
 ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so
 %if %{build_go}
-ln -sf ../../../../%{_lib}/libgo.so.7.* libgo.so
+ln -sf ../../../../%{_lib}/libgo.so.8.* libgo.so
 %endif
 %if %{build_libquadmath}
 ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so
@@ -1388,7 +1376,7 @@ ln -sf ../../../../%{_lib}/libitm.so.1.* libitm.so
 ln -sf ../../../../%{_lib}/libatomic.so.1.* libatomic.so
 %endif
 %if %{build_libasan}
-ln -sf ../../../../%{_lib}/libasan.so.2.* libasan.so
+ln -sf ../../../../%{_lib}/libasan.so.3.* libasan.so
 mv ../../../../%{_lib}/libasan_preinit.o libasan_preinit.o
 %endif
 %if %{build_libubsan}
@@ -1398,8 +1386,8 @@ ln -sf ../../../../%{_lib}/libubsan.so.0.* libubsan.so
 ln -sf ../../../../%{_lib}/libcilkrts.so.5.* libcilkrts.so
 %endif
 %if %{build_libmpx}
-ln -sf ../../../../%{_lib}/libmpx.so.0.* libmpx.so
-ln -sf ../../../../%{_lib}/libmpxwrappers.so.0.* libmpxwrappers.so
+ln -sf ../../../../%{_lib}/libmpx.so.2.* libmpx.so
+ln -sf ../../../../%{_lib}/libmpxwrappers.so.2.* libmpxwrappers.so
 %endif
 %if %{build_libtsan}
 rm -f libtsan.so
@@ -1447,6 +1435,8 @@ mv -f %{buildroot}%{_prefix}/%{_lib}/liblsan.*a $FULLLPATH/
 %if %{build_go}
 mv -f %{buildroot}%{_prefix}/%{_lib}/libgo.*a $FULLLPATH/
 mv -f %{buildroot}%{_prefix}/%{_lib}/libgobegin.*a $FULLLPATH/
+mv -f %{buildroot}%{_prefix}/%{_lib}/libgolibbegin.*a $FULLLPATH/
+mv -f %{buildroot}%{_prefix}/%{_lib}/libnetgo.*a $FULLLPATH/
 %endif
 
 %if %{build_ada}
@@ -1461,28 +1451,28 @@ mv -f $FULLPATH/ada{include,lib} $FULLLPATH/
 pushd $FULLLPATH/adalib
 if [ "%{_lib}" = "lib" ]; then
 ln -sf ../../../../../libgnarl-*.so libgnarl.so
-ln -sf ../../../../../libgnarl-*.so libgnarl-5.so
+ln -sf ../../../../../libgnarl-*.so libgnarl-6.so
 ln -sf ../../../../../libgnat-*.so libgnat.so
-ln -sf ../../../../../libgnat-*.so libgnat-5.so
+ln -sf ../../../../../libgnat-*.so libgnat-6.so
 else
 ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl.so
-ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-5.so
+ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-6.so
 ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat.so
-ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-5.so
+ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-6.so
 fi
 popd
 else
 pushd $FULLPATH/adalib
 if [ "%{_lib}" = "lib" ]; then
 ln -sf ../../../../libgnarl-*.so libgnarl.so
-ln -sf ../../../../libgnarl-*.so libgnarl-5.so
+ln -sf ../../../../libgnarl-*.so libgnarl-6.so
 ln -sf ../../../../libgnat-*.so libgnat.so
-ln -sf ../../../../libgnat-*.so libgnat-5.so
+ln -sf ../../../../libgnat-*.so libgnat-6.so
 else
 ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so
-ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-5.so
+ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-6.so
 ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so
-ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-5.so
+ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-6.so
 fi
 popd
 fi
@@ -1495,8 +1485,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.3.* | sed s~/lib/~/lib64/~` 64/li
 ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so
 %if %{build_go}
 rm -f libgo.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.7.* | sed 's,^.*libg,libg,'`' )' > libgo.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.7.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.8.* | sed 's,^.*libg,libg,'`' )' > libgo.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.8.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
 %endif
 %if %{build_libquadmath}
 rm -f libquadmath.so
@@ -1515,8 +1505,8 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libatomic.so.1.* | sed 's,
 %endif
 %if %{build_libasan}
 rm -f libasan.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libasan.so.2.* | sed 's,^.*liba,liba,'`' )' > libasan.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libasan.so.2.* | sed 's,^.*liba,liba,'`' )' > 64/libasan.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libasan.so.3.* | sed 's,^.*liba,liba,'`' )' > libasan.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libasan.so.3.* | sed 's,^.*liba,liba,'`' )' > 64/libasan.so
 mv ../../../../lib64/libasan_preinit.o 64/libasan_preinit.o
 %endif
 %if %{build_libubsan}
@@ -1531,11 +1521,11 @@ echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libcilkrts.so.5.* | sed 's
 %endif
 %if %{build_libmpx}
 rm -f libmpx.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libmpx.so.0.* | sed 's,^.*libm,libm,'`' )' > libmpx.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libmpx.so.0.* | sed 's,^.*libm,libm,'`' )' > 64/libmpx.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libmpx.so.2.* | sed 's,^.*libm,libm,'`' )' > libmpx.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libmpx.so.2.* | sed 's,^.*libm,libm,'`' )' > 64/libmpx.so
 rm -f libmpxwrappers.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libmpxwrappers.so.0.* | sed 's,^.*libm,libm,'`' )' > libmpxwrappers.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libmpxwrappers.so.0.* | sed 's,^.*libm,libm,'`' )' > 64/libmpxwrappers.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libmpxwrappers.so.2.* | sed 's,^.*libm,libm,'`' )' > libmpxwrappers.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libmpxwrappers.so.2.* | sed 's,^.*libm,libm,'`' )' > 64/libmpxwrappers.so
 %endif
 ln -sf lib32/libgfortran.a libgfortran.a
 ln -sf ../lib64/libgfortran.a 64/libgfortran.a
@@ -1582,6 +1572,10 @@ ln -sf lib32/libgo.a libgo.a
 ln -sf ../lib64/libgo.a 64/libgo.a
 ln -sf lib32/libgobegin.a libgobegin.a
 ln -sf ../lib64/libgobegin.a 64/libgobegin.a
+ln -sf lib32/libgolibbegin.a libgolibbegin.a
+ln -sf ../lib64/libgolibbegin.a 64/libgolibbegin.a
+ln -sf lib32/libnetgo.a libnetgo.a
+ln -sf ../lib64/libnetgo.a 64/libnetgo.a
 %endif
 %if %{build_ada}
 ln -sf lib32/adainclude adainclude
@@ -1598,8 +1592,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.3.* | sed s~/../lib64/~/~` 32/l
 ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so
 %if %{build_go}
 rm -f libgo.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.7.* | sed 's,^.*libg,libg,'`' )' > libgo.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.7.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.8.* | sed 's,^.*libg,libg,'`' )' > libgo.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.8.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
 %endif
 %if %{build_libquadmath}
 rm -f libquadmath.so
@@ -1618,8 +1612,8 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libatomic.so.1.* | sed 's,
 %endif
 %if %{build_libasan}
 rm -f libasan.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libasan.so.2.* | sed 's,^.*liba,liba,'`' )' > libasan.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libasan.so.2.* | sed 's,^.*liba,liba,'`' )' > 32/libasan.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libasan.so.3.* | sed 's,^.*liba,liba,'`' )' > libasan.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libasan.so.3.* | sed 's,^.*liba,liba,'`' )' > 32/libasan.so
 mv ../../../../lib/libasan_preinit.o 32/libasan_preinit.o
 %endif
 %if %{build_libubsan}
@@ -1634,11 +1628,11 @@ echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libcilkrts.so.5.* | sed 's
 %endif
 %if %{build_libmpx}
 rm -f libmpx.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libmpx.so.0.* | sed 's,^.*libm,libm,'`' )' > libmpx.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libmpx.so.0.* | sed 's,^.*libm,libm,'`' )' > 32/libmpx.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libmpx.so.2.* | sed 's,^.*libm,libm,'`' )' > libmpx.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libmpx.so.2.* | sed 's,^.*libm,libm,'`' )' > 32/libmpx.so
 rm -f libmpxwrappers.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libmpxwrappers.so.0.* | sed 's,^.*libm,libm,'`' )' > libmpxwrappers.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libmpxwrappers.so.0.* | sed 's,^.*libm,libm,'`' )' > 32/libmpxwrappers.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libmpxwrappers.so.2.* | sed 's,^.*libm,libm,'`' )' > libmpxwrappers.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libmpxwrappers.so.2.* | sed 's,^.*libm,libm,'`' )' > 32/libmpxwrappers.so
 %endif
 mv -f %{buildroot}%{_prefix}/lib/libobjc.*a 32/
 mv -f %{buildroot}%{_prefix}/lib/libgomp.*a 32/
@@ -1687,6 +1681,10 @@ ln -sf ../lib32/libgo.a 32/libgo.a
 ln -sf lib64/libgo.a libgo.a
 ln -sf ../lib32/libgobegin.a 32/libgobegin.a
 ln -sf lib64/libgobegin.a libgobegin.a
+ln -sf ../lib32/libgolibbegin.a 32/libgolibbegin.a
+ln -sf lib64/libgolibbegin.a libgolibbegin.a
+ln -sf ../lib32/libnetgo.a 32/libnetgo.a
+ln -sf lib64/libnetgo.a libnetgo.a
 %endif
 %if %{build_ada}
 ln -sf ../lib32/adainclude 32/adainclude
@@ -1725,6 +1723,8 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libm
 %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
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgolibbegin.a 32/libgolibbegin.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libnetgo.a 32/libnetgo.a
 %endif
 %if %{build_ada}
 ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/adainclude 32/adainclude
@@ -1755,7 +1755,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libitm.so.1.*
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libatomic.so.1.*
 %endif
 %if %{build_libasan}
-chmod 755 %{buildroot}%{_prefix}/%{_lib}/libasan.so.2.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libasan.so.3.*
 %endif
 %if %{build_libubsan}
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libubsan.so.0.*
@@ -1764,8 +1764,8 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libubsan.so.0.*
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcilkrts.so.5.*
 %endif
 %if %{build_libmpx}
-chmod 755 %{buildroot}%{_prefix}/%{_lib}/libmpx.so.0.*
-chmod 755 %{buildroot}%{_prefix}/%{_lib}/libmpxwrappers.so.0.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libmpx.so.2.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libmpxwrappers.so.2.*
 %endif
 %if %{build_libtsan}
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libtsan.so.0.*
@@ -1774,7 +1774,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/libtsan.so.0.*
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.*
 %endif
 %if %{build_go}
-chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.7.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.8.*
 %endif
 chmod 755 %{buildroot}%{_prefix}/%{_lib}/libobjc.so.4.*
 
@@ -2201,6 +2201,8 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mwaitxintrin.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xsavecintrin.h
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xsavesintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/clzerointrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/pkuintrin.h
 %endif
 %ifarch ia64
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ia64intrin.h
@@ -2586,7 +2588,6 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/ieee_features.mod
 %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/f951
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.spec
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortranbegin.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libcaf_single.a
 %ifarch sparcv9 sparc64 ppc ppc64 ppc64p7
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.a
@@ -2594,7 +2595,6 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.so
 %ifarch sparcv9 ppc
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortranbegin.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libcaf_single.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.so
@@ -2602,7 +2602,6 @@ fi
 %endif
 %ifarch %{multilib_64_archs}
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortranbegin.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libcaf_single.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.so
@@ -2712,7 +2711,6 @@ fi
 
 %files -n libgomp
 %{_prefix}/%{_lib}/libgomp.so.1*
-%{_prefix}/%{_lib}/libgomp-plugin-host_nonshm.so.1*
 %{_infodir}/libgomp.info*
 %doc rpm.doc/changelogs/libgomp/ChangeLog*
 
@@ -2810,7 +2808,7 @@ fi
 
 %if %{build_libasan}
 %files -n libasan
-%{_prefix}/%{_lib}/libasan.so.2*
+%{_prefix}/%{_lib}/libasan.so.3*
 
 %files -n libasan-static
 %dir %{_prefix}/lib/gcc
@@ -2908,8 +2906,8 @@ fi
 
 %if %{build_libmpx}
 %files -n libmpx
-%{_prefix}/%{_lib}/libmpx.so.0*
-%{_prefix}/%{_lib}/libmpxwrappers.so.0*
+%{_prefix}/%{_lib}/libmpx.so.2*
+%{_prefix}/%{_lib}/libmpxwrappers.so.2*
 
 %files -n libmpx-static
 %dir %{_prefix}/lib/gcc
@@ -2955,12 +2953,16 @@ fi
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgo.so
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgo.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgobegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgolibbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libnetgo.a
 %endif
 %ifarch %{multilib_64_archs}
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgo.so
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgo.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgobegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgolibbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libnetgo.a
 %endif
 %ifarch sparcv9 ppc %{multilib_64_archs}
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgo.so
@@ -2968,11 +2970,13 @@ fi
 %ifarch sparcv9 sparc64 ppc ppc64 ppc64p7
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgo.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgobegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgolibbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libnetgo.a
 %endif
 %doc rpm.doc/go/*
 
 %files -n libgo
-%{_prefix}/%{_lib}/libgo.so.7*
+%{_prefix}/%{_lib}/libgo.so.8*
 %doc rpm.doc/libgo/*
 
 %files -n libgo-devel
@@ -2992,13 +2996,19 @@ fi
 %ifarch sparcv9 ppc
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libgobegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libgolibbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libnetgo.a
 %endif
 %ifarch sparc64 ppc64 ppc64p7
 %dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libgobegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libgolibbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libnetgo.a
 %endif
 %ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgobegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgolibbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libnetgo.a
 %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgo.so
 %endif
 
@@ -3052,390 +3062,5 @@ fi
 %doc rpm.doc/changelogs/libcc1/ChangeLog*
 
 %changelog
-* Tue Jan  5 2016 Orion Poplawski <orion@cora.nwra.com> 5.3.1-3
-- Make gcc-gfortran own %%{_fmoddir} (#1113564)
-
-* Tue Dec  8 2015 Jakub Jelinek <jakub@redhat.com> 5.3.1-2
-- work around doxygen 1.8.10 bugs (#1279639)
-
-* Mon Dec  7 2015 Jakub Jelinek <jakub@redhat.com> 5.3.1-1
-- update from the 5 branch
-  - GCC 5.3 release
-  - PRs ada/49940, ada/49944, ada/56274, ada/60164, ada/68169, ada/68564,
-	bootstrap/66085, c++/67337, c++/67354, c++/67409, c++/67813,
-	c++/67941, c++/68087, c++/68422, c++/68508, c/66098, c/66711, c/68337,
-	debug/66432, debug/66728, fortran/47266, fortran/50201, fortran/58027,
-	fortran/60993, fortran/61819, fortran/61830, fortran/65751,
-	fortran/66465, fortran/67171, fortran/67460, fortran/67803,
-	fortran/67933, fortran/68053, fortran/68151, fortran/68153,
-	fortran/68196, fortran/68218, fortran/68224, fortran/68318,
-	fortran/68319, ipa/65908, ipa/67056, ipa/67280, ipa/67783, ipa/68057,
-	ipa/68220, ipa/pr67600, libffi/65726, libgfortran/65089,
-	libstdc++/56158, libstdc++/56383, libstdc++/67440, libstdc++/68190,
-	libstdc++/68448, lto/61313, middle-end/56956, middle-end/67443,
-	middle-end/67662, middle-end/68067, middle-end/68221,
-	middle-end/68339, preprocessor/60736, rtl-opt/67609,
-	rtl-optimization/67037, rtl-optimization/67226,
-	rtl-optimization/67954, rtl-optimization/68106,
-	rtl-optimization/68185, rtl-optimization/68194,
-	rtl-optimization/68249, rtl-optimization/68250,
-	rtl-optimization/68321, rtl-optimization/68328,
-	rtl-optimization/68376, target/57845, target/67265, target/67770,
-	target/67808, target/68059, target/68129, target/68143, target/68277,
-	target/68363, target/68408, target/68416, target/68483,
-	tree-optimization/68017, tree-optimization/68157,
-	tree-optimization/68238, tree-optimization/68552,
-	tree-optimization/68671, tree-optimization/68680
-
-* Fri Nov  6 2015 Jakub Jelinek <jakub@redhat.com> 5.2.1-5
-- reenable acats testsuite on arm
-
-* Wed Nov  4 2015 Jakub Jelinek <jakub@redhat.com> 5.2.1-4
-- update from the 5 branch
-  - PRs c++/51048, c++/66583, c++/67557, c/67730, fortran/36192,
-	fortran/51993, fortran/58754, fortran/59678, fortran/65841,
-	fortran/66079, fortran/66979, fortran/67177, fortran/67616,
-	fortran/67721, fortran/67802, fortran/67805, fortran/67818,
-	fortran/67885, fortran/67900, fortran/67939, fortran/67977,
-	fortran/67987, fortran/68019, fortran/68054, fortran/68055,
-	fortran/68108, fortran/68154, ipa/66424, libffi/65441,
-	libstdc++/65049, libstdc++/65142, libstdc++/65913, libstdc++/67173,
-	libstdc++/67707, libstdc++/67747, lto/67699, middle-end/66311,
-	middle-end/67563, middle-end/67989, middle-end/68079,
-	rtl-optimization/67029, rtl-optimization/67736, target/66697,
-	target/66912, target/67281, target/67716, target/67849, target/67850,
-	target/67929, target/67940, target/67967, target/68015, target/68018,
-	target/68102, tree-optimization/67690, tree-optimization/67769,
-	tree-optimization/67794, tree-optimization/67821
-- temporarily disable acats testsuite on arm
-
-* Tue Sep 29 2015 Jakub Jelinek <jakub@redhat.com> 5.2.1-3
-- update from the 5 branch
-  - PRs c++/67369, c++/67504, c++/67511, c++/67514, c++/67522, c++/67523,
-	c/67495, c/67500, c/67501, c/67502, fortran/67429, fortran/67525,
-	fortran/67526, fortran/67614, fortran/67615, ipa/66705, libgomp/67141,
-	libstdc++/62258, libstdc++/66855, libstdc++/66998, libstdc++/67374,
-	middle-end/67222, middle-end/67271, middle-end/67401,
-	middle-end/67442, middle-end/67452, middle-end/67512, middle-end/67517,
-	middle-end/67521, middle-end/67619, rtl-optimization/66790,
-	sanitizer/64906, sanitizer/67258, target/67061, target/67143,
-	target/67378, target/67391, target/67439, target/67506, target/67573,
-	target/67657, tree-optimization/66793, tree-optimization/66917,
-	tree-optimization/66952, tree-optimization/67055,
-	tree-optimization/67121, tree-optimization/67470
-- disable hardening, it makes the compiler significantly slower
-- put libstdc++fs.a into libstdc++-devel
-
-* Wed Sep  2 2015 Jakub Jelinek <jakub@redhat.com> 5.2.1-2
-- update from the 5 branch
-  - PRs c++/65195, c++/65734, c++/65974, c++/66260, c++/66336, c++/66533,
-	c++/66596, c++/66619, c++/66649, c++/66857, c++/66919, c++/66923,
-	c++/66957, c++/67021, c++/67104, c++/67130, c++/67131, c++/67161,
-	c++/67244, debug/66691, fortran/56520, fortran/64921, fortran/64986,
-	fortran/66035, fortran/66545, fortran/66724, fortran/66725,
-	fortran/66864, fortran/66929, fortran/66942, ipa/66566, ipa/66760,
-	libfortran/66936, libgfortran/66650, libgomp/66761, libgomp/67303,
-	libstdc++/67015, libstdc++/67362, middle-end/66134, middle-end/66567,
-	middle-end/66568, middle-end/67005, middle-end/pr66581,
-	rtl-optimization/58066, rtl-optimization/66838,
-	rtl-optimization/66891, rtl-optimization/67028, sanitizer/66908,
-	target/58066, target/65697, target/66048, target/66569, target/66648,
-	target/66703, target/66731, target/66814, target/66866, target/66891,
-	target/66922, target/66930, target/66956, target/67002, target/67049,
-	target/67060, target/67127, target/67211, tree-optimization/66828,
-	tree-optimization/66948
-
-* Thu Jul 16 2015 Jakub Jelinek <jakub@redhat.com> 5.2.1-1
-- update from the 5 branch
-  - GCC 5.2 release
-  - PRs c++/66748, ipa/66896, libfortran/66861, libgomp/65099, libgomp/65742,
-	middle-end/43341, middle-end/66332, middle-end/66820,
-	rtl-optimization/66782, rtl/66556, target/66523, target/66780,
-	target/66840, tree-optimization/66794, tree-optimization/66823
-
-* Tue Jul  7 2015 Jakub Jelinek <jakub@redhat.com> 5.1.1-5
-- update from the 5 branch
-  - PRs bootstrap/63740, c++/65750, c++/65843, c++/65879, c++/65880,
-	c++/65882, c++/65919, c++/65945, c++/65973, c++/66001, c++/66067,
-	c++/66216, c++/66501, c++/66515, c++/66585, c++/66647, c++/66743,
-	debug/66301, fortran/66549, jit/66539, jit/66546, jit/66628,
-	jit/66700, libstdc++/65393, libstdc++/66055, middle-end/66413,
-	middle-end/66633, middle-end/66702, target/37072, target/52482,
-	target/63408, target/64833, target/65711, target/65914, target/66114,
-	target/66136, target/66200, target/66412, target/66509, target/66563,
-	target/66611, testsuite/66667, tree-optimization/66119,
-	tree-optimization/66375, tree-optimization/66422
-
-* Thu Jun 18 2015 Jakub Jelinek <jakub@redhat.com> 5.1.1-4
-- update from the 5 branch
-  - fix C++ ICE in build_ctor_subob_ref (#1232679, #1233030, #1233068,
-    PR c++/66536)
-  - PRs c++/58063, c++/65719, c++/66289, c++/66450, c++/66571, fortran/66385,
-	libstdc++/66030, libstdc++/66464, middle-end/66429, target/65527,
-	target/66258, testsuite/65944
-
-* Fri Jun 12 2015 Jakub Jelinek <jakub@redhat.com> 5.1.1-3
-- update from the 5 branch
-  - PRs bootstrap/66252, bootstrap/66319, c++/66383, c++/66387,
-	fortran/66245, libstdc++/66327, libstdc++/66354,
-	rtl-optimization/66444, target/66275, target/66473, target/66474
-  - fix TLS related ICE on i?86-linux (#1212265, PR target/66470)
-  - fix a libstdc++ codecvt_utf16 bug (#1228882, PR libstdc++/66417)
-  - fix a libstdc++ wstring_convert bug (#1228884, PR libstdc++/66441)
-  - fix C++ ICE with statement expressions (#1228916, PR c++/66445)
-
-* Sat Jun  6 2015 Jakub Jelinek <jakub@redhat.com> 5.1.1-2
-- update from the 5 branch
-  - PRs c++/51747, c++/59012, c++/59766, c++/65695, c++/65721, c++/65727,
-	c++/65858, c++/65876, c++/65896, c++/65942, c++/66007, c++/66211,
-	c++/66320, c++/66405, debug/65549, fortran/40958, fortran/60780,
-	fortran/64925, fortran/65429, fortran/65903, fortran/65976,
-	fortran/66039, fortran/66040, fortran/66043, fortran/66044,
-	fortran/66045, fortran/66052, fortran/66057, fortran/66106,
-	fortran/66257, fortran/66347, fortran/66377, fortran/66380, ipa/65873,
-	libstdc++/65352, libstdc++/65839, libstdc++/65883, libstdc++/66017,
-	lto/65559, middle-end/36043, middle-end/64729, middle-end/66133,
-	middle-end/66199, middle-end/66221, middle-end/66251, middle-end/66345,
-	rtl-optimization/30967, rtl-optimization/65805, sanitizer/64839,
-	sanitizer/66190, target/58744, target/64579, target/65408,
-	target/65456, target/65849, target/65895, target/65955, target/65979,
-	target/65990, target/66015, target/66047, target/66140, target/66148,
-	target/66174, target/66215, target/66224, tree-optimization/62031,
-	tree-optimization/63551, tree-optimization/65875,
-	tree-optimization/65984, tree-optimization/66123,
-	tree-optimization/66233, tree-optimization/66251,
-	tree-optimization/66272, tree-optimization/66280
-  - allow -Wno-narrowing to suppress C++11 narrowing errors (#1227603,
-    PR c++/65801)
-  - fix debug/vector operator= bug (#1223182)
-  - fix DCE loop handling (#1220043, PR tree-optimization/66101)
-  - handle NULL in libgo runtime_funcname_go (#1212472, PR go/66016)
-- work around ARM backend issues with overaligned scalars (#1217224,
-  PR target/65956)
-- drop -Wl,-z,nodlopen from libgnat shared libraries, they aren't
-  using executable stack anymore (#1211957)
-
-* Wed Apr 22 2015 Jakub Jelinek <jakub@redhat.com> 5.1.1-1
-- update from the 5 branch
-  - GCC 5.1 release
-  - PRs debug/65807, testsuite/65767
-- improve handling of asm constraints that don't accept REG nor MEM
-  at -O0 (PR target/65689)
-- improve common handling in non-pic code on s390{,x}, aarch64 and
-  arm (PR target/65780)
-
-* Fri Apr 17 2015 Jakub Jelinek <jakub@redhat.com> 5.0.1-0.2
-- update from the 5 branch
-  - PRs bootstrap/62077, bootstrap/65763, debug/65771, ipa/65765,
-	libstdc++/65754, rtl-optimization/65761, target/65780, target/65787
-
-* Mon Apr 13 2015 Jakub Jelinek <jakub@redhat.com> 5.0.1-0.1
-- update from the trunk and 5 branch
-  - update to GCC 5.1-RC1
-  - PRs c++/65690, c++/65736, fortran/56674, fortran/56852, fortran/58813,
-	fortran/59016, fortran/59024, ipa/65540, ipa/65722, ipa/65743,
-	jit/65691, middle-end/65554, pch/65550, rtl-optimization/65693,
-	target/55143, target/65671, target/65676, target/65693, target/65694,
-	target/65710, target/65729, tree-optimization/65709,
-	tree-optimization/65735, tree-optimization/65747
-- add --enable-targets=powerpcle-linux on ppc64le (#1205236)
-
-* Tue Apr  7 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.22
-- update from the trunk
-  - PRs ada/65451, ada/65490, bootstrap/65522, bootstrap/65537, c++/42328,
-	c++/48324, c++/48453, c++/54987, c++/56100, c++/58923, c++/59329,
-	c++/59988, c++/60067, c++/60130, c++/61670, c++/61971, c++/64085,
-	c++/65072, c++/65154, c++/65390, c++/65398, c++/65498, c++/65509,
-	c++/65513, c++/65525, c++/65554, c++/65556, c++/65558, c++/65625,
-	c++/65642, c++/65646, c/65586, debug/65678, driver/65444,
-	fortran/55901, fortran/57456, fortran/63230, fortran/64787,
-	fortran/64952, fortran/65532, fortran/65548, fortran/65597, go/65462,
-	ipa/65076, ipa/65380, ipa/65465, ipa/65475, ipa/65478, ipa/65502,
-	ipa/65521, ipa/65557, ipa/65588, ipa/65600, ipa/65610, ipa/65654,
-	ipa/65655, ipa/65665, libffi/65567, libgfortran/59513,
-	libgfortran/65541, libgfortran/65563, libgfortran/65596,
-	libgomp/64972, libstdc++/33394, libstdc++/58038, libstdc++/60421,
-	libstdc++/62259, libstdc++/64967, libstdc++/65033, libstdc++/65147,
-	libstdc++/65420, libstdc++/65499, libstdc++/65500, libstdc++/65543,
-	libstdc++/65630, lto/65515, lto/65536, middle-end/64715,
-	middle-end/65517, middle-end/65519, middle-end/65555,
-	middle-end/65595, middle-end/65626, middle-end/65680, plugins/61176,
-	preprocessor/61977, preprocessor/65238, rtl-optimization/60851,
-	rtl-optimization/63491, rtl-optimization/64317,
-	rtl-optimization/64366, sanitizer/59009, sanitizer/65583,
-	target/58945, target/65052, target/65240, target/65248, target/65351,
-	target/65407, target/65489, target/65495, target/65504, target/65505,
-	target/65508, target/65523, target/65531, target/65561, target/65569,
-	target/65576, target/65593, target/65602, target/65614, target/65624,
-	target/65647, target/65648, testsuite/63175, testsuite/65506,
-	testsuite/65526, testsuite/65594, tree-optimization/62630,
-	tree-optimization/64715, tree-optimization/65177,
-	tree-optimization/65458, tree-optimization/65494,
-	tree-optimization/65518, tree-optimization/65533,
-	tree-optimization/65538, tree-optimization/65551,
-	tree-optimization/65660
-
-* Thu Mar 19 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.21
-- update from the trunk
-  - PRs c++/52659, c++/59686, c++/59816, c++/64626, c++/65046, c++/65061,
-	c++/65327, c++/65340, fortran/59198, fortran/64432, ipa/65432,
-	ipa/65439, libgfortran/64432, libstdc++/13631, middle-end/64491,
-	sanitizer/64265, sanitizer/65400, target/65078, target/65222,
-	testsuite/64032, tree-optimization/65427, tree-optimization/65450
-- add libmpx and libmpx-static subpackages on x86
-
-* Mon Mar 16 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.20
-- update from the trunk
-  - PRs fortran/61138, middle-end/65409, middle-end/65414, middle-end/65431,
-	sanitizer/64820, target/63150
-
-* Fri Mar 13 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.19
-- update from the trunk
-  - PRs ada/65259, ada/65319, bootstrap/25672, bootstrap/65150, c++/64227,
-	c++/64398, c++/64665, c++/64834, c++/65127, c++/65295, c++/65323,
-	c++/65333, c++/65339, c++/65370, c/35330, c/65120, fortran/60898,
-	fortran/65024, ipa/64693, ipa/64988, ipa/65130, ipa/65232, ipa/65236,
-	ipa/65237, ipa/65245, ipa/65263, ipa/65270, ipa/65282, ipa/65287,
-	ipa/65302, ipa/65316, ipa/65318, ipa/65334, libfortran/65200,
-	libgcc/64885, libstdc++/64367, libstdc++/64441, libstdc++/64797,
-	libstdc++/65246, libstdc++/65279, lto/65193, lto/65276, lto/65316,
-	lto/65361, middle-end/44563, middle-end/63155, middle-end/63175,
-	middle-end/64928, middle-end/65233, middle-end/65270,
-	middle-end/65315, other/65384, rtl-optimization/64895,
-	rtl-optimization/65067, rtl-optimization/65235,
-	rtl-optimization/65321, sanitizer/63958, sanitizer/65280,
-	sanitizer/65367, target/58158, target/59828, target/62247,
-	target/62251, target/64317, target/64331, target/64342, target/64600,
-	target/65038, target/65044, target/65103, target/65121, target/65138,
-	target/65183, target/65184, target/65192, target/65242, target/65249,
-	target/65261, target/65286, target/65296, target/65368,
-	tree-optimization/63743, tree-optimization/65241,
-	tree-optimization/65310, tree-optimization/65355,
-	tree-optimization/65388
-- fix vectorization of unaligned loads on powerpc (PR tree-optimization/65369)
-- fix combiner on big-endian targets (PR rtl-optimization/65401)
-- fix reassoc bit test optimization (PR tree-optimization/65418)
-
-* Fri Feb 27 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.18
-- fix compilation of stdexcept with clang (PR libstdc++-v3/64367)
-- fix scratch handling in LRA rematerialization (PR target/65032)   
-- remove -Wformat-signedness from -Wformat=2 (PR c/65040)
-- improve VLA allocation on i?86/x86_64 (PR rtl-optimization/65220)
-- fix C FE ICE (PR c/65228)
-
-* Thu Feb 26 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.17
-- update from the trunk
-  - PRs c++/65202, c++/65209, debug/46102, debug/58315, ipa/65008,
-	libgomp/64625, lto/64374, rtl-optimization/65123, target/47230,
-	target/61142, target/64212, target/64997, target/65117, target/65161,
-	target/65167, target/65171, target/65196, target/65217,
-	tree-optimization/61917, tree-optimization/65048
-- fix bswap load optimization on big-endian (#1194704,
-  PR tree-optimization/65215)
-- fix reassociation (PR tree-optimization/65216)
-
-* Tue Feb 24 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.16
-- update from the trunk
-  - PRs ada/65100, ada/65156, bootstrap/63888, debug/58123, fortran/61960,
-	fortran/63427, fortran/64980, gcov-profile/64634, ipa/65087,
-	libstdc++/58357, libstdc++/64695, libstdc++/65085, lto/65012,
-	middle-end/65074, sanitizer/65081, target/63892, target/64172,
-	target/64452, target/64793, target/65064, target/65109, target/65153,
-	target/65163, target/65172, target/65181, testsuite/64158,
-	testsuite/65093, testsuite/65107, testsuite/65116, testsuite/65126,
-	tree-optimization/62217, tree-optimization/65063,
-	tree-optimization/65136, tree-optimization/65170
-- fix arm_function_in_section_p
-
-* Tue Feb 17 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.15
-- update from the trunk
-  - PRs bootstrap/48009, c++/65075, c++/65080, c/65066, ipa/64963, ipa/65059,
-	target/53348, target/65058, tree-optimization/63593,
-	tree-optimization/65077
-
-* Mon Feb 16 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.14
-- update from the trunk
-  - PRs c/64768, testsuite/64850
-- temporarily revert PR rtl/32219 change
-
-* Sat Feb 14 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.13
-- update from the trunk
-  - PRs bootstrap/65060, c++/60211, c++/60894, c++/64884, c++/64898,
-	c++/64956, c++/64959, c++/64970, c++/65051, c++/65054, c/65040,
-	c/65050, debug/55541, fortran/64506, fortran/64932, ipa/65028,
-	rtl-optimization/47477, rtl/32219, tree-optimization/62209,
-	tree-optimization/64705, tree-optimization/64823,
-	tree-optimization/65002, tree-optimization/65053
-
-* Thu Feb 12 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.12
-- update from the trunk
-  - PRs ipa/64813, ipa/65005, lto/65015, sanitizer/65000, sanitizer/65019,
-	target/63347, target/64661, testsuite/64930, tree-optimization/65014
-- fix ARM ICF ICE (PR ipa/65034)
-
-* Tue Feb 10 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.11
-- update from the trunk
-  - PRs c++/64899, c++/64994, c/64856, gcov-profile/61889, ipa/63566,
-	ipa/64978, ipa/64982, libgfortran/57822, lto/64076, target/58757,
-	tree-optimization/43378, tree-optimization/54000,
-	tree-optimization/64326, tree-optimization/64909,
-	tree-optimization/64995
-- fix C++ FE ICE on internal functions (PR sanitizer/64984)
-- fix ICE due to unreachable EH region removal (PR sanitizer/65000)
-- fix -fsection-anchors alias handling (#1190243, PR middle-end/65003)
-- fix -fsanitize=vptr handling (PR sanitizer/65004)
-
-* Mon Feb  9 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.10
-- fix getconf default symlink on 32-bit arches (#1190484)
-- fix ICF ICE (PR ipa/64858)
-- fix wrong-code bug caused by stdarg pass (PR target/64979)
-- fix -fsanitize=address target builtin handling (PR sanitizer/64981) 
-
-* Sun Feb  8 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.9
-- update from the trunk
-  - PRs bootstrap/53348, bootstrap/64256, debug/2714, fortran/63205,
-	fortran/63744, ipa/64896, jit/64752, libgfortran/60956,
-	middle-end/64340, middle-end/64937, target/64205, target/64889
-
-* Fri Feb  6 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.8
-- update from the trunk
-  - PRs fortran/60289, fortran/64943, rtl-optimization/64957, target/17306,
-	target/43264, target/58400, target/64876
-- fix aarch64 bootstrap issue (PR target/64893)
-
-* Thu Feb  5 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.7
-- update from the trunk
-  - PRs ada/64349, c++/64877, c++/64901, c/64824, c/64868, fortran/64757,
-	gcov/64123, go/64836, go/64838, ipa/61548, ipa/64686, ipa/64872,
-	jit/64810, libobjc/63765, libstdc++/64467, libstdc++/64883,
-	middle-end/61225, middle-end/62103, middle-end/64922,
-	rtl-optimization/64756, rtl-optimization/64905, target/62631,
-	target/64047, target/64159, target/64231, target/64408, target/64660,
-	target/64688, target/64851, target/64882, testsuite/64796
-- FSM jump threading fix (PR tree-optimization/64878)
-
-* Fri Jan 30 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.6
-- update from the trunk
-  - PRs ada/64349, bootstrap/64612, bootstrap/64754, c++/49508, c++/58597,
-	c++/63889, c++/64521, c++/64717, c/64709, c/64766, c/64778,
-	fortran/62044, fortran/63861, fortran/64230, fortran/64771, go/63565,
-	go/64510, go/64595, go/64738, ipa/60871, ipa/64139, ipa/64282,
-	ipa/64730, ipa/64776, ipa/64801, jit/64257, jit/64708, jit/64780,
-	libffi/64779, libffi/64799, libffi/64855, libfortran/64770,
-	libgomp/64635, libstdc++/64368, libstdc++/64798, libstdc++/64828,
-	lto/64837, middle-end/64421, middle-end/64764, middle-end/64805,
-	middle-end/64809, other/63504, rtl-optimization/61058, target/15184,
-	target/29366, target/49263, target/51244, target/52933, target/53987,
-	target/54236, target/59533, target/64345, target/64580, target/64617,
-	target/64659, target/64761, target/64795, target/64806,
-	testsuite/64712, tree-optimization/56273, tree-optimization/59124,
-	tree-optimization/64277, tree-optimization/64718,
-	tree-optimization/64746, tree-optimization/64807,
-	tree-optimization/64829, tree-optimization/64844,
-	tree-optimization/64853, ubsan/64741
-- fix up #pragma GCC target handling on x86 (PR target/61925)
-- fix up VTA compile time hog during expansion (PR debug/64817)
-- __LINE__ handling fix (PR preprocessor/64803)
-
-* Fri Jan 23 2015 Jakub Jelinek <jakub@redhat.com> 5.0.0-0.5
+* Wed Jan 27 2016 Jakub Jelinek <jakub@redhat.com> 6.0.0-0.5
 - new package

diff --git a/gcc5-aarch64-async-unw-tables.patch b/gcc5-aarch64-async-unw-tables.patch
deleted file mode 100644
index feec149..0000000
--- a/gcc5-aarch64-async-unw-tables.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-2014-04-07  Richard Henderson  <rth@redhat.com>
-
-	* common/config/aarch64/aarch64-common.c (TARGET_OPTION_INIT_STRUCT):
-	Define.
-	(aarch64_option_init_struct): New function.
-
---- gcc/common/config/aarch64/aarch64-common.c
-+++ gcc/common/config/aarch64/aarch64-common.c
-@@ -39,6 +39,9 @@
- #undef	TARGET_OPTION_OPTIMIZATION_TABLE
- #define TARGET_OPTION_OPTIMIZATION_TABLE aarch_option_optimization_table
- 
-+#undef TARGET_OPTION_INIT_STRUCT
-+#define TARGET_OPTION_INIT_STRUCT aarch64_option_init_struct
-+
- /* Set default optimization options.  */
- static const struct default_options aarch_option_optimization_table[] =
-   {
-@@ -47,6 +50,16 @@ static const struct default_options aarch_option_optimization_table[] =
-     { OPT_LEVELS_NONE, 0, NULL, 0 }
-   };
- 
-+/* Implement TARGET_OPTION_INIT_STRUCT.  */
-+
-+static void
-+aarch64_option_init_struct (struct gcc_options *opts)
-+{
-+  /* By default, always emit DWARF-2 unwind info.  This allows debugging
-+     without maintaining a stack frame back-chain.  */
-+  opts->x_flag_asynchronous_unwind_tables = 1;
-+}
-+
- /* Implement TARGET_HANDLE_OPTION.
-    This function handles the target specific options for CPU/target selection.
- 

diff --git a/gcc5-hack.patch b/gcc5-hack.patch
deleted file mode 100644
index 950ff63..0000000
--- a/gcc5-hack.patch
+++ /dev/null
@@ -1,159 +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; \
---- libcpp/macro.c.jj	2015-01-14 11:01:34.000000000 +0100
-+++ libcpp/macro.c	2015-01-14 14:22:19.286949884 +0100
-@@ -2947,8 +2947,6 @@ create_iso_definition (cpp_reader *pfile
-   cpp_token *token;
-   const cpp_token *ctoken;
-   bool following_paste_op = false;
--  const char *paste_op_error_msg =
--    N_("'##' cannot appear at either end of a macro expansion");
-   unsigned int num_extra_tokens = 0;
- 
-   /* Get the first token of the expansion (or the '(' of a
-@@ -3059,7 +3057,8 @@ create_iso_definition (cpp_reader *pfile
- 	     function-like macros, but not at the end.  */
- 	  if (following_paste_op)
- 	    {
--	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
-+	      cpp_error (pfile, CPP_DL_ERROR,
-+			 "'##' cannot appear at either end of a macro expansion");
- 	      return false;
- 	    }
- 	  break;
-@@ -3072,7 +3071,8 @@ create_iso_definition (cpp_reader *pfile
- 	     function-like macros, but not at the beginning.  */
- 	  if (macro->count == 1)
- 	    {
--	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
-+	      cpp_error (pfile, CPP_DL_ERROR,
-+			 "'##' cannot appear at either end of a macro expansion");
- 	      return false;
- 	    }
- 
---- libcpp/expr.c.jj	2015-01-14 11:01:34.000000000 +0100
-+++ libcpp/expr.c	2015-01-14 14:35:52.851002344 +0100
-@@ -672,16 +672,17 @@ cpp_classify_number (cpp_reader *pfile,
-       if ((result & CPP_N_WIDTH) == CPP_N_LARGE
- 	  && CPP_OPTION (pfile, cpp_warn_long_long))
-         {
--          const char *message = CPP_OPTION (pfile, cplusplus) 
--				? N_("use of C++11 long long integer constant")
--		                : N_("use of C99 long long integer constant");
--
- 	  if (CPP_OPTION (pfile, c99))
-             cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
--				   0, message);
-+				   0, CPP_OPTION (pfile, cplusplus)
-+				      ? N_("use of C++11 long long integer constant")
-+				      : N_("use of C99 long long integer constant"));
-           else
-             cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
--				      virtual_location, 0, message);
-+				      virtual_location, 0,
-+				      CPP_OPTION (pfile, cplusplus)
-+				      ? N_("use of C++11 long long integer constant")
-+				      : N_("use of C99 long long integer constant"));
-         }
- 
-       result |= CPP_N_INTEGER;

diff --git a/gcc5-i386-libgomp.patch b/gcc5-i386-libgomp.patch
deleted file mode 100644
index 520561e..0000000
--- a/gcc5-i386-libgomp.patch
+++ /dev/null
@@ -1,11 +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
-@@ -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
- 	;;

diff --git a/gcc5-isl-dl.patch b/gcc5-isl-dl.patch
deleted file mode 100644
index 1322cd2..0000000
--- a/gcc5-isl-dl.patch
+++ /dev/null
@@ -1,572 +0,0 @@
---- gcc/Makefile.in.jj	2015-06-06 10:00:25.000000000 +0200
-+++ gcc/Makefile.in	2015-11-04 14:56:02.643536437 +0100
-@@ -1013,7 +1013,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
- # and the system's installed libraries.
- LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
- 	$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
--BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
-+BACKENDLIBS = $(if $(ISLLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
- 	$(ZLIB)
- # Any system libraries needed just for GNAT.
- SYSLIBS = @GNAT_LIBEXC@
-@@ -2058,6 +2058,15 @@ $(out_object_file): $(out_file)
- $(common_out_object_file): $(common_out_file)
- 	$(COMPILE) $<
- 	$(POSTCOMPILE)
-+
-+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	2015-11-04 14:15:36.000000000 +0100
-+++ gcc/graphite-poly.h	2015-11-04 14:59:46.066375844 +0100
-@@ -22,6 +22,489 @@ 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 <isl/ast.h>
-+#include <isl/ast_build.h>
-+#include <isl/val_gmp.h>
-+#include <isl/constraint.h>
-+#include <dlfcn.h>
-+#ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
-+#define DYNSYM_ZERO_DISTANCE DYNSYM (isl_band_member_is_coincident)
-+#else
-+#define DYNSYM_ZERO_DISTANCE DYNSYM (isl_band_member_is_zero_distance)
-+#endif
-+#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
-+#define DYNSYM_SCHEDULE_FUSE DYNSYM (isl_options_set_schedule_serialize_sccs)
-+#else
-+#define DYNSYM_SCHEDULE_FUSE DYNSYM (isl_options_set_schedule_fuse)
-+#endif
-+
-+#define DYNSYMS \
-+  DYNSYM (isl_aff_add_coefficient_si); \
-+  DYNSYM (isl_aff_free); \
-+  DYNSYM (isl_aff_get_space); \
-+  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_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_si); \
-+  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_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_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_get_space); \
-+  DYNSYM (isl_set_get_tuple_id); \
-+  DYNSYM (isl_set_intersect); \
-+  DYNSYM (isl_set_is_empty); \
-+  DYNSYM (isl_set_n_dim); \
-+  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 (isl_aff_add_constant_val); \
-+  DYNSYM (isl_aff_get_coefficient_val); \
-+  DYNSYM (isl_aff_get_ctx); \
-+  DYNSYM (isl_aff_mod_val); \
-+  DYNSYM (isl_ast_build_ast_from_schedule); \
-+  DYNSYM (isl_ast_build_free); \
-+  DYNSYM (isl_ast_build_from_context); \
-+  DYNSYM (isl_ast_build_get_ctx); \
-+  DYNSYM (isl_ast_build_get_schedule); \
-+  DYNSYM (isl_ast_build_get_schedule_space); \
-+  DYNSYM (isl_ast_build_set_before_each_for); \
-+  DYNSYM (isl_ast_build_set_options); \
-+  DYNSYM (isl_ast_expr_free); \
-+  DYNSYM (isl_ast_expr_from_val); \
-+  DYNSYM (isl_ast_expr_get_ctx); \
-+  DYNSYM (isl_ast_expr_get_id); \
-+  DYNSYM (isl_ast_expr_get_op_arg); \
-+  DYNSYM (isl_ast_expr_get_op_n_arg); \
-+  DYNSYM (isl_ast_expr_get_op_type); \
-+  DYNSYM (isl_ast_expr_get_type); \
-+  DYNSYM (isl_ast_expr_get_val); \
-+  DYNSYM (isl_ast_expr_sub); \
-+  DYNSYM (isl_ast_node_block_get_children); \
-+  DYNSYM (isl_ast_node_for_get_body); \
-+  DYNSYM (isl_ast_node_for_get_cond); \
-+  DYNSYM (isl_ast_node_for_get_inc); \
-+  DYNSYM (isl_ast_node_for_get_init); \
-+  DYNSYM (isl_ast_node_for_get_iterator); \
-+  DYNSYM (isl_ast_node_free); \
-+  DYNSYM (isl_ast_node_get_annotation); \
-+  DYNSYM (isl_ast_node_get_type); \
-+  DYNSYM (isl_ast_node_if_get_cond); \
-+  DYNSYM (isl_ast_node_if_get_else); \
-+  DYNSYM (isl_ast_node_if_get_then); \
-+  DYNSYM (isl_ast_node_list_free); \
-+  DYNSYM (isl_ast_node_list_get_ast_node); \
-+  DYNSYM (isl_ast_node_list_n_ast_node); \
-+  DYNSYM (isl_ast_node_user_get_expr); \
-+  DYNSYM (isl_constraint_set_coefficient_val); \
-+  DYNSYM (isl_constraint_set_constant_val); \
-+  DYNSYM (isl_id_get_user); \
-+  DYNSYM (isl_local_space_get_ctx); \
-+  DYNSYM (isl_map_fix_val); \
-+  DYNSYM (isl_options_set_ast_build_atomic_upper_bound); \
-+  DYNSYM (isl_printer_print_ast_node); \
-+  DYNSYM (isl_printer_print_str); \
-+  DYNSYM (isl_printer_set_output_format); \
-+  DYNSYM (isl_pw_aff_mod_val); \
-+  DYNSYM (isl_schedule_constraints_compute_schedule); \
-+  DYNSYM (isl_schedule_constraints_on_domain); \
-+  DYNSYM (isl_schedule_constraints_set_coincidence); \
-+  DYNSYM (isl_schedule_constraints_set_proximity); \
-+  DYNSYM (isl_schedule_constraints_set_validity); \
-+  DYNSYM (isl_set_get_dim_id); \
-+  DYNSYM (isl_set_max_val); \
-+  DYNSYM (isl_set_min_val); \
-+  DYNSYM (isl_set_params); \
-+  DYNSYM (isl_space_align_params); \
-+  DYNSYM (isl_space_map_from_domain_and_range); \
-+  DYNSYM (isl_space_set_tuple_name); \
-+  DYNSYM (isl_space_wrap); \
-+  DYNSYM (isl_union_map_from_domain_and_range); \
-+  DYNSYM (isl_union_map_range); \
-+  DYNSYM (isl_union_set_union); \
-+  DYNSYM (isl_union_set_universe); \
-+  DYNSYM (isl_val_2exp); \
-+  DYNSYM (isl_val_add_ui); \
-+  DYNSYM (isl_val_copy); \
-+  DYNSYM (isl_val_free); \
-+  DYNSYM (isl_val_get_num_gmp); \
-+  DYNSYM (isl_val_int_from_gmp); \
-+  DYNSYM (isl_val_int_from_si); \
-+  DYNSYM (isl_val_int_from_ui); \
-+  DYNSYM (isl_val_mul); \
-+  DYNSYM (isl_val_neg); \
-+  DYNSYM (isl_val_sub);
-+
-+extern struct isl_pointers_s__
-+{
-+  bool inited;
-+  void *h;
-+#define DYNSYM(x) __typeof (x) *p_##x
-+  DYNSYMS
-+#undef DYNSYM
-+} isl_pointers__;
-+
-+#define isl_aff_add_coefficient_si (*isl_pointers__.p_isl_aff_add_coefficient_si)
-+#define isl_aff_free (*isl_pointers__.p_isl_aff_free)
-+#define isl_aff_get_space (*isl_pointers__.p_isl_aff_get_space)
-+#define isl_aff_set_coefficient_si (*isl_pointers__.p_isl_aff_set_coefficient_si)
-+#define isl_aff_set_constant_si (*isl_pointers__.p_isl_aff_set_constant_si)
-+#define isl_aff_zero_on_domain (*isl_pointers__.p_isl_aff_zero_on_domain)
-+#define isl_band_free (*isl_pointers__.p_isl_band_free)
-+#define isl_band_get_children (*isl_pointers__.p_isl_band_get_children)
-+#define isl_band_get_partial_schedule (*isl_pointers__.p_isl_band_get_partial_schedule)
-+#define isl_band_has_children (*isl_pointers__.p_isl_band_has_children)
-+#define isl_band_list_free (*isl_pointers__.p_isl_band_list_free)
-+#define isl_band_list_get_band (*isl_pointers__.p_isl_band_list_get_band)
-+#define isl_band_list_get_ctx (*isl_pointers__.p_isl_band_list_get_ctx)
-+#define isl_band_list_n_band (*isl_pointers__.p_isl_band_list_n_band)
-+#ifdef HAVE_ISL_SCHED_CONSTRAINTS_COMPUTE_SCHEDULE
-+#define isl_band_member_is_coincident (*isl_pointers__.p_isl_band_member_is_coincident)
-+#else
-+#define isl_band_member_is_zero_distance (*isl_pointers__.p_isl_band_member_is_zero_distance)
-+#endif
-+#define isl_band_n_member (*isl_pointers__.p_isl_band_n_member)
-+#define isl_basic_map_add_constraint (*isl_pointers__.p_isl_basic_map_add_constraint)
-+#define isl_basic_map_project_out (*isl_pointers__.p_isl_basic_map_project_out)
-+#define isl_basic_map_universe (*isl_pointers__.p_isl_basic_map_universe)
-+#define isl_constraint_set_coefficient_si (*isl_pointers__.p_isl_constraint_set_coefficient_si)
-+#define isl_constraint_set_constant_si (*isl_pointers__.p_isl_constraint_set_constant_si)
-+#define isl_ctx_alloc (*isl_pointers__.p_isl_ctx_alloc)
-+#define isl_ctx_free (*isl_pointers__.p_isl_ctx_free)
-+#define isl_equality_alloc (*isl_pointers__.p_isl_equality_alloc)
-+#define isl_id_alloc (*isl_pointers__.p_isl_id_alloc)
-+#define isl_id_copy (*isl_pointers__.p_isl_id_copy)
-+#define isl_id_free (*isl_pointers__.p_isl_id_free)
-+#define isl_inequality_alloc (*isl_pointers__.p_isl_inequality_alloc)
-+#define isl_local_space_copy (*isl_pointers__.p_isl_local_space_copy)
-+#define isl_local_space_free (*isl_pointers__.p_isl_local_space_free)
-+#define isl_local_space_from_space (*isl_pointers__.p_isl_local_space_from_space)
-+#define isl_local_space_range (*isl_pointers__.p_isl_local_space_range)
-+#define isl_map_add_constraint (*isl_pointers__.p_isl_map_add_constraint)
-+#define isl_map_add_dims (*isl_pointers__.p_isl_map_add_dims)
-+#define isl_map_align_params (*isl_pointers__.p_isl_map_align_params)
-+#define isl_map_apply_range (*isl_pointers__.p_isl_map_apply_range)
-+#define isl_map_copy (*isl_pointers__.p_isl_map_copy)
-+#define isl_map_dim (*isl_pointers__.p_isl_map_dim)
-+#define isl_map_dump (*isl_pointers__.p_isl_map_dump)
-+#define isl_map_equate (*isl_pointers__.p_isl_map_equate)
-+#define isl_map_fix_si (*isl_pointers__.p_isl_map_fix_si)
-+#define isl_map_flat_product (*isl_pointers__.p_isl_map_flat_product)
-+#define isl_map_flat_range_product (*isl_pointers__.p_isl_map_flat_range_product)
-+#define isl_map_free (*isl_pointers__.p_isl_map_free)
-+#define isl_map_from_basic_map (*isl_pointers__.p_isl_map_from_basic_map)
-+#define isl_map_from_pw_aff (*isl_pointers__.p_isl_map_from_pw_aff)
-+#define isl_map_from_union_map (*isl_pointers__.p_isl_map_from_union_map)
-+#define isl_map_get_ctx (*isl_pointers__.p_isl_map_get_ctx)
-+#define isl_map_get_space (*isl_pointers__.p_isl_map_get_space)
-+#define isl_map_get_tuple_id (*isl_pointers__.p_isl_map_get_tuple_id)
-+#define isl_map_insert_dims (*isl_pointers__.p_isl_map_insert_dims)
-+#define isl_map_intersect (*isl_pointers__.p_isl_map_intersect)
-+#define isl_map_intersect_domain (*isl_pointers__.p_isl_map_intersect_domain)
-+#define isl_map_intersect_range (*isl_pointers__.p_isl_map_intersect_range)
-+#define isl_map_is_empty (*isl_pointers__.p_isl_map_is_empty)
-+#define isl_map_lex_ge (*isl_pointers__.p_isl_map_lex_ge)
-+#define isl_map_lex_le (*isl_pointers__.p_isl_map_lex_le)
-+#define isl_map_n_out (*isl_pointers__.p_isl_map_n_out)
-+#define isl_map_range (*isl_pointers__.p_isl_map_range)
-+#define isl_map_set_tuple_id (*isl_pointers__.p_isl_map_set_tuple_id)
-+#define isl_map_universe (*isl_pointers__.p_isl_map_universe)
-+#define isl_options_set_on_error (*isl_pointers__.p_isl_options_set_on_error)
-+#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
-+#define isl_options_set_schedule_serialize_sccs (*isl_pointers__.p_isl_options_set_schedule_serialize_sccs)
-+#else
-+#define isl_options_set_schedule_fuse (*isl_pointers__.p_isl_options_set_schedule_fuse)
-+#endif
-+#define isl_options_set_schedule_max_constant_term (*isl_pointers__.p_isl_options_set_schedule_max_constant_term)
-+#define isl_options_set_schedule_maximize_band_depth (*isl_pointers__.p_isl_options_set_schedule_maximize_band_depth)
-+#define isl_printer_free (*isl_pointers__.p_isl_printer_free)
-+#define isl_printer_print_aff (*isl_pointers__.p_isl_printer_print_aff)
-+#define isl_printer_print_constraint (*isl_pointers__.p_isl_printer_print_constraint)
-+#define isl_printer_print_map (*isl_pointers__.p_isl_printer_print_map)
-+#define isl_printer_print_set (*isl_pointers__.p_isl_printer_print_set)
-+#define isl_printer_to_file (*isl_pointers__.p_isl_printer_to_file)
-+#define isl_pw_aff_add (*isl_pointers__.p_isl_pw_aff_add)
-+#define isl_pw_aff_alloc (*isl_pointers__.p_isl_pw_aff_alloc)
-+#define isl_pw_aff_copy (*isl_pointers__.p_isl_pw_aff_copy)
-+#define isl_pw_aff_eq_set (*isl_pointers__.p_isl_pw_aff_eq_set)
-+#define isl_pw_aff_free (*isl_pointers__.p_isl_pw_aff_free)
-+#define isl_pw_aff_from_aff (*isl_pointers__.p_isl_pw_aff_from_aff)
-+#define isl_pw_aff_ge_set (*isl_pointers__.p_isl_pw_aff_ge_set)
-+#define isl_pw_aff_gt_set (*isl_pointers__.p_isl_pw_aff_gt_set)
-+#define isl_pw_aff_is_cst (*isl_pointers__.p_isl_pw_aff_is_cst)
-+#define isl_pw_aff_le_set (*isl_pointers__.p_isl_pw_aff_le_set)
-+#define isl_pw_aff_lt_set (*isl_pointers__.p_isl_pw_aff_lt_set)
-+#define isl_pw_aff_mul (*isl_pointers__.p_isl_pw_aff_mul)
-+#define isl_pw_aff_ne_set (*isl_pointers__.p_isl_pw_aff_ne_set)
-+#define isl_pw_aff_nonneg_set (*isl_pointers__.p_isl_pw_aff_nonneg_set)
-+#define isl_pw_aff_set_tuple_id (*isl_pointers__.p_isl_pw_aff_set_tuple_id)
-+#define isl_pw_aff_sub (*isl_pointers__.p_isl_pw_aff_sub)
-+#define isl_pw_aff_zero_set (*isl_pointers__.p_isl_pw_aff_zero_set)
-+#define isl_schedule_free (*isl_pointers__.p_isl_schedule_free)
-+#define isl_schedule_get_band_forest (*isl_pointers__.p_isl_schedule_get_band_forest)
-+#define isl_set_add_constraint (*isl_pointers__.p_isl_set_add_constraint)
-+#define isl_set_add_dims (*isl_pointers__.p_isl_set_add_dims)
-+#define isl_set_apply (*isl_pointers__.p_isl_set_apply)
-+#define isl_set_coalesce (*isl_pointers__.p_isl_set_coalesce)
-+#define isl_set_copy (*isl_pointers__.p_isl_set_copy)
-+#define isl_set_dim (*isl_pointers__.p_isl_set_dim)
-+#define isl_set_fix_si (*isl_pointers__.p_isl_set_fix_si)
-+#define isl_set_free (*isl_pointers__.p_isl_set_free)
-+#define isl_set_get_space (*isl_pointers__.p_isl_set_get_space)
-+#define isl_set_get_tuple_id (*isl_pointers__.p_isl_set_get_tuple_id)
-+#define isl_set_intersect (*isl_pointers__.p_isl_set_intersect)
-+#define isl_set_is_empty (*isl_pointers__.p_isl_set_is_empty)
-+#define isl_set_n_dim (*isl_pointers__.p_isl_set_n_dim)
-+#define isl_set_nat_universe (*isl_pointers__.p_isl_set_nat_universe)
-+#define isl_set_project_out (*isl_pointers__.p_isl_set_project_out)
-+#define isl_set_set_tuple_id (*isl_pointers__.p_isl_set_set_tuple_id)
-+#define isl_set_universe (*isl_pointers__.p_isl_set_universe)
-+#define isl_space_add_dims (*isl_pointers__.p_isl_space_add_dims)
-+#define isl_space_alloc (*isl_pointers__.p_isl_space_alloc)
-+#define isl_space_copy (*isl_pointers__.p_isl_space_copy)
-+#define isl_space_dim (*isl_pointers__.p_isl_space_dim)
-+#define isl_space_domain (*isl_pointers__.p_isl_space_domain)
-+#define isl_space_find_dim_by_id (*isl_pointers__.p_isl_space_find_dim_by_id)
-+#define isl_space_free (*isl_pointers__.p_isl_space_free)
-+#define isl_space_from_domain (*isl_pointers__.p_isl_space_from_domain)
-+#define isl_space_get_tuple_id (*isl_pointers__.p_isl_space_get_tuple_id)
-+#define isl_space_params_alloc (*isl_pointers__.p_isl_space_params_alloc)
-+#define isl_space_range (*isl_pointers__.p_isl_space_range)
-+#define isl_space_set_alloc (*isl_pointers__.p_isl_space_set_alloc)
-+#define isl_space_set_dim_id (*isl_pointers__.p_isl_space_set_dim_id)
-+#define isl_space_set_tuple_id (*isl_pointers__.p_isl_space_set_tuple_id)
-+#define isl_union_map_add_map (*isl_pointers__.p_isl_union_map_add_map)
-+#define isl_union_map_align_params (*isl_pointers__.p_isl_union_map_align_params)
-+#define isl_union_map_apply_domain (*isl_pointers__.p_isl_union_map_apply_domain)
-+#define isl_union_map_apply_range (*isl_pointers__.p_isl_union_map_apply_range)
-+#define isl_union_map_compute_flow (*isl_pointers__.p_isl_union_map_compute_flow)
-+#define isl_union_map_copy (*isl_pointers__.p_isl_union_map_copy)
-+#define isl_union_map_empty (*isl_pointers__.p_isl_union_map_empty)
-+#define isl_union_map_flat_range_product (*isl_pointers__.p_isl_union_map_flat_range_product)
-+#define isl_union_map_foreach_map (*isl_pointers__.p_isl_union_map_foreach_map)
-+#define isl_union_map_free (*isl_pointers__.p_isl_union_map_free)
-+#define isl_union_map_from_map (*isl_pointers__.p_isl_union_map_from_map)
-+#define isl_union_map_get_ctx (*isl_pointers__.p_isl_union_map_get_ctx)
-+#define isl_union_map_get_space (*isl_pointers__.p_isl_union_map_get_space)
-+#define isl_union_map_gist_domain (*isl_pointers__.p_isl_union_map_gist_domain)
-+#define isl_union_map_gist_range (*isl_pointers__.p_isl_union_map_gist_range)
-+#define isl_union_map_intersect_domain (*isl_pointers__.p_isl_union_map_intersect_domain)
-+#define isl_union_map_is_empty (*isl_pointers__.p_isl_union_map_is_empty)
-+#define isl_union_map_subtract (*isl_pointers__.p_isl_union_map_subtract)
-+#define isl_union_map_union (*isl_pointers__.p_isl_union_map_union)
-+#define isl_union_set_add_set (*isl_pointers__.p_isl_union_set_add_set)
-+#define isl_union_set_compute_schedule (*isl_pointers__.p_isl_union_set_compute_schedule)
-+#define isl_union_set_copy (*isl_pointers__.p_isl_union_set_copy)
-+#define isl_union_set_empty (*isl_pointers__.p_isl_union_set_empty)
-+#define isl_union_set_from_set (*isl_pointers__.p_isl_union_set_from_set)
-+#define isl_aff_add_constant_val (*isl_pointers__.p_isl_aff_add_constant_val)
-+#define isl_aff_get_coefficient_val (*isl_pointers__.p_isl_aff_get_coefficient_val)
-+#define isl_aff_get_ctx (*isl_pointers__.p_isl_aff_get_ctx)
-+#define isl_aff_mod_val (*isl_pointers__.p_isl_aff_mod_val)
-+#define isl_ast_build_ast_from_schedule (*isl_pointers__.p_isl_ast_build_ast_from_schedule)
-+#define isl_ast_build_free (*isl_pointers__.p_isl_ast_build_free)
-+#define isl_ast_build_from_context (*isl_pointers__.p_isl_ast_build_from_context)
-+#define isl_ast_build_get_ctx (*isl_pointers__.p_isl_ast_build_get_ctx)
-+#define isl_ast_build_get_schedule (*isl_pointers__.p_isl_ast_build_get_schedule)
-+#define isl_ast_build_get_schedule_space (*isl_pointers__.p_isl_ast_build_get_schedule_space)
-+#define isl_ast_build_set_before_each_for (*isl_pointers__.p_isl_ast_build_set_before_each_for)
-+#define isl_ast_build_set_options (*isl_pointers__.p_isl_ast_build_set_options)
-+#define isl_ast_expr_free (*isl_pointers__.p_isl_ast_expr_free)
-+#define isl_ast_expr_from_val (*isl_pointers__.p_isl_ast_expr_from_val)
-+#define isl_ast_expr_get_ctx (*isl_pointers__.p_isl_ast_expr_get_ctx)
-+#define isl_ast_expr_get_id (*isl_pointers__.p_isl_ast_expr_get_id)
-+#define isl_ast_expr_get_op_arg (*isl_pointers__.p_isl_ast_expr_get_op_arg)
-+#define isl_ast_expr_get_op_n_arg (*isl_pointers__.p_isl_ast_expr_get_op_n_arg)
-+#define isl_ast_expr_get_op_type (*isl_pointers__.p_isl_ast_expr_get_op_type)
-+#define isl_ast_expr_get_type (*isl_pointers__.p_isl_ast_expr_get_type)
-+#define isl_ast_expr_get_val (*isl_pointers__.p_isl_ast_expr_get_val)
-+#define isl_ast_expr_sub (*isl_pointers__.p_isl_ast_expr_sub)
-+#define isl_ast_node_block_get_children (*isl_pointers__.p_isl_ast_node_block_get_children)
-+#define isl_ast_node_for_get_body (*isl_pointers__.p_isl_ast_node_for_get_body)
-+#define isl_ast_node_for_get_cond (*isl_pointers__.p_isl_ast_node_for_get_cond)
-+#define isl_ast_node_for_get_inc (*isl_pointers__.p_isl_ast_node_for_get_inc)
-+#define isl_ast_node_for_get_init (*isl_pointers__.p_isl_ast_node_for_get_init)
-+#define isl_ast_node_for_get_iterator (*isl_pointers__.p_isl_ast_node_for_get_iterator)
-+#define isl_ast_node_free (*isl_pointers__.p_isl_ast_node_free)
-+#define isl_ast_node_get_annotation (*isl_pointers__.p_isl_ast_node_get_annotation)
-+#define isl_ast_node_get_type (*isl_pointers__.p_isl_ast_node_get_type)
-+#define isl_ast_node_if_get_cond (*isl_pointers__.p_isl_ast_node_if_get_cond)
-+#define isl_ast_node_if_get_else (*isl_pointers__.p_isl_ast_node_if_get_else)
-+#define isl_ast_node_if_get_then (*isl_pointers__.p_isl_ast_node_if_get_then)
-+#define isl_ast_node_list_free (*isl_pointers__.p_isl_ast_node_list_free)
-+#define isl_ast_node_list_get_ast_node (*isl_pointers__.p_isl_ast_node_list_get_ast_node)
-+#define isl_ast_node_list_n_ast_node (*isl_pointers__.p_isl_ast_node_list_n_ast_node)
-+#define isl_ast_node_user_get_expr (*isl_pointers__.p_isl_ast_node_user_get_expr)
-+#define isl_constraint_set_coefficient_val (*isl_pointers__.p_isl_constraint_set_coefficient_val)
-+#define isl_constraint_set_constant_val (*isl_pointers__.p_isl_constraint_set_constant_val)
-+#define isl_id_get_user (*isl_pointers__.p_isl_id_get_user)
-+#define isl_local_space_get_ctx (*isl_pointers__.p_isl_local_space_get_ctx)
-+#define isl_map_fix_val (*isl_pointers__.p_isl_map_fix_val)
-+#define isl_options_set_ast_build_atomic_upper_bound (*isl_pointers__.p_isl_options_set_ast_build_atomic_upper_bound)
-+#define isl_printer_print_ast_node (*isl_pointers__.p_isl_printer_print_ast_node)
-+#define isl_printer_print_str (*isl_pointers__.p_isl_printer_print_str)
-+#define isl_printer_set_output_format (*isl_pointers__.p_isl_printer_set_output_format)
-+#define isl_pw_aff_mod_val (*isl_pointers__.p_isl_pw_aff_mod_val)
-+#define isl_schedule_constraints_compute_schedule (*isl_pointers__.p_isl_schedule_constraints_compute_schedule)
-+#define isl_schedule_constraints_on_domain (*isl_pointers__.p_isl_schedule_constraints_on_domain)
-+#define isl_schedule_constraints_set_coincidence (*isl_pointers__.p_isl_schedule_constraints_set_coincidence)
-+#define isl_schedule_constraints_set_proximity (*isl_pointers__.p_isl_schedule_constraints_set_proximity)
-+#define isl_schedule_constraints_set_validity (*isl_pointers__.p_isl_schedule_constraints_set_validity)
-+#define isl_set_get_dim_id (*isl_pointers__.p_isl_set_get_dim_id)
-+#define isl_set_max_val (*isl_pointers__.p_isl_set_max_val)
-+#define isl_set_min_val (*isl_pointers__.p_isl_set_min_val)
-+#define isl_set_params (*isl_pointers__.p_isl_set_params)
-+#define isl_space_align_params (*isl_pointers__.p_isl_space_align_params)
-+#define isl_space_map_from_domain_and_range (*isl_pointers__.p_isl_space_map_from_domain_and_range)
-+#define isl_space_set_tuple_name (*isl_pointers__.p_isl_space_set_tuple_name)
-+#define isl_space_wrap (*isl_pointers__.p_isl_space_wrap)
-+#define isl_union_map_from_domain_and_range (*isl_pointers__.p_isl_union_map_from_domain_and_range)
-+#define isl_union_map_range (*isl_pointers__.p_isl_union_map_range)
-+#define isl_union_set_union (*isl_pointers__.p_isl_union_set_union)
-+#define isl_union_set_universe (*isl_pointers__.p_isl_union_set_universe)
-+#define isl_val_2exp (*isl_pointers__.p_isl_val_2exp)
-+#define isl_val_add_ui (*isl_pointers__.p_isl_val_add_ui)
-+#define isl_val_copy (*isl_pointers__.p_isl_val_copy)
-+#define isl_val_free (*isl_pointers__.p_isl_val_free)
-+#define isl_val_get_num_gmp (*isl_pointers__.p_isl_val_get_num_gmp)
-+#define isl_val_int_from_gmp (*isl_pointers__.p_isl_val_int_from_gmp)
-+#define isl_val_int_from_si (*isl_pointers__.p_isl_val_int_from_si)
-+#define isl_val_int_from_ui (*isl_pointers__.p_isl_val_int_from_ui)
-+#define isl_val_mul (*isl_pointers__.p_isl_val_mul)
-+#define isl_val_neg (*isl_pointers__.p_isl_val_neg)
-+#define isl_val_sub (*isl_pointers__.p_isl_val_sub)
-+
- #ifndef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
- # define isl_stat int
- # define isl_stat_ok 0
---- gcc/graphite.c.jj	2015-11-04 14:15:32.000000000 +0100
-+++ gcc/graphite.c	2015-11-04 14:56:02.645536409 +0100
-@@ -91,6 +91,34 @@ along with GCC; see the file COPYING3.
- #include "graphite-isl-ast-to-gimple.h"
- #include "graphite-sese-to-poly.h"
- 
-+__typeof (isl_pointers__) isl_pointers__;
-+
-+static bool
-+init_isl_pointers (void)
-+{
-+  void *h;
-+
-+  if (isl_pointers__.inited)
-+    return isl_pointers__.h != NULL;
-+  h = dlopen ("libisl.so.13", RTLD_LAZY);
-+  isl_pointers__.h = h;
-+  if (h == NULL)
-+    return false;
-+#define DYNSYM(x) \
-+  do \
-+    { \
-+      union { __typeof (isl_pointers__.p_##x) p; void *q; } u; \
-+      u.q = dlsym (h, #x); \
-+      if (u.q == NULL) \
-+	return false; \
-+      isl_pointers__.p_##x = u.p; \
-+    } \
-+  while (0)
-+  DYNSYMS
-+#undef DYNSYM
-+  return true;
-+}
-+
- /* Print global statistics to FILE.  */
- 
- static void
-@@ -286,6 +314,15 @@ graphite_transform_loops (void)
-   if (parallelized_function_p (cfun->decl))
-     return;
- 
-+  if (number_of_loops (cfun) <= 1)
-+    return;
-+
-+  if (!init_isl_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))

diff --git a/gcc5-java-nomulti.patch b/gcc5-java-nomulti.patch
deleted file mode 100644
index 17334aa..0000000
--- a/gcc5-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/gcc5-libgo-p224.patch b/gcc5-libgo-p224.patch
deleted file mode 100644
index 43509b1..0000000
--- a/gcc5-libgo-p224.patch
+++ /dev/null
@@ -1,1093 +0,0 @@
---- libgo/Makefile.am.jj	2014-01-08 13:53:06.000000000 +0100
-+++ libgo/Makefile.am	2014-03-05 15:20:09.938466093 +0100
-@@ -1133,7 +1133,6 @@ go_crypto_ecdsa_files = \
- 	go/crypto/ecdsa/ecdsa.go
- go_crypto_elliptic_files = \
- 	go/crypto/elliptic/elliptic.go \
--	go/crypto/elliptic/p224.go \
- 	go/crypto/elliptic/p256.go
- go_crypto_hmac_files = \
- 	go/crypto/hmac/hmac.go
---- libgo/Makefile.in.jj	2014-01-08 13:53:06.000000000 +0100
-+++ libgo/Makefile.in	2014-03-05 15:20:20.372465471 +0100
-@@ -1291,7 +1291,6 @@ go_crypto_ecdsa_files = \
- 
- go_crypto_elliptic_files = \
- 	go/crypto/elliptic/elliptic.go \
--	go/crypto/elliptic/p224.go \
- 	go/crypto/elliptic/p256.go
- 
- go_crypto_hmac_files = \
---- libgo/go/crypto/elliptic/elliptic.go.jj	2013-11-07 11:59:09.000000000 +0100
-+++ libgo/go/crypto/elliptic/elliptic.go	2014-03-05 15:21:04.186462859 +0100
-@@ -326,7 +326,6 @@ var p384 *CurveParams
- var p521 *CurveParams
- 
- func initAll() {
--	initP224()
- 	initP256()
- 	initP384()
- 	initP521()
---- libgo/go/crypto/elliptic/elliptic_test.go.jj	2013-11-07 11:59:09.000000000 +0100
-+++ libgo/go/crypto/elliptic/elliptic_test.go	2014-03-05 15:46:03.739373453 +0100
-@@ -5,26 +5,16 @@
- package elliptic
- 
- import (
--	"crypto/rand"
--	"encoding/hex"
--	"fmt"
- 	"math/big"
- 	"testing"
- )
- 
--func TestOnCurve(t *testing.T) {
--	p224 := P224()
--	if !p224.IsOnCurve(p224.Params().Gx, p224.Params().Gy) {
--		t.Errorf("FAIL")
--	}
--}
--
- type baseMultTest struct {
- 	k    string
- 	x, y string
- }
- 
--var p224BaseMultTests = []baseMultTest{
-+var p256BaseMultTests = []baseMultTest{
- 	{
- 		"1",
- 		"b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21",
-@@ -287,47 +277,12 @@ var p224BaseMultTests = []baseMultTest{
- 	},
- }
- 
--func TestBaseMult(t *testing.T) {
--	p224 := P224()
--	for i, e := range p224BaseMultTests {
--		k, ok := new(big.Int).SetString(e.k, 10)
--		if !ok {
--			t.Errorf("%d: bad value for k: %s", i, e.k)
--		}
--		x, y := p224.ScalarBaseMult(k.Bytes())
--		if fmt.Sprintf("%x", x) != e.x || fmt.Sprintf("%x", y) != e.y {
--			t.Errorf("%d: bad output for k=%s: got (%x, %x), want (%s, %s)", i, e.k, x, y, e.x, e.y)
--		}
--		if testing.Short() && i > 5 {
--			break
--		}
--	}
--}
--
--func TestGenericBaseMult(t *testing.T) {
--	// We use the P224 CurveParams directly in order to test the generic implementation.
--	p224 := P224().Params()
--	for i, e := range p224BaseMultTests {
--		k, ok := new(big.Int).SetString(e.k, 10)
--		if !ok {
--			t.Errorf("%d: bad value for k: %s", i, e.k)
--		}
--		x, y := p224.ScalarBaseMult(k.Bytes())
--		if fmt.Sprintf("%x", x) != e.x || fmt.Sprintf("%x", y) != e.y {
--			t.Errorf("%d: bad output for k=%s: got (%x, %x), want (%s, %s)", i, e.k, x, y, e.x, e.y)
--		}
--		if testing.Short() && i > 5 {
--			break
--		}
--	}
--}
--
- func TestP256BaseMult(t *testing.T) {
- 	p256 := P256()
- 	p256Generic := p256.Params()
- 
--	scalars := make([]*big.Int, 0, len(p224BaseMultTests)+1)
--	for _, e := range p224BaseMultTests {
-+	scalars := make([]*big.Int, 0, len(p256BaseMultTests)+1)
-+	for _, e := range p256BaseMultTests {
- 		k, _ := new(big.Int).SetString(e.k, 10)
- 		scalars = append(scalars, k)
- 	}
-@@ -352,7 +307,7 @@ func TestP256Mult(t *testing.T) {
- 	p256 := P256()
- 	p256Generic := p256.Params()
- 
--	for i, e := range p224BaseMultTests {
-+	for i, e := range p256BaseMultTests {
- 		x, _ := new(big.Int).SetString(e.x, 16)
- 		y, _ := new(big.Int).SetString(e.y, 16)
- 		k, _ := new(big.Int).SetString(e.k, 10)
-@@ -373,7 +328,6 @@ func TestInfinity(t *testing.T) {
- 		name  string
- 		curve Curve
- 	}{
--		{"p224", P224()},
- 		{"p256", P256()},
- 	}
- 
-@@ -406,53 +360,13 @@ func TestInfinity(t *testing.T) {
- 	}
- }
- 
--func BenchmarkBaseMult(b *testing.B) {
--	b.ResetTimer()
--	p224 := P224()
--	e := p224BaseMultTests[25]
--	k, _ := new(big.Int).SetString(e.k, 10)
--	b.StartTimer()
--	for i := 0; i < b.N; i++ {
--		p224.ScalarBaseMult(k.Bytes())
--	}
--}
--
- func BenchmarkBaseMultP256(b *testing.B) {
- 	b.ResetTimer()
- 	p256 := P256()
--	e := p224BaseMultTests[25]
-+	e := p256BaseMultTests[25]
- 	k, _ := new(big.Int).SetString(e.k, 10)
- 	b.StartTimer()
- 	for i := 0; i < b.N; i++ {
- 		p256.ScalarBaseMult(k.Bytes())
- 	}
- }
--
--func TestMarshal(t *testing.T) {
--	p224 := P224()
--	_, x, y, err := GenerateKey(p224, rand.Reader)
--	if err != nil {
--		t.Error(err)
--		return
--	}
--	serialized := Marshal(p224, x, y)
--	xx, yy := Unmarshal(p224, serialized)
--	if xx == nil {
--		t.Error("failed to unmarshal")
--		return
--	}
--	if xx.Cmp(x) != 0 || yy.Cmp(y) != 0 {
--		t.Error("unmarshal returned different values")
--		return
--	}
--}
--
--func TestP224Overflow(t *testing.T) {
--	// This tests for a specific bug in the P224 implementation.
--	p224 := P224()
--	pointData, _ := hex.DecodeString("049B535B45FB0A2072398A6831834624C7E32CCFD5A4B933BCEAF77F1DD945E08BBE5178F5EDF5E733388F196D2A631D2E075BB16CBFEEA15B")
--	x, y := Unmarshal(p224, pointData)
--	if !p224.IsOnCurve(x, y) {
--		t.Error("P224 failed to validate a correct point")
--	}
--}
---- libgo/go/crypto/ecdsa/ecdsa_test.go.jj	2012-11-15 18:26:56.000000000 +0100
-+++ libgo/go/crypto/ecdsa/ecdsa_test.go	2014-03-05 15:26:38.461442929 +0100
-@@ -33,7 +33,6 @@ func testKeyGeneration(t *testing.T, c e
- }
- 
- func TestKeyGeneration(t *testing.T) {
--	testKeyGeneration(t, elliptic.P224(), "p224")
- 	if testing.Short() {
- 		return
- 	}
-@@ -63,7 +62,6 @@ func testSignAndVerify(t *testing.T, c e
- }
- 
- func TestSignAndVerify(t *testing.T) {
--	testSignAndVerify(t, elliptic.P224(), "p224")
- 	if testing.Short() {
- 		return
- 	}
-@@ -129,8 +127,6 @@ func TestVectors(t *testing.T) {
- 			parts := strings.SplitN(line, ",", 2)
- 
- 			switch parts[0] {
--			case "P-224":
--				pub.Curve = elliptic.P224()
- 			case "P-256":
- 				pub.Curve = elliptic.P256()
- 			case "P-384":
---- libgo/go/crypto/x509/x509.go.jj	2013-11-07 11:59:09.000000000 +0100
-+++ libgo/go/crypto/x509/x509.go	2014-03-05 15:27:37.022439437 +0100
-@@ -306,9 +306,6 @@ func getPublicKeyAlgorithmFromOID(oid as
- 
- // RFC 5480, 2.1.1.1. Named Curve
- //
--// secp224r1 OBJECT IDENTIFIER ::= {
--//   iso(1) identified-organization(3) certicom(132) curve(0) 33 }
--//
- // secp256r1 OBJECT IDENTIFIER ::= {
- //   iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3)
- //   prime(1) 7 }
-@@ -321,7 +318,6 @@ func getPublicKeyAlgorithmFromOID(oid as
- //
- // NB: secp256r1 is equivalent to prime256v1
- var (
--	oidNamedCurveP224 = asn1.ObjectIdentifier{1, 3, 132, 0, 33}
- 	oidNamedCurveP256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 3, 1, 7}
- 	oidNamedCurveP384 = asn1.ObjectIdentifier{1, 3, 132, 0, 34}
- 	oidNamedCurveP521 = asn1.ObjectIdentifier{1, 3, 132, 0, 35}
-@@ -329,8 +325,6 @@ var (
- 
- func namedCurveFromOID(oid asn1.ObjectIdentifier) elliptic.Curve {
- 	switch {
--	case oid.Equal(oidNamedCurveP224):
--		return elliptic.P224()
- 	case oid.Equal(oidNamedCurveP256):
- 		return elliptic.P256()
- 	case oid.Equal(oidNamedCurveP384):
-@@ -343,8 +337,6 @@ func namedCurveFromOID(oid asn1.ObjectId
- 
- func oidFromNamedCurve(curve elliptic.Curve) (asn1.ObjectIdentifier, bool) {
- 	switch curve {
--	case elliptic.P224():
--		return oidNamedCurveP224, true
- 	case elliptic.P256():
- 		return oidNamedCurveP256, true
- 	case elliptic.P384():
-@@ -1371,7 +1363,7 @@ func signingParamsForPrivateKey(priv int
- 		pubType = ECDSA
- 
- 		switch priv.Curve {
--		case elliptic.P224(), elliptic.P256():
-+		case elliptic.P256():
- 			hashFunc = crypto.SHA256
- 			sigAlgo.Algorithm = oidSignatureECDSAWithSHA256
- 		case elliptic.P384():
---- libgo/go/crypto/elliptic/p224.go.jj	2012-11-15 18:26:57.000000000 +0100
-+++ libgo/go/crypto/elliptic/p224.go	2014-03-05 15:30:01.189430842 +0100
-@@ -1,765 +0,0 @@
--// Copyright 2012 The Go Authors.  All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--package elliptic
--
--// This is a constant-time, 32-bit implementation of P224. See FIPS 186-3,
--// section D.2.2.
--//
--// See http://www.imperialviolet.org/2010/12/04/ecc.html ([1]) for background.
--
--import (
--	"math/big"
--)
--
--var p224 p224Curve
--
--type p224Curve struct {
--	*CurveParams
--	gx, gy, b p224FieldElement
--}
--
--func initP224() {
--	// See FIPS 186-3, section D.2.2
--	p224.CurveParams = new(CurveParams)
--	p224.P, _ = new(big.Int).SetString("26959946667150639794667015087019630673557916260026308143510066298881", 10)
--	p224.N, _ = new(big.Int).SetString("26959946667150639794667015087019625940457807714424391721682722368061", 10)
--	p224.B, _ = new(big.Int).SetString("b4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4", 16)
--	p224.Gx, _ = new(big.Int).SetString("b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21", 16)
--	p224.Gy, _ = new(big.Int).SetString("bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34", 16)
--	p224.BitSize = 224
--
--	p224FromBig(&p224.gx, p224.Gx)
--	p224FromBig(&p224.gy, p224.Gy)
--	p224FromBig(&p224.b, p224.B)
--}
--
--// P224 returns a Curve which implements P-224 (see FIPS 186-3, section D.2.2)
--func P224() Curve {
--	initonce.Do(initAll)
--	return p224
--}
--
--func (curve p224Curve) Params() *CurveParams {
--	return curve.CurveParams
--}
--
--func (curve p224Curve) IsOnCurve(bigX, bigY *big.Int) bool {
--	var x, y p224FieldElement
--	p224FromBig(&x, bigX)
--	p224FromBig(&y, bigY)
--
--	// y² = x³ - 3x + b
--	var tmp p224LargeFieldElement
--	var x3 p224FieldElement
--	p224Square(&x3, &x, &tmp)
--	p224Mul(&x3, &x3, &x, &tmp)
--
--	for i := 0; i < 8; i++ {
--		x[i] *= 3
--	}
--	p224Sub(&x3, &x3, &x)
--	p224Reduce(&x3)
--	p224Add(&x3, &x3, &curve.b)
--	p224Contract(&x3, &x3)
--
--	p224Square(&y, &y, &tmp)
--	p224Contract(&y, &y)
--
--	for i := 0; i < 8; i++ {
--		if y[i] != x3[i] {
--			return false
--		}
--	}
--	return true
--}
--
--func (p224Curve) Add(bigX1, bigY1, bigX2, bigY2 *big.Int) (x, y *big.Int) {
--	var x1, y1, z1, x2, y2, z2, x3, y3, z3 p224FieldElement
--
--	p224FromBig(&x1, bigX1)
--	p224FromBig(&y1, bigY1)
--	if bigX1.Sign() != 0 || bigY1.Sign() != 0 {
--		z1[0] = 1
--	}
--	p224FromBig(&x2, bigX2)
--	p224FromBig(&y2, bigY2)
--	if bigX2.Sign() != 0 || bigY2.Sign() != 0 {
--		z2[0] = 1
--	}
--
--	p224AddJacobian(&x3, &y3, &z3, &x1, &y1, &z1, &x2, &y2, &z2)
--	return p224ToAffine(&x3, &y3, &z3)
--}
--
--func (p224Curve) Double(bigX1, bigY1 *big.Int) (x, y *big.Int) {
--	var x1, y1, z1, x2, y2, z2 p224FieldElement
--
--	p224FromBig(&x1, bigX1)
--	p224FromBig(&y1, bigY1)
--	z1[0] = 1
--
--	p224DoubleJacobian(&x2, &y2, &z2, &x1, &y1, &z1)
--	return p224ToAffine(&x2, &y2, &z2)
--}
--
--func (p224Curve) ScalarMult(bigX1, bigY1 *big.Int, scalar []byte) (x, y *big.Int) {
--	var x1, y1, z1, x2, y2, z2 p224FieldElement
--
--	p224FromBig(&x1, bigX1)
--	p224FromBig(&y1, bigY1)
--	z1[0] = 1
--
--	p224ScalarMult(&x2, &y2, &z2, &x1, &y1, &z1, scalar)
--	return p224ToAffine(&x2, &y2, &z2)
--}
--
--func (curve p224Curve) ScalarBaseMult(scalar []byte) (x, y *big.Int) {
--	var z1, x2, y2, z2 p224FieldElement
--
--	z1[0] = 1
--	p224ScalarMult(&x2, &y2, &z2, &curve.gx, &curve.gy, &z1, scalar)
--	return p224ToAffine(&x2, &y2, &z2)
--}
--
--// Field element functions.
--//
--// The field that we're dealing with is ℤ/pℤ where p = 2**224 - 2**96 + 1.
--//
--// Field elements are represented by a FieldElement, which is a typedef to an
--// array of 8 uint32's. The value of a FieldElement, a, is:
--//   a[0] + 2**28·a[1] + 2**56·a[1] + ... + 2**196·a[7]
--//
--// Using 28-bit limbs means that there's only 4 bits of headroom, which is less
--// than we would really like. But it has the useful feature that we hit 2**224
--// exactly, making the reflections during a reduce much nicer.
--type p224FieldElement [8]uint32
--
--// p224P is the order of the field, represented as a p224FieldElement.
--var p224P = [8]uint32{1, 0, 0, 0xffff000, 0xfffffff, 0xfffffff, 0xfffffff, 0xfffffff}
--
--// p224IsZero returns 1 if a == 0 mod p and 0 otherwise.
--//
--// a[i] < 2**29
--func p224IsZero(a *p224FieldElement) uint32 {
--	// Since a p224FieldElement contains 224 bits there are two possible
--	// representations of 0: 0 and p.
--	var minimal p224FieldElement
--	p224Contract(&minimal, a)
--
--	var isZero, isP uint32
--	for i, v := range minimal {
--		isZero |= v
--		isP |= v - p224P[i]
--	}
--
--	// If either isZero or isP is 0, then we should return 1.
--	isZero |= isZero >> 16
--	isZero |= isZero >> 8
--	isZero |= isZero >> 4
--	isZero |= isZero >> 2
--	isZero |= isZero >> 1
--
--	isP |= isP >> 16
--	isP |= isP >> 8
--	isP |= isP >> 4
--	isP |= isP >> 2
--	isP |= isP >> 1
--
--	// For isZero and isP, the LSB is 0 iff all the bits are zero.
--	result := isZero & isP
--	result = (^result) & 1
--
--	return result
--}
--
--// p224Add computes *out = a+b
--//
--// a[i] + b[i] < 2**32
--func p224Add(out, a, b *p224FieldElement) {
--	for i := 0; i < 8; i++ {
--		out[i] = a[i] + b[i]
--	}
--}
--
--const two31p3 = 1<<31 + 1<<3
--const two31m3 = 1<<31 - 1<<3
--const two31m15m3 = 1<<31 - 1<<15 - 1<<3
--
--// p224ZeroModP31 is 0 mod p where bit 31 is set in all limbs so that we can
--// subtract smaller amounts without underflow. See the section "Subtraction" in
--// [1] for reasoning.
--var p224ZeroModP31 = []uint32{two31p3, two31m3, two31m3, two31m15m3, two31m3, two31m3, two31m3, two31m3}
--
--// p224Sub computes *out = a-b
--//
--// a[i], b[i] < 2**30
--// out[i] < 2**32
--func p224Sub(out, a, b *p224FieldElement) {
--	for i := 0; i < 8; i++ {
--		out[i] = a[i] + p224ZeroModP31[i] - b[i]
--	}
--}
--
--// LargeFieldElement also represents an element of the field. The limbs are
--// still spaced 28-bits apart and in little-endian order. So the limbs are at
--// 0, 28, 56, ..., 392 bits, each 64-bits wide.
--type p224LargeFieldElement [15]uint64
--
--const two63p35 = 1<<63 + 1<<35
--const two63m35 = 1<<63 - 1<<35
--const two63m35m19 = 1<<63 - 1<<35 - 1<<19
--
--// p224ZeroModP63 is 0 mod p where bit 63 is set in all limbs. See the section
--// "Subtraction" in [1] for why.
--var p224ZeroModP63 = [8]uint64{two63p35, two63m35, two63m35, two63m35, two63m35m19, two63m35, two63m35, two63m35}
--
--const bottom12Bits = 0xfff
--const bottom28Bits = 0xfffffff
--
--// p224Mul computes *out = a*b
--//
--// a[i] < 2**29, b[i] < 2**30 (or vice versa)
--// out[i] < 2**29
--func p224Mul(out, a, b *p224FieldElement, tmp *p224LargeFieldElement) {
--	for i := 0; i < 15; i++ {
--		tmp[i] = 0
--	}
--
--	for i := 0; i < 8; i++ {
--		for j := 0; j < 8; j++ {
--			tmp[i+j] += uint64(a[i]) * uint64(b[j])
--		}
--	}
--
--	p224ReduceLarge(out, tmp)
--}
--
--// Square computes *out = a*a
--//
--// a[i] < 2**29
--// out[i] < 2**29
--func p224Square(out, a *p224FieldElement, tmp *p224LargeFieldElement) {
--	for i := 0; i < 15; i++ {
--		tmp[i] = 0
--	}
--
--	for i := 0; i < 8; i++ {
--		for j := 0; j <= i; j++ {
--			r := uint64(a[i]) * uint64(a[j])
--			if i == j {
--				tmp[i+j] += r
--			} else {
--				tmp[i+j] += r << 1
--			}
--		}
--	}
--
--	p224ReduceLarge(out, tmp)
--}
--
--// ReduceLarge converts a p224LargeFieldElement to a p224FieldElement.
--//
--// in[i] < 2**62
--func p224ReduceLarge(out *p224FieldElement, in *p224LargeFieldElement) {
--	for i := 0; i < 8; i++ {
--		in[i] += p224ZeroModP63[i]
--	}
--
--	// Eliminate the coefficients at 2**224 and greater.
--	for i := 14; i >= 8; i-- {
--		in[i-8] -= in[i]
--		in[i-5] += (in[i] & 0xffff) << 12
--		in[i-4] += in[i] >> 16
--	}
--	in[8] = 0
--	// in[0..8] < 2**64
--
--	// As the values become small enough, we start to store them in |out|
--	// and use 32-bit operations.
--	for i := 1; i < 8; i++ {
--		in[i+1] += in[i] >> 28
--		out[i] = uint32(in[i] & bottom28Bits)
--	}
--	in[0] -= in[8]
--	out[3] += uint32(in[8]&0xffff) << 12
--	out[4] += uint32(in[8] >> 16)
--	// in[0] < 2**64
--	// out[3] < 2**29
--	// out[4] < 2**29
--	// out[1,2,5..7] < 2**28
--
--	out[0] = uint32(in[0] & bottom28Bits)
--	out[1] += uint32((in[0] >> 28) & bottom28Bits)
--	out[2] += uint32(in[0] >> 56)
--	// out[0] < 2**28
--	// out[1..4] < 2**29
--	// out[5..7] < 2**28
--}
--
--// Reduce reduces the coefficients of a to smaller bounds.
--//
--// On entry: a[i] < 2**31 + 2**30
--// On exit: a[i] < 2**29
--func p224Reduce(a *p224FieldElement) {
--	for i := 0; i < 7; i++ {
--		a[i+1] += a[i] >> 28
--		a[i] &= bottom28Bits
--	}
--	top := a[7] >> 28
--	a[7] &= bottom28Bits
--
--	// top < 2**4
--	mask := top
--	mask |= mask >> 2
--	mask |= mask >> 1
--	mask <<= 31
--	mask = uint32(int32(mask) >> 31)
--	// Mask is all ones if top != 0, all zero otherwise
--
--	a[0] -= top
--	a[3] += top << 12
--
--	// We may have just made a[0] negative but, if we did, then we must
--	// have added something to a[3], this it's > 2**12. Therefore we can
--	// carry down to a[0].
--	a[3] -= 1 & mask
--	a[2] += mask & (1<<28 - 1)
--	a[1] += mask & (1<<28 - 1)
--	a[0] += mask & (1 << 28)
--}
--
--// p224Invert calculates *out = in**-1 by computing in**(2**224 - 2**96 - 1),
--// i.e. Fermat's little theorem.
--func p224Invert(out, in *p224FieldElement) {
--	var f1, f2, f3, f4 p224FieldElement
--	var c p224LargeFieldElement
--
--	p224Square(&f1, in, &c)    // 2
--	p224Mul(&f1, &f1, in, &c)  // 2**2 - 1
--	p224Square(&f1, &f1, &c)   // 2**3 - 2
--	p224Mul(&f1, &f1, in, &c)  // 2**3 - 1
--	p224Square(&f2, &f1, &c)   // 2**4 - 2
--	p224Square(&f2, &f2, &c)   // 2**5 - 4
--	p224Square(&f2, &f2, &c)   // 2**6 - 8
--	p224Mul(&f1, &f1, &f2, &c) // 2**6 - 1
--	p224Square(&f2, &f1, &c)   // 2**7 - 2
--	for i := 0; i < 5; i++ {   // 2**12 - 2**6
--		p224Square(&f2, &f2, &c)
--	}
--	p224Mul(&f2, &f2, &f1, &c) // 2**12 - 1
--	p224Square(&f3, &f2, &c)   // 2**13 - 2
--	for i := 0; i < 11; i++ {  // 2**24 - 2**12
--		p224Square(&f3, &f3, &c)
--	}
--	p224Mul(&f2, &f3, &f2, &c) // 2**24 - 1
--	p224Square(&f3, &f2, &c)   // 2**25 - 2
--	for i := 0; i < 23; i++ {  // 2**48 - 2**24
--		p224Square(&f3, &f3, &c)
--	}
--	p224Mul(&f3, &f3, &f2, &c) // 2**48 - 1
--	p224Square(&f4, &f3, &c)   // 2**49 - 2
--	for i := 0; i < 47; i++ {  // 2**96 - 2**48
--		p224Square(&f4, &f4, &c)
--	}
--	p224Mul(&f3, &f3, &f4, &c) // 2**96 - 1
--	p224Square(&f4, &f3, &c)   // 2**97 - 2
--	for i := 0; i < 23; i++ {  // 2**120 - 2**24
--		p224Square(&f4, &f4, &c)
--	}
--	p224Mul(&f2, &f4, &f2, &c) // 2**120 - 1
--	for i := 0; i < 6; i++ {   // 2**126 - 2**6
--		p224Square(&f2, &f2, &c)
--	}
--	p224Mul(&f1, &f1, &f2, &c) // 2**126 - 1
--	p224Square(&f1, &f1, &c)   // 2**127 - 2
--	p224Mul(&f1, &f1, in, &c)  // 2**127 - 1
--	for i := 0; i < 97; i++ {  // 2**224 - 2**97
--		p224Square(&f1, &f1, &c)
--	}
--	p224Mul(out, &f1, &f3, &c) // 2**224 - 2**96 - 1
--}
--
--// p224Contract converts a FieldElement to its unique, minimal form.
--//
--// On entry, in[i] < 2**29
--// On exit, in[i] < 2**28
--func p224Contract(out, in *p224FieldElement) {
--	copy(out[:], in[:])
--
--	for i := 0; i < 7; i++ {
--		out[i+1] += out[i] >> 28
--		out[i] &= bottom28Bits
--	}
--	top := out[7] >> 28
--	out[7] &= bottom28Bits
--
--	out[0] -= top
--	out[3] += top << 12
--
--	// We may just have made out[i] negative. So we carry down. If we made
--	// out[0] negative then we know that out[3] is sufficiently positive
--	// because we just added to it.
--	for i := 0; i < 3; i++ {
--		mask := uint32(int32(out[i]) >> 31)
--		out[i] += (1 << 28) & mask
--		out[i+1] -= 1 & mask
--	}
--
--	// We might have pushed out[3] over 2**28 so we perform another, partial,
--	// carry chain.
--	for i := 3; i < 7; i++ {
--		out[i+1] += out[i] >> 28
--		out[i] &= bottom28Bits
--	}
--	top = out[7] >> 28
--	out[7] &= bottom28Bits
--
--	// Eliminate top while maintaining the same value mod p.
--	out[0] -= top
--	out[3] += top << 12
--
--	// There are two cases to consider for out[3]:
--	//   1) The first time that we eliminated top, we didn't push out[3] over
--	//      2**28. In this case, the partial carry chain didn't change any values
--	//      and top is zero.
--	//   2) We did push out[3] over 2**28 the first time that we eliminated top.
--	//      The first value of top was in [0..16), therefore, prior to eliminating
--	//      the first top, 0xfff1000 <= out[3] <= 0xfffffff. Therefore, after
--	//      overflowing and being reduced by the second carry chain, out[3] <=
--	//      0xf000. Thus it cannot have overflowed when we eliminated top for the
--	//      second time.
--
--	// Again, we may just have made out[0] negative, so do the same carry down.
--	// As before, if we made out[0] negative then we know that out[3] is
--	// sufficiently positive.
--	for i := 0; i < 3; i++ {
--		mask := uint32(int32(out[i]) >> 31)
--		out[i] += (1 << 28) & mask
--		out[i+1] -= 1 & mask
--	}
--
--	// Now we see if the value is >= p and, if so, subtract p.
--
--	// First we build a mask from the top four limbs, which must all be
--	// equal to bottom28Bits if the whole value is >= p. If top4AllOnes
--	// ends up with any zero bits in the bottom 28 bits, then this wasn't
--	// true.
--	top4AllOnes := uint32(0xffffffff)
--	for i := 4; i < 8; i++ {
--		top4AllOnes &= out[i]
--	}
--	top4AllOnes |= 0xf0000000
--	// Now we replicate any zero bits to all the bits in top4AllOnes.
--	top4AllOnes &= top4AllOnes >> 16
--	top4AllOnes &= top4AllOnes >> 8
--	top4AllOnes &= top4AllOnes >> 4
--	top4AllOnes &= top4AllOnes >> 2
--	top4AllOnes &= top4AllOnes >> 1
--	top4AllOnes = uint32(int32(top4AllOnes<<31) >> 31)
--
--	// Now we test whether the bottom three limbs are non-zero.
--	bottom3NonZero := out[0] | out[1] | out[2]
--	bottom3NonZero |= bottom3NonZero >> 16
--	bottom3NonZero |= bottom3NonZero >> 8
--	bottom3NonZero |= bottom3NonZero >> 4
--	bottom3NonZero |= bottom3NonZero >> 2
--	bottom3NonZero |= bottom3NonZero >> 1
--	bottom3NonZero = uint32(int32(bottom3NonZero<<31) >> 31)
--
--	// Everything depends on the value of out[3].
--	//    If it's > 0xffff000 and top4AllOnes != 0 then the whole value is >= p
--	//    If it's = 0xffff000 and top4AllOnes != 0 and bottom3NonZero != 0,
--	//      then the whole value is >= p
--	//    If it's < 0xffff000, then the whole value is < p
--	n := out[3] - 0xffff000
--	out3Equal := n
--	out3Equal |= out3Equal >> 16
--	out3Equal |= out3Equal >> 8
--	out3Equal |= out3Equal >> 4
--	out3Equal |= out3Equal >> 2
--	out3Equal |= out3Equal >> 1
--	out3Equal = ^uint32(int32(out3Equal<<31) >> 31)
--
--	// If out[3] > 0xffff000 then n's MSB will be zero.
--	out3GT := ^uint32(int32(n) >> 31)
--
--	mask := top4AllOnes & ((out3Equal & bottom3NonZero) | out3GT)
--	out[0] -= 1 & mask
--	out[3] -= 0xffff000 & mask
--	out[4] -= 0xfffffff & mask
--	out[5] -= 0xfffffff & mask
--	out[6] -= 0xfffffff & mask
--	out[7] -= 0xfffffff & mask
--}
--
--// Group element functions.
--//
--// These functions deal with group elements. The group is an elliptic curve
--// group with a = -3 defined in FIPS 186-3, section D.2.2.
--
--// p224AddJacobian computes *out = a+b where a != b.
--func p224AddJacobian(x3, y3, z3, x1, y1, z1, x2, y2, z2 *p224FieldElement) {
--	// See http://hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#addition-p224Add-2007-bl
--	var z1z1, z2z2, u1, u2, s1, s2, h, i, j, r, v p224FieldElement
--	var c p224LargeFieldElement
--
--	z1IsZero := p224IsZero(z1)
--	z2IsZero := p224IsZero(z2)
--
--	// Z1Z1 = Z1²
--	p224Square(&z1z1, z1, &c)
--	// Z2Z2 = Z2²
--	p224Square(&z2z2, z2, &c)
--	// U1 = X1*Z2Z2
--	p224Mul(&u1, x1, &z2z2, &c)
--	// U2 = X2*Z1Z1
--	p224Mul(&u2, x2, &z1z1, &c)
--	// S1 = Y1*Z2*Z2Z2
--	p224Mul(&s1, z2, &z2z2, &c)
--	p224Mul(&s1, y1, &s1, &c)
--	// S2 = Y2*Z1*Z1Z1
--	p224Mul(&s2, z1, &z1z1, &c)
--	p224Mul(&s2, y2, &s2, &c)
--	// H = U2-U1
--	p224Sub(&h, &u2, &u1)
--	p224Reduce(&h)
--	xEqual := p224IsZero(&h)
--	// I = (2*H)²
--	for j := 0; j < 8; j++ {
--		i[j] = h[j] << 1
--	}
--	p224Reduce(&i)
--	p224Square(&i, &i, &c)
--	// J = H*I
--	p224Mul(&j, &h, &i, &c)
--	// r = 2*(S2-S1)
--	p224Sub(&r, &s2, &s1)
--	p224Reduce(&r)
--	yEqual := p224IsZero(&r)
--	if xEqual == 1 && yEqual == 1 && z1IsZero == 0 && z2IsZero == 0 {
--		p224DoubleJacobian(x3, y3, z3, x1, y1, z1)
--		return
--	}
--	for i := 0; i < 8; i++ {
--		r[i] <<= 1
--	}
--	p224Reduce(&r)
--	// V = U1*I
--	p224Mul(&v, &u1, &i, &c)
--	// Z3 = ((Z1+Z2)²-Z1Z1-Z2Z2)*H
--	p224Add(&z1z1, &z1z1, &z2z2)
--	p224Add(&z2z2, z1, z2)
--	p224Reduce(&z2z2)
--	p224Square(&z2z2, &z2z2, &c)
--	p224Sub(z3, &z2z2, &z1z1)
--	p224Reduce(z3)
--	p224Mul(z3, z3, &h, &c)
--	// X3 = r²-J-2*V
--	for i := 0; i < 8; i++ {
--		z1z1[i] = v[i] << 1
--	}
--	p224Add(&z1z1, &j, &z1z1)
--	p224Reduce(&z1z1)
--	p224Square(x3, &r, &c)
--	p224Sub(x3, x3, &z1z1)
--	p224Reduce(x3)
--	// Y3 = r*(V-X3)-2*S1*J
--	for i := 0; i < 8; i++ {
--		s1[i] <<= 1
--	}
--	p224Mul(&s1, &s1, &j, &c)
--	p224Sub(&z1z1, &v, x3)
--	p224Reduce(&z1z1)
--	p224Mul(&z1z1, &z1z1, &r, &c)
--	p224Sub(y3, &z1z1, &s1)
--	p224Reduce(y3)
--
--	p224CopyConditional(x3, x2, z1IsZero)
--	p224CopyConditional(x3, x1, z2IsZero)
--	p224CopyConditional(y3, y2, z1IsZero)
--	p224CopyConditional(y3, y1, z2IsZero)
--	p224CopyConditional(z3, z2, z1IsZero)
--	p224CopyConditional(z3, z1, z2IsZero)
--}
--
--// p224DoubleJacobian computes *out = a+a.
--func p224DoubleJacobian(x3, y3, z3, x1, y1, z1 *p224FieldElement) {
--	var delta, gamma, beta, alpha, t p224FieldElement
--	var c p224LargeFieldElement
--
--	p224Square(&delta, z1, &c)
--	p224Square(&gamma, y1, &c)
--	p224Mul(&beta, x1, &gamma, &c)
--
--	// alpha = 3*(X1-delta)*(X1+delta)
--	p224Add(&t, x1, &delta)
--	for i := 0; i < 8; i++ {
--		t[i] += t[i] << 1
--	}
--	p224Reduce(&t)
--	p224Sub(&alpha, x1, &delta)
--	p224Reduce(&alpha)
--	p224Mul(&alpha, &alpha, &t, &c)
--
--	// Z3 = (Y1+Z1)²-gamma-delta
--	p224Add(z3, y1, z1)
--	p224Reduce(z3)
--	p224Square(z3, z3, &c)
--	p224Sub(z3, z3, &gamma)
--	p224Reduce(z3)
--	p224Sub(z3, z3, &delta)
--	p224Reduce(z3)
--
--	// X3 = alpha²-8*beta
--	for i := 0; i < 8; i++ {
--		delta[i] = beta[i] << 3
--	}
--	p224Reduce(&delta)
--	p224Square(x3, &alpha, &c)
--	p224Sub(x3, x3, &delta)
--	p224Reduce(x3)
--
--	// Y3 = alpha*(4*beta-X3)-8*gamma²
--	for i := 0; i < 8; i++ {
--		beta[i] <<= 2
--	}
--	p224Sub(&beta, &beta, x3)
--	p224Reduce(&beta)
--	p224Square(&gamma, &gamma, &c)
--	for i := 0; i < 8; i++ {
--		gamma[i] <<= 3
--	}
--	p224Reduce(&gamma)
--	p224Mul(y3, &alpha, &beta, &c)
--	p224Sub(y3, y3, &gamma)
--	p224Reduce(y3)
--}
--
--// p224CopyConditional sets *out = *in iff the least-significant-bit of control
--// is true, and it runs in constant time.
--func p224CopyConditional(out, in *p224FieldElement, control uint32) {
--	control <<= 31
--	control = uint32(int32(control) >> 31)
--
--	for i := 0; i < 8; i++ {
--		out[i] ^= (out[i] ^ in[i]) & control
--	}
--}
--
--func p224ScalarMult(outX, outY, outZ, inX, inY, inZ *p224FieldElement, scalar []byte) {
--	var xx, yy, zz p224FieldElement
--	for i := 0; i < 8; i++ {
--		outX[i] = 0
--		outY[i] = 0
--		outZ[i] = 0
--	}
--
--	for _, byte := range scalar {
--		for bitNum := uint(0); bitNum < 8; bitNum++ {
--			p224DoubleJacobian(outX, outY, outZ, outX, outY, outZ)
--			bit := uint32((byte >> (7 - bitNum)) & 1)
--			p224AddJacobian(&xx, &yy, &zz, inX, inY, inZ, outX, outY, outZ)
--			p224CopyConditional(outX, &xx, bit)
--			p224CopyConditional(outY, &yy, bit)
--			p224CopyConditional(outZ, &zz, bit)
--		}
--	}
--}
--
--// p224ToAffine converts from Jacobian to affine form.
--func p224ToAffine(x, y, z *p224FieldElement) (*big.Int, *big.Int) {
--	var zinv, zinvsq, outx, outy p224FieldElement
--	var tmp p224LargeFieldElement
--
--	if isPointAtInfinity := p224IsZero(z); isPointAtInfinity == 1 {
--		return new(big.Int), new(big.Int)
--	}
--
--	p224Invert(&zinv, z)
--	p224Square(&zinvsq, &zinv, &tmp)
--	p224Mul(x, x, &zinvsq, &tmp)
--	p224Mul(&zinvsq, &zinvsq, &zinv, &tmp)
--	p224Mul(y, y, &zinvsq, &tmp)
--
--	p224Contract(&outx, x)
--	p224Contract(&outy, y)
--	return p224ToBig(&outx), p224ToBig(&outy)
--}
--
--// get28BitsFromEnd returns the least-significant 28 bits from buf>>shift,
--// where buf is interpreted as a big-endian number.
--func get28BitsFromEnd(buf []byte, shift uint) (uint32, []byte) {
--	var ret uint32
--
--	for i := uint(0); i < 4; i++ {
--		var b byte
--		if l := len(buf); l > 0 {
--			b = buf[l-1]
--			// We don't remove the byte if we're about to return and we're not
--			// reading all of it.
--			if i != 3 || shift == 4 {
--				buf = buf[:l-1]
--			}
--		}
--		ret |= uint32(b) << (8 * i) >> shift
--	}
--	ret &= bottom28Bits
--	return ret, buf
--}
--
--// p224FromBig sets *out = *in.
--func p224FromBig(out *p224FieldElement, in *big.Int) {
--	bytes := in.Bytes()
--	out[0], bytes = get28BitsFromEnd(bytes, 0)
--	out[1], bytes = get28BitsFromEnd(bytes, 4)
--	out[2], bytes = get28BitsFromEnd(bytes, 0)
--	out[3], bytes = get28BitsFromEnd(bytes, 4)
--	out[4], bytes = get28BitsFromEnd(bytes, 0)
--	out[5], bytes = get28BitsFromEnd(bytes, 4)
--	out[6], bytes = get28BitsFromEnd(bytes, 0)
--	out[7], bytes = get28BitsFromEnd(bytes, 4)
--}
--
--// p224ToBig returns in as a big.Int.
--func p224ToBig(in *p224FieldElement) *big.Int {
--	var buf [28]byte
--	buf[27] = byte(in[0])
--	buf[26] = byte(in[0] >> 8)
--	buf[25] = byte(in[0] >> 16)
--	buf[24] = byte(((in[0] >> 24) & 0x0f) | (in[1]<<4)&0xf0)
--
--	buf[23] = byte(in[1] >> 4)
--	buf[22] = byte(in[1] >> 12)
--	buf[21] = byte(in[1] >> 20)
--
--	buf[20] = byte(in[2])
--	buf[19] = byte(in[2] >> 8)
--	buf[18] = byte(in[2] >> 16)
--	buf[17] = byte(((in[2] >> 24) & 0x0f) | (in[3]<<4)&0xf0)
--
--	buf[16] = byte(in[3] >> 4)
--	buf[15] = byte(in[3] >> 12)
--	buf[14] = byte(in[3] >> 20)
--
--	buf[13] = byte(in[4])
--	buf[12] = byte(in[4] >> 8)
--	buf[11] = byte(in[4] >> 16)
--	buf[10] = byte(((in[4] >> 24) & 0x0f) | (in[5]<<4)&0xf0)
--
--	buf[9] = byte(in[5] >> 4)
--	buf[8] = byte(in[5] >> 12)
--	buf[7] = byte(in[5] >> 20)
--
--	buf[6] = byte(in[6])
--	buf[5] = byte(in[6] >> 8)
--	buf[4] = byte(in[6] >> 16)
--	buf[3] = byte(((in[6] >> 24) & 0x0f) | (in[7]<<4)&0xf0)
--
--	buf[2] = byte(in[7] >> 4)
--	buf[1] = byte(in[7] >> 12)
--	buf[0] = byte(in[7] >> 20)
--
--	return new(big.Int).SetBytes(buf[:])
--}
---- libgo/go/crypto/elliptic/p224_test.go.jj	2012-11-15 18:26:57.000000000 +0100
-+++ libgo/go/crypto/elliptic/p224_test.go	2014-03-05 15:29:58.743430988 +0100
-@@ -1,47 +0,0 @@
--// Copyright 2012 The Go Authors.  All rights reserved.
--// Use of this source code is governed by a BSD-style
--// license that can be found in the LICENSE file.
--
--package elliptic
--
--import (
--	"math/big"
--	"testing"
--)
--
--var toFromBigTests = []string{
--	"0",
--	"1",
--	"23",
--	"b70e0cb46bb4bf7f321390b94a03c1d356c01122343280d6105c1d21",
--	"706a46d476dcb76798e6046d89474788d164c18032d268fd10704fa6",
--}
--
--func p224AlternativeToBig(in *p224FieldElement) *big.Int {
--	ret := new(big.Int)
--	tmp := new(big.Int)
--
--	for i := uint(0); i < 8; i++ {
--		tmp.SetInt64(int64(in[i]))
--		tmp.Lsh(tmp, 28*i)
--		ret.Add(ret, tmp)
--	}
--	ret.Mod(ret, p224.P)
--	return ret
--}
--
--func TestToFromBig(t *testing.T) {
--	for i, test := range toFromBigTests {
--		n, _ := new(big.Int).SetString(test, 16)
--		var x p224FieldElement
--		p224FromBig(&x, n)
--		m := p224ToBig(&x)
--		if n.Cmp(m) != 0 {
--			t.Errorf("#%d: %x != %x", i, n, m)
--		}
--		q := p224AlternativeToBig(&x)
--		if n.Cmp(q) != 0 {
--			t.Errorf("#%d: %x != %x (alternative)", i, n, m)
--		}
--	}
--}
---- libgo/go/crypto/elliptic/p256.go.jj	2013-11-07 11:59:09.000000000 +0100
-+++ libgo/go/crypto/elliptic/p256.go	2014-03-05 15:34:31.910414701 +0100
-@@ -233,6 +233,8 @@ func p256ReduceCarry(inout *[p256Limbs]u
- 	inout[7] += carry << 25
- }
- 
-+const bottom28Bits = 0xfffffff
-+
- // p256Sum sets out = in+in2.
- //
- // On entry, in[i]+in2[i] must not overflow a 32-bit word.
-@@ -265,6 +267,7 @@ const (
- 	two31m2    = 1<<31 - 1<<2
- 	two31p24m2 = 1<<31 + 1<<24 - 1<<2
- 	two30m27m2 = 1<<30 - 1<<27 - 1<<2
-+	two31m3    = 1<<31 - 1<<3
- )
- 
- // p256Zero31 is 0 mod p.

diff --git a/gcc5-libgomp-omp_h-multilib.patch b/gcc5-libgomp-omp_h-multilib.patch
deleted file mode 100644
index d0e98d1..0000000
--- a/gcc5-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/gcc5-libsanitize-aarch64-va42.patch b/gcc5-libsanitize-aarch64-va42.patch
deleted file mode 100644
index bd4218b..0000000
--- a/gcc5-libsanitize-aarch64-va42.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-2015-01-22  Jakub Jelinek  <jakub@redhat.com>
-
-	* asan/asan_allocator.h (kAllocatorSpace, kAllocatorSize):
-	Set to 1T for __aarch64__.
-	* sanitizer_common/sanitizer_platform.h
-	(SANITIZER_CAN_USE_ALLOCATOR64): Set to 1 on __aarch64__
-	if SANITIZER_WORDSIZE is 64.
-	(SANITIZER_MMAP_RANGE_SIZE): Define to 1ULL << 42 for
-	__aarch64__.
-
---- libsanitizer/asan/asan_allocator.h	(revision 219833)
-+++ libsanitizer/asan/asan_allocator.h	(working copy)
-@@ -100,6 +100,10 @@
- # if defined(__powerpc64__)
- const uptr kAllocatorSpace =  0xa0000000000ULL;
- const uptr kAllocatorSize  =  0x20000000000ULL;  // 2T.
-+# elif defined(__aarch64__)
-+// Valid only for 42-bit VA
-+const uptr kAllocatorSpace =  0x10000000000ULL;
-+const uptr kAllocatorSize  =  0x10000000000ULL;  // 1T.
- # else
- const uptr kAllocatorSpace = 0x600000000000ULL;
- const uptr kAllocatorSize  =  0x40000000000ULL;  // 4T.
---- libsanitizer/sanitizer_common/sanitizer_platform.h	(revision 219833)
-+++ libsanitizer/sanitizer_common/sanitizer_platform.h	(working copy)
-@@ -79,7 +79,7 @@
- // For such platforms build this code with -DSANITIZER_CAN_USE_ALLOCATOR64=0 or
- // change the definition of SANITIZER_CAN_USE_ALLOCATOR64 here.
- #ifndef SANITIZER_CAN_USE_ALLOCATOR64
--# if defined(__aarch64__) || defined(__mips64)
-+# if defined(__mips64)
- #  define SANITIZER_CAN_USE_ALLOCATOR64 0
- # else
- #  define SANITIZER_CAN_USE_ALLOCATOR64 (SANITIZER_WORDSIZE == 64)
-@@ -88,10 +88,10 @@
- 
- // The range of addresses which can be returned my mmap.
- // FIXME: this value should be different on different platforms,
--// e.g. on AArch64 it is most likely (1ULL << 39). Larger values will still work
-+// e.g. on AArch64 it is most likely (1ULL << 42). Larger values will still work
- // but will consume more memory for TwoLevelByteMap.
- #if defined(__aarch64__)
--# define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 39)
-+# define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 42)
- #else
- # define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 47)
- #endif

diff --git a/gcc5-libstdc++-docs.patch b/gcc5-libstdc++-docs.patch
deleted file mode 100644
index eecd4af..0000000
--- a/gcc5-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 5.3.1
-+    </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
-@@ -18,8 +18,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" style="list-style-type: disc; "><li class="listitem"><p>
-+      <a class="link" href="api/index.html" target="_top">for the 5.3.1 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/gcc5-libtool-no-rpath.patch b/gcc5-libtool-no-rpath.patch
deleted file mode 100644
index 466c661..0000000
--- a/gcc5-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/gcc5-no-add-needed.patch b/gcc5-no-add-needed.patch
deleted file mode 100644
index 4102e1c..0000000
--- a/gcc5-no-add-needed.patch
+++ /dev/null
@@ -1,50 +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
-@@ -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
-@@ -76,7 +76,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 "
- 
- #undef TARGET_INIT_LIBFUNCS
- #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
---- 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/gcc5-ppc32-retaddr.patch b/gcc5-ppc32-retaddr.patch
deleted file mode 100644
index 7e8eeb5..0000000
--- a/gcc5-ppc32-retaddr.patch
+++ /dev/null
@@ -1,87 +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
-@@ -20970,18 +20970,22 @@ rs6000_return_addr (int count, rtx frame
-   if (count != 0
-       || ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN) && 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/gcc5-pr65689.patch b/gcc5-pr65689.patch
deleted file mode 100644
index 0dcdd5e..0000000
--- a/gcc5-pr65689.patch
+++ /dev/null
@@ -1,231 +0,0 @@
-2015-04-17  Jakub Jelinek  <jakub@redhat.com>
-
-	PR target/65689
-	* genpreds.c (struct constraint_data): Add maybe_allows_reg and
-	maybe_allows_mem bitfields.
-	(maybe_allows_none_start, maybe_allows_none_end,
-	maybe_allows_reg_start, maybe_allows_reg_end, maybe_allows_mem_start,
-	maybe_allows_mem_end): New variables.
-	(compute_maybe_allows): New function.
-	(add_constraint): Use it to initialize maybe_allows_reg and
-	maybe_allows_mem fields.
-	(choose_enum_order): Sort the non-is_register/is_const_int/is_memory/
-	is_address constraints such that those that allow neither mem nor
-	reg come first, then those that only allow reg but not mem, then
-	those that only allow mem but not reg, then the rest.
-	(write_allows_reg_mem_function): New function.
-	(write_tm_preds_h): Call it.
-	* stmt.c (parse_output_constraint, parse_input_constraint): Use
-	the generated insn_extra_constraint_allows_reg_mem function
-	instead of always setting *allows_reg = true; *allows_mem = true;
-	for unknown extra constraints.
-
-	* gcc.target/aarch64/c-output-template-4.c: New test.
-
---- gcc/genpreds.c.jj	2015-04-08 18:23:50.643556230 +0200
-+++ gcc/genpreds.c	2015-04-17 17:44:23.097650110 +0200
-@@ -640,12 +640,14 @@ struct constraint_data
-   const char *regclass;  /* for register constraints */
-   rtx exp;               /* for other constraints */
-   unsigned int lineno;   /* line of definition */
--  unsigned int is_register  : 1;
--  unsigned int is_const_int : 1;
--  unsigned int is_const_dbl : 1;
--  unsigned int is_extra     : 1;
--  unsigned int is_memory    : 1;
--  unsigned int is_address   : 1;
-+  unsigned int is_register	: 1;
-+  unsigned int is_const_int	: 1;
-+  unsigned int is_const_dbl	: 1;
-+  unsigned int is_extra		: 1;
-+  unsigned int is_memory	: 1;
-+  unsigned int is_address	: 1;
-+  unsigned int maybe_allows_reg : 1;
-+  unsigned int maybe_allows_mem : 1;
- };
- 
- /* Overview of all constraints beginning with a given letter.  */
-@@ -691,6 +693,9 @@ static unsigned int satisfied_start;
- static unsigned int const_int_start, const_int_end;
- static unsigned int memory_start, memory_end;
- static unsigned int address_start, address_end;
-+static unsigned int maybe_allows_none_start, maybe_allows_none_end;
-+static unsigned int maybe_allows_reg_start, maybe_allows_reg_end;
-+static unsigned int maybe_allows_mem_start, maybe_allows_mem_end;
- 
- /* Convert NAME, which contains angle brackets and/or underscores, to
-    a string that can be used as part of a C identifier.  The string
-@@ -711,6 +716,34 @@ mangle (const char *name)
-   return XOBFINISH (rtl_obstack, const char *);
- }
- 
-+/* Return a bitmask, bit 1 if EXP maybe allows a REG/SUBREG, 2 if EXP
-+   maybe allows a MEM.  Bits should be clear only when we are sure it
-+   will not allow a REG/SUBREG or a MEM.  */
-+static int
-+compute_maybe_allows (rtx exp)
-+{
-+  switch (GET_CODE (exp))
-+    {
-+    case IF_THEN_ELSE:
-+      /* Conservative answer is like IOR, of the THEN and ELSE branches.  */
-+      return compute_maybe_allows (XEXP (exp, 1))
-+	     | compute_maybe_allows (XEXP (exp, 2));
-+    case AND:
-+      return compute_maybe_allows (XEXP (exp, 0))
-+	     & compute_maybe_allows (XEXP (exp, 1));
-+    case IOR:
-+      return compute_maybe_allows (XEXP (exp, 0))
-+	     | compute_maybe_allows (XEXP (exp, 1));
-+    case MATCH_CODE:
-+      if (*XSTR (exp, 1) == '\0')
-+	return (strstr (XSTR (exp, 0), "reg") != NULL ? 1 : 0)
-+	       | (strstr (XSTR (exp, 0), "mem") != NULL ? 2 : 0);
-+      /* FALLTHRU */
-+    default:
-+      return 3;
-+    }
-+}
-+
- /* Add one constraint, of any sort, to the tables.  NAME is its name;
-    REGCLASS is the register class, if any; EXP is the expression to
-    test, if any;  IS_MEMORY and IS_ADDRESS indicate memory and address
-@@ -866,6 +899,11 @@ add_constraint (const char *name, const
-   c->is_extra = !(regclass || is_const_int || is_const_dbl);
-   c->is_memory = is_memory;
-   c->is_address = is_address;
-+  int maybe_allows = 3;
-+  if (exp)
-+    maybe_allows = compute_maybe_allows (exp);
-+  c->maybe_allows_reg = (maybe_allows & 1) != 0;
-+  c->maybe_allows_mem = (maybe_allows & 2) != 0;
- 
-   c->next_this_letter = *slot;
-   *slot = c;
-@@ -940,8 +978,30 @@ choose_enum_order (void)
-       enum_order[next++] = c;
-   address_end = next;
- 
-+  maybe_allows_none_start = next;
-+  FOR_ALL_CONSTRAINTS (c)
-+    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
-+	&& !c->maybe_allows_reg && !c->maybe_allows_mem)
-+      enum_order[next++] = c;
-+  maybe_allows_none_end = next;
-+
-+  maybe_allows_reg_start = next;
-+  FOR_ALL_CONSTRAINTS (c)
-+    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
-+	&& c->maybe_allows_reg && !c->maybe_allows_mem)
-+      enum_order[next++] = c;
-+  maybe_allows_reg_end = next;
-+
-+  maybe_allows_mem_start = next;
-+  FOR_ALL_CONSTRAINTS (c)
-+    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
-+	&& !c->maybe_allows_reg && c->maybe_allows_mem)
-+      enum_order[next++] = c;
-+  maybe_allows_mem_end = next;
-+
-   FOR_ALL_CONSTRAINTS (c)
--    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address)
-+    if (!c->is_register && !c->is_const_int && !c->is_memory && !c->is_address
-+	&& c->maybe_allows_reg && c->maybe_allows_mem)
-       enum_order[next++] = c;
-   gcc_assert (next == num_constraints);
- }
-@@ -1229,6 +1289,41 @@ write_range_function (const char *name,
- 	    "}\n\n", name);
- }
- 
-+/* Write a definition for insn_extra_constraint_allows_reg_mem function.  */
-+static void
-+write_allows_reg_mem_function (void)
-+{
-+  printf ("static inline void\n"
-+	  "insn_extra_constraint_allows_reg_mem (enum constraint_num c,\n"
-+	  "\t\t\t\t      bool *allows_reg, bool *allows_mem)\n"
-+	  "{\n");
-+  if (maybe_allows_none_start != maybe_allows_none_end)
-+    printf ("  if (c >= CONSTRAINT_%s && c <= CONSTRAINT_%s)\n"
-+	    "    return;\n",
-+	    enum_order[maybe_allows_none_start]->c_name,
-+	    enum_order[maybe_allows_none_end - 1]->c_name);
-+  if (maybe_allows_reg_start != maybe_allows_reg_end)
-+    printf ("  if (c >= CONSTRAINT_%s && c <= CONSTRAINT_%s)\n"
-+	    "    {\n"
-+	    "      *allows_reg = true;\n"
-+	    "      return;\n"
-+	    "    }\n",
-+	    enum_order[maybe_allows_reg_start]->c_name,
-+	    enum_order[maybe_allows_reg_end - 1]->c_name);
-+  if (maybe_allows_mem_start != maybe_allows_mem_end)
-+    printf ("  if (c >= CONSTRAINT_%s && c <= CONSTRAINT_%s)\n"
-+	    "    {\n"
-+	    "      *allows_mem = true;\n"
-+	    "      return;\n"
-+	    "    }\n",
-+	    enum_order[maybe_allows_mem_start]->c_name,
-+	    enum_order[maybe_allows_mem_end - 1]->c_name);
-+  printf ("  (void) c;\n"
-+	  "  *allows_reg = true;\n"
-+	  "  *allows_mem = true;\n"
-+	  "}\n\n");
-+}
-+
- /* VEC is a list of key/value pairs, with the keys being lower bounds
-    of a range.  Output a decision tree that handles the keys covered by
-    [VEC[START], VEC[END]), returning FALLBACK for keys lower then VEC[START]'s.
-@@ -1326,6 +1421,7 @@ write_tm_preds_h (void)
- 			    memory_start, memory_end);
-       write_range_function ("insn_extra_address_constraint",
- 			    address_start, address_end);
-+      write_allows_reg_mem_function ();
- 
-       if (constraint_max_namelen > 1)
-         {
---- gcc/stmt.c.jj	2015-04-08 18:23:50.660555956 +0200
-+++ gcc/stmt.c	2015-04-17 17:36:50.623044548 +0200
-@@ -342,13 +342,7 @@ parse_output_constraint (const char **co
- 	else if (insn_extra_memory_constraint (cn))
- 	  *allows_mem = true;
- 	else
--	  {
--	    /* Otherwise we can't assume anything about the nature of
--	       the constraint except that it isn't purely registers.
--	       Treat it like "g" and hope for the best.  */
--	    *allows_reg = true;
--	    *allows_mem = true;
--	  }
-+	  insn_extra_constraint_allows_reg_mem (cn, allows_reg, allows_mem);
- 	break;
-       }
- 
-@@ -465,13 +459,7 @@ parse_input_constraint (const char **con
- 	else if (insn_extra_memory_constraint (cn))
- 	  *allows_mem = true;
- 	else
--	  {
--	    /* Otherwise we can't assume anything about the nature of
--	       the constraint except that it isn't purely registers.
--	       Treat it like "g" and hope for the best.  */
--	    *allows_reg = true;
--	    *allows_mem = true;
--	  }
-+	  insn_extra_constraint_allows_reg_mem (cn, allows_reg, allows_mem);
- 	break;
-       }
- 
---- gcc/testsuite/gcc.target/aarch64/c-output-template-4.c.jj	2015-04-17 17:48:27.588654584 +0200
-+++ gcc/testsuite/gcc.target/aarch64/c-output-template-4.c	2015-04-17 17:48:22.149743468 +0200
-@@ -0,0 +1,10 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O0" } */
-+
-+void
-+test (void)
-+{
-+    __asm__ ("@ %c0" : : "S" (&test + 4));
-+}
-+
-+/* { dg-final { scan-assembler "@ test\\+4" } } */

diff --git a/gcc5-rh1279639.patch b/gcc5-rh1279639.patch
deleted file mode 100644
index 4cc9ee8..0000000
--- a/gcc5-rh1279639.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-# Workaround doxygen 1.8.10 bugs.
---- libstdc++-v3/doc/doxygen/user.cfg.in
-+++ libstdc++-v3/doc/doxygen/user.cfg.in
-@@ -895,7 +895,6 @@ INPUT                  = @srcdir@/doc/doxygen/doxygroups.cc \
-                          include/ext/pb_ds/detail/binary_heap_ \
-                          include/ext/pb_ds/detail/binomial_heap_ \
-                          include/ext/pb_ds/detail/binomial_heap_base_ \
--                         include/ext/pb_ds/detail/bin_search_tree_ \
-                          include/ext/pb_ds/detail/branch_policy \
-                          include/ext/pb_ds/detail/cc_hash_table_map_ \
-                          include/ext/pb_ds/detail/eq_fn \
-@@ -1965,18 +1964,6 @@ GENERATE_XML           = @do_xml@
- 
- XML_OUTPUT             = xml
- 
--# The XML_SCHEMA tag can be used to specify a XML schema, which can be used by a
--# validating XML parser to check the syntax of the XML files.
--# This tag requires that the tag GENERATE_XML is set to YES.
--
--XML_SCHEMA             =
--
--# The XML_DTD tag can be used to specify a XML DTD, which can be used by a
--# validating XML parser to check the syntax of the XML files.
--# This tag requires that the tag GENERATE_XML is set to YES.
--
--XML_DTD                =
--
- # If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
- # listings (including syntax highlighting and cross-referencing information) to
- # the XML output. Note that enabling this will significantly increase the size
-@@ -2135,6 +2122,7 @@ PREDEFINED             = __cplusplus=201103L \
-                          _GLIBCXX_USE_CONSTEXPR=constexpr \
-                          "_GLIBCXX_THROW(E)= " \
-                          _GLIBCXX_NOEXCEPT=noexcept \
-+                         "_GLIBCXX_NOEXCEPT_IF(E)=noexcept(E)" \
-                          _GLIBCXX_NOTHROW=noexcept \
-                          _GLIBCXX_USE_NOEXCEPT=noexcept \
-                          _GLIBCXX_USE_WCHAR_T \

diff --git a/gcc5-rh330771.patch b/gcc5-rh330771.patch
deleted file mode 100644
index 102730f..0000000
--- a/gcc5-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/gcc5-sparc-config-detection.patch b/gcc5-sparc-config-detection.patch
deleted file mode 100644
index a37018e..0000000
--- a/gcc5-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
-@@ -2656,7 +2656,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="${tmake_file} sparc/t-sparc sparc/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
-@@ -2710,7 +2710,7 @@ sparc64-*-rtems*)
- 	extra_options="${extra_options}"
- 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
- 	;;
--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/gcc6-aarch64-async-unw-tables.patch b/gcc6-aarch64-async-unw-tables.patch
new file mode 100644
index 0000000..feec149
--- /dev/null
+++ b/gcc6-aarch64-async-unw-tables.patch
@@ -0,0 +1,35 @@
+2014-04-07  Richard Henderson  <rth@redhat.com>
+
+	* common/config/aarch64/aarch64-common.c (TARGET_OPTION_INIT_STRUCT):
+	Define.
+	(aarch64_option_init_struct): New function.
+
+--- gcc/common/config/aarch64/aarch64-common.c
++++ gcc/common/config/aarch64/aarch64-common.c
+@@ -39,6 +39,9 @@
+ #undef	TARGET_OPTION_OPTIMIZATION_TABLE
+ #define TARGET_OPTION_OPTIMIZATION_TABLE aarch_option_optimization_table
+ 
++#undef TARGET_OPTION_INIT_STRUCT
++#define TARGET_OPTION_INIT_STRUCT aarch64_option_init_struct
++
+ /* Set default optimization options.  */
+ static const struct default_options aarch_option_optimization_table[] =
+   {
+@@ -47,6 +50,16 @@ static const struct default_options aarch_option_optimization_table[] =
+     { OPT_LEVELS_NONE, 0, NULL, 0 }
+   };
+ 
++/* Implement TARGET_OPTION_INIT_STRUCT.  */
++
++static void
++aarch64_option_init_struct (struct gcc_options *opts)
++{
++  /* By default, always emit DWARF-2 unwind info.  This allows debugging
++     without maintaining a stack frame back-chain.  */
++  opts->x_flag_asynchronous_unwind_tables = 1;
++}
++
+ /* Implement TARGET_HANDLE_OPTION.
+    This function handles the target specific options for CPU/target selection.
+ 

diff --git a/gcc6-hack.patch b/gcc6-hack.patch
new file mode 100644
index 0000000..950ff63
--- /dev/null
+++ b/gcc6-hack.patch
@@ -0,0 +1,159 @@
+--- 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; \
+--- libcpp/macro.c.jj	2015-01-14 11:01:34.000000000 +0100
++++ libcpp/macro.c	2015-01-14 14:22:19.286949884 +0100
+@@ -2947,8 +2947,6 @@ create_iso_definition (cpp_reader *pfile
+   cpp_token *token;
+   const cpp_token *ctoken;
+   bool following_paste_op = false;
+-  const char *paste_op_error_msg =
+-    N_("'##' cannot appear at either end of a macro expansion");
+   unsigned int num_extra_tokens = 0;
+ 
+   /* Get the first token of the expansion (or the '(' of a
+@@ -3059,7 +3057,8 @@ create_iso_definition (cpp_reader *pfile
+ 	     function-like macros, but not at the end.  */
+ 	  if (following_paste_op)
+ 	    {
+-	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
++	      cpp_error (pfile, CPP_DL_ERROR,
++			 "'##' cannot appear at either end of a macro expansion");
+ 	      return false;
+ 	    }
+ 	  break;
+@@ -3072,7 +3071,8 @@ create_iso_definition (cpp_reader *pfile
+ 	     function-like macros, but not at the beginning.  */
+ 	  if (macro->count == 1)
+ 	    {
+-	      cpp_error (pfile, CPP_DL_ERROR, paste_op_error_msg);
++	      cpp_error (pfile, CPP_DL_ERROR,
++			 "'##' cannot appear at either end of a macro expansion");
+ 	      return false;
+ 	    }
+ 
+--- libcpp/expr.c.jj	2015-01-14 11:01:34.000000000 +0100
++++ libcpp/expr.c	2015-01-14 14:35:52.851002344 +0100
+@@ -672,16 +672,17 @@ cpp_classify_number (cpp_reader *pfile,
+       if ((result & CPP_N_WIDTH) == CPP_N_LARGE
+ 	  && CPP_OPTION (pfile, cpp_warn_long_long))
+         {
+-          const char *message = CPP_OPTION (pfile, cplusplus) 
+-				? N_("use of C++11 long long integer constant")
+-		                : N_("use of C99 long long integer constant");
+-
+ 	  if (CPP_OPTION (pfile, c99))
+             cpp_warning_with_line (pfile, CPP_W_LONG_LONG, virtual_location,
+-				   0, message);
++				   0, CPP_OPTION (pfile, cplusplus)
++				      ? N_("use of C++11 long long integer constant")
++				      : N_("use of C99 long long integer constant"));
+           else
+             cpp_pedwarning_with_line (pfile, CPP_W_LONG_LONG,
+-				      virtual_location, 0, message);
++				      virtual_location, 0,
++				      CPP_OPTION (pfile, cplusplus)
++				      ? N_("use of C++11 long long integer constant")
++				      : N_("use of C99 long long integer constant"));
+         }
+ 
+       result |= CPP_N_INTEGER;

diff --git a/gcc6-i386-libgomp.patch b/gcc6-i386-libgomp.patch
new file mode 100644
index 0000000..520561e
--- /dev/null
+++ b/gcc6-i386-libgomp.patch
@@ -0,0 +1,11 @@
+--- 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
+ 	;;

diff --git a/gcc6-isl-dl.patch b/gcc6-isl-dl.patch
new file mode 100644
index 0000000..209ac3f
--- /dev/null
+++ b/gcc6-isl-dl.patch
@@ -0,0 +1,585 @@
+--- gcc/Makefile.in.jj	2015-06-06 10:00:25.000000000 +0200
++++ gcc/Makefile.in	2015-11-04 14:56:02.643536437 +0100
+@@ -1013,7 +1013,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
+ # and the system's installed libraries.
+ LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
+ 	$(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
+-BACKENDLIBS = $(ISLLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
++BACKENDLIBS = $(if $(ISLLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
+ 	$(ZLIB)
+ # Any system libraries needed just for GNAT.
+ SYSLIBS = @GNAT_LIBEXC@
+@@ -2058,6 +2058,15 @@ $(out_object_file): $(out_file)
+ $(common_out_object_file): $(common_out_file)
+ 	$(COMPILE) $<
+ 	$(POSTCOMPILE)
++
++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.h.jj	2016-01-27 12:44:06.000000000 +0100
++++ gcc/graphite.h	2016-01-27 13:26:38.309876856 +0100
+@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3.
+ #include <isl/ilp.h>
+ #include <isl/schedule.h>
+ #include <isl/ast_build.h>
++#include <dlfcn.h>
+ 
+ #ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
+ /* isl 0.15 or later.  */
+@@ -47,6 +48,494 @@ along with GCC; see the file COPYING3.
+ # define isl_stat_ok 0
+ #endif
+ 
++#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
++#define DYNSYM_SCHEDULE_FUSE DYNSYM (isl_options_set_schedule_serialize_sccs)
++#define DYNSYM_SET_YAML_STYLE DYNSYM (isl_printer_set_yaml_style);
++#else
++#define DYNSYM_SCHEDULE_FUSE DYNSYM (isl_options_set_schedule_fuse)
++#define DYNSYM_SET_YAML_STYLE
++#endif
++
++#define DYNSYMS \
++  DYNSYM (isl_aff_add_coefficient_si); \
++  DYNSYM (isl_aff_free); \
++  DYNSYM (isl_aff_get_space); \
++  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_n_member); \
++  DYNSYM (isl_basic_map_add_constraint); \
++  DYNSYM (isl_basic_map_project_out); \
++  DYNSYM (isl_basic_map_universe); \
++  DYNSYM (isl_constraint_set_coefficient_si); \
++  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_SCHEDULE_FUSE; \
++  DYNSYM_SET_YAML_STYLE \
++  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_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_get_space); \
++  DYNSYM (isl_set_get_tuple_id); \
++  DYNSYM (isl_set_intersect); \
++  DYNSYM (isl_set_is_empty); \
++  DYNSYM (isl_set_n_dim); \
++  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 (isl_aff_add_constant_val); \
++  DYNSYM (isl_aff_get_coefficient_val); \
++  DYNSYM (isl_aff_get_ctx); \
++  DYNSYM (isl_aff_mod_val); \
++  DYNSYM (isl_ast_build_ast_from_schedule); \
++  DYNSYM (isl_ast_build_free); \
++  DYNSYM (isl_ast_build_from_context); \
++  DYNSYM (isl_ast_build_get_ctx); \
++  DYNSYM (isl_ast_build_get_schedule); \
++  DYNSYM (isl_ast_build_get_schedule_space); \
++  DYNSYM (isl_ast_build_set_before_each_for); \
++  DYNSYM (isl_ast_build_set_options); \
++  DYNSYM (isl_ast_expr_free); \
++  DYNSYM (isl_ast_expr_from_val); \
++  DYNSYM (isl_ast_expr_get_ctx); \
++  DYNSYM (isl_ast_expr_get_id); \
++  DYNSYM (isl_ast_expr_get_op_arg); \
++  DYNSYM (isl_ast_expr_get_op_n_arg); \
++  DYNSYM (isl_ast_expr_get_op_type); \
++  DYNSYM (isl_ast_expr_get_type); \
++  DYNSYM (isl_ast_expr_get_val); \
++  DYNSYM (isl_ast_expr_sub); \
++  DYNSYM (isl_ast_node_block_get_children); \
++  DYNSYM (isl_ast_node_for_get_body); \
++  DYNSYM (isl_ast_node_for_get_cond); \
++  DYNSYM (isl_ast_node_for_get_inc); \
++  DYNSYM (isl_ast_node_for_get_init); \
++  DYNSYM (isl_ast_node_for_get_iterator); \
++  DYNSYM (isl_ast_node_free); \
++  DYNSYM (isl_ast_node_get_annotation); \
++  DYNSYM (isl_ast_node_get_type); \
++  DYNSYM (isl_ast_node_if_get_cond); \
++  DYNSYM (isl_ast_node_if_get_else); \
++  DYNSYM (isl_ast_node_if_get_then); \
++  DYNSYM (isl_ast_node_list_free); \
++  DYNSYM (isl_ast_node_list_get_ast_node); \
++  DYNSYM (isl_ast_node_list_n_ast_node); \
++  DYNSYM (isl_ast_node_user_get_expr); \
++  DYNSYM (isl_constraint_set_coefficient_val); \
++  DYNSYM (isl_constraint_set_constant_val); \
++  DYNSYM (isl_id_get_user); \
++  DYNSYM (isl_local_space_get_ctx); \
++  DYNSYM (isl_map_fix_val); \
++  DYNSYM (isl_options_set_ast_build_atomic_upper_bound); \
++  DYNSYM (isl_printer_print_ast_node); \
++  DYNSYM (isl_printer_print_str); \
++  DYNSYM (isl_printer_set_output_format); \
++  DYNSYM (isl_pw_aff_mod_val); \
++  DYNSYM (isl_schedule_constraints_compute_schedule); \
++  DYNSYM (isl_schedule_constraints_on_domain); \
++  DYNSYM (isl_schedule_constraints_set_coincidence); \
++  DYNSYM (isl_schedule_constraints_set_proximity); \
++  DYNSYM (isl_schedule_constraints_set_validity); \
++  DYNSYM (isl_set_get_dim_id); \
++  DYNSYM (isl_set_max_val); \
++  DYNSYM (isl_set_min_val); \
++  DYNSYM (isl_set_params); \
++  DYNSYM (isl_space_align_params); \
++  DYNSYM (isl_space_map_from_domain_and_range); \
++  DYNSYM (isl_space_set_tuple_name); \
++  DYNSYM (isl_space_wrap); \
++  DYNSYM (isl_union_map_from_domain_and_range); \
++  DYNSYM (isl_union_map_range); \
++  DYNSYM (isl_union_set_union); \
++  DYNSYM (isl_union_set_universe); \
++  DYNSYM (isl_val_2exp); \
++  DYNSYM (isl_val_add_ui); \
++  DYNSYM (isl_val_copy); \
++  DYNSYM (isl_val_free); \
++  DYNSYM (isl_val_get_num_gmp); \
++  DYNSYM (isl_val_int_from_gmp); \
++  DYNSYM (isl_val_int_from_si); \
++  DYNSYM (isl_val_int_from_ui); \
++  DYNSYM (isl_val_mul); \
++  DYNSYM (isl_val_neg); \
++  DYNSYM (isl_val_sub); \
++  DYNSYM (isl_printer_print_union_map); \
++  DYNSYM (isl_pw_aff_get_ctx); \
++  DYNSYM (isl_val_is_int); \
++  DYNSYM (isl_ctx_get_max_operations); \
++  DYNSYM (isl_ctx_set_max_operations); \
++  DYNSYM (isl_ctx_last_error); \
++  DYNSYM (isl_ctx_reset_operations); \
++  DYNSYM (isl_map_coalesce); \
++  DYNSYM (isl_printer_print_schedule); \
++  DYNSYM (isl_set_set_dim_id); \
++  DYNSYM (isl_union_map_coalesce);
++
++extern struct isl_pointers_s__
++{
++  bool inited;
++  void *h;
++#define DYNSYM(x) __typeof (x) *p_##x
++  DYNSYMS
++#undef DYNSYM
++} isl_pointers__;
++
++#define isl_aff_add_coefficient_si (*isl_pointers__.p_isl_aff_add_coefficient_si)
++#define isl_aff_free (*isl_pointers__.p_isl_aff_free)
++#define isl_aff_get_space (*isl_pointers__.p_isl_aff_get_space)
++#define isl_aff_set_coefficient_si (*isl_pointers__.p_isl_aff_set_coefficient_si)
++#define isl_aff_set_constant_si (*isl_pointers__.p_isl_aff_set_constant_si)
++#define isl_aff_zero_on_domain (*isl_pointers__.p_isl_aff_zero_on_domain)
++#define isl_band_free (*isl_pointers__.p_isl_band_free)
++#define isl_band_get_children (*isl_pointers__.p_isl_band_get_children)
++#define isl_band_get_partial_schedule (*isl_pointers__.p_isl_band_get_partial_schedule)
++#define isl_band_has_children (*isl_pointers__.p_isl_band_has_children)
++#define isl_band_list_free (*isl_pointers__.p_isl_band_list_free)
++#define isl_band_list_get_band (*isl_pointers__.p_isl_band_list_get_band)
++#define isl_band_list_get_ctx (*isl_pointers__.p_isl_band_list_get_ctx)
++#define isl_band_list_n_band (*isl_pointers__.p_isl_band_list_n_band)
++#define isl_band_n_member (*isl_pointers__.p_isl_band_n_member)
++#define isl_basic_map_add_constraint (*isl_pointers__.p_isl_basic_map_add_constraint)
++#define isl_basic_map_project_out (*isl_pointers__.p_isl_basic_map_project_out)
++#define isl_basic_map_universe (*isl_pointers__.p_isl_basic_map_universe)
++#define isl_constraint_set_coefficient_si (*isl_pointers__.p_isl_constraint_set_coefficient_si)
++#define isl_constraint_set_constant_si (*isl_pointers__.p_isl_constraint_set_constant_si)
++#define isl_ctx_alloc (*isl_pointers__.p_isl_ctx_alloc)
++#define isl_ctx_free (*isl_pointers__.p_isl_ctx_free)
++#define isl_equality_alloc (*isl_pointers__.p_isl_equality_alloc)
++#define isl_id_alloc (*isl_pointers__.p_isl_id_alloc)
++#define isl_id_copy (*isl_pointers__.p_isl_id_copy)
++#define isl_id_free (*isl_pointers__.p_isl_id_free)
++#define isl_inequality_alloc (*isl_pointers__.p_isl_inequality_alloc)
++#define isl_local_space_copy (*isl_pointers__.p_isl_local_space_copy)
++#define isl_local_space_free (*isl_pointers__.p_isl_local_space_free)
++#define isl_local_space_from_space (*isl_pointers__.p_isl_local_space_from_space)
++#define isl_local_space_range (*isl_pointers__.p_isl_local_space_range)
++#define isl_map_add_constraint (*isl_pointers__.p_isl_map_add_constraint)
++#define isl_map_add_dims (*isl_pointers__.p_isl_map_add_dims)
++#define isl_map_align_params (*isl_pointers__.p_isl_map_align_params)
++#define isl_map_apply_range (*isl_pointers__.p_isl_map_apply_range)
++#define isl_map_copy (*isl_pointers__.p_isl_map_copy)
++#define isl_map_dim (*isl_pointers__.p_isl_map_dim)
++#define isl_map_dump (*isl_pointers__.p_isl_map_dump)
++#define isl_map_equate (*isl_pointers__.p_isl_map_equate)
++#define isl_map_fix_si (*isl_pointers__.p_isl_map_fix_si)
++#define isl_map_flat_product (*isl_pointers__.p_isl_map_flat_product)
++#define isl_map_flat_range_product (*isl_pointers__.p_isl_map_flat_range_product)
++#define isl_map_free (*isl_pointers__.p_isl_map_free)
++#define isl_map_from_basic_map (*isl_pointers__.p_isl_map_from_basic_map)
++#define isl_map_from_pw_aff (*isl_pointers__.p_isl_map_from_pw_aff)
++#define isl_map_from_union_map (*isl_pointers__.p_isl_map_from_union_map)
++#define isl_map_get_ctx (*isl_pointers__.p_isl_map_get_ctx)
++#define isl_map_get_space (*isl_pointers__.p_isl_map_get_space)
++#define isl_map_get_tuple_id (*isl_pointers__.p_isl_map_get_tuple_id)
++#define isl_map_insert_dims (*isl_pointers__.p_isl_map_insert_dims)
++#define isl_map_intersect (*isl_pointers__.p_isl_map_intersect)
++#define isl_map_intersect_domain (*isl_pointers__.p_isl_map_intersect_domain)
++#define isl_map_intersect_range (*isl_pointers__.p_isl_map_intersect_range)
++#define isl_map_is_empty (*isl_pointers__.p_isl_map_is_empty)
++#define isl_map_lex_ge (*isl_pointers__.p_isl_map_lex_ge)
++#define isl_map_lex_le (*isl_pointers__.p_isl_map_lex_le)
++#define isl_map_n_out (*isl_pointers__.p_isl_map_n_out)
++#define isl_map_range (*isl_pointers__.p_isl_map_range)
++#define isl_map_set_tuple_id (*isl_pointers__.p_isl_map_set_tuple_id)
++#define isl_map_universe (*isl_pointers__.p_isl_map_universe)
++#define isl_options_set_on_error (*isl_pointers__.p_isl_options_set_on_error)
++#ifdef HAVE_ISL_OPTIONS_SET_SCHEDULE_SERIALIZE_SCCS
++#define isl_options_set_schedule_serialize_sccs (*isl_pointers__.p_isl_options_set_schedule_serialize_sccs)
++#define isl_printer_set_yaml_style (*isl_pointers__.p_isl_printer_set_yaml_style)
++#else
++#define isl_options_set_schedule_fuse (*isl_pointers__.p_isl_options_set_schedule_fuse)
++#endif
++#define isl_options_set_schedule_max_constant_term (*isl_pointers__.p_isl_options_set_schedule_max_constant_term)
++#define isl_options_set_schedule_maximize_band_depth (*isl_pointers__.p_isl_options_set_schedule_maximize_band_depth)
++#define isl_printer_free (*isl_pointers__.p_isl_printer_free)
++#define isl_printer_print_aff (*isl_pointers__.p_isl_printer_print_aff)
++#define isl_printer_print_constraint (*isl_pointers__.p_isl_printer_print_constraint)
++#define isl_printer_print_map (*isl_pointers__.p_isl_printer_print_map)
++#define isl_printer_print_set (*isl_pointers__.p_isl_printer_print_set)
++#define isl_printer_to_file (*isl_pointers__.p_isl_printer_to_file)
++#define isl_pw_aff_add (*isl_pointers__.p_isl_pw_aff_add)
++#define isl_pw_aff_alloc (*isl_pointers__.p_isl_pw_aff_alloc)
++#define isl_pw_aff_copy (*isl_pointers__.p_isl_pw_aff_copy)
++#define isl_pw_aff_eq_set (*isl_pointers__.p_isl_pw_aff_eq_set)
++#define isl_pw_aff_free (*isl_pointers__.p_isl_pw_aff_free)
++#define isl_pw_aff_from_aff (*isl_pointers__.p_isl_pw_aff_from_aff)
++#define isl_pw_aff_ge_set (*isl_pointers__.p_isl_pw_aff_ge_set)
++#define isl_pw_aff_gt_set (*isl_pointers__.p_isl_pw_aff_gt_set)
++#define isl_pw_aff_is_cst (*isl_pointers__.p_isl_pw_aff_is_cst)
++#define isl_pw_aff_le_set (*isl_pointers__.p_isl_pw_aff_le_set)
++#define isl_pw_aff_lt_set (*isl_pointers__.p_isl_pw_aff_lt_set)
++#define isl_pw_aff_mul (*isl_pointers__.p_isl_pw_aff_mul)
++#define isl_pw_aff_ne_set (*isl_pointers__.p_isl_pw_aff_ne_set)
++#define isl_pw_aff_nonneg_set (*isl_pointers__.p_isl_pw_aff_nonneg_set)
++#define isl_pw_aff_set_tuple_id (*isl_pointers__.p_isl_pw_aff_set_tuple_id)
++#define isl_pw_aff_sub (*isl_pointers__.p_isl_pw_aff_sub)
++#define isl_pw_aff_zero_set (*isl_pointers__.p_isl_pw_aff_zero_set)
++#define isl_schedule_free (*isl_pointers__.p_isl_schedule_free)
++#define isl_schedule_get_band_forest (*isl_pointers__.p_isl_schedule_get_band_forest)
++#define isl_set_add_constraint (*isl_pointers__.p_isl_set_add_constraint)
++#define isl_set_add_dims (*isl_pointers__.p_isl_set_add_dims)
++#define isl_set_apply (*isl_pointers__.p_isl_set_apply)
++#define isl_set_coalesce (*isl_pointers__.p_isl_set_coalesce)
++#define isl_set_copy (*isl_pointers__.p_isl_set_copy)
++#define isl_set_dim (*isl_pointers__.p_isl_set_dim)
++#define isl_set_fix_si (*isl_pointers__.p_isl_set_fix_si)
++#define isl_set_free (*isl_pointers__.p_isl_set_free)
++#define isl_set_get_space (*isl_pointers__.p_isl_set_get_space)
++#define isl_set_get_tuple_id (*isl_pointers__.p_isl_set_get_tuple_id)
++#define isl_set_intersect (*isl_pointers__.p_isl_set_intersect)
++#define isl_set_is_empty (*isl_pointers__.p_isl_set_is_empty)
++#define isl_set_n_dim (*isl_pointers__.p_isl_set_n_dim)
++#define isl_set_nat_universe (*isl_pointers__.p_isl_set_nat_universe)
++#define isl_set_project_out (*isl_pointers__.p_isl_set_project_out)
++#define isl_set_set_tuple_id (*isl_pointers__.p_isl_set_set_tuple_id)
++#define isl_set_universe (*isl_pointers__.p_isl_set_universe)
++#define isl_space_add_dims (*isl_pointers__.p_isl_space_add_dims)
++#define isl_space_alloc (*isl_pointers__.p_isl_space_alloc)
++#define isl_space_copy (*isl_pointers__.p_isl_space_copy)
++#define isl_space_dim (*isl_pointers__.p_isl_space_dim)
++#define isl_space_domain (*isl_pointers__.p_isl_space_domain)
++#define isl_space_find_dim_by_id (*isl_pointers__.p_isl_space_find_dim_by_id)
++#define isl_space_free (*isl_pointers__.p_isl_space_free)
++#define isl_space_from_domain (*isl_pointers__.p_isl_space_from_domain)
++#define isl_space_get_tuple_id (*isl_pointers__.p_isl_space_get_tuple_id)
++#define isl_space_params_alloc (*isl_pointers__.p_isl_space_params_alloc)
++#define isl_space_range (*isl_pointers__.p_isl_space_range)
++#define isl_space_set_alloc (*isl_pointers__.p_isl_space_set_alloc)
++#define isl_space_set_dim_id (*isl_pointers__.p_isl_space_set_dim_id)
++#define isl_space_set_tuple_id (*isl_pointers__.p_isl_space_set_tuple_id)
++#define isl_union_map_add_map (*isl_pointers__.p_isl_union_map_add_map)
++#define isl_union_map_align_params (*isl_pointers__.p_isl_union_map_align_params)
++#define isl_union_map_apply_domain (*isl_pointers__.p_isl_union_map_apply_domain)
++#define isl_union_map_apply_range (*isl_pointers__.p_isl_union_map_apply_range)
++#define isl_union_map_compute_flow (*isl_pointers__.p_isl_union_map_compute_flow)
++#define isl_union_map_copy (*isl_pointers__.p_isl_union_map_copy)
++#define isl_union_map_empty (*isl_pointers__.p_isl_union_map_empty)
++#define isl_union_map_flat_range_product (*isl_pointers__.p_isl_union_map_flat_range_product)
++#define isl_union_map_foreach_map (*isl_pointers__.p_isl_union_map_foreach_map)
++#define isl_union_map_free (*isl_pointers__.p_isl_union_map_free)
++#define isl_union_map_from_map (*isl_pointers__.p_isl_union_map_from_map)
++#define isl_union_map_get_ctx (*isl_pointers__.p_isl_union_map_get_ctx)
++#define isl_union_map_get_space (*isl_pointers__.p_isl_union_map_get_space)
++#define isl_union_map_gist_domain (*isl_pointers__.p_isl_union_map_gist_domain)
++#define isl_union_map_gist_range (*isl_pointers__.p_isl_union_map_gist_range)
++#define isl_union_map_intersect_domain (*isl_pointers__.p_isl_union_map_intersect_domain)
++#define isl_union_map_is_empty (*isl_pointers__.p_isl_union_map_is_empty)
++#define isl_union_map_subtract (*isl_pointers__.p_isl_union_map_subtract)
++#define isl_union_map_union (*isl_pointers__.p_isl_union_map_union)
++#define isl_union_set_add_set (*isl_pointers__.p_isl_union_set_add_set)
++#define isl_union_set_compute_schedule (*isl_pointers__.p_isl_union_set_compute_schedule)
++#define isl_union_set_copy (*isl_pointers__.p_isl_union_set_copy)
++#define isl_union_set_empty (*isl_pointers__.p_isl_union_set_empty)
++#define isl_union_set_from_set (*isl_pointers__.p_isl_union_set_from_set)
++#define isl_aff_add_constant_val (*isl_pointers__.p_isl_aff_add_constant_val)
++#define isl_aff_get_coefficient_val (*isl_pointers__.p_isl_aff_get_coefficient_val)
++#define isl_aff_get_ctx (*isl_pointers__.p_isl_aff_get_ctx)
++#define isl_aff_mod_val (*isl_pointers__.p_isl_aff_mod_val)
++#define isl_ast_build_ast_from_schedule (*isl_pointers__.p_isl_ast_build_ast_from_schedule)
++#define isl_ast_build_free (*isl_pointers__.p_isl_ast_build_free)
++#define isl_ast_build_from_context (*isl_pointers__.p_isl_ast_build_from_context)
++#define isl_ast_build_get_ctx (*isl_pointers__.p_isl_ast_build_get_ctx)
++#define isl_ast_build_get_schedule (*isl_pointers__.p_isl_ast_build_get_schedule)
++#define isl_ast_build_get_schedule_space (*isl_pointers__.p_isl_ast_build_get_schedule_space)
++#define isl_ast_build_set_before_each_for (*isl_pointers__.p_isl_ast_build_set_before_each_for)
++#define isl_ast_build_set_options (*isl_pointers__.p_isl_ast_build_set_options)
++#define isl_ast_expr_free (*isl_pointers__.p_isl_ast_expr_free)
++#define isl_ast_expr_from_val (*isl_pointers__.p_isl_ast_expr_from_val)
++#define isl_ast_expr_get_ctx (*isl_pointers__.p_isl_ast_expr_get_ctx)
++#define isl_ast_expr_get_id (*isl_pointers__.p_isl_ast_expr_get_id)
++#define isl_ast_expr_get_op_arg (*isl_pointers__.p_isl_ast_expr_get_op_arg)
++#define isl_ast_expr_get_op_n_arg (*isl_pointers__.p_isl_ast_expr_get_op_n_arg)
++#define isl_ast_expr_get_op_type (*isl_pointers__.p_isl_ast_expr_get_op_type)
++#define isl_ast_expr_get_type (*isl_pointers__.p_isl_ast_expr_get_type)
++#define isl_ast_expr_get_val (*isl_pointers__.p_isl_ast_expr_get_val)
++#define isl_ast_expr_sub (*isl_pointers__.p_isl_ast_expr_sub)
++#define isl_ast_node_block_get_children (*isl_pointers__.p_isl_ast_node_block_get_children)
++#define isl_ast_node_for_get_body (*isl_pointers__.p_isl_ast_node_for_get_body)
++#define isl_ast_node_for_get_cond (*isl_pointers__.p_isl_ast_node_for_get_cond)
++#define isl_ast_node_for_get_inc (*isl_pointers__.p_isl_ast_node_for_get_inc)
++#define isl_ast_node_for_get_init (*isl_pointers__.p_isl_ast_node_for_get_init)
++#define isl_ast_node_for_get_iterator (*isl_pointers__.p_isl_ast_node_for_get_iterator)
++#define isl_ast_node_free (*isl_pointers__.p_isl_ast_node_free)
++#define isl_ast_node_get_annotation (*isl_pointers__.p_isl_ast_node_get_annotation)
++#define isl_ast_node_get_type (*isl_pointers__.p_isl_ast_node_get_type)
++#define isl_ast_node_if_get_cond (*isl_pointers__.p_isl_ast_node_if_get_cond)
++#define isl_ast_node_if_get_else (*isl_pointers__.p_isl_ast_node_if_get_else)
++#define isl_ast_node_if_get_then (*isl_pointers__.p_isl_ast_node_if_get_then)
++#define isl_ast_node_list_free (*isl_pointers__.p_isl_ast_node_list_free)
++#define isl_ast_node_list_get_ast_node (*isl_pointers__.p_isl_ast_node_list_get_ast_node)
++#define isl_ast_node_list_n_ast_node (*isl_pointers__.p_isl_ast_node_list_n_ast_node)
++#define isl_ast_node_user_get_expr (*isl_pointers__.p_isl_ast_node_user_get_expr)
++#define isl_constraint_set_coefficient_val (*isl_pointers__.p_isl_constraint_set_coefficient_val)
++#define isl_constraint_set_constant_val (*isl_pointers__.p_isl_constraint_set_constant_val)
++#define isl_id_get_user (*isl_pointers__.p_isl_id_get_user)
++#define isl_local_space_get_ctx (*isl_pointers__.p_isl_local_space_get_ctx)
++#define isl_map_fix_val (*isl_pointers__.p_isl_map_fix_val)
++#define isl_options_set_ast_build_atomic_upper_bound (*isl_pointers__.p_isl_options_set_ast_build_atomic_upper_bound)
++#define isl_printer_print_ast_node (*isl_pointers__.p_isl_printer_print_ast_node)
++#define isl_printer_print_str (*isl_pointers__.p_isl_printer_print_str)
++#define isl_printer_set_output_format (*isl_pointers__.p_isl_printer_set_output_format)
++#define isl_pw_aff_mod_val (*isl_pointers__.p_isl_pw_aff_mod_val)
++#define isl_schedule_constraints_compute_schedule (*isl_pointers__.p_isl_schedule_constraints_compute_schedule)
++#define isl_schedule_constraints_on_domain (*isl_pointers__.p_isl_schedule_constraints_on_domain)
++#define isl_schedule_constraints_set_coincidence (*isl_pointers__.p_isl_schedule_constraints_set_coincidence)
++#define isl_schedule_constraints_set_proximity (*isl_pointers__.p_isl_schedule_constraints_set_proximity)
++#define isl_schedule_constraints_set_validity (*isl_pointers__.p_isl_schedule_constraints_set_validity)
++#define isl_set_get_dim_id (*isl_pointers__.p_isl_set_get_dim_id)
++#define isl_set_max_val (*isl_pointers__.p_isl_set_max_val)
++#define isl_set_min_val (*isl_pointers__.p_isl_set_min_val)
++#define isl_set_params (*isl_pointers__.p_isl_set_params)
++#define isl_space_align_params (*isl_pointers__.p_isl_space_align_params)
++#define isl_space_map_from_domain_and_range (*isl_pointers__.p_isl_space_map_from_domain_and_range)
++#define isl_space_set_tuple_name (*isl_pointers__.p_isl_space_set_tuple_name)
++#define isl_space_wrap (*isl_pointers__.p_isl_space_wrap)
++#define isl_union_map_from_domain_and_range (*isl_pointers__.p_isl_union_map_from_domain_and_range)
++#define isl_union_map_range (*isl_pointers__.p_isl_union_map_range)
++#define isl_union_set_union (*isl_pointers__.p_isl_union_set_union)
++#define isl_union_set_universe (*isl_pointers__.p_isl_union_set_universe)
++#define isl_val_2exp (*isl_pointers__.p_isl_val_2exp)
++#define isl_val_add_ui (*isl_pointers__.p_isl_val_add_ui)
++#define isl_val_copy (*isl_pointers__.p_isl_val_copy)
++#define isl_val_free (*isl_pointers__.p_isl_val_free)
++#define isl_val_get_num_gmp (*isl_pointers__.p_isl_val_get_num_gmp)
++#define isl_val_int_from_gmp (*isl_pointers__.p_isl_val_int_from_gmp)
++#define isl_val_int_from_si (*isl_pointers__.p_isl_val_int_from_si)
++#define isl_val_int_from_ui (*isl_pointers__.p_isl_val_int_from_ui)
++#define isl_val_mul (*isl_pointers__.p_isl_val_mul)
++#define isl_val_neg (*isl_pointers__.p_isl_val_neg)
++#define isl_val_sub (*isl_pointers__.p_isl_val_sub)
++#define isl_printer_print_union_map (*isl_pointers__.p_isl_printer_print_union_map)
++#define isl_pw_aff_get_ctx (*isl_pointers__.p_isl_pw_aff_get_ctx)
++#define isl_val_is_int (*isl_pointers__.p_isl_val_is_int)
++#define isl_ctx_get_max_operations (*isl_pointers__.p_isl_ctx_get_max_operations)
++#define isl_ctx_set_max_operations (*isl_pointers__.p_isl_ctx_set_max_operations)
++#define isl_ctx_last_error (*isl_pointers__.p_isl_ctx_last_error)
++#define isl_ctx_reset_operations (*isl_pointers__.p_isl_ctx_reset_operations)
++#define isl_map_coalesce (*isl_pointers__.p_isl_map_coalesce)
++#define isl_printer_print_schedule (*isl_pointers__.p_isl_printer_print_schedule)
++#define isl_set_set_dim_id (*isl_pointers__.p_isl_set_set_dim_id)
++#define isl_union_map_coalesce (*isl_pointers__.p_isl_union_map_coalesce)
++
+ typedef struct poly_dr *poly_dr_p;
+ 
+ typedef struct poly_bb *poly_bb_p;
+--- gcc/graphite.c.jj	2015-11-04 14:15:32.000000000 +0100
++++ gcc/graphite.c	2015-11-04 14:56:02.645536409 +0100
+@@ -54,6 +54,34 @@ along with GCC; see the file COPYING3.
+ #include "tree-cfgcleanup.h"
+ #include "graphite.h"
+ 
++__typeof (isl_pointers__) isl_pointers__;
++
++static bool
++init_isl_pointers (void)
++{
++  void *h;
++
++  if (isl_pointers__.inited)
++    return isl_pointers__.h != NULL;
++  h = dlopen ("libisl.so.13", RTLD_LAZY);
++  isl_pointers__.h = h;
++  if (h == NULL)
++    return false;
++#define DYNSYM(x) \
++  do \
++    { \
++      union { __typeof (isl_pointers__.p_##x) p; void *q; } u; \
++      u.q = dlsym (h, #x); \
++      if (u.q == NULL) \
++	return false; \
++      isl_pointers__.p_##x = u.p; \
++    } \
++  while (0)
++  DYNSYMS
++#undef DYNSYM
++  return true;
++}
++
+ /* Print global statistics to FILE.  */
+ 
+ static void
+@@ -298,6 +326,15 @@ graphite_transform_loops (void)
+   if (parallelized_function_p (cfun->decl))
+     return;
+ 
++  if (number_of_loops (cfun) <= 1)
++    return;
++
++  if (!init_isl_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))

diff --git a/gcc6-java-nomulti.patch b/gcc6-java-nomulti.patch
new file mode 100644
index 0000000..17334aa
--- /dev/null
+++ b/gcc6-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/gcc6-libgo-p224.patch b/gcc6-libgo-p224.patch
new file mode 100644
index 0000000..e142083
--- /dev/null
+++ b/gcc6-libgo-p224.patch
@@ -0,0 +1,1106 @@
+--- libgo/Makefile.am.jj	2014-01-08 13:53:06.000000000 +0100
++++ libgo/Makefile.am	2014-03-05 15:20:09.938466093 +0100
+@@ -1133,7 +1133,6 @@ go_crypto_ecdsa_files = \
+ 	go/crypto/ecdsa/ecdsa.go
+ go_crypto_elliptic_files = \
+ 	go/crypto/elliptic/elliptic.go \
+-	go/crypto/elliptic/p224.go \
+ 	go/crypto/elliptic/p256.go
+ go_crypto_hmac_files = \
+ 	go/crypto/hmac/hmac.go
+--- libgo/Makefile.in.jj	2014-01-08 13:53:06.000000000 +0100
++++ libgo/Makefile.in	2014-03-05 15:20:20.372465471 +0100
+@@ -1291,7 +1291,6 @@ go_crypto_ecdsa_files = \
+ 
+ go_crypto_elliptic_files = \
+ 	go/crypto/elliptic/elliptic.go \
+-	go/crypto/elliptic/p224.go \
+ 	go/crypto/elliptic/p256.go
+ 
+ go_crypto_hmac_files = \
+--- libgo/go/crypto/elliptic/elliptic.go.jj	2013-11-07 11:59:09.000000000 +0100
++++ libgo/go/crypto/elliptic/elliptic.go	2014-03-05 15:21:04.186462859 +0100
+@@ -326,7 +326,6 @@ var p384 *CurveParams
+ var p521 *CurveParams
+ 
+ func initAll() {
+-	initP224()
+ 	initP256()
+ 	initP384()
+ 	initP521()
+--- libgo/go/crypto/elliptic/elliptic_test.go.jj	2013-11-07 11:59:09.000000000 +0100
++++ libgo/go/crypto/elliptic/elliptic_test.go	2014-03-05 15:46:03.739373453 +0100
+@@ -5,39 +5,16 @@
+ package elliptic
+ 
+ import (
+-	"crypto/rand"
+-	"encoding/hex"
+-	"fmt"
+ 	"math/big"
+ 	"testing"
+ )
+ 
+-func TestOnCurve(t *testing.T) {
+-	p224 := P224()
+-	if !p224.IsOnCurve(p224.Params().Gx, p224.Params().Gy) {
+-		t.Errorf("FAIL")
+-	}
+-}
+-
+-func TestOffCurve(t *testing.T) {
+-	p224 := P224()
+-	x, y := new(big.Int).SetInt64(1), new(big.Int).SetInt64(1)
+-	if p224.IsOnCurve(x, y) {
+-		t.Errorf("FAIL: point off curve is claimed to be on the curve")
+-	}
+-	b := Marshal(p224, x, y)
+-	x1, y1 := Unmarshal(p224, b)
+-	if x1 != nil || y1 != nil {
+-		t.Errorf("FAIL: unmarshalling a point not on the curve succeeded")
+-	}
+-}
+-
+ type baseMultTest struct {
+ 	k    string
+ 	x, y string
+ }
+ 
+-var p224BaseMultTests = []baseMultTest{
++var p256BaseMultTests = []baseMultTest{
+ 	{
+ 		"1",
+ 		"b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21",
+@@ -300,47 +277,12 @@ var p224BaseMultTests = []baseMultTest{
+ 	},
+ }
+ 
+-func TestBaseMult(t *testing.T) {
+-	p224 := P224()
+-	for i, e := range p224BaseMultTests {
+-		k, ok := new(big.Int).SetString(e.k, 10)
+-		if !ok {
+-			t.Errorf("%d: bad value for k: %s", i, e.k)
+-		}
+-		x, y := p224.ScalarBaseMult(k.Bytes())
+-		if fmt.Sprintf("%x", x) != e.x || fmt.Sprintf("%x", y) != e.y {
+-			t.Errorf("%d: bad output for k=%s: got (%x, %x), want (%s, %s)", i, e.k, x, y, e.x, e.y)
+-		}
+-		if testing.Short() && i > 5 {
+-			break
+-		}
+-	}
+-}
+-
+-func TestGenericBaseMult(t *testing.T) {
+-	// We use the P224 CurveParams directly in order to test the generic implementation.
+-	p224 := P224().Params()
+-	for i, e := range p224BaseMultTests {
+-		k, ok := new(big.Int).SetString(e.k, 10)
+-		if !ok {
+-			t.Errorf("%d: bad value for k: %s", i, e.k)
+-		}
+-		x, y := p224.ScalarBaseMult(k.Bytes())
+-		if fmt.Sprintf("%x", x) != e.x || fmt.Sprintf("%x", y) != e.y {
+-			t.Errorf("%d: bad output for k=%s: got (%x, %x), want (%s, %s)", i, e.k, x, y, e.x, e.y)
+-		}
+-		if testing.Short() && i > 5 {
+-			break
+-		}
+-	}
+-}
+-
+ func TestP256BaseMult(t *testing.T) {
+ 	p256 := P256()
+ 	p256Generic := p256.Params()
+ 
+-	scalars := make([]*big.Int, 0, len(p224BaseMultTests)+1)
+-	for _, e := range p224BaseMultTests {
++	scalars := make([]*big.Int, 0, len(p256BaseMultTests)+1)
++	for _, e := range p256BaseMultTests {
+ 		k, _ := new(big.Int).SetString(e.k, 10)
+ 		scalars = append(scalars, k)
+ 	}
+@@ -365,7 +307,7 @@ func TestP256Mult(t *testing.T) {
+ 	p256 := P256()
+ 	p256Generic := p256.Params()
+ 
+-	for i, e := range p224BaseMultTests {
++	for i, e := range p256BaseMultTests {
+ 		x, _ := new(big.Int).SetString(e.x, 16)
+ 		y, _ := new(big.Int).SetString(e.y, 16)
+ 		k, _ := new(big.Int).SetString(e.k, 10)
+@@ -386,7 +328,6 @@ func TestInfinity(t *testing.T) {
+ 		name  string
+ 		curve Curve
+ 	}{
+-		{"p224", P224()},
+ 		{"p256", P256()},
+ 	}
+ 
+@@ -419,53 +360,13 @@ func TestInfinity(t *testing.T) {
+ 	}
+ }
+ 
+-func BenchmarkBaseMult(b *testing.B) {
+-	b.ResetTimer()
+-	p224 := P224()
+-	e := p224BaseMultTests[25]
+-	k, _ := new(big.Int).SetString(e.k, 10)
+-	b.StartTimer()
+-	for i := 0; i < b.N; i++ {
+-		p224.ScalarBaseMult(k.Bytes())
+-	}
+-}
+-
+ func BenchmarkBaseMultP256(b *testing.B) {
+ 	b.ResetTimer()
+ 	p256 := P256()
+-	e := p224BaseMultTests[25]
++	e := p256BaseMultTests[25]
+ 	k, _ := new(big.Int).SetString(e.k, 10)
+ 	b.StartTimer()
+ 	for i := 0; i < b.N; i++ {
+ 		p256.ScalarBaseMult(k.Bytes())
+ 	}
+ }
+-
+-func TestMarshal(t *testing.T) {
+-	p224 := P224()
+-	_, x, y, err := GenerateKey(p224, rand.Reader)
+-	if err != nil {
+-		t.Error(err)
+-		return
+-	}
+-	serialized := Marshal(p224, x, y)
+-	xx, yy := Unmarshal(p224, serialized)
+-	if xx == nil {
+-		t.Error("failed to unmarshal")
+-		return
+-	}
+-	if xx.Cmp(x) != 0 || yy.Cmp(y) != 0 {
+-		t.Error("unmarshal returned different values")
+-		return
+-	}
+-}
+-
+-func TestP224Overflow(t *testing.T) {
+-	// This tests for a specific bug in the P224 implementation.
+-	p224 := P224()
+-	pointData, _ := hex.DecodeString("049B535B45FB0A2072398A6831834624C7E32CCFD5A4B933BCEAF77F1DD945E08BBE5178F5EDF5E733388F196D2A631D2E075BB16CBFEEA15B")
+-	x, y := Unmarshal(p224, pointData)
+-	if !p224.IsOnCurve(x, y) {
+-		t.Error("P224 failed to validate a correct point")
+-	}
+-}
+--- libgo/go/crypto/ecdsa/ecdsa_test.go.jj	2012-11-15 18:26:56.000000000 +0100
++++ libgo/go/crypto/ecdsa/ecdsa_test.go	2014-03-05 15:26:38.461442929 +0100
+@@ -33,7 +33,6 @@ func testKeyGeneration(t *testing.T, c e
+ }
+ 
+ func TestKeyGeneration(t *testing.T) {
+-	testKeyGeneration(t, elliptic.P224(), "p224")
+ 	if testing.Short() {
+ 		return
+ 	}
+@@ -63,7 +62,6 @@ func testSignAndVerify(t *testing.T, c e
+ }
+ 
+ func TestSignAndVerify(t *testing.T) {
+-	testSignAndVerify(t, elliptic.P224(), "p224")
+ 	if testing.Short() {
+ 		return
+ 	}
+@@ -129,8 +127,6 @@ func TestVectors(t *testing.T) {
+ 			parts := strings.SplitN(line, ",", 2)
+ 
+ 			switch parts[0] {
+-			case "P-224":
+-				pub.Curve = elliptic.P224()
+ 			case "P-256":
+ 				pub.Curve = elliptic.P256()
+ 			case "P-384":
+--- libgo/go/crypto/x509/x509.go.jj	2013-11-07 11:59:09.000000000 +0100
++++ libgo/go/crypto/x509/x509.go	2014-03-05 15:27:37.022439437 +0100
+@@ -308,9 +308,6 @@ func getPublicKeyAlgorithmFromOID(oid as
+ 
+ // RFC 5480, 2.1.1.1. Named Curve
+ //
+-// secp224r1 OBJECT IDENTIFIER ::= {
+-//   iso(1) identified-organization(3) certicom(132) curve(0) 33 }
+-//
+ // secp256r1 OBJECT IDENTIFIER ::= {
+ //   iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3)
+ //   prime(1) 7 }
+@@ -323,7 +320,6 @@ func getPublicKeyAlgorithmFromOID(oid as
+ //
+ // NB: secp256r1 is equivalent to prime256v1
+ var (
+-	oidNamedCurveP224 = asn1.ObjectIdentifier{1, 3, 132, 0, 33}
+ 	oidNamedCurveP256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 3, 1, 7}
+ 	oidNamedCurveP384 = asn1.ObjectIdentifier{1, 3, 132, 0, 34}
+ 	oidNamedCurveP521 = asn1.ObjectIdentifier{1, 3, 132, 0, 35}
+@@ -331,8 +327,6 @@ var (
+ 
+ func namedCurveFromOID(oid asn1.ObjectIdentifier) elliptic.Curve {
+ 	switch {
+-	case oid.Equal(oidNamedCurveP224):
+-		return elliptic.P224()
+ 	case oid.Equal(oidNamedCurveP256):
+ 		return elliptic.P256()
+ 	case oid.Equal(oidNamedCurveP384):
+@@ -345,8 +339,6 @@ func namedCurveFromOID(oid asn1.ObjectId
+ 
+ func oidFromNamedCurve(curve elliptic.Curve) (asn1.ObjectIdentifier, bool) {
+ 	switch curve {
+-	case elliptic.P224():
+-		return oidNamedCurveP224, true
+ 	case elliptic.P256():
+ 		return oidNamedCurveP256, true
+ 	case elliptic.P384():
+@@ -1466,7 +1458,7 @@ func signingParamsForPublicKey(pub inter
+ 		pubType = ECDSA
+ 
+ 		switch pub.Curve {
+-		case elliptic.P224(), elliptic.P256():
++		case elliptic.P256():
+ 			hashFunc = crypto.SHA256
+ 			sigAlgo.Algorithm = oidSignatureECDSAWithSHA256
+ 		case elliptic.P384():
+--- libgo/go/crypto/elliptic/p224.go.jj	2012-11-15 18:26:57.000000000 +0100
++++ libgo/go/crypto/elliptic/p224.go	2014-03-05 15:30:01.189430842 +0100
+@@ -1,765 +0,0 @@
+-// Copyright 2012 The Go Authors.  All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package elliptic
+-
+-// This is a constant-time, 32-bit implementation of P224. See FIPS 186-3,
+-// section D.2.2.
+-//
+-// See http://www.imperialviolet.org/2010/12/04/ecc.html ([1]) for background.
+-
+-import (
+-	"math/big"
+-)
+-
+-var p224 p224Curve
+-
+-type p224Curve struct {
+-	*CurveParams
+-	gx, gy, b p224FieldElement
+-}
+-
+-func initP224() {
+-	// See FIPS 186-3, section D.2.2
+-	p224.CurveParams = &CurveParams{Name: "P-224"}
+-	p224.P, _ = new(big.Int).SetString("26959946667150639794667015087019630673557916260026308143510066298881", 10)
+-	p224.N, _ = new(big.Int).SetString("26959946667150639794667015087019625940457807714424391721682722368061", 10)
+-	p224.B, _ = new(big.Int).SetString("b4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4", 16)
+-	p224.Gx, _ = new(big.Int).SetString("b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21", 16)
+-	p224.Gy, _ = new(big.Int).SetString("bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34", 16)
+-	p224.BitSize = 224
+-
+-	p224FromBig(&p224.gx, p224.Gx)
+-	p224FromBig(&p224.gy, p224.Gy)
+-	p224FromBig(&p224.b, p224.B)
+-}
+-
+-// P224 returns a Curve which implements P-224 (see FIPS 186-3, section D.2.2)
+-func P224() Curve {
+-	initonce.Do(initAll)
+-	return p224
+-}
+-
+-func (curve p224Curve) Params() *CurveParams {
+-	return curve.CurveParams
+-}
+-
+-func (curve p224Curve) IsOnCurve(bigX, bigY *big.Int) bool {
+-	var x, y p224FieldElement
+-	p224FromBig(&x, bigX)
+-	p224FromBig(&y, bigY)
+-
+-	// y² = x³ - 3x + b
+-	var tmp p224LargeFieldElement
+-	var x3 p224FieldElement
+-	p224Square(&x3, &x, &tmp)
+-	p224Mul(&x3, &x3, &x, &tmp)
+-
+-	for i := 0; i < 8; i++ {
+-		x[i] *= 3
+-	}
+-	p224Sub(&x3, &x3, &x)
+-	p224Reduce(&x3)
+-	p224Add(&x3, &x3, &curve.b)
+-	p224Contract(&x3, &x3)
+-
+-	p224Square(&y, &y, &tmp)
+-	p224Contract(&y, &y)
+-
+-	for i := 0; i < 8; i++ {
+-		if y[i] != x3[i] {
+-			return false
+-		}
+-	}
+-	return true
+-}
+-
+-func (p224Curve) Add(bigX1, bigY1, bigX2, bigY2 *big.Int) (x, y *big.Int) {
+-	var x1, y1, z1, x2, y2, z2, x3, y3, z3 p224FieldElement
+-
+-	p224FromBig(&x1, bigX1)
+-	p224FromBig(&y1, bigY1)
+-	if bigX1.Sign() != 0 || bigY1.Sign() != 0 {
+-		z1[0] = 1
+-	}
+-	p224FromBig(&x2, bigX2)
+-	p224FromBig(&y2, bigY2)
+-	if bigX2.Sign() != 0 || bigY2.Sign() != 0 {
+-		z2[0] = 1
+-	}
+-
+-	p224AddJacobian(&x3, &y3, &z3, &x1, &y1, &z1, &x2, &y2, &z2)
+-	return p224ToAffine(&x3, &y3, &z3)
+-}
+-
+-func (p224Curve) Double(bigX1, bigY1 *big.Int) (x, y *big.Int) {
+-	var x1, y1, z1, x2, y2, z2 p224FieldElement
+-
+-	p224FromBig(&x1, bigX1)
+-	p224FromBig(&y1, bigY1)
+-	z1[0] = 1
+-
+-	p224DoubleJacobian(&x2, &y2, &z2, &x1, &y1, &z1)
+-	return p224ToAffine(&x2, &y2, &z2)
+-}
+-
+-func (p224Curve) ScalarMult(bigX1, bigY1 *big.Int, scalar []byte) (x, y *big.Int) {
+-	var x1, y1, z1, x2, y2, z2 p224FieldElement
+-
+-	p224FromBig(&x1, bigX1)
+-	p224FromBig(&y1, bigY1)
+-	z1[0] = 1
+-
+-	p224ScalarMult(&x2, &y2, &z2, &x1, &y1, &z1, scalar)
+-	return p224ToAffine(&x2, &y2, &z2)
+-}
+-
+-func (curve p224Curve) ScalarBaseMult(scalar []byte) (x, y *big.Int) {
+-	var z1, x2, y2, z2 p224FieldElement
+-
+-	z1[0] = 1
+-	p224ScalarMult(&x2, &y2, &z2, &curve.gx, &curve.gy, &z1, scalar)
+-	return p224ToAffine(&x2, &y2, &z2)
+-}
+-
+-// Field element functions.
+-//
+-// The field that we're dealing with is ℤ/pℤ where p = 2**224 - 2**96 + 1.
+-//
+-// Field elements are represented by a FieldElement, which is a typedef to an
+-// array of 8 uint32's. The value of a FieldElement, a, is:
+-//   a[0] + 2**28·a[1] + 2**56·a[1] + ... + 2**196·a[7]
+-//
+-// Using 28-bit limbs means that there's only 4 bits of headroom, which is less
+-// than we would really like. But it has the useful feature that we hit 2**224
+-// exactly, making the reflections during a reduce much nicer.
+-type p224FieldElement [8]uint32
+-
+-// p224P is the order of the field, represented as a p224FieldElement.
+-var p224P = [8]uint32{1, 0, 0, 0xffff000, 0xfffffff, 0xfffffff, 0xfffffff, 0xfffffff}
+-
+-// p224IsZero returns 1 if a == 0 mod p and 0 otherwise.
+-//
+-// a[i] < 2**29
+-func p224IsZero(a *p224FieldElement) uint32 {
+-	// Since a p224FieldElement contains 224 bits there are two possible
+-	// representations of 0: 0 and p.
+-	var minimal p224FieldElement
+-	p224Contract(&minimal, a)
+-
+-	var isZero, isP uint32
+-	for i, v := range minimal {
+-		isZero |= v
+-		isP |= v - p224P[i]
+-	}
+-
+-	// If either isZero or isP is 0, then we should return 1.
+-	isZero |= isZero >> 16
+-	isZero |= isZero >> 8
+-	isZero |= isZero >> 4
+-	isZero |= isZero >> 2
+-	isZero |= isZero >> 1
+-
+-	isP |= isP >> 16
+-	isP |= isP >> 8
+-	isP |= isP >> 4
+-	isP |= isP >> 2
+-	isP |= isP >> 1
+-
+-	// For isZero and isP, the LSB is 0 iff all the bits are zero.
+-	result := isZero & isP
+-	result = (^result) & 1
+-
+-	return result
+-}
+-
+-// p224Add computes *out = a+b
+-//
+-// a[i] + b[i] < 2**32
+-func p224Add(out, a, b *p224FieldElement) {
+-	for i := 0; i < 8; i++ {
+-		out[i] = a[i] + b[i]
+-	}
+-}
+-
+-const two31p3 = 1<<31 + 1<<3
+-const two31m3 = 1<<31 - 1<<3
+-const two31m15m3 = 1<<31 - 1<<15 - 1<<3
+-
+-// p224ZeroModP31 is 0 mod p where bit 31 is set in all limbs so that we can
+-// subtract smaller amounts without underflow. See the section "Subtraction" in
+-// [1] for reasoning.
+-var p224ZeroModP31 = []uint32{two31p3, two31m3, two31m3, two31m15m3, two31m3, two31m3, two31m3, two31m3}
+-
+-// p224Sub computes *out = a-b
+-//
+-// a[i], b[i] < 2**30
+-// out[i] < 2**32
+-func p224Sub(out, a, b *p224FieldElement) {
+-	for i := 0; i < 8; i++ {
+-		out[i] = a[i] + p224ZeroModP31[i] - b[i]
+-	}
+-}
+-
+-// LargeFieldElement also represents an element of the field. The limbs are
+-// still spaced 28-bits apart and in little-endian order. So the limbs are at
+-// 0, 28, 56, ..., 392 bits, each 64-bits wide.
+-type p224LargeFieldElement [15]uint64
+-
+-const two63p35 = 1<<63 + 1<<35
+-const two63m35 = 1<<63 - 1<<35
+-const two63m35m19 = 1<<63 - 1<<35 - 1<<19
+-
+-// p224ZeroModP63 is 0 mod p where bit 63 is set in all limbs. See the section
+-// "Subtraction" in [1] for why.
+-var p224ZeroModP63 = [8]uint64{two63p35, two63m35, two63m35, two63m35, two63m35m19, two63m35, two63m35, two63m35}
+-
+-const bottom12Bits = 0xfff
+-const bottom28Bits = 0xfffffff
+-
+-// p224Mul computes *out = a*b
+-//
+-// a[i] < 2**29, b[i] < 2**30 (or vice versa)
+-// out[i] < 2**29
+-func p224Mul(out, a, b *p224FieldElement, tmp *p224LargeFieldElement) {
+-	for i := 0; i < 15; i++ {
+-		tmp[i] = 0
+-	}
+-
+-	for i := 0; i < 8; i++ {
+-		for j := 0; j < 8; j++ {
+-			tmp[i+j] += uint64(a[i]) * uint64(b[j])
+-		}
+-	}
+-
+-	p224ReduceLarge(out, tmp)
+-}
+-
+-// Square computes *out = a*a
+-//
+-// a[i] < 2**29
+-// out[i] < 2**29
+-func p224Square(out, a *p224FieldElement, tmp *p224LargeFieldElement) {
+-	for i := 0; i < 15; i++ {
+-		tmp[i] = 0
+-	}
+-
+-	for i := 0; i < 8; i++ {
+-		for j := 0; j <= i; j++ {
+-			r := uint64(a[i]) * uint64(a[j])
+-			if i == j {
+-				tmp[i+j] += r
+-			} else {
+-				tmp[i+j] += r << 1
+-			}
+-		}
+-	}
+-
+-	p224ReduceLarge(out, tmp)
+-}
+-
+-// ReduceLarge converts a p224LargeFieldElement to a p224FieldElement.
+-//
+-// in[i] < 2**62
+-func p224ReduceLarge(out *p224FieldElement, in *p224LargeFieldElement) {
+-	for i := 0; i < 8; i++ {
+-		in[i] += p224ZeroModP63[i]
+-	}
+-
+-	// Eliminate the coefficients at 2**224 and greater.
+-	for i := 14; i >= 8; i-- {
+-		in[i-8] -= in[i]
+-		in[i-5] += (in[i] & 0xffff) << 12
+-		in[i-4] += in[i] >> 16
+-	}
+-	in[8] = 0
+-	// in[0..8] < 2**64
+-
+-	// As the values become small enough, we start to store them in |out|
+-	// and use 32-bit operations.
+-	for i := 1; i < 8; i++ {
+-		in[i+1] += in[i] >> 28
+-		out[i] = uint32(in[i] & bottom28Bits)
+-	}
+-	in[0] -= in[8]
+-	out[3] += uint32(in[8]&0xffff) << 12
+-	out[4] += uint32(in[8] >> 16)
+-	// in[0] < 2**64
+-	// out[3] < 2**29
+-	// out[4] < 2**29
+-	// out[1,2,5..7] < 2**28
+-
+-	out[0] = uint32(in[0] & bottom28Bits)
+-	out[1] += uint32((in[0] >> 28) & bottom28Bits)
+-	out[2] += uint32(in[0] >> 56)
+-	// out[0] < 2**28
+-	// out[1..4] < 2**29
+-	// out[5..7] < 2**28
+-}
+-
+-// Reduce reduces the coefficients of a to smaller bounds.
+-//
+-// On entry: a[i] < 2**31 + 2**30
+-// On exit: a[i] < 2**29
+-func p224Reduce(a *p224FieldElement) {
+-	for i := 0; i < 7; i++ {
+-		a[i+1] += a[i] >> 28
+-		a[i] &= bottom28Bits
+-	}
+-	top := a[7] >> 28
+-	a[7] &= bottom28Bits
+-
+-	// top < 2**4
+-	mask := top
+-	mask |= mask >> 2
+-	mask |= mask >> 1
+-	mask <<= 31
+-	mask = uint32(int32(mask) >> 31)
+-	// Mask is all ones if top != 0, all zero otherwise
+-
+-	a[0] -= top
+-	a[3] += top << 12
+-
+-	// We may have just made a[0] negative but, if we did, then we must
+-	// have added something to a[3], this it's > 2**12. Therefore we can
+-	// carry down to a[0].
+-	a[3] -= 1 & mask
+-	a[2] += mask & (1<<28 - 1)
+-	a[1] += mask & (1<<28 - 1)
+-	a[0] += mask & (1 << 28)
+-}
+-
+-// p224Invert calculates *out = in**-1 by computing in**(2**224 - 2**96 - 1),
+-// i.e. Fermat's little theorem.
+-func p224Invert(out, in *p224FieldElement) {
+-	var f1, f2, f3, f4 p224FieldElement
+-	var c p224LargeFieldElement
+-
+-	p224Square(&f1, in, &c)    // 2
+-	p224Mul(&f1, &f1, in, &c)  // 2**2 - 1
+-	p224Square(&f1, &f1, &c)   // 2**3 - 2
+-	p224Mul(&f1, &f1, in, &c)  // 2**3 - 1
+-	p224Square(&f2, &f1, &c)   // 2**4 - 2
+-	p224Square(&f2, &f2, &c)   // 2**5 - 4
+-	p224Square(&f2, &f2, &c)   // 2**6 - 8
+-	p224Mul(&f1, &f1, &f2, &c) // 2**6 - 1
+-	p224Square(&f2, &f1, &c)   // 2**7 - 2
+-	for i := 0; i < 5; i++ {   // 2**12 - 2**6
+-		p224Square(&f2, &f2, &c)
+-	}
+-	p224Mul(&f2, &f2, &f1, &c) // 2**12 - 1
+-	p224Square(&f3, &f2, &c)   // 2**13 - 2
+-	for i := 0; i < 11; i++ {  // 2**24 - 2**12
+-		p224Square(&f3, &f3, &c)
+-	}
+-	p224Mul(&f2, &f3, &f2, &c) // 2**24 - 1
+-	p224Square(&f3, &f2, &c)   // 2**25 - 2
+-	for i := 0; i < 23; i++ {  // 2**48 - 2**24
+-		p224Square(&f3, &f3, &c)
+-	}
+-	p224Mul(&f3, &f3, &f2, &c) // 2**48 - 1
+-	p224Square(&f4, &f3, &c)   // 2**49 - 2
+-	for i := 0; i < 47; i++ {  // 2**96 - 2**48
+-		p224Square(&f4, &f4, &c)
+-	}
+-	p224Mul(&f3, &f3, &f4, &c) // 2**96 - 1
+-	p224Square(&f4, &f3, &c)   // 2**97 - 2
+-	for i := 0; i < 23; i++ {  // 2**120 - 2**24
+-		p224Square(&f4, &f4, &c)
+-	}
+-	p224Mul(&f2, &f4, &f2, &c) // 2**120 - 1
+-	for i := 0; i < 6; i++ {   // 2**126 - 2**6
+-		p224Square(&f2, &f2, &c)
+-	}
+-	p224Mul(&f1, &f1, &f2, &c) // 2**126 - 1
+-	p224Square(&f1, &f1, &c)   // 2**127 - 2
+-	p224Mul(&f1, &f1, in, &c)  // 2**127 - 1
+-	for i := 0; i < 97; i++ {  // 2**224 - 2**97
+-		p224Square(&f1, &f1, &c)
+-	}
+-	p224Mul(out, &f1, &f3, &c) // 2**224 - 2**96 - 1
+-}
+-
+-// p224Contract converts a FieldElement to its unique, minimal form.
+-//
+-// On entry, in[i] < 2**29
+-// On exit, in[i] < 2**28
+-func p224Contract(out, in *p224FieldElement) {
+-	copy(out[:], in[:])
+-
+-	for i := 0; i < 7; i++ {
+-		out[i+1] += out[i] >> 28
+-		out[i] &= bottom28Bits
+-	}
+-	top := out[7] >> 28
+-	out[7] &= bottom28Bits
+-
+-	out[0] -= top
+-	out[3] += top << 12
+-
+-	// We may just have made out[i] negative. So we carry down. If we made
+-	// out[0] negative then we know that out[3] is sufficiently positive
+-	// because we just added to it.
+-	for i := 0; i < 3; i++ {
+-		mask := uint32(int32(out[i]) >> 31)
+-		out[i] += (1 << 28) & mask
+-		out[i+1] -= 1 & mask
+-	}
+-
+-	// We might have pushed out[3] over 2**28 so we perform another, partial,
+-	// carry chain.
+-	for i := 3; i < 7; i++ {
+-		out[i+1] += out[i] >> 28
+-		out[i] &= bottom28Bits
+-	}
+-	top = out[7] >> 28
+-	out[7] &= bottom28Bits
+-
+-	// Eliminate top while maintaining the same value mod p.
+-	out[0] -= top
+-	out[3] += top << 12
+-
+-	// There are two cases to consider for out[3]:
+-	//   1) The first time that we eliminated top, we didn't push out[3] over
+-	//      2**28. In this case, the partial carry chain didn't change any values
+-	//      and top is zero.
+-	//   2) We did push out[3] over 2**28 the first time that we eliminated top.
+-	//      The first value of top was in [0..16), therefore, prior to eliminating
+-	//      the first top, 0xfff1000 <= out[3] <= 0xfffffff. Therefore, after
+-	//      overflowing and being reduced by the second carry chain, out[3] <=
+-	//      0xf000. Thus it cannot have overflowed when we eliminated top for the
+-	//      second time.
+-
+-	// Again, we may just have made out[0] negative, so do the same carry down.
+-	// As before, if we made out[0] negative then we know that out[3] is
+-	// sufficiently positive.
+-	for i := 0; i < 3; i++ {
+-		mask := uint32(int32(out[i]) >> 31)
+-		out[i] += (1 << 28) & mask
+-		out[i+1] -= 1 & mask
+-	}
+-
+-	// Now we see if the value is >= p and, if so, subtract p.
+-
+-	// First we build a mask from the top four limbs, which must all be
+-	// equal to bottom28Bits if the whole value is >= p. If top4AllOnes
+-	// ends up with any zero bits in the bottom 28 bits, then this wasn't
+-	// true.
+-	top4AllOnes := uint32(0xffffffff)
+-	for i := 4; i < 8; i++ {
+-		top4AllOnes &= out[i]
+-	}
+-	top4AllOnes |= 0xf0000000
+-	// Now we replicate any zero bits to all the bits in top4AllOnes.
+-	top4AllOnes &= top4AllOnes >> 16
+-	top4AllOnes &= top4AllOnes >> 8
+-	top4AllOnes &= top4AllOnes >> 4
+-	top4AllOnes &= top4AllOnes >> 2
+-	top4AllOnes &= top4AllOnes >> 1
+-	top4AllOnes = uint32(int32(top4AllOnes<<31) >> 31)
+-
+-	// Now we test whether the bottom three limbs are non-zero.
+-	bottom3NonZero := out[0] | out[1] | out[2]
+-	bottom3NonZero |= bottom3NonZero >> 16
+-	bottom3NonZero |= bottom3NonZero >> 8
+-	bottom3NonZero |= bottom3NonZero >> 4
+-	bottom3NonZero |= bottom3NonZero >> 2
+-	bottom3NonZero |= bottom3NonZero >> 1
+-	bottom3NonZero = uint32(int32(bottom3NonZero<<31) >> 31)
+-
+-	// Everything depends on the value of out[3].
+-	//    If it's > 0xffff000 and top4AllOnes != 0 then the whole value is >= p
+-	//    If it's = 0xffff000 and top4AllOnes != 0 and bottom3NonZero != 0,
+-	//      then the whole value is >= p
+-	//    If it's < 0xffff000, then the whole value is < p
+-	n := out[3] - 0xffff000
+-	out3Equal := n
+-	out3Equal |= out3Equal >> 16
+-	out3Equal |= out3Equal >> 8
+-	out3Equal |= out3Equal >> 4
+-	out3Equal |= out3Equal >> 2
+-	out3Equal |= out3Equal >> 1
+-	out3Equal = ^uint32(int32(out3Equal<<31) >> 31)
+-
+-	// If out[3] > 0xffff000 then n's MSB will be zero.
+-	out3GT := ^uint32(int32(n) >> 31)
+-
+-	mask := top4AllOnes & ((out3Equal & bottom3NonZero) | out3GT)
+-	out[0] -= 1 & mask
+-	out[3] -= 0xffff000 & mask
+-	out[4] -= 0xfffffff & mask
+-	out[5] -= 0xfffffff & mask
+-	out[6] -= 0xfffffff & mask
+-	out[7] -= 0xfffffff & mask
+-}
+-
+-// Group element functions.
+-//
+-// These functions deal with group elements. The group is an elliptic curve
+-// group with a = -3 defined in FIPS 186-3, section D.2.2.
+-
+-// p224AddJacobian computes *out = a+b where a != b.
+-func p224AddJacobian(x3, y3, z3, x1, y1, z1, x2, y2, z2 *p224FieldElement) {
+-	// See http://hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#addition-p224Add-2007-bl
+-	var z1z1, z2z2, u1, u2, s1, s2, h, i, j, r, v p224FieldElement
+-	var c p224LargeFieldElement
+-
+-	z1IsZero := p224IsZero(z1)
+-	z2IsZero := p224IsZero(z2)
+-
+-	// Z1Z1 = Z1²
+-	p224Square(&z1z1, z1, &c)
+-	// Z2Z2 = Z2²
+-	p224Square(&z2z2, z2, &c)
+-	// U1 = X1*Z2Z2
+-	p224Mul(&u1, x1, &z2z2, &c)
+-	// U2 = X2*Z1Z1
+-	p224Mul(&u2, x2, &z1z1, &c)
+-	// S1 = Y1*Z2*Z2Z2
+-	p224Mul(&s1, z2, &z2z2, &c)
+-	p224Mul(&s1, y1, &s1, &c)
+-	// S2 = Y2*Z1*Z1Z1
+-	p224Mul(&s2, z1, &z1z1, &c)
+-	p224Mul(&s2, y2, &s2, &c)
+-	// H = U2-U1
+-	p224Sub(&h, &u2, &u1)
+-	p224Reduce(&h)
+-	xEqual := p224IsZero(&h)
+-	// I = (2*H)²
+-	for j := 0; j < 8; j++ {
+-		i[j] = h[j] << 1
+-	}
+-	p224Reduce(&i)
+-	p224Square(&i, &i, &c)
+-	// J = H*I
+-	p224Mul(&j, &h, &i, &c)
+-	// r = 2*(S2-S1)
+-	p224Sub(&r, &s2, &s1)
+-	p224Reduce(&r)
+-	yEqual := p224IsZero(&r)
+-	if xEqual == 1 && yEqual == 1 && z1IsZero == 0 && z2IsZero == 0 {
+-		p224DoubleJacobian(x3, y3, z3, x1, y1, z1)
+-		return
+-	}
+-	for i := 0; i < 8; i++ {
+-		r[i] <<= 1
+-	}
+-	p224Reduce(&r)
+-	// V = U1*I
+-	p224Mul(&v, &u1, &i, &c)
+-	// Z3 = ((Z1+Z2)²-Z1Z1-Z2Z2)*H
+-	p224Add(&z1z1, &z1z1, &z2z2)
+-	p224Add(&z2z2, z1, z2)
+-	p224Reduce(&z2z2)
+-	p224Square(&z2z2, &z2z2, &c)
+-	p224Sub(z3, &z2z2, &z1z1)
+-	p224Reduce(z3)
+-	p224Mul(z3, z3, &h, &c)
+-	// X3 = r²-J-2*V
+-	for i := 0; i < 8; i++ {
+-		z1z1[i] = v[i] << 1
+-	}
+-	p224Add(&z1z1, &j, &z1z1)
+-	p224Reduce(&z1z1)
+-	p224Square(x3, &r, &c)
+-	p224Sub(x3, x3, &z1z1)
+-	p224Reduce(x3)
+-	// Y3 = r*(V-X3)-2*S1*J
+-	for i := 0; i < 8; i++ {
+-		s1[i] <<= 1
+-	}
+-	p224Mul(&s1, &s1, &j, &c)
+-	p224Sub(&z1z1, &v, x3)
+-	p224Reduce(&z1z1)
+-	p224Mul(&z1z1, &z1z1, &r, &c)
+-	p224Sub(y3, &z1z1, &s1)
+-	p224Reduce(y3)
+-
+-	p224CopyConditional(x3, x2, z1IsZero)
+-	p224CopyConditional(x3, x1, z2IsZero)
+-	p224CopyConditional(y3, y2, z1IsZero)
+-	p224CopyConditional(y3, y1, z2IsZero)
+-	p224CopyConditional(z3, z2, z1IsZero)
+-	p224CopyConditional(z3, z1, z2IsZero)
+-}
+-
+-// p224DoubleJacobian computes *out = a+a.
+-func p224DoubleJacobian(x3, y3, z3, x1, y1, z1 *p224FieldElement) {
+-	var delta, gamma, beta, alpha, t p224FieldElement
+-	var c p224LargeFieldElement
+-
+-	p224Square(&delta, z1, &c)
+-	p224Square(&gamma, y1, &c)
+-	p224Mul(&beta, x1, &gamma, &c)
+-
+-	// alpha = 3*(X1-delta)*(X1+delta)
+-	p224Add(&t, x1, &delta)
+-	for i := 0; i < 8; i++ {
+-		t[i] += t[i] << 1
+-	}
+-	p224Reduce(&t)
+-	p224Sub(&alpha, x1, &delta)
+-	p224Reduce(&alpha)
+-	p224Mul(&alpha, &alpha, &t, &c)
+-
+-	// Z3 = (Y1+Z1)²-gamma-delta
+-	p224Add(z3, y1, z1)
+-	p224Reduce(z3)
+-	p224Square(z3, z3, &c)
+-	p224Sub(z3, z3, &gamma)
+-	p224Reduce(z3)
+-	p224Sub(z3, z3, &delta)
+-	p224Reduce(z3)
+-
+-	// X3 = alpha²-8*beta
+-	for i := 0; i < 8; i++ {
+-		delta[i] = beta[i] << 3
+-	}
+-	p224Reduce(&delta)
+-	p224Square(x3, &alpha, &c)
+-	p224Sub(x3, x3, &delta)
+-	p224Reduce(x3)
+-
+-	// Y3 = alpha*(4*beta-X3)-8*gamma²
+-	for i := 0; i < 8; i++ {
+-		beta[i] <<= 2
+-	}
+-	p224Sub(&beta, &beta, x3)
+-	p224Reduce(&beta)
+-	p224Square(&gamma, &gamma, &c)
+-	for i := 0; i < 8; i++ {
+-		gamma[i] <<= 3
+-	}
+-	p224Reduce(&gamma)
+-	p224Mul(y3, &alpha, &beta, &c)
+-	p224Sub(y3, y3, &gamma)
+-	p224Reduce(y3)
+-}
+-
+-// p224CopyConditional sets *out = *in iff the least-significant-bit of control
+-// is true, and it runs in constant time.
+-func p224CopyConditional(out, in *p224FieldElement, control uint32) {
+-	control <<= 31
+-	control = uint32(int32(control) >> 31)
+-
+-	for i := 0; i < 8; i++ {
+-		out[i] ^= (out[i] ^ in[i]) & control
+-	}
+-}
+-
+-func p224ScalarMult(outX, outY, outZ, inX, inY, inZ *p224FieldElement, scalar []byte) {
+-	var xx, yy, zz p224FieldElement
+-	for i := 0; i < 8; i++ {
+-		outX[i] = 0
+-		outY[i] = 0
+-		outZ[i] = 0
+-	}
+-
+-	for _, byte := range scalar {
+-		for bitNum := uint(0); bitNum < 8; bitNum++ {
+-			p224DoubleJacobian(outX, outY, outZ, outX, outY, outZ)
+-			bit := uint32((byte >> (7 - bitNum)) & 1)
+-			p224AddJacobian(&xx, &yy, &zz, inX, inY, inZ, outX, outY, outZ)
+-			p224CopyConditional(outX, &xx, bit)
+-			p224CopyConditional(outY, &yy, bit)
+-			p224CopyConditional(outZ, &zz, bit)
+-		}
+-	}
+-}
+-
+-// p224ToAffine converts from Jacobian to affine form.
+-func p224ToAffine(x, y, z *p224FieldElement) (*big.Int, *big.Int) {
+-	var zinv, zinvsq, outx, outy p224FieldElement
+-	var tmp p224LargeFieldElement
+-
+-	if isPointAtInfinity := p224IsZero(z); isPointAtInfinity == 1 {
+-		return new(big.Int), new(big.Int)
+-	}
+-
+-	p224Invert(&zinv, z)
+-	p224Square(&zinvsq, &zinv, &tmp)
+-	p224Mul(x, x, &zinvsq, &tmp)
+-	p224Mul(&zinvsq, &zinvsq, &zinv, &tmp)
+-	p224Mul(y, y, &zinvsq, &tmp)
+-
+-	p224Contract(&outx, x)
+-	p224Contract(&outy, y)
+-	return p224ToBig(&outx), p224ToBig(&outy)
+-}
+-
+-// get28BitsFromEnd returns the least-significant 28 bits from buf>>shift,
+-// where buf is interpreted as a big-endian number.
+-func get28BitsFromEnd(buf []byte, shift uint) (uint32, []byte) {
+-	var ret uint32
+-
+-	for i := uint(0); i < 4; i++ {
+-		var b byte
+-		if l := len(buf); l > 0 {
+-			b = buf[l-1]
+-			// We don't remove the byte if we're about to return and we're not
+-			// reading all of it.
+-			if i != 3 || shift == 4 {
+-				buf = buf[:l-1]
+-			}
+-		}
+-		ret |= uint32(b) << (8 * i) >> shift
+-	}
+-	ret &= bottom28Bits
+-	return ret, buf
+-}
+-
+-// p224FromBig sets *out = *in.
+-func p224FromBig(out *p224FieldElement, in *big.Int) {
+-	bytes := in.Bytes()
+-	out[0], bytes = get28BitsFromEnd(bytes, 0)
+-	out[1], bytes = get28BitsFromEnd(bytes, 4)
+-	out[2], bytes = get28BitsFromEnd(bytes, 0)
+-	out[3], bytes = get28BitsFromEnd(bytes, 4)
+-	out[4], bytes = get28BitsFromEnd(bytes, 0)
+-	out[5], bytes = get28BitsFromEnd(bytes, 4)
+-	out[6], bytes = get28BitsFromEnd(bytes, 0)
+-	out[7], bytes = get28BitsFromEnd(bytes, 4)
+-}
+-
+-// p224ToBig returns in as a big.Int.
+-func p224ToBig(in *p224FieldElement) *big.Int {
+-	var buf [28]byte
+-	buf[27] = byte(in[0])
+-	buf[26] = byte(in[0] >> 8)
+-	buf[25] = byte(in[0] >> 16)
+-	buf[24] = byte(((in[0] >> 24) & 0x0f) | (in[1]<<4)&0xf0)
+-
+-	buf[23] = byte(in[1] >> 4)
+-	buf[22] = byte(in[1] >> 12)
+-	buf[21] = byte(in[1] >> 20)
+-
+-	buf[20] = byte(in[2])
+-	buf[19] = byte(in[2] >> 8)
+-	buf[18] = byte(in[2] >> 16)
+-	buf[17] = byte(((in[2] >> 24) & 0x0f) | (in[3]<<4)&0xf0)
+-
+-	buf[16] = byte(in[3] >> 4)
+-	buf[15] = byte(in[3] >> 12)
+-	buf[14] = byte(in[3] >> 20)
+-
+-	buf[13] = byte(in[4])
+-	buf[12] = byte(in[4] >> 8)
+-	buf[11] = byte(in[4] >> 16)
+-	buf[10] = byte(((in[4] >> 24) & 0x0f) | (in[5]<<4)&0xf0)
+-
+-	buf[9] = byte(in[5] >> 4)
+-	buf[8] = byte(in[5] >> 12)
+-	buf[7] = byte(in[5] >> 20)
+-
+-	buf[6] = byte(in[6])
+-	buf[5] = byte(in[6] >> 8)
+-	buf[4] = byte(in[6] >> 16)
+-	buf[3] = byte(((in[6] >> 24) & 0x0f) | (in[7]<<4)&0xf0)
+-
+-	buf[2] = byte(in[7] >> 4)
+-	buf[1] = byte(in[7] >> 12)
+-	buf[0] = byte(in[7] >> 20)
+-
+-	return new(big.Int).SetBytes(buf[:])
+-}
+--- libgo/go/crypto/elliptic/p224_test.go.jj	2012-11-15 18:26:57.000000000 +0100
++++ libgo/go/crypto/elliptic/p224_test.go	2014-03-05 15:29:58.743430988 +0100
+@@ -1,47 +0,0 @@
+-// Copyright 2012 The Go Authors.  All rights reserved.
+-// Use of this source code is governed by a BSD-style
+-// license that can be found in the LICENSE file.
+-
+-package elliptic
+-
+-import (
+-	"math/big"
+-	"testing"
+-)
+-
+-var toFromBigTests = []string{
+-	"0",
+-	"1",
+-	"23",
+-	"b70e0cb46bb4bf7f321390b94a03c1d356c01122343280d6105c1d21",
+-	"706a46d476dcb76798e6046d89474788d164c18032d268fd10704fa6",
+-}
+-
+-func p224AlternativeToBig(in *p224FieldElement) *big.Int {
+-	ret := new(big.Int)
+-	tmp := new(big.Int)
+-
+-	for i := uint(0); i < 8; i++ {
+-		tmp.SetInt64(int64(in[i]))
+-		tmp.Lsh(tmp, 28*i)
+-		ret.Add(ret, tmp)
+-	}
+-	ret.Mod(ret, p224.P)
+-	return ret
+-}
+-
+-func TestToFromBig(t *testing.T) {
+-	for i, test := range toFromBigTests {
+-		n, _ := new(big.Int).SetString(test, 16)
+-		var x p224FieldElement
+-		p224FromBig(&x, n)
+-		m := p224ToBig(&x)
+-		if n.Cmp(m) != 0 {
+-			t.Errorf("#%d: %x != %x", i, n, m)
+-		}
+-		q := p224AlternativeToBig(&x)
+-		if n.Cmp(q) != 0 {
+-			t.Errorf("#%d: %x != %x (alternative)", i, n, m)
+-		}
+-	}
+-}
+--- libgo/go/crypto/elliptic/p256.go.jj	2013-11-07 11:59:09.000000000 +0100
++++ libgo/go/crypto/elliptic/p256.go	2014-03-05 15:34:31.910414701 +0100
+@@ -233,6 +233,8 @@ func p256ReduceCarry(inout *[p256Limbs]u
+ 	inout[7] += carry << 25
+ }
+ 
++const bottom28Bits = 0xfffffff
++
+ // p256Sum sets out = in+in2.
+ //
+ // On entry, in[i]+in2[i] must not overflow a 32-bit word.
+@@ -265,6 +267,7 @@ const (
+ 	two31m2    = 1<<31 - 1<<2
+ 	two31p24m2 = 1<<31 + 1<<24 - 1<<2
+ 	two30m27m2 = 1<<30 - 1<<27 - 1<<2
++	two31m3    = 1<<31 - 1<<3
+ )
+ 
+ // p256Zero31 is 0 mod p.

diff --git a/gcc6-libgomp-omp_h-multilib.patch b/gcc6-libgomp-omp_h-multilib.patch
new file mode 100644
index 0000000..d0e98d1
--- /dev/null
+++ b/gcc6-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/gcc6-libsanitize-aarch64-va42.patch b/gcc6-libsanitize-aarch64-va42.patch
new file mode 100644
index 0000000..72418df
--- /dev/null
+++ b/gcc6-libsanitize-aarch64-va42.patch
@@ -0,0 +1,38 @@
+2015-01-22  Jakub Jelinek  <jakub@redhat.com>
+
+	* sanitizer_common/sanitizer_platform.h
+	(SANITIZER_AARCH64_VMA): Set to 42.
+	(SANITIZER_CAN_USE_ALLOCATOR64): Set to 1 on __aarch64__
+	if SANITIZER_WORDSIZE is 64.
+	(SANITIZER_MMAP_RANGE_SIZE): Define to 1ULL << 42 for
+	__aarch64__.
+
+--- libsanitizer/sanitizer_common/sanitizer_platform.h.jj	2015-11-23 13:29:55.000000000 +0100
++++ libsanitizer/sanitizer_common/sanitizer_platform.h	2016-01-15 12:04:08.511206409 +0100
+@@ -82,7 +82,7 @@
+ // VMA size definition for architecture that support multiple sizes.
+ // AArch64 has 3 VMA sizes: 39, 42 and 48.
+ #if !defined(SANITIZER_AARCH64_VMA)
+-# define SANITIZER_AARCH64_VMA 39
++# define SANITIZER_AARCH64_VMA 42
+ #else
+ # if SANITIZER_AARCH64_VMA != 39 && SANITIZER_AARCH64_VMA != 42
+ #  error "invalid SANITIZER_AARCH64_VMA size"
+@@ -95,7 +95,7 @@
+ // For such platforms build this code with -DSANITIZER_CAN_USE_ALLOCATOR64=0 or
+ // change the definition of SANITIZER_CAN_USE_ALLOCATOR64 here.
+ #ifndef SANITIZER_CAN_USE_ALLOCATOR64
+-# if defined(__mips64) || defined(__aarch64__)
++# if defined(__mips64)
+ #  define SANITIZER_CAN_USE_ALLOCATOR64 0
+ # else
+ #  define SANITIZER_CAN_USE_ALLOCATOR64 (SANITIZER_WORDSIZE == 64)
+@@ -107,6 +107,8 @@
+ // will still work but will consume more memory for TwoLevelByteMap.
+ #if defined(__mips__)
+ # define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 40)
++#elif defined(__aarch64__)
++# define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 42)
+ #else
+ # define SANITIZER_MMAP_RANGE_SIZE FIRST_32_SECOND_64(1ULL << 32, 1ULL << 47)
+ #endif

diff --git a/gcc6-libstdc++-docs.patch b/gcc6-libstdc++-docs.patch
new file mode 100644
index 0000000..63cd7ab
--- /dev/null
+++ b/gcc6-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 6.0.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
+@@ -18,8 +18,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" style="list-style-type: disc; "><li class="listitem"><p>
++      <a class="link" href="api/index.html" target="_top">for the 6.0.0 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/gcc6-libtool-no-rpath.patch b/gcc6-libtool-no-rpath.patch
new file mode 100644
index 0000000..466c661
--- /dev/null
+++ b/gcc6-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/gcc6-no-add-needed.patch b/gcc6-no-add-needed.patch
new file mode 100644
index 0000000..4102e1c
--- /dev/null
+++ b/gcc6-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
+@@ -76,7 +76,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 "
+ 
+ #undef TARGET_INIT_LIBFUNCS
+ #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs
+--- 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/gcc6-ppc32-retaddr.patch b/gcc6-ppc32-retaddr.patch
new file mode 100644
index 0000000..7e8eeb5
--- /dev/null
+++ b/gcc6-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
+@@ -20970,18 +20970,22 @@ rs6000_return_addr (int count, rtx frame
+   if (count != 0
+       || ((DEFAULT_ABI == ABI_V4 || DEFAULT_ABI == ABI_DARWIN) && 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/gcc6-rh330771.patch b/gcc6-rh330771.patch
new file mode 100644
index 0000000..102730f
--- /dev/null
+++ b/gcc6-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/gcc6-sparc-config-detection.patch b/gcc6-sparc-config-detection.patch
new file mode 100644
index 0000000..a37018e
--- /dev/null
+++ b/gcc6-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
+@@ -2656,7 +2656,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="${tmake_file} sparc/t-sparc sparc/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
+@@ -2710,7 +2710,7 @@ sparc64-*-rtems*)
+ 	extra_options="${extra_options}"
+ 	tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64"
+ 	;;
+-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 f748f4e..7ed6b2a 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-1458ebcc302cb4ac6bab5cbf8b3f3fcc  gcc-5.3.1-20151207.tar.bz2
+baec2d13c73d2f4210668dc58b6d30a4  gcc-6.0.0-20160127.tar.bz2

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

only message in thread, other threads:[~2026-06-29 12:26 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:26 [rpms/gcc] rhel-f41-base: 6.0.0-0.5 Jakub Jelinek

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