public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/gcc] rhel-f41-base: 4.9.0-0.9
@ 2026-06-29 12:26 Jakub Jelinek
0 siblings, 0 replies; 2+ messages 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 : 8d0243eb056d3525779753d9736a602a674d337b
Author : Jakub Jelinek <jakub@redhat.com>
Date : 2014-04-09T08:46:36+02:00
Stats : +2792/-4565 in 41 file(s)
URL : https://src.fedoraproject.org/rpms/gcc/c/8d0243eb056d3525779753d9736a602a674d337b?branch=rhel-f41-base
Log:
4.9.0-0.9
---
diff --git a/.gitignore b/.gitignore
index 6d8921d..daefbad 100644
--- a/.gitignore
+++ b/.gitignore
@@ -91,3 +91,6 @@
/gcc-4.8.2-20131212.tar.bz2
/gcc-4.8.2-20140115.tar.bz2
/gcc-4.8.2-20140120.tar.bz2
+/cloog-0.18.1.tar.gz
+/gcc-4.9.0-20140409.tar.bz2
+/isl-0.12.2.tar.bz2
diff --git a/gcc.spec b/gcc.spec
index 2fa1ce1..610c9ff 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1,9 +1,9 @@
-%global DATE 20140120
-%global SVNREV 206854
-%global gcc_version 4.8.2
+%global DATE 20140409
+%global SVNREV 209236
+%global gcc_version 4.9.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 15
+%global gcc_release 0.9
%global _unpackaged_files_terminate_build 0
%global _performance_build 1
%global multilib_64_archs sparc64 ppc64 ppc64p7 s390x x86_64
@@ -27,7 +27,7 @@
%else
%global build_libquadmath 0
%endif
-%ifarch %{ix86} x86_64 ppc ppc64 ppc64p7
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64p7 %{arm}
%global build_libasan 1
%else
%global build_libasan 0
@@ -37,6 +37,21 @@
%else
%global build_libtsan 0
%endif
+%ifarch x86_64
+%global build_liblsan 1
+%else
+%global build_liblsan 0
+%endif
+%ifarch %{ix86} x86_64 ppc ppc64 ppc64p7 %{arm}
+%global build_libubsan 1
+%else
+%global build_libubsan 0
+%endif
+%ifarch %{ix86} x86_64
+%global build_libcilkrts 1
+%else
+%global build_libcilkrts 0
+%endif
%ifarch %{ix86} x86_64 ppc ppc64 ppc64p7 s390 s390x %{arm}
%global build_libatomic 1
%else
@@ -76,7 +91,7 @@ Summary: Various compilers (C, C++, Objective-C, Java, ...)
Name: gcc
Version: %{gcc_version}
Release: %{gcc_release}%{?dist}
-# libgcc, libgfortran, libmudflap, libgomp, libstdc++ and crtstuff have
+# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
# GCC Runtime Exception.
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
Group: Development/Languages
@@ -85,9 +100,9 @@ Group: Development/Languages
# svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_7-branch@%{SVNREV} gcc-%{version}-%{DATE}
# tar cf - gcc-%{version}-%{DATE} | bzip2 -9 > gcc-%{version}-%{DATE}.tar.bz2
Source0: gcc-%{version}-%{DATE}.tar.bz2
-%global isl_version 0.11.1
+%global isl_version 0.12.2
Source1: ftp://gcc.gnu.org/pub/gcc/infrastructure/isl-%{isl_version}.tar.bz2
-%global cloog_version 0.18.0
+%global cloog_version 0.18.1
Source2: ftp://gcc.gnu.org/pub/gcc/infrastructure/cloog-%{cloog_version}.tar.gz
%global fastjar_ver 0.97
Source4: http://download.savannah.nongnu.org/releases/fastjar/fastjar-%{fastjar_ver}.tar.gz
@@ -181,32 +196,30 @@ Requires: libgomp = %{version}-%{release}
Obsoletes: gcc-gnat < %{version}-%{release}
Obsoletes: libgnat < %{version}-%{release}
%endif
+Obsoletes: libmudflap
+Obsoletes: libmudflap-devel
+Obsoletes: libmudflap-static
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
AutoReq: true
Provides: bundled(libiberty)
-Patch0: gcc48-hack.patch
-Patch1: gcc48-java-nomulti.patch
-Patch2: gcc48-ppc32-retaddr.patch
-Patch3: gcc48-rh330771.patch
-Patch4: gcc48-i386-libgomp.patch
-Patch5: gcc48-sparc-config-detection.patch
-Patch6: gcc48-libgomp-omp_h-multilib.patch
-Patch7: gcc48-libtool-no-rpath.patch
-Patch8: gcc48-cloog-dl.patch
-Patch9: gcc48-cloog-dl2.patch
-Patch10: gcc48-pr38757.patch
-Patch11: gcc48-libstdc++-docs.patch
-Patch12: gcc48-no-add-needed.patch
-Patch13: gcc48-pr56564.patch
-Patch14: gcc48-pr56493.patch
-Patch15: gcc48-color-auto.patch
-Patch16: gcc48-pr28865.patch
-Patch17: gcc48-libgo-p224.patch
-Patch18: gcc48-pr60137.patch
-Patch19: gcc48-pr60010.patch
-Patch20: gcc48-pr60046.patch
+Patch0: gcc49-hack.patch
+Patch1: gcc49-java-nomulti.patch
+Patch2: gcc49-ppc32-retaddr.patch
+Patch3: gcc49-rh330771.patch
+Patch4: gcc49-i386-libgomp.patch
+Patch5: gcc49-sparc-config-detection.patch
+Patch6: gcc49-libgomp-omp_h-multilib.patch
+Patch7: gcc49-libtool-no-rpath.patch
+Patch8: gcc49-cloog-dl.patch
+Patch9: gcc49-cloog-dl2.patch
+Patch10: gcc49-pr38757.patch
+Patch11: gcc49-libstdc++-docs.patch
+Patch12: gcc49-no-add-needed.patch
+Patch14: gcc49-pr56493.patch
+Patch15: gcc49-color-auto.patch
+Patch16: gcc49-libgo-p224.patch
Patch1000: fastjar-0.97-segfault.patch
Patch1001: fastjar-0.97-len1.patch
@@ -215,8 +228,6 @@ Patch1003: fastjar-CVE-2010-0831.patch
Patch1004: fastjar-man.patch
Patch1005: fastjar-0.97-aarch64-config.patch
-Patch1100: isl-%{isl_version}-aarch64-config.patch
-
# On ARM EABI systems, we do want -gnueabi to be part of the
# target triple.
%ifnarch %{arm}
@@ -233,11 +244,11 @@ Patch1100: isl-%{isl_version}-aarch64-config.patch
%endif
%description
-The gcc package contains the GNU Compiler Collection version 4.8.
+The gcc package contains the GNU Compiler Collection version 4.9.
You'll need this package in order to compile C code.
%package -n libgcc
-Summary: GCC version 4.8 shared support library
+Summary: GCC version 4.9 shared support library
Group: System Environment/Libraries
Autoreq: false
@@ -379,36 +390,6 @@ Requires(preun): /sbin/install-info
This package contains GCC shared support library which is needed
for OpenMP v3.0 support.
-%package -n libmudflap
-Summary: GCC mudflap shared support library
-Group: System Environment/Libraries
-
-%description -n libmudflap
-This package contains GCC shared support library which is needed
-for mudflap support.
-
-%package -n libmudflap-devel
-Summary: GCC mudflap support
-Group: Development/Libraries
-Requires: libmudflap = %{version}-%{release}
-Requires: gcc = %{version}-%{release}
-
-%description -n libmudflap-devel
-This package contains headers for building mudflap-instrumented programs.
-
-To instrument a non-threaded program, add -fmudflap
-option to GCC and when linking add -lmudflap, for threaded programs
-also add -fmudflapth and -lmudflapth.
-
-%package -n libmudflap-static
-Summary: Static libraries for mudflap support
-Group: Development/Libraries
-Requires: libmudflap-devel = %{version}-%{release}
-
-%description -n libmudflap-static
-This package contains static libraries for building mudflap-instrumented
-programs.
-
%package -n libquadmath
Summary: GCC __float128 shared support library
Group: System Environment/Libraries
@@ -521,6 +502,59 @@ Requires: libtsan = %{version}-%{release}
%description -n libtsan-static
This package contains Thread Sanitizer static runtime library.
+%package -n libubsan
+Summary: The Undefined Behavior Sanitizer runtime library
+Group: System Environment/Libraries
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n libubsan
+This package contains the Undefined Behavior Sanitizer library
+which is used for -fsanitize=undefined instrumented programs.
+
+%package -n libubsan-static
+Summary: The Undefined Behavior Sanitizer static library
+Group: Development/Libraries
+Requires: libubsan = %{version}-%{release}
+
+%description -n libubsan-static
+This package contains Undefined Behavior Sanitizer static runtime library.
+
+%package -n liblsan
+Summary: The Leak Sanitizer runtime library
+Group: System Environment/Libraries
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n liblsan
+This package contains the Leak Sanitizer library
+which is used for -fsanitize=leak instrumented programs.
+
+%package -n liblsan-static
+Summary: The Leak Sanitizer static library
+Group: Development/Libraries
+Requires: liblsan = %{version}-%{release}
+
+%description -n liblsan-static
+This package contains Leak Sanitizer static runtime library.
+
+%package -n libcilkrts
+Summary: The Cilk+ runtime library
+Group: System Environment/Libraries
+Requires(post): /sbin/install-info
+Requires(preun): /sbin/install-info
+
+%description -n libcilkrts
+This package contains the Cilk+ runtime library.
+
+%package -n libcilkrts-static
+Summary: The Cilk+ static runtime library
+Group: Development/Libraries
+Requires: libcilkrts = %{version}-%{release}
+
+%description -n libcilkrts-static
+This package contains the Cilk+ static runtime library.
+
%package java
Summary: Java support for GCC
Group: Development/Languages
@@ -613,7 +647,7 @@ You should install this package if you are a C programmer and you use
macros.
%package gnat
-Summary: Ada 95 support for GCC
+Summary: Ada 83, 95, 2005 and 2012 support for GCC
Group: Development/Languages
Requires: gcc = %{version}-%{release}
Requires: libgnat = %{version}-%{release}, libgnat-devel = %{version}-%{release}
@@ -622,35 +656,36 @@ Requires(preun): /sbin/install-info
Autoreq: true
%description gnat
-GNAT is a GNU Ada 95 front-end to GCC. This package includes development tools,
-the documents and Ada 95 compiler.
+GNAT is a GNU Ada 83, 95, 2005 and 2012 front-end to GCC. This package includes
+development tools, the documents and Ada compiler.
%package -n libgnat
-Summary: GNU Ada 95 runtime shared libraries
+Summary: GNU Ada 83, 95, 2005 and 2012 runtime shared libraries
Group: System Environment/Libraries
Autoreq: true
%description -n libgnat
-GNAT is a GNU Ada 95 front-end to GCC. This package includes shared libraries,
-which are required to run programs compiled with the GNAT.
+GNAT is a GNU Ada 83, 95, 2005 and 2012 front-end to GCC. This package includes
+shared libraries, which are required to run programs compiled with the GNAT.
%package -n libgnat-devel
-Summary: GNU Ada 95 libraries
+Summary: GNU Ada 83, 95, 2005 and 2012 libraries
Group: Development/Languages
Autoreq: true
%description -n libgnat-devel
-GNAT is a GNU Ada 95 front-end to GCC. This package includes libraries,
-which are required to compile with the GNAT.
+GNAT is a GNU Ada 83, 95, 2005 and 2012 front-end to GCC. This package includes
+libraries, which are required to compile with the GNAT.
%package -n libgnat-static
-Summary: GNU Ada 95 static libraries
+Summary: GNU Ada 83, 95, 2005 and 2012 static libraries
Group: Development/Languages
Requires: libgnat-devel = %{version}-%{release}
Autoreq: true
%description -n libgnat-static
-GNAT is a GNU Ada 95 front-end to GCC. This package includes static libraries.
+GNAT is a GNU Ada 83, 95, 2005 and 2012 front-end to GCC. This package includes
+static libraries.
%package go
Summary: Go support
@@ -761,17 +796,12 @@ package or when debugging this package.
%patch11 -p0 -b .libstdc++-docs~
%endif
%patch12 -p0 -b .no-add-needed~
-%patch13 -p0 -b .pr56564~
%patch14 -p0 -b .pr56493~
%if 0%{?fedora} >= 20 || 0%{?rhel} >= 7
%patch15 -p0 -b .color-auto~
%endif
-%patch16 -p0 -b .pr28865~
-%patch17 -p0 -b .libgo-p224~
+%patch16 -p0 -b .libgo-p224~
rm -f libgo/go/crypto/elliptic/p224{,_test}.go
-%patch18 -p0 -b .pr60137~
-%patch19 -p0 -b .pr60010~
-%patch20 -p0 -b .pr60046~
%if 0%{?_enable_debug_packages}
cat > split-debuginfo.sh <<\EOF
@@ -836,9 +866,7 @@ tar xzf %{SOURCE4}
tar xjf %{SOURCE10}
%endif
-%patch1100 -p0 -b .isl-aarch64~
-
-sed -i -e 's/4\.8\.3/4.8.2/' gcc/BASE-VER
+sed -i -e 's/4\.9\.0/4.9.0/' gcc/BASE-VER
echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7
@@ -962,7 +990,7 @@ cat >> ../../cloog-%{cloog_version}/source/isl/constraints.c << \EOF
static void __attribute__((used)) *s1 = (void *) isl_union_map_compute_flow;
static void __attribute__((used)) *s2 = (void *) isl_map_dump;
EOF
-sed -i 's|libcloog|libgcc48privatecloog|g' \
+sed -i 's|libcloog|libgcc49privatecloog|g' \
../../cloog-%{cloog_version}/{,test/}Makefile.{am,in}
isl_prefix=`cd ../isl-install; pwd` \
../../cloog-%{cloog_version}/configure --with-isl=system \
@@ -975,8 +1003,8 @@ sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
make %{?_smp_mflags}
make %{?_smp_mflags} install
cd ../cloog-install/lib
-rm libgcc48privatecloog-isl.so{,.4}
-mv libgcc48privatecloog-isl.so.4.0.0 libcloog-isl.so.4
+rm libgcc49privatecloog-isl.so{,.4}
+mv libgcc49privatecloog-isl.so.4.0.0 libcloog-isl.so.4
ln -sf libcloog-isl.so.4 libcloog-isl.so
ln -sf libcloog-isl.so.4 libcloog.so
cd ../..
@@ -1152,9 +1180,9 @@ cd ..
mkdir -p rpm.doc/gfortran rpm.doc/objc
mkdir -p rpm.doc/boehm-gc rpm.doc/fastjar rpm.doc/libffi rpm.doc/libjava
mkdir -p rpm.doc/go rpm.doc/libgo rpm.doc/libquadmath rpm.doc/libitm
-mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp,libatomic,libsanitizer}
+mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libgomp,libatomic,libsanitizer,libcilkrts}
-for i in {gcc,gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp,libatomic,libsanitizer}/ChangeLog*; do
+for i in {gcc,gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libgomp,libatomic,libsanitizer,libcilkrts}/ChangeLog*; do
cp -p $i rpm.doc/changelogs/$i
done
@@ -1346,6 +1374,9 @@ mv %{buildroot}%{_prefix}/%{_lib}/libgfortran.spec $FULLPATH/
%if %{build_libitm}
mv %{buildroot}%{_prefix}/%{_lib}/libitm.spec $FULLPATH/
%endif
+%if %{build_libasan}
+mv %{buildroot}%{_prefix}/%{_lib}/libsanitizer.spec $FULLPATH/
+%endif
mkdir -p %{buildroot}/%{_lib}
mv -f %{buildroot}%{_prefix}/%{_lib}/libgcc_s.so.1 %{buildroot}/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
@@ -1403,12 +1434,6 @@ pushd ../fastjar-%{fastjar_ver}/obj-%{gcc_target_platform}
make install DESTDIR=%{buildroot}
popd
-if [ "%{_lib}" != "lib" ]; then
- mkdir -p %{buildroot}%{_prefix}/%{_lib}/pkgconfig
- sed '/^libdir/s/lib$/%{_lib}/' %{buildroot}%{_prefix}/lib/pkgconfig/libgcj-*.pc \
- > %{buildroot}%{_prefix}/%{_lib}/pkgconfig/`basename %{buildroot}%{_prefix}/lib/pkgconfig/libgcj-*.pc`
-fi
-
%endif
mkdir -p %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/%{_lib}
@@ -1427,10 +1452,8 @@ ln -sf ../../../libobjc.so.4 libobjc.so
ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so
ln -sf ../../../libgfortran.so.3.* libgfortran.so
ln -sf ../../../libgomp.so.1.* libgomp.so
-ln -sf ../../../libmudflap.so.0.* libmudflap.so
-ln -sf ../../../libmudflapth.so.0.* libmudflapth.so
%if %{build_go}
-ln -sf ../../../libgo.so.4.* libgo.so
+ln -sf ../../../libgo.so.5.* libgo.so
%endif
%if %{build_libquadmath}
ln -sf ../../../libquadmath.so.0.* libquadmath.so
@@ -1442,23 +1465,27 @@ ln -sf ../../../libitm.so.1.* libitm.so
ln -sf ../../../libatomic.so.1.* libatomic.so
%endif
%if %{build_libasan}
-ln -sf ../../../libasan.so.0.* libasan.so
+ln -sf ../../../libasan.so.1.* libasan.so
mv ../../../libasan_preinit.o libasan_preinit.o
%endif
+%if %{build_libubsan}
+ln -sf ../../../libubsan.so.0.* libubsan.so
+%endif
+%if %{build_libcilkrts}
+ln -sf ../../../libcilkrts.so.5.* libcilkrts.so
+%endif
%if %{build_java}
-ln -sf ../../../libgcj.so.14.* libgcj.so
-ln -sf ../../../libgcj-tools.so.14.* libgcj-tools.so
-ln -sf ../../../libgij.so.14.* libgij.so
+ln -sf ../../../libgcj.so.15.* libgcj.so
+ln -sf ../../../libgcj-tools.so.15.* libgcj-tools.so
+ln -sf ../../../libgij.so.15.* libgij.so
%endif
else
ln -sf ../../../../%{_lib}/libobjc.so.4 libobjc.so
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
-ln -sf ../../../../%{_lib}/libmudflap.so.0.* libmudflap.so
-ln -sf ../../../../%{_lib}/libmudflapth.so.0.* libmudflapth.so
%if %{build_go}
-ln -sf ../../../../%{_lib}/libgo.so.4.* libgo.so
+ln -sf ../../../../%{_lib}/libgo.so.5.* libgo.so
%endif
%if %{build_libquadmath}
ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so
@@ -1470,17 +1497,27 @@ 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.0.* libasan.so
+ln -sf ../../../../%{_lib}/libasan.so.1.* libasan.so
mv ../../../../%{_lib}/libasan_preinit.o libasan_preinit.o
%endif
+%if %{build_libubsan}
+ln -sf ../../../../%{_lib}/libubsan.so.0.* libubsan.so
+%endif
+%if %{build_libcilkrts}
+ln -sf ../../../../%{_lib}/libcilkrts.so.5.* libcilkrts.so
+%endif
%if %{build_libtsan}
rm -f libtsan.so
echo 'INPUT ( %{_prefix}/%{_lib}/'`echo ../../../../%{_lib}/libtsan.so.0.* | sed 's,^.*libt,libt,'`' )' > libtsan.so
%endif
+%if %{build_liblsan}
+rm -f liblsan.so
+echo 'INPUT ( %{_prefix}/%{_lib}/'`echo ../../../../%{_lib}/liblsan.so.0.* | sed 's,^.*libl,libl,'`' )' > liblsan.so
+%endif
%if %{build_java}
-ln -sf ../../../../%{_lib}/libgcj.so.14.* libgcj.so
-ln -sf ../../../../%{_lib}/libgcj-tools.so.14.* libgcj-tools.so
-ln -sf ../../../../%{_lib}/libgij.so.14.* libgij.so
+ln -sf ../../../../%{_lib}/libgcj.so.15.* libgcj.so
+ln -sf ../../../../%{_lib}/libgcj-tools.so.15.* libgcj-tools.so
+ln -sf ../../../../%{_lib}/libgij.so.15.* libgij.so
%endif
fi
%if %{build_java}
@@ -1491,7 +1528,6 @@ mv -f %{buildroot}%{_prefix}/%{_lib}/libsupc++.*a $FULLLPATH/
mv -f %{buildroot}%{_prefix}/%{_lib}/libgfortran.*a $FULLLPATH/
mv -f %{buildroot}%{_prefix}/%{_lib}/libobjc.*a .
mv -f %{buildroot}%{_prefix}/%{_lib}/libgomp.*a .
-mv -f %{buildroot}%{_prefix}/%{_lib}/libmudflap{,th}.*a $FULLLPATH/
%if %{build_libquadmath}
mv -f %{buildroot}%{_prefix}/%{_lib}/libquadmath.*a $FULLLPATH/
%endif
@@ -1504,9 +1540,18 @@ mv -f %{buildroot}%{_prefix}/%{_lib}/libatomic.*a $FULLLPATH/
%if %{build_libasan}
mv -f %{buildroot}%{_prefix}/%{_lib}/libasan.*a $FULLLPATH/
%endif
+%if %{build_libubsan}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libubsan.*a $FULLLPATH/
+%endif
+%if %{build_libcilkrts}
+mv -f %{buildroot}%{_prefix}/%{_lib}/libcilkrts.*a $FULLLPATH/
+%endif
%if %{build_libtsan}
mv -f %{buildroot}%{_prefix}/%{_lib}/libtsan.*a $FULLLPATH/
%endif
+%if %{build_liblsan}
+mv -f %{buildroot}%{_prefix}/%{_lib}/liblsan.*a $FULLLPATH/
+%endif
%if %{build_go}
mv -f %{buildroot}%{_prefix}/%{_lib}/libgo.*a $FULLLPATH/
mv -f %{buildroot}%{_prefix}/%{_lib}/libgobegin.*a $FULLLPATH/
@@ -1524,28 +1569,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-4.8.so
+ln -sf ../../../../../libgnarl-*.so libgnarl-4.9.so
ln -sf ../../../../../libgnat-*.so libgnat.so
-ln -sf ../../../../../libgnat-*.so libgnat-4.8.so
+ln -sf ../../../../../libgnat-*.so libgnat-4.9.so
else
ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl.so
-ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-4.8.so
+ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-4.9.so
ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat.so
-ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-4.8.so
+ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-4.9.so
fi
popd
else
pushd $FULLPATH/adalib
if [ "%{_lib}" = "lib" ]; then
ln -sf ../../../../libgnarl-*.so libgnarl.so
-ln -sf ../../../../libgnarl-*.so libgnarl-4.8.so
+ln -sf ../../../../libgnarl-*.so libgnarl-4.9.so
ln -sf ../../../../libgnat-*.so libgnat.so
-ln -sf ../../../../libgnat-*.so libgnat-4.8.so
+ln -sf ../../../../libgnat-*.so libgnat-4.9.so
else
ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so
-ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-4.8.so
+ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-4.9.so
ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so
-ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-4.8.so
+ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-4.9.so
fi
popd
fi
@@ -1556,15 +1601,10 @@ ln -sf ../../../../../lib64/libobjc.so.4 64/libobjc.so
ln -sf ../`echo ../../../../lib/libstdc++.so.6.*[0-9] | sed s~/lib/~/lib64/~` 64/libstdc++.so
ln -sf ../`echo ../../../../lib/libgfortran.so.3.* | sed s~/lib/~/lib64/~` 64/libgfortran.so
ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so
-rm -f libmudflap.so libmudflapth.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libmudflap.so.0.* | sed 's,^.*libm,libm,'`' )' > libmudflap.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libmudflapth.so.0.* | sed 's,^.*libm,libm,'`' )' > libmudflapth.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libmudflap.so.0.* | sed 's,^.*libm,libm,'`' )' > 64/libmudflap.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libmudflapth.so.0.* | sed 's,^.*libm,libm,'`' )' > 64/libmudflapth.so
%if %{build_go}
rm -f libgo.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.4.* | sed 's,^.*libg,libg,'`' )' > libgo.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.4.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.5.* | sed 's,^.*libg,libg,'`' )' > libgo.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.5.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
%endif
%if %{build_libquadmath}
rm -f libquadmath.so
@@ -1583,14 +1623,24 @@ 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.0.* | sed 's,^.*liba,liba,'`' )' > libasan.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libasan.so.0.* | sed 's,^.*liba,liba,'`' )' > 64/libasan.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libasan.so.1.* | sed 's,^.*liba,liba,'`' )' > libasan.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libasan.so.1.* | sed 's,^.*liba,liba,'`' )' > 64/libasan.so
mv ../../../../lib64/libasan_preinit.o 64/libasan_preinit.o
%endif
+%if %{build_libubsan}
+rm -f libubsan.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libubsan.so.0.* | sed 's,^.*libu,libu,'`' )' > libubsan.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libubsan.so.0.* | sed 's,^.*libu,libu,'`' )' > 64/libubsan.so
+%endif
+%if %{build_libcilkrts}
+rm -f libcilkrts.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libcilkrts.so.5.* | sed 's,^.*libc,libc,'`' )' > libcilkrts.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libcilkrts.so.5.* | sed 's,^.*libc,libc,'`' )' > 64/libcilkrts.so
+%endif
%if %{build_java}
-ln -sf ../`echo ../../../../lib/libgcj.so.14.* | sed s~/lib/~/lib64/~` 64/libgcj.so
-ln -sf ../`echo ../../../../lib/libgcj-tools.so.14.* | sed s~/lib/~/lib64/~` 64/libgcj-tools.so
-ln -sf ../`echo ../../../../lib/libgij.so.14.* | sed s~/lib/~/lib64/~` 64/libgij.so
+ln -sf ../`echo ../../../../lib/libgcj.so.15.* | sed s~/lib/~/lib64/~` 64/libgcj.so
+ln -sf ../`echo ../../../../lib/libgcj-tools.so.15.* | sed s~/lib/~/lib64/~` 64/libgcj-tools.so
+ln -sf ../`echo ../../../../lib/libgij.so.15.* | sed s~/lib/~/lib64/~` 64/libgij.so
ln -sf lib32/libgcj_bc.so libgcj_bc.so
ln -sf ../lib64/libgcj_bc.so 64/libgcj_bc.so
%endif
@@ -1602,10 +1652,6 @@ ln -sf lib32/libstdc++.a libstdc++.a
ln -sf ../lib64/libstdc++.a 64/libstdc++.a
ln -sf lib32/libsupc++.a libsupc++.a
ln -sf ../lib64/libsupc++.a 64/libsupc++.a
-ln -sf lib32/libmudflap.a libmudflap.a
-ln -sf ../lib64/libmudflap.a 64/libmudflap.a
-ln -sf lib32/libmudflapth.a libmudflapth.a
-ln -sf ../lib64/libmudflapth.a 64/libmudflapth.a
%if %{build_libquadmath}
ln -sf lib32/libquadmath.a libquadmath.a
ln -sf ../lib64/libquadmath.a 64/libquadmath.a
@@ -1622,6 +1668,14 @@ ln -sf ../lib64/libatomic.a 64/libatomic.a
ln -sf lib32/libasan.a libasan.a
ln -sf ../lib64/libasan.a 64/libasan.a
%endif
+%if %{build_libubsan}
+ln -sf lib32/libubsan.a libubsan.a
+ln -sf ../lib64/libubsan.a 64/libubsan.a
+%endif
+%if %{build_libcilkrts}
+ln -sf lib32/libcilkrts.a libcilkrts.a
+ln -sf ../lib64/libcilkrts.a 64/libcilkrts.a
+%endif
%if %{build_go}
ln -sf lib32/libgo.a libgo.a
ln -sf ../lib64/libgo.a 64/libgo.a
@@ -1641,15 +1695,10 @@ ln -sf ../../../../libobjc.so.4 32/libobjc.so
ln -sf ../`echo ../../../../lib64/libstdc++.so.6.*[0-9] | sed s~/../lib64/~/~` 32/libstdc++.so
ln -sf ../`echo ../../../../lib64/libgfortran.so.3.* | sed s~/../lib64/~/~` 32/libgfortran.so
ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so
-rm -f libmudflap.so libmudflapth.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libmudflap.so.0.* | sed 's,^.*libm,libm,'`' )' > libmudflap.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libmudflapth.so.0.* | sed 's,^.*libm,libm,'`' )' > libmudflapth.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libmudflap.so.0.* | sed 's,^.*libm,libm,'`' )' > 32/libmudflap.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libmudflapth.so.0.* | sed 's,^.*libm,libm,'`' )' > 32/libmudflapth.so
%if %{build_go}
rm -f libgo.so
-echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.4.* | sed 's,^.*libg,libg,'`' )' > libgo.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.4.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.5.* | sed 's,^.*libg,libg,'`' )' > libgo.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.5.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
%endif
%if %{build_libquadmath}
rm -f libquadmath.so
@@ -1668,14 +1717,24 @@ 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.0.* | sed 's,^.*liba,liba,'`' )' > libasan.so
-echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libasan.so.0.* | sed 's,^.*liba,liba,'`' )' > 32/libasan.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libasan.so.1.* | sed 's,^.*liba,liba,'`' )' > libasan.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libasan.so.1.* | sed 's,^.*liba,liba,'`' )' > 32/libasan.so
mv ../../../../lib/libasan_preinit.o 32/libasan_preinit.o
%endif
+%if %{build_libubsan}
+rm -f libubsan.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libubsan.so.0.* | sed 's,^.*libu,libu,'`' )' > libubsan.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libubsan.so.0.* | sed 's,^.*libu,libu,'`' )' > 32/libubsan.so
+%endif
+%if %{build_libcilkrts}
+rm -f libcilkrts.so
+echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libcilkrts.so.5.* | sed 's,^.*libc,libc,'`' )' > libcilkrts.so
+echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libcilkrts.so.5.* | sed 's,^.*libc,libc,'`' )' > 32/libcilkrts.so
+%endif
%if %{build_java}
-ln -sf ../`echo ../../../../lib64/libgcj.so.14.* | sed s~/../lib64/~/~` 32/libgcj.so
-ln -sf ../`echo ../../../../lib64/libgcj-tools.so.14.* | sed s~/../lib64/~/~` 32/libgcj-tools.so
-ln -sf ../`echo ../../../../lib64/libgij.so.14.* | sed s~/../lib64/~/~` 32/libgij.so
+ln -sf ../`echo ../../../../lib64/libgcj.so.15.* | sed s~/../lib64/~/~` 32/libgcj.so
+ln -sf ../`echo ../../../../lib64/libgcj-tools.so.15.* | sed s~/../lib64/~/~` 32/libgcj-tools.so
+ln -sf ../`echo ../../../../lib64/libgij.so.15.* | sed s~/../lib64/~/~` 32/libgij.so
%endif
mv -f %{buildroot}%{_prefix}/lib/libobjc.*a 32/
mv -f %{buildroot}%{_prefix}/lib/libgomp.*a 32/
@@ -1687,10 +1746,6 @@ ln -sf ../lib32/libstdc++.a 32/libstdc++.a
ln -sf lib64/libstdc++.a libstdc++.a
ln -sf ../lib32/libsupc++.a 32/libsupc++.a
ln -sf lib64/libsupc++.a libsupc++.a
-ln -sf ../lib32/libmudflap.a 32/libmudflap.a
-ln -sf lib64/libmudflap.a libmudflap.a
-ln -sf ../lib32/libmudflapth.a 32/libmudflapth.a
-ln -sf lib64/libmudflapth.a libmudflapth.a
%if %{build_libquadmath}
ln -sf ../lib32/libquadmath.a 32/libquadmath.a
ln -sf lib64/libquadmath.a libquadmath.a
@@ -1707,6 +1762,14 @@ ln -sf lib64/libatomic.a libatomic.a
ln -sf ../lib32/libasan.a 32/libasan.a
ln -sf lib64/libasan.a libasan.a
%endif
+%if %{build_libubsan}
+ln -sf ../lib32/libubsan.a 32/libubsan.a
+ln -sf lib64/libubsan.a libubsan.a
+%endif
+%if %{build_libcilkrts}
+ln -sf ../lib32/libcilkrts.a 32/libcilkrts.a
+ln -sf lib64/libcilkrts.a libcilkrts.a
+%endif
%if %{build_go}
ln -sf ../lib32/libgo.a 32/libgo.a
ln -sf lib64/libgo.a libgo.a
@@ -1728,8 +1791,6 @@ ln -sf lib64/adalib adalib
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgfortran.a 32/libgfortran.a
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libstdc++.a 32/libstdc++.a
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libsupc++.a 32/libsupc++.a
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libmudflap.a 32/libmudflap.a
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libmudflapth.a 32/libmudflapth.a
%if %{build_libquadmath}
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libquadmath.a 32/libquadmath.a
%endif
@@ -1742,6 +1803,12 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/liba
%if %{build_libasan}
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libasan.a 32/libasan.a
%endif
+%if %{build_libubsan}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libubsan.a 32/libubsan.a
+%endif
+%if %{build_libcilkrts}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libcilkrts.a 32/libcilkrts.a
+%endif
%if %{build_go}
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgo.a 32/libgo.a
ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgobegin.a 32/libgobegin.a
@@ -1758,15 +1825,14 @@ ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/adal
# Strip debug info from Fortran/ObjC/Java static libraries
strip -g `find . \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \
- -o -name libmudflap.a -o -name libmudflapth.a \
-o -name libgcc.a -o -name libgcov.a -o -name libquadmath.a \
-o -name libitm.a -o -name libgo.a -o -name libcaf\*.a \
- -o -name libatomic.a -o -name libasan.a -o -name libtsan.a \) \
+ -o -name libatomic.a -o -name libasan.a -o -name libtsan.a \
+ -o -name libubsan.a -o -name liblsan.a -o -name libcilkrts.a \) \
-a -type f`
popd
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgfortran.so.3.*
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgomp.so.1.*
-chmod 755 %{buildroot}%{_prefix}/%{_lib}/libmudflap{,th}.so.0.*
%if %{build_libquadmath}
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libquadmath.so.0.*
%endif
@@ -1777,13 +1843,22 @@ 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.0.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libasan.so.1.*
+%endif
+%if %{build_libubsan}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libubsan.so.0.*
+%endif
+%if %{build_libcilkrts}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libcilkrts.so.5.*
%endif
%if %{build_libtsan}
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libtsan.so.0.*
%endif
+%if %{build_liblsan}
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.*
+%endif
%if %{build_go}
-chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.4.*
+chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.5.*
%endif
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libobjc.so.4.*
@@ -1838,6 +1913,7 @@ rm -f %{buildroot}%{_prefix}/%{_lib}/{libffi*,libiberty.a}
rm -f $FULLEPATH/install-tools/{mkheaders,fixincl}
rm -f %{buildroot}%{_prefix}/lib/{32,64}/libiberty.a
rm -f %{buildroot}%{_prefix}/%{_lib}/libssp*
+rm -f %{buildroot}%{_prefix}/%{_lib}/libvtv* || :
rm -f %{buildroot}%{_prefix}/bin/gappletviewer || :
rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gcc-%{version} || :
rm -f %{buildroot}%{_prefix}/bin/%{_target_platform}-gfortran || :
@@ -2055,10 +2131,6 @@ fi
%postun -n libgomp -p /sbin/ldconfig
-%post -n libmudflap -p /sbin/ldconfig
-
-%postun -n libmudflap -p /sbin/ldconfig
-
%post -n libquadmath
/sbin/ldconfig
if [ -f %{_infodir}/libquadmath.info.gz ]; then
@@ -2097,10 +2169,22 @@ fi
%postun -n libasan -p /sbin/ldconfig
+%post -n libubsan -p /sbin/ldconfig
+
+%postun -n libubsan -p /sbin/ldconfig
+
%post -n libtsan -p /sbin/ldconfig
%postun -n libtsan -p /sbin/ldconfig
+%post -n liblsan -p /sbin/ldconfig
+
+%postun -n liblsan -p /sbin/ldconfig
+
+%post -n libcilkrts -p /sbin/ldconfig
+
+%postun -n libcilkrts -p /sbin/ldconfig
+
%post -n libgo -p /sbin/ldconfig
%postun -n libgo -p /sbin/ldconfig
@@ -2154,6 +2238,7 @@ fi
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdint-gcc.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdalign.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdnoreturn.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdatomic.h
%ifarch %{ix86} x86_64
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xmmintrin.h
@@ -2188,6 +2273,11 @@ fi
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/fxsrintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xsaveintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xsaveoptintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avx512cdintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avx512erintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avx512fintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avx512pfintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/shaintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm_malloc.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm3dnow.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cpuid.h
@@ -2224,6 +2314,9 @@ fi
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/htmintrin.h
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/htmxlintrin.h
%endif
+%if %{build_libcilkrts}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cilk
+%endif
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/collect2
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/crt*.o
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc.a
@@ -2236,6 +2329,9 @@ fi
%if %{build_libitm}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libitm.spec
%endif
+%if %{build_libasan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsanitizer.spec
+%endif
%if %{build_cloog}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libcloog-isl.so.*
%endif
@@ -2248,10 +2344,6 @@ fi
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc_s.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgomp.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgomp.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflap.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflapth.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflap.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflapth.so
%if %{build_libquadmath}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libquadmath.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libquadmath.so
@@ -2269,6 +2361,14 @@ fi
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libasan.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libasan_preinit.o
%endif
+%if %{build_libubsan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libubsan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libubsan.so
+%endif
+%if %{build_libcilkrts}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libcilkrts.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libcilkrts.so
+%endif
%endif
%ifarch %{multilib_64_archs}
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
@@ -2279,10 +2379,6 @@ fi
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_s.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgomp.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgomp.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflap.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflapth.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflap.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflapth.so
%if %{build_libquadmath}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libquadmath.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libquadmath.so
@@ -2300,12 +2396,16 @@ fi
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libasan.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libasan_preinit.o
%endif
+%if %{build_libubsan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libubsan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libubsan.so
+%endif
+%if %{build_libcilkrts}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libcilkrts.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libcilkrts.so
+%endif
%endif
%ifarch sparcv9 sparc64 ppc ppc64 ppc64p7
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.so
%if %{build_libquadmath}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libquadmath.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libquadmath.so
@@ -2323,10 +2423,22 @@ fi
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libasan.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libasan_preinit.o
%endif
+%if %{build_libubsan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libubsan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libubsan.so
+%endif
+%if %{build_libcilkrts}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libcilkrts.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libcilkrts.so
+%endif
%if %{build_libtsan}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libtsan.a
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libtsan.so
%endif
+%if %{build_liblsan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/liblsan.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/liblsan.so
+%endif
%else
%if %{build_libatomic}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libatomic.so
@@ -2335,9 +2447,18 @@ fi
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libasan.so
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libasan_preinit.o
%endif
+%if %{build_libubsan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libubsan.so
+%endif
+%if %{build_libcilkrts}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libcilkrts.so
+%endif
%if %{build_libtsan}
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libtsan.so
%endif
+%if %{build_liblsan}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/liblsan.so
+%endif
%endif
%dir %{_prefix}/libexec/getconf
%{_prefix}/libexec/getconf/default
@@ -2773,44 +2894,6 @@ fi
%{_infodir}/libgomp.info*
%doc rpm.doc/changelogs/libgomp/ChangeLog*
-%files -n libmudflap
-%defattr(-,root,root,-)
-%{_prefix}/%{_lib}/libmudflap.so.0*
-%{_prefix}/%{_lib}/libmudflapth.so.0*
-
-%files -n libmudflap-devel
-%defattr(-,root,root,-)
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mf-runtime.h
-%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.so
-%endif
-%doc rpm.doc/changelogs/libmudflap/ChangeLog*
-
-%files -n libmudflap-static
-%defattr(-,root,root,-)
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%ifarch sparcv9 ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libmudflap.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libmudflapth.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/libmudflap.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libmudflapth.a
-%endif
-%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.a
-%endif
-
%if %{build_libquadmath}
%files -n libquadmath
%defattr(-,root,root,-)
@@ -2913,7 +2996,7 @@ fi
%if %{build_libasan}
%files -n libasan
%defattr(-,root,root,-)
-%{_prefix}/%{_lib}/libasan.so.0*
+%{_prefix}/%{_lib}/libasan.so.1*
%files -n libasan-static
%defattr(-,root,root,-)
@@ -2934,6 +3017,30 @@ fi
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
%endif
+%if %{build_libubsan}
+%files -n libubsan
+%defattr(-,root,root,-)
+%{_prefix}/%{_lib}/libubsan.so.0*
+
+%files -n libubsan-static
+%defattr(-,root,root,-)
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libubsan.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/libubsan.a
+%endif
+%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libubsan.a
+%endif
+%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
+%endif
+
%if %{build_libtsan}
%files -n libtsan
%defattr(-,root,root,-)
@@ -2948,6 +3055,44 @@ fi
%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
%endif
+%if %{build_liblsan}
+%files -n liblsan
+%defattr(-,root,root,-)
+%{_prefix}/%{_lib}/liblsan.so.0*
+
+%files -n liblsan-static
+%defattr(-,root,root,-)
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/liblsan.a
+%doc rpm.doc/changelogs/libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
+%endif
+
+%if %{build_libcilkrts}
+%files -n libcilkrts
+%defattr(-,root,root,-)
+%{_prefix}/%{_lib}/libcilkrts.so.5*
+
+%files -n libcilkrts-static
+%defattr(-,root,root,-)
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libcilkrts.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/libcilkrts.a
+%endif
+%ifnarch sparcv9 sparc64 ppc ppc64 ppc64p7
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libcilkrts.a
+%endif
+%doc rpm.doc/changelogs/libcilkrts/ChangeLog* libcilkrts/README
+%endif
+
%if %{build_go}
%files go
%defattr(-,root,root,-)
@@ -2983,7 +3128,7 @@ fi
%files -n libgo
%defattr(-,root,root,-)
-%{_prefix}/%{_lib}/libgo.so.4*
+%{_prefix}/%{_lib}/libgo.so.5*
%doc rpm.doc/libgo/*
%files -n libgo-devel
@@ -3044,499 +3189,126 @@ fi
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/plugin
%changelog
-* Thu Feb 20 2014 Jakub Jelinek <jakub@redhat.com> 4.8.2-15
-- fix exception spec instantiation ICE (#1067398, PR c++/60046)
-- fix pch on aarch64 (#1058991, PR pch/60010)
+* Wed Apr 9 2014 Jakub Jelinek <jakub@redhat.com> 4.9.0-0.9
+- update from the trunk
+ - PRs ada/60703, bootstrap/60620, bootstrap/60719, bootstrap/60743,
+ c++/21113, c++/44613, c++/44859, c++/58207, c++/59115, c++/60374,
+ c++/60573, c++/60626, c++/60642, c++/60708, c++/60713, c++/60731,
+ debug/55794, debug/60655, fortran/60191, ipa/59626, ipa/60640,
+ ipa/60659, ipa/60746, libstdc++/60270, middle-end/60706,
+ middle-end/60729, middle-end/60750, rtl-optimization/60155,
+ rtl-optimization/60604, rtl-optimization/60700,
+ rtl-optimization/60776, sanitizer/60745, target/43751, target/54083,
+ target/54407, target/60034, target/60363, target/60504, target/60602,
+ target/60609, target/60650, target/60657, target/60697, target/60704,
+ target/60735, target/60763, testsuite/60671, testsuite/60672,
+ tree-optimization/60505, tree-optimization/60656,
+ tree-optimization/60733, tree-optimization/60740,
+ tree-optimization/60766, tree-optimization/60785
+
+* Fri Mar 28 2014 Jakub Jelinek <jakub@redhat.com> 4.9.0-0.8
+- update from the trunk
+ - PRs c++/52369, c++/60331, c++/60375, c++/60566, c++/60574, c++/60627,
+ c++/60628, c++/60689, c/35449, c/37428, c/39525, c/50347,
+ fortran/34928, fortran/58880, fortran/60522, fortran/60677, ipa/60315,
+ ipa/60600, libstdc++/60612, libstdc++/60658, middle-end/60635,
+ middle-end/60682, other/59545, rtl-optimization/60452,
+ rtl-optimization/60501, rtl-optimization/60650, sanitizer/56781,
+ sanitizer/60636, target/60580, target/60672, target/60675,
+ target/60693, testsuite/58013
+- inliner speed fixes (PR ipa/60243)
+- fortran wrong-code fix (PR fortran/60576)
+- fix IPA-SRA with mismatched types between caller and callee
+ (PR middle-end/60647)
+- fix expansion of switch with constant index not optimized during gimple
+ passes (PR target/60648)
+
+* Mon Mar 24 2014 Jakub Jelinek <jakub@redhat.com> 4.9.0-0.7
+- update from the trunk
+ - PRs c++/60384, debug/60603, fortran/60599, ipa/59176, ipa/60419,
+ libstdc++/60587, libstdc++/60623, rtl-optimization/60601,
+ sanitizer/60613, target/60598, target/60610, tree-optimization/60577
+
+* Thu Mar 20 2014 Jakub Jelinek <jakub@redhat.com> 4.9.0-0.6
+- update from the trunk
+ - PRs ada/39172, c++/51474, c++/54250, c++/59571, c++/60305, c++/60332,
+ c++/60390, c++/60391, c++/60572, c/55383, fortran/55207,
+ fortran/60283, fortran/60543, fortran/60549, libfortran/48600,
+ libfortran/58324, libstdc++/60564, lto/59543, lto/60571,
+ middle-end/60534, middle-end/60553, middle-end/60597, other/60589,
+ rtl-optimization/56356, sanitizer/60535, sanitizer/60557,
+ sanitizer/60569, target/60039, target/60516, target/60562,
+ target/60563, target/60568, testsuite/58851, testsuite/60590,
+ tree-optimization/60559
+
+* Sat Mar 15 2014 Jakub Jelinek <jakub@redhat.com> 4.9.0-0.5
+- update from the trunk
+ - PRs ada/51483, ada/60411, bootstrap/58572, c++/53492, c++/58609,
+ c++/60033, c++/60254, c++/60367, c++/60383, c++/60389, c++/60393,
+ c++/60532, c/60197, debug/60438, fortran/51976, fortran/60392,
+ fortran/60447, ipa/58721, ipa/60457, libfortran/38199,
+ libfortran/60128, libgcc/59339, libgcc/60472, libgfortran/60128,
+ libstdc++/59392, libstdc++/60499, lto/60424, lto/60427, lto/60461,
+ middle-end/36282, middle-end/60418, middle-end/60445,
+ middle-end/60474, middle-end/60482, middle-end/60484,
+ middle-end/60518, rtl-optimization/57189, rtl-optimization/57320,
+ rtl-optimization/60508, target/58271, target/58595, target/59396,
+ target/60264, target/60486, target/60525, tree-optimization/59025,
+ tree-optimization/59779, tree-optimization/60429,
+ tree-optimization/60454, tree-optimization/60485,
+ tree-optimization/60502
+
+* Thu Mar 6 2014 Jakub Jelinek <jakub@redhat.com> 4.9.0-0.4
+- update from the trunk
+ - PRs c++/60361, c++/60409, debug/60381, testsuite/59308
+
+* Wed Mar 5 2014 Jakub Jelinek <jakub@redhat.com> 4.9.0-0.3
+- update from the trunk
+ - PRs bootstrap/48230, bootstrap/50927, bootstrap/52466, bootstrap/60343,
+ c++/11586, c++/14710, c++/50025, c++/54359, c++/54440, c++/55877,
+ c++/57132, c++/58170, c++/58606, c++/58610, c++/58678, c++/58835,
+ c++/58845, c++/58873, c++/59231, c++/59347, c++/60046, c++/60051,
+ c++/60052, c++/60053, c++/60064, c++/60065, c++/60108, c++/60146,
+ c++/60167, c++/60182, c++/60185, c++/60186, c++/60187, c++/60190,
+ c++/60215, c++/60216, c++/60219, c++/60222, c++/60224, c++/60225,
+ c++/60227, c++/60241, c++/60248, c++/60250, c++/60251, c++/60252,
+ c++/60253, c++/60267, c++/60272, c++/60311, c++/60312, c++/60314,
+ c++/60328, c++/60345, c++/60347, c++/60353, c++/60376, c++/60377,
+ c++/60379, c++/60415, c++/60417, c/37743, c/60195, debug/56563,
+ debug/57232, debug/59992, debug/60152, driver/60233, fortran/49397,
+ fortran/55907, fortran/59599, fortran/60231, fortran/60232,
+ fortran/60234, fortran/60236, fortran/60286, fortran/60302,
+ fortran/60341, fortran/60359, ipa/55260, ipa/58555, ipa/60150,
+ ipa/60243, ipa/60266, ipa/60306, ipa/60327, libfortran/58015,
+ libfortran/59313, libfortran/60148, libgcc/60166, libgcj/55637,
+ libjava/60261, libstdc++/58338, libstdc++/60308, lto/53808, lto/60179,
+ lto/60295, lto/60319, lto/60404, lto/60405, middle-end/58477,
+ middle-end/59223, middle-end/60147, middle-end/60175,
+ middle-end/60221, middle-end/60291, objc++/60398, objc/56870,
+ pch/60010, plugins/59335, preprocessor/58844, preprocessor/60400,
+ rtl-optimization/49847, rtl-optimization/52714,
+ rtl-optimization/58960, rtl-optimization/59535,
+ rtl-optimization/60131, rtl-optimization/60268,
+ rtl-optimization/60292, rtl-optimization/60317, sanitizer/60142,
+ target/46898, target/55426, target/57896, target/57935, target/57936,
+ target/58675, target/59222, target/59794, target/59799, target/60071,
+ target/60169, target/60193, target/60203, target/60204, target/60205,
+ target/60207, target/60280, target/60298, testsuite/60173,
+ tree-optimization/56490, tree-optimization/58028,
+ tree-optimization/60174, tree-optimization/60183,
+ tree-optimization/60276, tree-optimization/60382
- configure with --enable-gnu-indirect-function on architectures
and distros that support it and don't support it by default
yet (#1067245)
-
-* Wed Feb 19 2014 Jakub Jelinek <jakub@redhat.com> 4.8.2-14
- remove libgo P.224 elliptic curve (#1066539)
-- fix -mcpu=power8 ICE (#1064242, PR target/60137)
-
-* Tue Jan 21 2014 Jakub Jelinek <jakub@redhat.com> 4.8.2-13
-- when removing -Wall from CXXFLAGS, if -Werror=format-security
- is present, add -Wformat to it, so that GCC builds on F21
-
-* Mon Jan 20 2014 Jakub Jelinek <jakub@redhat.com> 4.8.2-12
-- update from the 4.8 branch (#1052892)
- - PRs c++/59838, debug/54694, fortran/34547, fortran/58410,
- middle-end/59827, middle-end/59860, target/58139, target/59142,
- target/59695, target/59794, target/59826, target/59839
-- fix handling of initialized vars with flexible array members
- (#1035413, PR middle-end/28865)
-
-* Wed Jan 15 2014 Jakub Jelinek <jakub@redhat.com> 4.8.2-11
-- update from the 4.8 branch
- - fix s390x reload bug (#1052372, PR target/59803)
-
-* Tue Jan 14 2014 Jakub Jelinek <jakub@redhat.com> 4.8.2-10
-- update from the 4.8 branch (#1052892)
- - PRs ada/55946, ada/59772, c++/56060, c++/58954, c++/59255, c++/59730,
- fortran/57042, fortran/58998, fortran/59493, fortran/59612,
- fortran/59654, ipa/59610, middle-end/59584, pch/59436,
- rtl-optimization/54300, rtl-optimization/58668,
- rtl-optimization/59137, rtl-optimization/59647,
- rtl-optimization/59724, target/57386, target/59587, target/59625,
- target/59652, testsuite/58630, tree-optimization/54570,
- tree-optimization/59125, tree-optimization/59362,
- tree-optimization/59715, tree-optimization/59745
-- default to -march=z196 instead of -march=z10 on s390/s390x (#1052890)
-
-* Fri Jan 10 2014 Jakub Jelinek <jakub@redhat.com> 4.8.2-9
-- define %%global _performance_build 1 (#1051064)
-
-* Tue Jan 7 2014 Jakub Jelinek <jakub@redhat.com> 4.8.2-8
-- treat ppc64p7 as ppc64 (#1048859)
-
-* Thu Dec 12 2013 Jakub Jelinek <jakub@redhat.com> 4.8.2-7
-- update from the 4.8 branch
- - PRs libgomp/59467, rtl-optimization/58295, target/56807,
- testsuite/59442
- - fix LRA coalescing for real (PR middle-end/59470)
-
-* Wed Dec 11 2013 Jakub Jelinek <jakub@redhat.com> 4.8.2-6
-- temporarily revert PR middle-end/58956 to avoid libstdc++
- miscompilation on i?86 (PR middle-end/59470)
-
-* Mon Dec 9 2013 Jakub Jelinek <jakub@redhat.com> 4.8.2-5
-- update from the 4.8 branch
- - PRs ada/59382, bootstrap/57683, c++/58162, c++/59031, c++/59032,
- c++/59044, c++/59052, c++/59268, c++/59297, c/59280, c/59351,
- fortran/57445, fortran/58099, fortran/58471, fortran/58771,
- middle-end/58742, middle-end/58941, middle-end/58956,
- middle-end/59011, middle-end/59037, middle-end/59138,
- rtl-optimization/58726, target/50751, target/51244, target/56788,
- target/58854, target/58864, target/59021, target/59088,
- target/59101, target/59153, target/59163, target/59207,
- target/59343, target/59405, tree-optimization/57517,
- tree-optimization/58137, tree-optimization/58143,
- tree-optimization/58653, tree-optimization/58794,
- tree-optimization/59014, tree-optimization/59047,
- tree-optimization/59139, tree-optimization/59164,
- tree-optimization/59288, tree-optimization/59330,
- tree-optimization/59334, tree-optimization/59358,
- tree-optimization/59388
-- aarch64 gcj enablement (#1023789)
-- look for libgfortran.spec and libitm.spec in %%{_lib} rather than lib
- subdirs (#1023789)
-
-* Mon Nov 11 2013 Jakub Jelinek <jakub@redhat.com> 4.8.2-4
-- update from the 4.8 branch
- - PRs plugins/52872, regression/58985, target/59034
-
-* Wed Nov 6 2013 Jakub Jelinek <jakub@redhat.com> 4.8.2-3
-- update from the 4.8 branch
- - PRs c++/58282, c++/58979, fortran/58355, fortran/58989, libstdc++/58839,
- libstdc++/58912, libstdc++/58952, lto/57084, middle-end/58789,
- rtl-optimization/58079, rtl-optimization/58831, rtl/58542,
- target/58690, target/58779, target/58792, target/58838,
- tree-optimization/57488, tree-optimization/58805,
- tree-optimization/58984
-- fix ICEs in get_bit_range (PR middle-end/58970)
-- fix ICEs in RTL loop unswitching (PR rtl-optimization/58997)
-
-* Sun Oct 20 2013 Jakub Jelinek <jakub@redhat.com> 4.8.2-2
-- update from the 4.8 branch
- - PRs c++/58596, libstdc++/58800
-- power8 TImode fix (#1014053, PR target/58673)
-
-* Thu Oct 17 2013 Jakub Jelinek <jakub@redhat.com> 4.8.2-1
-- update from the 4.8 branch
- - GCC 4.8.2 release
- - PRs c++/57850, c++/58633, libstdc++/58191
-
-* Thu Oct 10 2013 Jakub Jelinek <jakub@redhat.com> 4.8.1-12
-- update from the 4.8 branch
- - PRs c++/58568, fortran/55469, fortran/57697, fortran/58469,
- libstdc++/57465, libstdc++/57641, libstdc++/58659, target/58460,
- tree-optimization/58539
- - fix asm goto handling (#1017704, PR middle-end/58670)
-
-* Wed Oct 2 2013 Jakub Jelinek <jakub@redhat.com> 4.8.1-11
-- update from the 4.8 branch
- - PRs c++/58535, libstdc++/58437, libstdc++/58569, middle-end/56791,
- middle-end/58463, middle-end/58564, target/58330,
- tree-optimization/56716
- - fix s390x z10+ chunkification (#1012870, PR target/58574)
-- disable ppc{,64} -mvsx-timode by default (#1014053, PR target/58587)
-
-* Fri Sep 20 2013 Jakub Jelinek <jakub@redhat.com> 4.8.1-10
-- update from the 4.8 branch
- - PRs ada/58264, c++/58457, c++/58458, libstdc++/58358,
- tree-optimization/58088
-- on RHEL7, configure on ppc/ppc64 with default -mcpu=power7,
- on s390/s390x with default -march=z10 -mtune=zEC12 and
- on i?86 default to -march=x86-64 -mtune=generic (#805157)
-- on Fedora 20+ and RHEL7 default to -fdiagnostics-color=auto
- rather than -fdiagnostics-color=never, if GCC_COLORS isn't
- in the environment; to turn it off by default, set GCC_COLORS=
- in the environment
-
-* Sun Sep 15 2013 Jakub Jelinek <jakub@redhat.com> 4.8.1-9
-- update from the 4.8 branch
- - PRs c++/58273, libstdc++/58415, middle-end/58377, rtl-optimization/58365,
- target/58314, target/58361, target/58382, tree-optimization/58385
-- add arm_neon.h on aarch64 (#1007490)
-
-* Mon Sep 9 2013 Jakub Jelinek <jakub@redhat.com> 4.8.1-8
-- update from the 4.8 branch
- - PRs c++/58325, libstdc++/58302, libstdc++/58341, middle-end/57656,
- other/12081, target/57735, tree-optimization/57521,
- tree-optimization/57685, tree-optimization/58010,
- tree-optimization/58223, tree-optimization/58228,
- tree-optimization/58246, tree-optimization/58277,
- tree-optimization/58364
-
-* Thu Aug 29 2013 Jakub Jelinek <jakub@redhat.com> 4.8.1-7
-- update from the 4.8 branch
- - PRs c++/58083, c++/58119, c++/58190, fortran/57798, fortran/58185,
- middle-end/56977, middle-end/57381, middle-end/58257, target/56979,
- target/57865, target/57927, target/58218, tree-optimization/57343,
- tree-optimization/57396, tree-optimization/57417,
- tree-optimization/58006, tree-optimization/58164,
- tree-optimization/58165, tree-optimization/58209
-- fix up x86-64 -mcmodel=large -fpic TLS GD and LD model
- (#994244, PR target/58067)
-- power8 fusion support fixes (#731884, PR target/58160)
-
-* Wed Aug 14 2013 Jakub Jelinek <jakub@redhat.com> 4.8.1-6
-- update from the 4.8 branch
- - PRs c++/57825, c++/57901, c++/57981, c++/58022, fortran/57435,
- fortran/58058, libstdc++/56627, libstdc++/57914, libstdc++/58098,
- middle-end/58041, rtl-optimization/57459, rtl-optimization/57708,
- rtl-optimization/57878, sanitizer/56417, target/51784, target/57516,
- target/58067, target/58132, tree-optimization/57980
-- power8 fusion support (#731884)
-- fix up ABI alignment patch (#947197)
-- fix up SRA with volatile struct accesses (PR tree-optimization/58145)
-
-* Wed Jul 17 2013 Jakub Jelinek <jakub@redhat.com> 4.8.1-5
-- update from the 4.8 branch
- - PRs target/55656, target/55657
- - update to Go 1.1.1
-- backport power8 HTM support from trunk (#731884)
-- backport s390 zEC12 HTM support from trunk
-
-* Mon Jul 15 2013 Jakub Jelinek <jakub@redhat.com> 4.8.1-4
-- update from the 4.8 branch
- - PRs c++/57437, c++/57526, c++/57532, c++/57545, c++/57550, c++/57551,
- c++/57645, c++/57771, c++/57831, fortran/57785,
- rtl-optimization/57829, target/56102, target/56892, target/56987,
- target/57506, target/57631, target/57736, target/57744,
- target/57777, target/57792, target/57844
-- backport some raw-string literal handling fixes (#981029,
- PRs preprocessor/57757, preprocessor/57824)
-- improve convert_to_* (PR c++/56493)
-- tune for power7 on RHEL7
-
-* Fri Jun 28 2013 Jakub Jelinek <jakub@redhat.com> 4.8.1-3
-- update from the 4.8 branch
- - PRs c++/53211, c++/56544, driver/57652, libstdc++/57619, libstdc++/57666,
- libstdc++/57674, rtl-optimization/57518, target/57623, target/57655,
- tree-optimization/57358, tree-optimization/57537
- - fix up gcc-{ar,nm,ranlib} (#974853, PR driver/57651)
-- fix two libitm HTM handling bugs (PR libitm/57643)
-- speed up __popcount[sdt]i2 library function (PR middle-end/36041)
-- backport power8 support from trunk (#731884, PR target/57615)
-- for Fedora 20+ test -fstack-protector-strong during %%check instead
- of -fstack-protector
-
-* Wed Jun 12 2013 Jakub Jelinek <jakub@redhat.com> 4.8.1-2
-- update from the 4.8 branch
- - PRs fortran/57364, fortran/57508, target/56547, target/57379, target/57568
-- backport backwards compatible alignment ABI fixes (#947197, PR target/56564)
-- fix up widening multiplication vectorization on big-endian
- (PR tree-optimization/57537)
-
-* Mon Jun 3 2013 Jakub Jelinek <jakub@redhat.com> 4.8.1-1
-- update from the 4.8 branch
- - GCC 4.8.1 release
- - PRs c++/56930, c++/57319, fortran/57217, target/49146, target/56742
-- backport Intel Silvermont enablement and tuning from trunk
-- backport 3 small AMD improvement patches from trunk
-
-* Sun May 26 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-8
-- update from the 4.8 branch
- - std::chrono::steady_clock ABI fixes from 4.8.0-7
-
-* Fri May 24 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-7
-- update from the 4.8 branch
- - PRs c++/57016, c++/57317, c++/57325, c++/57388, libffi/56033,
- libstdc++/57336, middle-end/57344, middle-end/57347, plugins/56754,
- rtl-optimization/57341, target/56732, target/57356,
- tree-optimization/57303, tree-optimization/57318,
- tree-optimization/57321, tree-optimization/57330, tree-ssa/57385
- - std::chrono::steady_clock now really steady
-
-* Fri May 17 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-6
-- update from the 4.8 branch
- - PRs c++/56782, c++/56998, c++/57041, c++/57196, c++/57243, c++/57252,
- c++/57253, c++/57254, c++/57274, c++/57279, middle-end/57251,
- rtl-optimization/57281, rtl-optimization/57300, target/45359,
- target/46396, target/57264
-- backport color diagnostics support from trunk, enable with
- -fdiagnostics-color=auto, -fdiagnostics-color=always or
- having non-empty GCC_COLORS variable in environment
-- backport -fstack-protector-strong support from trunk
-
-* Fri May 10 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-5
-- update from the 4.8 branch
- - PRs bootstrap/54281, bootstrap/54659, c++/57047, c++/57068, c++/57222,
- fortran/57142, libstdc++/57212, middle-end/56988, target/55033,
- target/57237, tree-optimization/57200, tree-optimization/57214
-- fix up strlen pass (PR tree-optimization/57230)
-
-* Tue May 7 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-4
-- update from the 4.8 branch
- - PRs ada/56474, c++/50261, c++/56450, c++/56859, c++/56970, c++/57064,
- c++/57092, c++/57183, debug/57184, fortran/51825, fortran/52512,
- fortran/53685, fortran/56786, fortran/56814, fortran/56872,
- fortran/56968, fortran/57022, libfortran/51825, libfortran/52512,
- libfortran/56786, libstdc++/57010, middle-end/57103,
- rtl-optimization/56605, rtl-optimization/56847,
- rtl-optimization/57003, rtl-optimization/57130,
- rtl-optimization/57131, rtl-optimizations/57046, sanitizer/56990,
- target/44578, target/55445, target/56797, target/56866, target/57018,
- target/57091, target/57097, target/57098, target/57106, target/57108,
- target/57150, tree-optimization/57051, tree-optimization/57066,
- tree-optimization/57083, tree-optimization/57104,
- tree-optimization/57149, tree-optimization/57185
- - fix gcj with -fsection-anchors (#952673, PR libgcj/57074)
-- enable libitm on s390{,x}
-- error when linking with both -fsanitize=address and -fsanitize=thread
- (#957778)
-
-* Fri Apr 19 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-3
-- update from the 4.8 branch
- - PRs c++/56388, fortran/56816, fortran/56994, rtl-optimization/56992,
- target/56890, target/56903, target/56948, tree-optimization/56962,
- tree-optimization/56984
-- fix up LRA caused miscompilation of xulrunner on i?86
- (#949553, PR rtl-optimization/56999)
-- reassoc fix for -Ofast -frounding-math (PR tree-optimization/57000)
-
-* Fri Apr 12 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-2
-- update from the 4.8 branch
- - PRs c++/35722, c++/45282, c++/52014, c++/52374, c++/52748, c++/54277,
- c++/54359, c++/54764, c++/55532, c++/55951, c++/55972, c++/56039,
- c++/56447, c++/56582, c++/56646, c++/56692, c++/56699, c++/56722,
- c++/56728, c++/56749, c++/56772, c++/56774, c++/56793, c++/56794,
- c++/56821, c++/56895, c++/56913, debug/56819, fortran/54932,
- fortran/56696, fortran/56735, fortran/56737, fortran/56782,
- libstdc++/55977, libstdc++/55979, libstdc++/56002, libstdc++/56678,
- libstdc++/56834, lto/56777, middle-end/56694, middle-end/56768,
- middle-end/56883, other/55274, rtl-optimization/48182,
- rtl-optimization/56745, sanitizer/55702, target/54805, target/55487,
- target/56560, target/56720, target/56771, tree-optimization/48184,
- tree-optimization/48186, tree-optimization/48762,
- tree-optimization/56407, tree-optimization/56501,
- tree-optimization/56817, tree-optimization/56837,
- tree-optimization/56899, tree-optimization/56918,
- tree-optimization/56920
-
-* Fri Mar 22 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-1
-- update from the 4.8 branch
- - GCC 4.8.0 release
- - PRs c++/56607, other/43620
- - fix length in .debug_aranges in some cases
-- improve debug info for optimized away global vars (PR debug/56608)
-- don't warn about signed 1-bit enum bitfields containing values 0 and -1
- or just -1 (PR c/56566)
-
-* Wed Mar 20 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.18
-- update from the 4.8 branch
- - PRs libstdc++/56468, target/56640, tree-optimization/56635,
- tree-optimization/56661
-- package libasan_preinit.o
-
-* Sat Mar 16 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.17
-- update from trunk and the 4.8 branch
- - PRs ada/52123, c++/51412, c++/51494, c++/51884, c++/52183, c++/56222,
- c++/56346, c++/56565, c++/56567, c++/56611, c++/56614, debug/56307,
- fortran/56575, fortran/56615, libstdc++/56492, libstdc++/56609,
- libstdc++/56613, lto/56557, middle-end/56524, middle-end/56571,
- target/40797, target/49880, target/56470, target/56591, target/56619,
- testsuite/54119, tree-optimization/53265, tree-optimization/56478,
- tree-optimization/56570, tree-optimization/56608
-
-* Thu Mar 7 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.16
-- updated from trunk
- - PRs bootstrap/56509, c++/54383, c++/55135, c++/56464, c++/56530,
- c++/56534, c++/56543, debug/55364, debug/56510, libquadmath/55473,
- lto/50293, lto/56515, middle-end/50494, middle-end/56294,
- middle-end/56525, middle-end/56526, middle-end/56548,
- rtl-optimization/56484, rtl-optimization/56494, target/56529,
- tree-optimization/56270, tree-optimization/56521,
- tree-optimization/56539, tree-optimization/56559
- - include arm-cores.def in gcc-python-plugin on arm (#910926)
-- include vxworks-dummy.h in gcc-python-plugin where needed (PR plugins/45078)
-
-* Mon Mar 4 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.15
-- updated from trunk
- - PRs c++/10291, c++/40405, c++/52688, c++/55632, c++/55813, c++/56243,
- c++/56358, c++/56359, c++/56377, c++/56395, c++/56403, c++/56419,
- c++/56438, c++/56481, fortran/54730, fortran/56385, fortran/56416,
- fortran/56477, fortran/56491, libfortran/30162, libstdc++/56011,
- libstdc++/56012, middle-end/45472, middle-end/56077,
- middle-end/56108, middle-end/56420, middle-end/56461,
- rtl-optimization/50339, rtl-optimization/56466, sanitizer/56393,
- sanitizer/56454, target/48901, target/52500, target/52501,
- target/52550, target/54639, target/54640, target/54662, target/56444,
- target/56445, target/56455, testsuite/52641, tree-optimization/55481,
- tree-optimization/56175, tree-optimization/56294,
- tree-optimization/56310, tree-optimization/56415,
- tree-optimization/56426, tree-optimization/56443,
- tree-optimization/56448
-- fnsplit fix (PR tree-optimization/56424)
-
-* Wed Feb 20 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.14
-- updated from trunk
- - PRs asan/56330, c++/51242, c++/54276, c++/56373, libquadmath/56379,
- middle-end/55889, middle-end/56349, pch/54117,
- rtl-optimization/56348, target/52555, target/54685, target/56214,
- target/56347, tree-optimization/55334, tree-optimization/56321,
- tree-optimization/56350, tree-optimization/56366,
- tree-optimization/56381, tree-optimization/56384,
- tree-optimization/56396, tree-optimization/56398
-- add BuildRequires: /usr/bin/pod2man to fix man pages generation
-- don't ICE on bogus inline asm in kernel (#912857, PR inline-asm/56405)
-- fix up info page building with texinfo 5.0 (PR bootstrap/56258)
-- devirtualization ICE fix (PR tree-optimization/56265)
-
-* Fri Feb 15 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.13
-- updated from trunk
- - PRs bootstrap/56327, c++/52026, c++/54922, c++/55003, c++/55220,
- c++/55223, c++/55232, c++/55582, c++/55670, c++/55680, c++/56323,
- c++/56343, fortran/53818, fortran/56224, fortran/56318,
- libstdc++/56111, lto/50494, target/55431, target/55941,
- testsuite/56138
-- asan fixes (PR sanitizer/56330)
-- asan speedup - use 0x7fff8000 shadow offset instead of 1LL << 44 on
- x86_64
-
-* Wed Feb 13 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.12
-- updated from trunk
- - PRs c++/55710, c++/55879, c++/55993, c++/56135, c++/56155, c++/56285,
- c++/56291, c/44938, fortran/46952, fortran/56204, inline-asm/56148,
- libitm/55693, lto/56295, lto/56297, middle-end/56288,
- sanitizer/56128, target/52122, testsuite/56082
- - fix IRA bug that caused reload ICE on ARM (#910153, target/56184)
- - attempt harder to fold "n" constrainted asm input operands in C++
- with -O0 (#910421, c++/56302)
-
-* Mon Feb 11 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.11
-- updated from trunk
- - PRs c++/56238, c++/56247, c++/56268, fortran/55362, libstdc++/56267,
- libstdc++/56278, libstdc++/56282, rtl-optimization/56246,
- rtl-optimization/56275, target/56043, tree-optimization/56264,
- tree-optimization/56273
-- improve expansion of mem1 op= mem2 (PR rtl-optimization/56151)
-
-* Fri Feb 8 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.10
-- updated from trunk
- - PRs bootstrap/56227, c++/56235, c++/56237, c++/56239, c++/56241,
- debug/53363, fortran/54339, fortran/55789, libstdc++/56193,
- libstdc++/56216, lto/56231, middle-end/56181,
- rtl-optimization/56195, rtl-optimization/56225, target/50678,
- target/54009, target/54131, tree-optimization/56250
- - fix Ada frontend miscompilation with profiledbootstrap (#906516,
- PR rtl-optimization/56178)
-- restore parsing of ppc inline asm dialects (#909298, PR target/56256)
-- fix up libiberty old regex (PR other/56245)
-- fix IRA -O0 -g code debug regression (PR debug/53948)
-
-* Wed Feb 6 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.9
-- updated from trunk
- - PRs c++/54122, c++/56177, c++/56208, debug/54793, fortran/47517,
- fortran/50627, fortran/54195, fortran/56008, fortran/56054,
- libstdc++/56202, lto/56168, middle-end/56113, middle-end/56167,
- middle-end/56217, rtl-optimization/56131, sanitizer/55617,
- target/52123, target/54601, target/55146, target/56186,
- tree-optimization/53185, tree-optimization/53342,
- tree-optimization/54386, tree-optimization/55789,
- tree-optimization/56188
- - fix up stdarg pass (PR tree-optimization/56205, #906367)
- - remove unused thread_local bitfield (#907882)
-- fix cselim pass on calls that might free memory (PR tree-optimization/52448)
-- fix libgfortran internal_pack (PR fortran/55978)
-- fix up .debug_loc for first function in CU, if it contains empty ranges
- at the beginning of the function (PR debug/56154, #904252)
-- fix ppc64 indirect calls (PR target/56228, #908388)
-
-* Thu Jan 31 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.8
-- updated from trunk
- - PRs c++/56162, debug/54410, debug/54508, debug/55059, fortran/54107,
- fortran/56138, libgomp/55561, libstdc++/54314, lto/56147,
- middle-end/53073, other/53413, other/54620, rtl-optimization/56144,
- sanitizer/55374, target/39064, target/56121, tree-optimization/55270,
- tree-optimization/56064, tree-optimization/56113,
- tree-optimization/56150, tree-optimization/56157
-
-* Tue Jan 29 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.7
-- updated from trunk
- - PRs c++/56095, c++/56104, c/56078, fortran/53537, fortran/55984,
- fortran/56047, inline-asm/55934, libstdc++/56085, libstdc++/56112,
- other/54814, other/56076, rtl-optimization/56117, target/54663,
- target/56114, testsuite/56053, tree-optimization/55927,
- tree-optimization/56034, tree-optimization/56035,
- tree-optimization/56094, tree-optimization/56098,
- tree-optimization/56125
-
-* Thu Jan 24 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.6
-- updated from trunk
- - PRs c++/53609, c++/55944, c++/56067, c++/56071, fortran/56081,
- libgomp/51376, libgomp/56073, libquadmath/56072, middle-end/56074,
- sanitizer/55989, target/49069, target/54222, target/55686,
- target/56028
-- update TeX related BuildRequires (#891460)
-
-* Tue Jan 22 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.5
-- updated from trunk
- - PRs c++/56059, fortran/55919, rtl-optimization/56023,
- tree-optimization/56051
-- fix up cloog dlopen patches for upgrade to cloog-0.18.0
-- fix Fortran OpenMP OOP ICE (PR fortran/56052)
-
-* Mon Jan 21 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.4
-- updated from trunk
- - PRs ada/864, bootstrap/55792, bootstrap/55961, c++/52343, c++/55663,
- c++/55753, c++/55801, c++/55878, c++/55893, c/48418, debug/49888,
- debug/53235, debug/53671, debug/54114, debug/54402, debug/55579,
- debug/56006, driver/55470, driver/55884, fortran/42769, fortran/45836,
- fortran/45900, fortran/47203, fortran/52865, fortran/53876,
- fortran/54286, fortran/54678, fortran/54990, fortran/54992,
- fortran/55072, fortran/55341, fortran/55618, fortran/55758,
- fortran/55763, fortran/55806, fortran/55852, fortran/55868,
- fortran/55935, fortran/55983, libmudflap/53359, libstdc++/51007,
- libstdc++/55043, libstdc++/55233, libstdc++/55594, libstdc++/55728,
- libstdc++/55847, libstdc++/55861, libstdc++/55908, lto/45375,
- middle-end/55114, middle-end/55851, middle-end/55882,
- middle-end/55890, middle-end/56015, other/55973, other/55982,
- rtl-optimization/52573, rtl-optimization/53827,
- rtl-optimization/55153, rtl-optimization/55547,
- rtl-optimization/55672, rtl-optimization/55829,
- rtl-optimization/55833, rtl-optimization/55845,
- rtl-optimization/56005, sanitizer/55488, sanitizer/55679,
- sanitizer/55844, target/42661, target/43961, target/54461,
- target/54908, target/55301, target/55433, target/55565,
- target/55718, target/55719, target/55876, target/55897,
- target/55940, target/55948, target/55974, target/55981,
- target/56058, testsuite/54622, testsuite/55994,
- tree-optimization/44061, tree-optimization/48189,
- tree-optimization/48766, tree-optimization/52631,
- tree-optimization/53465, tree-optimization/54120,
- tree-optimization/54767, tree-optimization/55273,
- tree-optimization/55569, tree-optimization/55823,
- tree-optimization/55862, tree-optimization/55875,
- tree-optimization/55888, tree-optimization/55920,
- tree-optimization/55921, tree-optimization/55955,
- tree-optimization/55964, tree-optimization/55995,
- tree-optimization/56029, tree-optimization/55264
-- fix up multiversioning (PR c++/55742)
-- fix up ICE with target attribute (PR middle-end/56022)
-- update isl to 0.11.1 and cloog to 0.18.0
-
-* Sun Jan 6 2013 Jakub Jelinek <jakub@redhat.com> 4.8.0-0.3
+
+* Thu Feb 13 2014 Jakub Jelinek <jakub@redhat.com> 4.9.0-0.2
+- update from the trunk
+ - PRs bootstrap/59878, c++/60047, c/60101, debug/59776, fortran/52370,
+ libffi/60073, lto/59468, lto/60060, middle-end/59737,
+ middle-end/60092, rtl-optimization/60116, target/43546, target/49008,
+ target/59927, target/60137, target/60151, testsuite/58630
+- upgrade to newer cloog and isl
+
+* Tue Feb 11 2014 Jakub Jelinek <jakub@redhat.com> 4.9.0-0.1
- new package
diff --git a/gcc48-cloog-dl.patch b/gcc48-cloog-dl.patch
deleted file mode 100644
index 52b5c51..0000000
--- a/gcc48-cloog-dl.patch
+++ /dev/null
@@ -1,474 +0,0 @@
---- gcc/Makefile.in.jj 2012-12-13 17:09:20.000000000 +0100
-+++ gcc/Makefile.in 2012-12-14 11:45:22.585670055 +0100
-@@ -1022,7 +1022,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
- # and the system's installed libraries.
- LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
- $(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
--BACKENDLIBS = $(CLOOGLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
-+BACKENDLIBS = $(if $(CLOOGLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
- $(ZLIB)
- # Any system libraries needed just for GNAT.
- SYSLIBS = @GNAT_LIBEXC@
-@@ -3442,6 +3442,15 @@ $(common_out_object_file): $(common_out_
- $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(OPTS_H) $(TM_H) $(TM_P_H) $(MACHMODE_H)
- $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
- $< $(OUTPUT_OPTION)
-+
-+graphite%.o : \
-+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
-+graphite.o : \
-+ ALL_CFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CFLAGS))
-+graphite%.o : \
-+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
-+graphite.o : \
-+ ALL_CXXFLAGS := -O $(filter-out -fkeep-inline-functions, $(ALL_CXXFLAGS))
- #\f
- # Generate header and source files from the machine description,
- # and compile them.
---- gcc/graphite-poly.h.jj 2012-12-13 11:31:27.000000000 +0100
-+++ gcc/graphite-poly.h 2012-12-14 13:41:41.970800726 +0100
-@@ -22,6 +22,369 @@ along with GCC; see the file COPYING3.
- #ifndef GCC_GRAPHITE_POLY_H
- #define GCC_GRAPHITE_POLY_H
-
-+#include <isl/aff.h>
-+#include <isl/schedule.h>
-+#include <isl/ilp.h>
-+#include <isl/flow.h>
-+#include <isl/options.h>
-+#include <cloog/isl/cloog.h>
-+#include <dlfcn.h>
-+#define DYNSYMS \
-+ DYNSYM (clast_pprint); \
-+ DYNSYM (cloog_clast_create_from_input); \
-+ DYNSYM (cloog_clast_free); \
-+ DYNSYM (cloog_domain_from_isl_set); \
-+ DYNSYM (cloog_input_alloc); \
-+ DYNSYM (cloog_isl_state_malloc); \
-+ DYNSYM (cloog_options_free); \
-+ DYNSYM (cloog_options_malloc); \
-+ DYNSYM (cloog_scattering_from_isl_map); \
-+ DYNSYM (cloog_state_free); \
-+ DYNSYM (cloog_union_domain_add_domain); \
-+ DYNSYM (cloog_union_domain_alloc); \
-+ DYNSYM (cloog_union_domain_set_name); \
-+ DYNSYM (isl_aff_add_coefficient_si); \
-+ DYNSYM (isl_aff_add_constant); \
-+ DYNSYM (isl_aff_free); \
-+ DYNSYM (isl_aff_get_coefficient); \
-+ DYNSYM (isl_aff_get_space); \
-+ DYNSYM (isl_aff_mod); \
-+ DYNSYM (isl_aff_set_coefficient_si); \
-+ DYNSYM (isl_aff_set_constant_si); \
-+ DYNSYM (isl_aff_zero_on_domain); \
-+ DYNSYM (isl_band_free); \
-+ DYNSYM (isl_band_get_children); \
-+ DYNSYM (isl_band_get_partial_schedule); \
-+ DYNSYM (isl_band_has_children); \
-+ DYNSYM (isl_band_list_free); \
-+ DYNSYM (isl_band_list_get_band); \
-+ DYNSYM (isl_band_list_get_ctx); \
-+ DYNSYM (isl_band_list_n_band); \
-+ DYNSYM (isl_band_member_is_zero_distance); \
-+ DYNSYM (isl_band_n_member); \
-+ DYNSYM (isl_basic_map_add_constraint); \
-+ DYNSYM (isl_basic_map_project_out); \
-+ DYNSYM (isl_basic_map_universe); \
-+ DYNSYM (isl_constraint_set_coefficient); \
-+ DYNSYM (isl_constraint_set_coefficient_si); \
-+ DYNSYM (isl_constraint_set_constant); \
-+ DYNSYM (isl_constraint_set_constant_si); \
-+ DYNSYM (isl_ctx_alloc); \
-+ DYNSYM (isl_ctx_free); \
-+ DYNSYM (isl_equality_alloc); \
-+ DYNSYM (isl_id_alloc); \
-+ DYNSYM (isl_id_copy); \
-+ DYNSYM (isl_id_free); \
-+ DYNSYM (isl_inequality_alloc); \
-+ DYNSYM (isl_local_space_copy); \
-+ DYNSYM (isl_local_space_free); \
-+ DYNSYM (isl_local_space_from_space); \
-+ DYNSYM (isl_local_space_range); \
-+ DYNSYM (isl_map_add_constraint); \
-+ DYNSYM (isl_map_add_dims); \
-+ DYNSYM (isl_map_align_params); \
-+ DYNSYM (isl_map_apply_range); \
-+ DYNSYM (isl_map_copy); \
-+ DYNSYM (isl_map_dim); \
-+ DYNSYM (isl_map_dump); \
-+ DYNSYM (isl_map_equate); \
-+ DYNSYM (isl_map_fix_si); \
-+ DYNSYM (isl_map_flat_product); \
-+ DYNSYM (isl_map_flat_range_product); \
-+ DYNSYM (isl_map_free); \
-+ DYNSYM (isl_map_from_basic_map); \
-+ DYNSYM (isl_map_from_pw_aff); \
-+ DYNSYM (isl_map_from_union_map); \
-+ DYNSYM (isl_map_get_ctx); \
-+ DYNSYM (isl_map_get_space); \
-+ DYNSYM (isl_map_get_tuple_id); \
-+ DYNSYM (isl_map_insert_dims); \
-+ DYNSYM (isl_map_intersect); \
-+ DYNSYM (isl_map_intersect_domain); \
-+ DYNSYM (isl_map_intersect_range); \
-+ DYNSYM (isl_map_is_empty); \
-+ DYNSYM (isl_map_lex_ge); \
-+ DYNSYM (isl_map_lex_le); \
-+ DYNSYM (isl_map_n_out); \
-+ DYNSYM (isl_map_range); \
-+ DYNSYM (isl_map_set_tuple_id); \
-+ DYNSYM (isl_map_universe); \
-+ DYNSYM (isl_options_set_on_error); \
-+ DYNSYM (isl_options_set_schedule_fuse); \
-+ DYNSYM (isl_options_set_schedule_max_constant_term); \
-+ DYNSYM (isl_options_set_schedule_maximize_band_depth); \
-+ DYNSYM (isl_printer_free); \
-+ DYNSYM (isl_printer_print_aff); \
-+ DYNSYM (isl_printer_print_constraint); \
-+ DYNSYM (isl_printer_print_map); \
-+ DYNSYM (isl_printer_print_set); \
-+ DYNSYM (isl_printer_to_file); \
-+ DYNSYM (isl_pw_aff_add); \
-+ DYNSYM (isl_pw_aff_alloc); \
-+ DYNSYM (isl_pw_aff_copy); \
-+ DYNSYM (isl_pw_aff_eq_set); \
-+ DYNSYM (isl_pw_aff_free); \
-+ DYNSYM (isl_pw_aff_from_aff); \
-+ DYNSYM (isl_pw_aff_ge_set); \
-+ DYNSYM (isl_pw_aff_gt_set); \
-+ DYNSYM (isl_pw_aff_is_cst); \
-+ DYNSYM (isl_pw_aff_le_set); \
-+ DYNSYM (isl_pw_aff_lt_set); \
-+ DYNSYM (isl_pw_aff_mod); \
-+ DYNSYM (isl_pw_aff_mul); \
-+ DYNSYM (isl_pw_aff_ne_set); \
-+ DYNSYM (isl_pw_aff_nonneg_set); \
-+ DYNSYM (isl_pw_aff_set_tuple_id); \
-+ DYNSYM (isl_pw_aff_sub); \
-+ DYNSYM (isl_pw_aff_zero_set); \
-+ DYNSYM (isl_schedule_free); \
-+ DYNSYM (isl_schedule_get_band_forest); \
-+ DYNSYM (isl_set_add_constraint); \
-+ DYNSYM (isl_set_add_dims); \
-+ DYNSYM (isl_set_apply); \
-+ DYNSYM (isl_set_coalesce); \
-+ DYNSYM (isl_set_copy); \
-+ DYNSYM (isl_set_dim); \
-+ DYNSYM (isl_set_fix_si); \
-+ DYNSYM (isl_set_free); \
-+ DYNSYM (isl_set_from_cloog_domain); \
-+ DYNSYM (isl_set_get_space); \
-+ DYNSYM (isl_set_get_tuple_id); \
-+ DYNSYM (isl_set_intersect); \
-+ DYNSYM (isl_set_is_empty); \
-+ DYNSYM (isl_set_max); \
-+ DYNSYM (isl_set_min); \
-+ DYNSYM (isl_set_nat_universe); \
-+ DYNSYM (isl_set_project_out); \
-+ DYNSYM (isl_set_set_tuple_id); \
-+ DYNSYM (isl_set_universe); \
-+ DYNSYM (isl_space_add_dims); \
-+ DYNSYM (isl_space_alloc); \
-+ DYNSYM (isl_space_copy); \
-+ DYNSYM (isl_space_dim); \
-+ DYNSYM (isl_space_domain); \
-+ DYNSYM (isl_space_find_dim_by_id); \
-+ DYNSYM (isl_space_free); \
-+ DYNSYM (isl_space_from_domain); \
-+ DYNSYM (isl_space_get_tuple_id); \
-+ DYNSYM (isl_space_params_alloc); \
-+ DYNSYM (isl_space_range); \
-+ DYNSYM (isl_space_set_alloc); \
-+ DYNSYM (isl_space_set_dim_id); \
-+ DYNSYM (isl_space_set_tuple_id); \
-+ DYNSYM (isl_union_map_add_map); \
-+ DYNSYM (isl_union_map_align_params); \
-+ DYNSYM (isl_union_map_apply_domain); \
-+ DYNSYM (isl_union_map_apply_range); \
-+ DYNSYM (isl_union_map_compute_flow); \
-+ DYNSYM (isl_union_map_copy); \
-+ DYNSYM (isl_union_map_empty); \
-+ DYNSYM (isl_union_map_flat_range_product); \
-+ DYNSYM (isl_union_map_foreach_map); \
-+ DYNSYM (isl_union_map_free); \
-+ DYNSYM (isl_union_map_from_map); \
-+ DYNSYM (isl_union_map_get_ctx); \
-+ DYNSYM (isl_union_map_get_space); \
-+ DYNSYM (isl_union_map_gist_domain); \
-+ DYNSYM (isl_union_map_gist_range); \
-+ DYNSYM (isl_union_map_intersect_domain); \
-+ DYNSYM (isl_union_map_is_empty); \
-+ DYNSYM (isl_union_map_subtract); \
-+ DYNSYM (isl_union_map_union); \
-+ DYNSYM (isl_union_set_add_set); \
-+ DYNSYM (isl_union_set_compute_schedule); \
-+ DYNSYM (isl_union_set_copy); \
-+ DYNSYM (isl_union_set_empty); \
-+ DYNSYM (isl_union_set_from_set); \
-+ DYNSYM (stmt_ass); \
-+ DYNSYM (stmt_block); \
-+ DYNSYM (stmt_for); \
-+ DYNSYM (stmt_guard); \
-+ DYNSYM (stmt_root); \
-+ DYNSYM (stmt_user);
-+extern struct cloog_pointers_s__
-+{
-+ bool inited;
-+ void *h;
-+#define DYNSYM(x) __typeof (x) *p_##x
-+ DYNSYMS
-+#undef DYNSYM
-+} cloog_pointers__;
-+
-+#define cloog_block_alloc (*cloog_pointers__.p_cloog_block_alloc)
-+#define clast_pprint (*cloog_pointers__.p_clast_pprint)
-+#define cloog_clast_create_from_input (*cloog_pointers__.p_cloog_clast_create_from_input)
-+#define cloog_clast_free (*cloog_pointers__.p_cloog_clast_free)
-+#define cloog_domain_from_isl_set (*cloog_pointers__.p_cloog_domain_from_isl_set)
-+#define cloog_input_alloc (*cloog_pointers__.p_cloog_input_alloc)
-+#define cloog_isl_state_malloc (*cloog_pointers__.p_cloog_isl_state_malloc)
-+#define cloog_options_free (*cloog_pointers__.p_cloog_options_free)
-+#define cloog_options_malloc (*cloog_pointers__.p_cloog_options_malloc)
-+#define cloog_scattering_from_isl_map (*cloog_pointers__.p_cloog_scattering_from_isl_map)
-+#define cloog_state_free (*cloog_pointers__.p_cloog_state_free)
-+#define cloog_union_domain_add_domain (*cloog_pointers__.p_cloog_union_domain_add_domain)
-+#define cloog_union_domain_alloc (*cloog_pointers__.p_cloog_union_domain_alloc)
-+#define cloog_union_domain_set_name (*cloog_pointers__.p_cloog_union_domain_set_name)
-+#define isl_aff_add_coefficient_si (*cloog_pointers__.p_isl_aff_add_coefficient_si)
-+#define isl_aff_add_constant (*cloog_pointers__.p_isl_aff_add_constant)
-+#define isl_aff_free (*cloog_pointers__.p_isl_aff_free)
-+#define isl_aff_get_coefficient (*cloog_pointers__.p_isl_aff_get_coefficient)
-+#define isl_aff_get_space (*cloog_pointers__.p_isl_aff_get_space)
-+#define isl_aff_mod (*cloog_pointers__.p_isl_aff_mod)
-+#define isl_aff_set_coefficient_si (*cloog_pointers__.p_isl_aff_set_coefficient_si)
-+#define isl_aff_set_constant_si (*cloog_pointers__.p_isl_aff_set_constant_si)
-+#define isl_aff_zero_on_domain (*cloog_pointers__.p_isl_aff_zero_on_domain)
-+#define isl_band_free (*cloog_pointers__.p_isl_band_free)
-+#define isl_band_get_children (*cloog_pointers__.p_isl_band_get_children)
-+#define isl_band_get_partial_schedule (*cloog_pointers__.p_isl_band_get_partial_schedule)
-+#define isl_band_has_children (*cloog_pointers__.p_isl_band_has_children)
-+#define isl_band_list_free (*cloog_pointers__.p_isl_band_list_free)
-+#define isl_band_list_get_band (*cloog_pointers__.p_isl_band_list_get_band)
-+#define isl_band_list_get_ctx (*cloog_pointers__.p_isl_band_list_get_ctx)
-+#define isl_band_list_n_band (*cloog_pointers__.p_isl_band_list_n_band)
-+#define isl_band_member_is_zero_distance (*cloog_pointers__.p_isl_band_member_is_zero_distance)
-+#define isl_band_n_member (*cloog_pointers__.p_isl_band_n_member)
-+#define isl_basic_map_add_constraint (*cloog_pointers__.p_isl_basic_map_add_constraint)
-+#define isl_basic_map_project_out (*cloog_pointers__.p_isl_basic_map_project_out)
-+#define isl_basic_map_universe (*cloog_pointers__.p_isl_basic_map_universe)
-+#define isl_constraint_set_coefficient (*cloog_pointers__.p_isl_constraint_set_coefficient)
-+#define isl_constraint_set_coefficient_si (*cloog_pointers__.p_isl_constraint_set_coefficient_si)
-+#define isl_constraint_set_constant (*cloog_pointers__.p_isl_constraint_set_constant)
-+#define isl_constraint_set_constant_si (*cloog_pointers__.p_isl_constraint_set_constant_si)
-+#define isl_ctx_alloc (*cloog_pointers__.p_isl_ctx_alloc)
-+#define isl_ctx_free (*cloog_pointers__.p_isl_ctx_free)
-+#define isl_equality_alloc (*cloog_pointers__.p_isl_equality_alloc)
-+#define isl_id_alloc (*cloog_pointers__.p_isl_id_alloc)
-+#define isl_id_copy (*cloog_pointers__.p_isl_id_copy)
-+#define isl_id_free (*cloog_pointers__.p_isl_id_free)
-+#define isl_inequality_alloc (*cloog_pointers__.p_isl_inequality_alloc)
-+#define isl_local_space_copy (*cloog_pointers__.p_isl_local_space_copy)
-+#define isl_local_space_free (*cloog_pointers__.p_isl_local_space_free)
-+#define isl_local_space_from_space (*cloog_pointers__.p_isl_local_space_from_space)
-+#define isl_local_space_range (*cloog_pointers__.p_isl_local_space_range)
-+#define isl_map_add_constraint (*cloog_pointers__.p_isl_map_add_constraint)
-+#define isl_map_add_dims (*cloog_pointers__.p_isl_map_add_dims)
-+#define isl_map_align_params (*cloog_pointers__.p_isl_map_align_params)
-+#define isl_map_apply_range (*cloog_pointers__.p_isl_map_apply_range)
-+#define isl_map_copy (*cloog_pointers__.p_isl_map_copy)
-+#define isl_map_dim (*cloog_pointers__.p_isl_map_dim)
-+#define isl_map_dump (*cloog_pointers__.p_isl_map_dump)
-+#define isl_map_equate (*cloog_pointers__.p_isl_map_equate)
-+#define isl_map_fix_si (*cloog_pointers__.p_isl_map_fix_si)
-+#define isl_map_flat_product (*cloog_pointers__.p_isl_map_flat_product)
-+#define isl_map_flat_range_product (*cloog_pointers__.p_isl_map_flat_range_product)
-+#define isl_map_free (*cloog_pointers__.p_isl_map_free)
-+#define isl_map_from_basic_map (*cloog_pointers__.p_isl_map_from_basic_map)
-+#define isl_map_from_pw_aff (*cloog_pointers__.p_isl_map_from_pw_aff)
-+#define isl_map_from_union_map (*cloog_pointers__.p_isl_map_from_union_map)
-+#define isl_map_get_ctx (*cloog_pointers__.p_isl_map_get_ctx)
-+#define isl_map_get_space (*cloog_pointers__.p_isl_map_get_space)
-+#define isl_map_get_tuple_id (*cloog_pointers__.p_isl_map_get_tuple_id)
-+#define isl_map_insert_dims (*cloog_pointers__.p_isl_map_insert_dims)
-+#define isl_map_intersect (*cloog_pointers__.p_isl_map_intersect)
-+#define isl_map_intersect_domain (*cloog_pointers__.p_isl_map_intersect_domain)
-+#define isl_map_intersect_range (*cloog_pointers__.p_isl_map_intersect_range)
-+#define isl_map_is_empty (*cloog_pointers__.p_isl_map_is_empty)
-+#define isl_map_lex_ge (*cloog_pointers__.p_isl_map_lex_ge)
-+#define isl_map_lex_le (*cloog_pointers__.p_isl_map_lex_le)
-+#define isl_map_n_out (*cloog_pointers__.p_isl_map_n_out)
-+#define isl_map_range (*cloog_pointers__.p_isl_map_range)
-+#define isl_map_set_tuple_id (*cloog_pointers__.p_isl_map_set_tuple_id)
-+#define isl_map_universe (*cloog_pointers__.p_isl_map_universe)
-+#define isl_options_set_on_error (*cloog_pointers__.p_isl_options_set_on_error)
-+#define isl_options_set_schedule_fuse (*cloog_pointers__.p_isl_options_set_schedule_fuse)
-+#define isl_options_set_schedule_max_constant_term (*cloog_pointers__.p_isl_options_set_schedule_max_constant_term)
-+#define isl_options_set_schedule_maximize_band_depth (*cloog_pointers__.p_isl_options_set_schedule_maximize_band_depth)
-+#define isl_printer_free (*cloog_pointers__.p_isl_printer_free)
-+#define isl_printer_print_aff (*cloog_pointers__.p_isl_printer_print_aff)
-+#define isl_printer_print_constraint (*cloog_pointers__.p_isl_printer_print_constraint)
-+#define isl_printer_print_map (*cloog_pointers__.p_isl_printer_print_map)
-+#define isl_printer_print_set (*cloog_pointers__.p_isl_printer_print_set)
-+#define isl_printer_to_file (*cloog_pointers__.p_isl_printer_to_file)
-+#define isl_pw_aff_add (*cloog_pointers__.p_isl_pw_aff_add)
-+#define isl_pw_aff_alloc (*cloog_pointers__.p_isl_pw_aff_alloc)
-+#define isl_pw_aff_copy (*cloog_pointers__.p_isl_pw_aff_copy)
-+#define isl_pw_aff_eq_set (*cloog_pointers__.p_isl_pw_aff_eq_set)
-+#define isl_pw_aff_free (*cloog_pointers__.p_isl_pw_aff_free)
-+#define isl_pw_aff_from_aff (*cloog_pointers__.p_isl_pw_aff_from_aff)
-+#define isl_pw_aff_ge_set (*cloog_pointers__.p_isl_pw_aff_ge_set)
-+#define isl_pw_aff_gt_set (*cloog_pointers__.p_isl_pw_aff_gt_set)
-+#define isl_pw_aff_is_cst (*cloog_pointers__.p_isl_pw_aff_is_cst)
-+#define isl_pw_aff_le_set (*cloog_pointers__.p_isl_pw_aff_le_set)
-+#define isl_pw_aff_lt_set (*cloog_pointers__.p_isl_pw_aff_lt_set)
-+#define isl_pw_aff_mod (*cloog_pointers__.p_isl_pw_aff_mod)
-+#define isl_pw_aff_mul (*cloog_pointers__.p_isl_pw_aff_mul)
-+#define isl_pw_aff_ne_set (*cloog_pointers__.p_isl_pw_aff_ne_set)
-+#define isl_pw_aff_nonneg_set (*cloog_pointers__.p_isl_pw_aff_nonneg_set)
-+#define isl_pw_aff_set_tuple_id (*cloog_pointers__.p_isl_pw_aff_set_tuple_id)
-+#define isl_pw_aff_sub (*cloog_pointers__.p_isl_pw_aff_sub)
-+#define isl_pw_aff_zero_set (*cloog_pointers__.p_isl_pw_aff_zero_set)
-+#define isl_schedule_free (*cloog_pointers__.p_isl_schedule_free)
-+#define isl_schedule_get_band_forest (*cloog_pointers__.p_isl_schedule_get_band_forest)
-+#define isl_set_add_constraint (*cloog_pointers__.p_isl_set_add_constraint)
-+#define isl_set_add_dims (*cloog_pointers__.p_isl_set_add_dims)
-+#define isl_set_apply (*cloog_pointers__.p_isl_set_apply)
-+#define isl_set_coalesce (*cloog_pointers__.p_isl_set_coalesce)
-+#define isl_set_copy (*cloog_pointers__.p_isl_set_copy)
-+#define isl_set_dim (*cloog_pointers__.p_isl_set_dim)
-+#define isl_set_fix_si (*cloog_pointers__.p_isl_set_fix_si)
-+#define isl_set_free (*cloog_pointers__.p_isl_set_free)
-+#define isl_set_from_cloog_domain (*cloog_pointers__.p_isl_set_from_cloog_domain)
-+#define isl_set_get_space (*cloog_pointers__.p_isl_set_get_space)
-+#define isl_set_get_tuple_id (*cloog_pointers__.p_isl_set_get_tuple_id)
-+#define isl_set_intersect (*cloog_pointers__.p_isl_set_intersect)
-+#define isl_set_is_empty (*cloog_pointers__.p_isl_set_is_empty)
-+#define isl_set_max (*cloog_pointers__.p_isl_set_max)
-+#define isl_set_min (*cloog_pointers__.p_isl_set_min)
-+#define isl_set_nat_universe (*cloog_pointers__.p_isl_set_nat_universe)
-+#define isl_set_project_out (*cloog_pointers__.p_isl_set_project_out)
-+#define isl_set_set_tuple_id (*cloog_pointers__.p_isl_set_set_tuple_id)
-+#define isl_set_universe (*cloog_pointers__.p_isl_set_universe)
-+#define isl_space_add_dims (*cloog_pointers__.p_isl_space_add_dims)
-+#define isl_space_alloc (*cloog_pointers__.p_isl_space_alloc)
-+#define isl_space_copy (*cloog_pointers__.p_isl_space_copy)
-+#define isl_space_dim (*cloog_pointers__.p_isl_space_dim)
-+#define isl_space_domain (*cloog_pointers__.p_isl_space_domain)
-+#define isl_space_find_dim_by_id (*cloog_pointers__.p_isl_space_find_dim_by_id)
-+#define isl_space_free (*cloog_pointers__.p_isl_space_free)
-+#define isl_space_from_domain (*cloog_pointers__.p_isl_space_from_domain)
-+#define isl_space_get_tuple_id (*cloog_pointers__.p_isl_space_get_tuple_id)
-+#define isl_space_params_alloc (*cloog_pointers__.p_isl_space_params_alloc)
-+#define isl_space_range (*cloog_pointers__.p_isl_space_range)
-+#define isl_space_set_alloc (*cloog_pointers__.p_isl_space_set_alloc)
-+#define isl_space_set_dim_id (*cloog_pointers__.p_isl_space_set_dim_id)
-+#define isl_space_set_tuple_id (*cloog_pointers__.p_isl_space_set_tuple_id)
-+#define isl_union_map_add_map (*cloog_pointers__.p_isl_union_map_add_map)
-+#define isl_union_map_align_params (*cloog_pointers__.p_isl_union_map_align_params)
-+#define isl_union_map_apply_domain (*cloog_pointers__.p_isl_union_map_apply_domain)
-+#define isl_union_map_apply_range (*cloog_pointers__.p_isl_union_map_apply_range)
-+#define isl_union_map_compute_flow (*cloog_pointers__.p_isl_union_map_compute_flow)
-+#define isl_union_map_copy (*cloog_pointers__.p_isl_union_map_copy)
-+#define isl_union_map_empty (*cloog_pointers__.p_isl_union_map_empty)
-+#define isl_union_map_flat_range_product (*cloog_pointers__.p_isl_union_map_flat_range_product)
-+#define isl_union_map_foreach_map (*cloog_pointers__.p_isl_union_map_foreach_map)
-+#define isl_union_map_free (*cloog_pointers__.p_isl_union_map_free)
-+#define isl_union_map_from_map (*cloog_pointers__.p_isl_union_map_from_map)
-+#define isl_union_map_get_ctx (*cloog_pointers__.p_isl_union_map_get_ctx)
-+#define isl_union_map_get_space (*cloog_pointers__.p_isl_union_map_get_space)
-+#define isl_union_map_gist_domain (*cloog_pointers__.p_isl_union_map_gist_domain)
-+#define isl_union_map_gist_range (*cloog_pointers__.p_isl_union_map_gist_range)
-+#define isl_union_map_intersect_domain (*cloog_pointers__.p_isl_union_map_intersect_domain)
-+#define isl_union_map_is_empty (*cloog_pointers__.p_isl_union_map_is_empty)
-+#define isl_union_map_subtract (*cloog_pointers__.p_isl_union_map_subtract)
-+#define isl_union_map_union (*cloog_pointers__.p_isl_union_map_union)
-+#define isl_union_set_add_set (*cloog_pointers__.p_isl_union_set_add_set)
-+#define isl_union_set_compute_schedule (*cloog_pointers__.p_isl_union_set_compute_schedule)
-+#define isl_union_set_copy (*cloog_pointers__.p_isl_union_set_copy)
-+#define isl_union_set_empty (*cloog_pointers__.p_isl_union_set_empty)
-+#define isl_union_set_from_set (*cloog_pointers__.p_isl_union_set_from_set)
-+#define stmt_ass (*cloog_pointers__.p_stmt_ass)
-+#define stmt_block (*cloog_pointers__.p_stmt_block)
-+#define stmt_for (*cloog_pointers__.p_stmt_for)
-+#define stmt_guard (*cloog_pointers__.p_stmt_guard)
-+#define stmt_root (*cloog_pointers__.p_stmt_root)
-+#define stmt_user (*cloog_pointers__.p_stmt_user)
-+
- typedef struct poly_dr *poly_dr_p;
-
- typedef struct poly_bb *poly_bb_p;
---- gcc/graphite.c.jj 2012-12-13 11:31:00.000000000 +0100
-+++ gcc/graphite.c 2012-12-14 13:40:44.155136961 +0100
-@@ -66,6 +66,34 @@ along with GCC; see the file COPYING3.
-
- CloogState *cloog_state;
-
-+__typeof (cloog_pointers__) cloog_pointers__;
-+
-+static bool
-+init_cloog_pointers (void)
-+{
-+ void *h;
-+
-+ if (cloog_pointers__.inited)
-+ return cloog_pointers__.h != NULL;
-+ h = dlopen ("libcloog-isl.so.4", RTLD_LAZY);
-+ cloog_pointers__.h = h;
-+ if (h == NULL)
-+ return false;
-+#define DYNSYM(x) \
-+ do \
-+ { \
-+ union { __typeof (cloog_pointers__.p_##x) p; void *q; } u; \
-+ u.q = dlsym (h, #x); \
-+ if (u.q == NULL) \
-+ return false; \
-+ cloog_pointers__.p_##x = u.p; \
-+ } \
-+ while (0)
-+ DYNSYMS
-+#undef DYNSYM
-+ return true;
-+}
-+
- /* Print global statistics to FILE. */
-
- static void
-@@ -264,6 +292,15 @@ graphite_transform_loops (void)
- if (parallelized_function_p (cfun->decl))
- return;
-
-+ if (number_of_loops () <= 1)
-+ return;
-+
-+ if (!init_cloog_pointers ())
-+ {
-+ sorry ("Graphite loop optimizations cannot be used");
-+ return;
-+ }
-+
- ctx = isl_ctx_alloc ();
- isl_options_set_on_error(ctx, ISL_ON_ERROR_ABORT);
- if (!graphite_initialize (ctx))
---- gcc/graphite-clast-to-gimple.c.jj 2012-12-13 11:31:27.000000000 +0100
-+++ gcc/graphite-clast-to-gimple.c 2012-12-14 13:27:47.196519858 +0100
-@@ -910,7 +910,7 @@ compute_bounds_for_loop (struct clast_fo
- from STMT_FOR. */
-
- static tree
--type_for_clast_for (struct clast_for *stmt_for, ivs_params_p ip)
-+type_for_clast_for (struct clast_for *stmt_fora, ivs_params_p ip)
- {
- mpz_t bound_one, bound_two;
- tree lb_type, ub_type;
-@@ -918,8 +918,8 @@ type_for_clast_for (struct clast_for *st
- mpz_init (bound_one);
- mpz_init (bound_two);
-
-- lb_type = type_for_clast_expr (stmt_for->LB, ip, bound_one, bound_two);
-- ub_type = type_for_clast_expr (stmt_for->UB, ip, bound_one, bound_two);
-+ lb_type = type_for_clast_expr (stmt_fora->LB, ip, bound_one, bound_two);
-+ ub_type = type_for_clast_expr (stmt_fora->UB, ip, bound_one, bound_two);
-
- mpz_clear (bound_one);
- mpz_clear (bound_two);
diff --git a/gcc48-cloog-dl2.patch b/gcc48-cloog-dl2.patch
deleted file mode 100644
index 2f647a3..0000000
--- a/gcc48-cloog-dl2.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-2011-04-04 Jakub Jelinek <jakub@redhat.com>
-
- * toplev.c (toplev_main_argv): New variable.
- (toplev_main): Initialize it.
- * graphite.c (init_cloog_pointers): Load libcloog-isl.so.4 from gcc's private
- directory.
-
---- gcc/toplev.c.jj 2008-12-09 23:59:10.000000000 +0100
-+++ gcc/toplev.c 2009-01-27 14:33:52.000000000 +0100
-@@ -107,6 +107,8 @@ static bool no_backend;
- /* Length of line when printing switch values. */
- #define MAX_LINE 75
-
-+const char **toplev_main_argv;
-+
- /* Decoded options, and number of such options. */
- struct cl_decoded_option *save_decoded_options;
- unsigned int save_decoded_options_count;
-@@ -1909,6 +1911,8 @@ toplev_main (int argc, char **argv)
-
- expandargv (&argc, &argv);
-
-+ toplev_main_argv = CONST_CAST2 (const char **, char **, argv);
-+
- /* Initialization of GCC's environment, and diagnostics. */
- general_init (argv[0]);
-
---- gcc/graphite.c.jj 2010-12-01 10:24:32.000000000 -0500
-+++ gcc/graphite.c 2010-12-01 11:46:07.832118193 -0500
-@@ -72,11 +72,39 @@ __typeof (cloog_pointers__) cloog_pointe
- static bool
- init_cloog_pointers (void)
- {
-- void *h;
--
-- if (cloog_pointers__.inited)
-- return cloog_pointers__.h != NULL;
-- h = dlopen ("libcloog-isl.so.4", RTLD_LAZY);
-+ void *h = NULL;
-+ extern const char **toplev_main_argv;
-+ char *buf, *p;
-+ size_t len;
-+
-+ if (cloog_pointers__.inited)
-+ return cloog_pointers__.h != NULL;
-+ len = progname - toplev_main_argv[0];
-+ buf = XALLOCAVAR (char, len + sizeof "libcloog-isl.so.4");
-+ memcpy (buf, toplev_main_argv[0], len);
-+ strcpy (buf + len, "libcloog-isl.so.4");
-+ len += sizeof "libcloog-isl.so.4";
-+ p = strstr (buf, "/libexec/");
-+ if (p != NULL)
-+ {
-+ while (1)
-+ {
-+ char *q = strstr (p + 8, "/libexec/");
-+ if (q == NULL)
-+ break;
-+ p = q;
-+ }
-+ memmove (p + 4, p + 8, len - (p + 8 - buf));
-+ h = dlopen (buf, RTLD_LAZY);
-+ if (h == NULL)
-+ {
-+ len = progname - toplev_main_argv[0];
-+ memcpy (buf, toplev_main_argv[0], len);
-+ strcpy (buf + len, "libcloog-isl.so.4");
-+ }
-+ }
-+ if (h == NULL)
-+ h = dlopen (buf, RTLD_LAZY);
- cloog_pointers__.h = h;
- if (h == NULL)
- return false;
diff --git a/gcc48-color-auto.patch b/gcc48-color-auto.patch
deleted file mode 100644
index a8cf938..0000000
--- a/gcc48-color-auto.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-2013-09-20 Jakub Jelinek <jakub@redhat.com>
-
- * common.opt (-fdiagnostics-color=): Default to auto.
- * toplev.c (process_options): Always default to
- -fdiagnostics-color=auto if no -f{,no-}diagnostics-color*.
- * doc/invoke.texi (-fdiagnostics-color*): Adjust documentation
- of the default.
-
---- gcc/common.opt.jj 2013-09-18 12:06:53.000000000 +0200
-+++ gcc/common.opt 2013-09-20 10:00:00.935823900 +0200
-@@ -1037,7 +1037,7 @@ Common Alias(fdiagnostics-color=,always,
- ;
-
- fdiagnostics-color=
--Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
-+Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_AUTO)
- -fdiagnostics-color=[never|always|auto] Colorize diagnostics
-
- ; Required for these enum values.
---- gcc/toplev.c.jj 2013-09-09 11:32:39.000000000 +0200
-+++ gcc/toplev.c 2013-09-20 10:10:08.198721005 +0200
-@@ -1229,10 +1229,8 @@ process_options (void)
-
- maximum_field_alignment = initial_max_fld_align * BITS_PER_UNIT;
-
-- /* Default to -fdiagnostics-color=auto if GCC_COLORS is in the environment,
-- otherwise default to -fdiagnostics-color=never. */
-- if (!global_options_set.x_flag_diagnostics_show_color
-- && getenv ("GCC_COLORS"))
-+ /* Default to -fdiagnostics-color=auto. */
-+ if (!global_options_set.x_flag_diagnostics_show_color)
- pp_show_color (global_dc->printer)
- = colorize_init (DIAGNOSTICS_COLOR_AUTO);
-
---- gcc/doc/invoke.texi.jj 2013-09-18 12:06:50.000000000 +0200
-+++ gcc/doc/invoke.texi 2013-09-20 10:09:29.079904455 +0200
-@@ -3046,8 +3046,7 @@ a message which is too long to fit on a
- @cindex highlight, color, colour
- @vindex GCC_COLORS @r{environment variable}
- Use color in diagnostics. @var{WHEN} is @samp{never}, @samp{always},
--or @samp{auto}. The default is @samp{never} if @env{GCC_COLORS} environment
--variable isn't present in the environment, and @samp{auto} otherwise.
-+or @samp{auto}. The default is @samp{auto}.
- @samp{auto} means to use color only when the standard error is a terminal.
- The forms @option{-fdiagnostics-color} and @option{-fno-diagnostics-color} are
- aliases for @option{-fdiagnostics-color=always} and
diff --git a/gcc48-hack.patch b/gcc48-hack.patch
deleted file mode 100644
index 1903e95..0000000
--- a/gcc48-hack.patch
+++ /dev/null
@@ -1,102 +0,0 @@
---- libada/Makefile.in.jj 2009-01-14 12:07:35.000000000 +0100
-+++ libada/Makefile.in 2009-01-15 14:25:33.000000000 +0100
-@@ -66,18 +66,40 @@ libsubdir := $(libdir)/gcc/$(target_nonc
- ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
- ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
-
-+DEFAULTMULTIFLAGS :=
-+ifeq ($(MULTISUBDIR),)
-+targ:=$(subst -, ,$(target))
-+arch:=$(word 1,$(targ))
-+ifeq ($(words $(targ)),2)
-+osys:=$(word 2,$(targ))
-+else
-+osys:=$(word 3,$(targ))
-+endif
-+ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch) $(osys))),)
-+ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64)
-+DEFAULTMULTIFLAGS := -m64
-+else
-+ifeq ($(strip $(filter-out s390%, $(arch))),)
-+DEFAULTMULTIFLAGS := -m31
-+else
-+DEFAULTMULTIFLAGS := -m32
-+endif
-+endif
-+endif
-+endif
-+
- # exeext should not be used because it's the *host* exeext. We're building
- # a *target* library, aren't we?!? Likewise for CC. Still, provide bogus
- # definitions just in case something slips through the safety net provided
- # by recursive make invocations in gcc/ada/Makefile.in
- LIBADA_FLAGS_TO_PASS = \
- "MAKEOVERRIDES=" \
-- "LDFLAGS=$(LDFLAGS)" \
-+ "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \
- "LN_S=$(LN_S)" \
- "SHELL=$(SHELL)" \
-- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
-- "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
-- "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
-+ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
-+ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
-+ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
- "PICFLAG_FOR_TARGET=$(PICFLAG)" \
- "THREAD_KIND=$(THREAD_KIND)" \
- "TRACE=$(TRACE)" \
-@@ -88,7 +110,7 @@ LIBADA_FLAGS_TO_PASS = \
- "exeext=.exeext.should.not.be.used " \
- 'CC=the.host.compiler.should.not.be.needed' \
- "GCC_FOR_TARGET=$(CC)" \
-- "CFLAGS=$(CFLAGS)"
-+ "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
-
- # Rules to build gnatlib.
- .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
---- gcc/ada/sem_util.adb (revision 161677)
-+++ gcc/ada/sem_util.adb (working copy)
-@@ -5487,7 +5487,7 @@ package body Sem_Util is
- Exp : Node_Id;
- Assn : Node_Id;
- Choice : Node_Id;
-- Comp_Type : Entity_Id;
-+ Comp_Type : Entity_Id := Empty;
- Is_Array_Aggr : Boolean;
-
- begin
---- config-ml.in.jj 2010-06-30 09:50:44.000000000 +0200
-+++ config-ml.in 2010-07-02 21:24:17.994211151 +0200
-@@ -516,6 +516,8 @@ multi-do:
- ADAFLAGS="$(ADAFLAGS) $${flags}" \
- prefix="$(prefix)" \
- exec_prefix="$(exec_prefix)" \
-+ mandir="$(mandir)" \
-+ infodir="$(infodir)" \
- GCJFLAGS="$(GCJFLAGS) $${flags}" \
- GOCFLAGS="$(GOCFLAGS) $${flags}" \
- CXXFLAGS="$(CXXFLAGS) $${flags}" \
---- libjava/Makefile.am.jj 2010-07-09 11:17:33.729604090 +0200
-+++ libjava/Makefile.am 2010-07-09 13:16:41.894375641 +0200
-@@ -710,7 +710,8 @@ if USE_LIBGCJ_BC
- ## later.
- @echo Installing dummy lib libgcj_bc.so.1.0.0; \
- rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-- mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+ $(INSTALL) $(INSTALL_STRIP_FLAG) $(here)/.libs/libgcj_bc.so $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0; \
- $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
- -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
- rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
---- libjava/Makefile.in.jj 2010-07-09 11:17:34.000000000 +0200
-+++ libjava/Makefile.in 2010-07-09 13:18:07.542572270 +0200
-@@ -12665,7 +12665,8 @@ install-exec-hook: install-binPROGRAMS i
- install-libexecsubPROGRAMS
- @USE_LIBGCJ_BC_TRUE@ @echo Installing dummy lib libgcj_bc.so.1.0.0; \
- @USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
--@USE_LIBGCJ_BC_TRUE@ mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+@USE_LIBGCJ_BC_TRUE@ $(INSTALL) $(INSTALL_STRIP_FLAG) $(here)/.libs/libgcj_bc.so $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
-+@USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0; \
- @USE_LIBGCJ_BC_TRUE@ $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
- @USE_LIBGCJ_BC_TRUE@ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
- @USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
diff --git a/gcc48-i386-libgomp.patch b/gcc48-i386-libgomp.patch
deleted file mode 100644
index 45883a6..0000000
--- a/gcc48-i386-libgomp.patch
+++ /dev/null
@@ -1,20 +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
- ;;
-@@ -79,7 +79,7 @@ if test $enable_linux_futex = yes; then
- config_path="linux/x86 linux posix"
- case " ${CC} ${CFLAGS} " in
- *" -m32 "*)
-- XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686"
-+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
- ;;
- esac
- ;;
diff --git a/gcc48-java-nomulti.patch b/gcc48-java-nomulti.patch
deleted file mode 100644
index 17334aa..0000000
--- a/gcc48-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/gcc48-libgo-p224.patch b/gcc48-libgo-p224.patch
deleted file mode 100644
index 50461bc..0000000
--- a/gcc48-libgo-p224.patch
+++ /dev/null
@@ -1,1302 +0,0 @@
---- libgo/Makefile.am.jj 2013-12-12 19:01:49.000000000 +0100
-+++ libgo/Makefile.am 2014-02-18 17:31:54.798484657 +0100
-@@ -1109,8 +1109,7 @@ go_crypto_dsa_files = \
- 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/elliptic.go
- go_crypto_hmac_files = \
- go/crypto/hmac/hmac.go
- go_crypto_md5_files = \
---- libgo/Makefile.in.jj 2013-12-12 19:01:49.000000000 +0100
-+++ libgo/Makefile.in 2014-02-18 17:32:11.350389191 +0100
-@@ -1274,8 +1274,7 @@ 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/elliptic.go
-
- go_crypto_hmac_files = \
- go/crypto/hmac/hmac.go
---- libgo/go/crypto/elliptic/elliptic.go.jj 2012-12-13 11:32:02.640039537 +0100
-+++ libgo/go/crypto/elliptic/elliptic.go 2014-02-18 17:28:22.909692022 +0100
-@@ -327,7 +327,6 @@ var p384 *CurveParams
- var p521 *CurveParams
-
- func initAll() {
-- initP224()
- initP256()
- initP384()
- initP521()
---- libgo/go/crypto/elliptic/elliptic_test.go.jj 2012-12-13 11:32:02.640039537 +0100
-+++ libgo/go/crypto/elliptic/elliptic_test.go 2014-02-18 17:31:04.052774265 +0100
-@@ -5,329 +5,14 @@
- 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{
-- {
-- "1",
-- "b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21",
-- "bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34",
-- },
-- {
-- "2",
-- "706a46dc76dcb76798e60e6d89474788d16dc18032d268fd1a704fa6",
-- "1c2b76a7bc25e7702a704fa986892849fca629487acf3709d2e4e8bb",
-- },
-- {
-- "3",
-- "df1b1d66a551d0d31eff822558b9d2cc75c2180279fe0d08fd896d04",
-- "a3f7f03cadd0be444c0aa56830130ddf77d317344e1af3591981a925",
-- },
-- {
-- "4",
-- "ae99feebb5d26945b54892092a8aee02912930fa41cd114e40447301",
-- "482580a0ec5bc47e88bc8c378632cd196cb3fa058a7114eb03054c9",
-- },
-- {
-- "5",
-- "31c49ae75bce7807cdff22055d94ee9021fedbb5ab51c57526f011aa",
-- "27e8bff1745635ec5ba0c9f1c2ede15414c6507d29ffe37e790a079b",
-- },
-- {
-- "6",
-- "1f2483f82572251fca975fea40db821df8ad82a3c002ee6c57112408",
-- "89faf0ccb750d99b553c574fad7ecfb0438586eb3952af5b4b153c7e",
-- },
-- {
-- "7",
-- "db2f6be630e246a5cf7d99b85194b123d487e2d466b94b24a03c3e28",
-- "f3a30085497f2f611ee2517b163ef8c53b715d18bb4e4808d02b963",
-- },
-- {
-- "8",
-- "858e6f9cc6c12c31f5df124aa77767b05c8bc021bd683d2b55571550",
-- "46dcd3ea5c43898c5c5fc4fdac7db39c2f02ebee4e3541d1e78047a",
-- },
-- {
-- "9",
-- "2fdcccfee720a77ef6cb3bfbb447f9383117e3daa4a07e36ed15f78d",
-- "371732e4f41bf4f7883035e6a79fcedc0e196eb07b48171697517463",
-- },
-- {
-- "10",
-- "aea9e17a306517eb89152aa7096d2c381ec813c51aa880e7bee2c0fd",
-- "39bb30eab337e0a521b6cba1abe4b2b3a3e524c14a3fe3eb116b655f",
-- },
-- {
-- "11",
-- "ef53b6294aca431f0f3c22dc82eb9050324f1d88d377e716448e507c",
-- "20b510004092e96636cfb7e32efded8265c266dfb754fa6d6491a6da",
-- },
-- {
-- "12",
-- "6e31ee1dc137f81b056752e4deab1443a481033e9b4c93a3044f4f7a",
-- "207dddf0385bfdeab6e9acda8da06b3bbef224a93ab1e9e036109d13",
-- },
-- {
-- "13",
-- "34e8e17a430e43289793c383fac9774247b40e9ebd3366981fcfaeca",
-- "252819f71c7fb7fbcb159be337d37d3336d7feb963724fdfb0ecb767",
-- },
-- {
-- "14",
-- "a53640c83dc208603ded83e4ecf758f24c357d7cf48088b2ce01e9fa",
-- "d5814cd724199c4a5b974a43685fbf5b8bac69459c9469bc8f23ccaf",
-- },
-- {
-- "15",
-- "baa4d8635511a7d288aebeedd12ce529ff102c91f97f867e21916bf9",
-- "979a5f4759f80f4fb4ec2e34f5566d595680a11735e7b61046127989",
-- },
-- {
-- "16",
-- "b6ec4fe1777382404ef679997ba8d1cc5cd8e85349259f590c4c66d",
-- "3399d464345906b11b00e363ef429221f2ec720d2f665d7dead5b482",
-- },
-- {
-- "17",
-- "b8357c3a6ceef288310e17b8bfeff9200846ca8c1942497c484403bc",
-- "ff149efa6606a6bd20ef7d1b06bd92f6904639dce5174db6cc554a26",
-- },
-- {
-- "18",
-- "c9ff61b040874c0568479216824a15eab1a838a797d189746226e4cc",
-- "ea98d60e5ffc9b8fcf999fab1df7e7ef7084f20ddb61bb045a6ce002",
-- },
-- {
-- "19",
-- "a1e81c04f30ce201c7c9ace785ed44cc33b455a022f2acdbc6cae83c",
-- "dcf1f6c3db09c70acc25391d492fe25b4a180babd6cea356c04719cd",
-- },
-- {
-- "20",
-- "fcc7f2b45df1cd5a3c0c0731ca47a8af75cfb0347e8354eefe782455",
-- "d5d7110274cba7cdee90e1a8b0d394c376a5573db6be0bf2747f530",
-- },
-- {
-- "112233445566778899",
-- "61f077c6f62ed802dad7c2f38f5c67f2cc453601e61bd076bb46179e",
-- "2272f9e9f5933e70388ee652513443b5e289dd135dcc0d0299b225e4",
-- },
-- {
-- "112233445566778899112233445566778899",
-- "29895f0af496bfc62b6ef8d8a65c88c613949b03668aab4f0429e35",
-- "3ea6e53f9a841f2019ec24bde1a75677aa9b5902e61081c01064de93",
-- },
-- {
-- "6950511619965839450988900688150712778015737983940691968051900319680",
-- "ab689930bcae4a4aa5f5cb085e823e8ae30fd365eb1da4aba9cf0379",
-- "3345a121bbd233548af0d210654eb40bab788a03666419be6fbd34e7",
-- },
-- {
-- "13479972933410060327035789020509431695094902435494295338570602119423",
-- "bdb6a8817c1f89da1c2f3dd8e97feb4494f2ed302a4ce2bc7f5f4025",
-- "4c7020d57c00411889462d77a5438bb4e97d177700bf7243a07f1680",
-- },
-- {
-- "13479971751745682581351455311314208093898607229429740618390390702079",
-- "d58b61aa41c32dd5eba462647dba75c5d67c83606c0af2bd928446a9",
-- "d24ba6a837be0460dd107ae77725696d211446c5609b4595976b16bd",
-- },
-- {
-- "13479972931865328106486971546324465392952975980343228160962702868479",
-- "dc9fa77978a005510980e929a1485f63716df695d7a0c18bb518df03",
-- "ede2b016f2ddffc2a8c015b134928275ce09e5661b7ab14ce0d1d403",
-- },
-- {
-- "11795773708834916026404142434151065506931607341523388140225443265536",
-- "499d8b2829cfb879c901f7d85d357045edab55028824d0f05ba279ba",
-- "bf929537b06e4015919639d94f57838fa33fc3d952598dcdbb44d638",
-- },
-- {
-- "784254593043826236572847595991346435467177662189391577090",
-- "8246c999137186632c5f9eddf3b1b0e1764c5e8bd0e0d8a554b9cb77",
-- "e80ed8660bc1cb17ac7d845be40a7a022d3306f116ae9f81fea65947",
-- },
-- {
-- "13479767645505654746623887797783387853576174193480695826442858012671",
-- "6670c20afcceaea672c97f75e2e9dd5c8460e54bb38538ebb4bd30eb",
-- "f280d8008d07a4caf54271f993527d46ff3ff46fd1190a3f1faa4f74",
-- },
-- {
-- "205688069665150753842126177372015544874550518966168735589597183",
-- "eca934247425cfd949b795cb5ce1eff401550386e28d1a4c5a8eb",
-- "d4c01040dba19628931bc8855370317c722cbd9ca6156985f1c2e9ce",
-- },
-- {
-- "13479966930919337728895168462090683249159702977113823384618282123295",
-- "ef353bf5c73cd551b96d596fbc9a67f16d61dd9fe56af19de1fba9cd",
-- "21771b9cdce3e8430c09b3838be70b48c21e15bc09ee1f2d7945b91f",
-- },
-- {
-- "50210731791415612487756441341851895584393717453129007497216",
-- "4036052a3091eb481046ad3289c95d3ac905ca0023de2c03ecd451cf",
-- "d768165a38a2b96f812586a9d59d4136035d9c853a5bf2e1c86a4993",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368041",
-- "fcc7f2b45df1cd5a3c0c0731ca47a8af75cfb0347e8354eefe782455",
-- "f2a28eefd8b345832116f1e574f2c6b2c895aa8c24941f40d8b80ad1",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368042",
-- "a1e81c04f30ce201c7c9ace785ed44cc33b455a022f2acdbc6cae83c",
-- "230e093c24f638f533dac6e2b6d01da3b5e7f45429315ca93fb8e634",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368043",
-- "c9ff61b040874c0568479216824a15eab1a838a797d189746226e4cc",
-- "156729f1a003647030666054e208180f8f7b0df2249e44fba5931fff",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368044",
-- "b8357c3a6ceef288310e17b8bfeff9200846ca8c1942497c484403bc",
-- "eb610599f95942df1082e4f9426d086fb9c6231ae8b24933aab5db",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368045",
-- "b6ec4fe1777382404ef679997ba8d1cc5cd8e85349259f590c4c66d",
-- "cc662b9bcba6f94ee4ff1c9c10bd6ddd0d138df2d099a282152a4b7f",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368046",
-- "baa4d8635511a7d288aebeedd12ce529ff102c91f97f867e21916bf9",
-- "6865a0b8a607f0b04b13d1cb0aa992a5a97f5ee8ca1849efb9ed8678",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368047",
-- "a53640c83dc208603ded83e4ecf758f24c357d7cf48088b2ce01e9fa",
-- "2a7eb328dbe663b5a468b5bc97a040a3745396ba636b964370dc3352",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368048",
-- "34e8e17a430e43289793c383fac9774247b40e9ebd3366981fcfaeca",
-- "dad7e608e380480434ea641cc82c82cbc92801469c8db0204f13489a",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368049",
-- "6e31ee1dc137f81b056752e4deab1443a481033e9b4c93a3044f4f7a",
-- "df82220fc7a4021549165325725f94c3410ddb56c54e161fc9ef62ee",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368050",
-- "ef53b6294aca431f0f3c22dc82eb9050324f1d88d377e716448e507c",
-- "df4aefffbf6d1699c930481cd102127c9a3d992048ab05929b6e5927",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368051",
-- "aea9e17a306517eb89152aa7096d2c381ec813c51aa880e7bee2c0fd",
-- "c644cf154cc81f5ade49345e541b4d4b5c1adb3eb5c01c14ee949aa2",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368052",
-- "2fdcccfee720a77ef6cb3bfbb447f9383117e3daa4a07e36ed15f78d",
-- "c8e8cd1b0be40b0877cfca1958603122f1e6914f84b7e8e968ae8b9e",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368053",
-- "858e6f9cc6c12c31f5df124aa77767b05c8bc021bd683d2b55571550",
-- "fb9232c15a3bc7673a3a03b0253824c53d0fd1411b1cabe2e187fb87",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368054",
-- "db2f6be630e246a5cf7d99b85194b123d487e2d466b94b24a03c3e28",
-- "f0c5cff7ab680d09ee11dae84e9c1072ac48ea2e744b1b7f72fd469e",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368055",
-- "1f2483f82572251fca975fea40db821df8ad82a3c002ee6c57112408",
-- "76050f3348af2664aac3a8b05281304ebc7a7914c6ad50a4b4eac383",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368056",
-- "31c49ae75bce7807cdff22055d94ee9021fedbb5ab51c57526f011aa",
-- "d817400e8ba9ca13a45f360e3d121eaaeb39af82d6001c8186f5f866",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368057",
-- "ae99feebb5d26945b54892092a8aee02912930fa41cd114e40447301",
-- "fb7da7f5f13a43b81774373c879cd32d6934c05fa758eeb14fcfab38",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368058",
-- "df1b1d66a551d0d31eff822558b9d2cc75c2180279fe0d08fd896d04",
-- "5c080fc3522f41bbb3f55a97cfecf21f882ce8cbb1e50ca6e67e56dc",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368059",
-- "706a46dc76dcb76798e60e6d89474788d16dc18032d268fd1a704fa6",
-- "e3d4895843da188fd58fb0567976d7b50359d6b78530c8f62d1b1746",
-- },
-- {
-- "26959946667150639794667015087019625940457807714424391721682722368060",
-- "b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21",
-- "42c89c774a08dc04b3dd201932bc8a5ea5f8b89bbb2a7e667aff81cd",
-- },
--}
--
--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 TestInfinity(t *testing.T) {
- tests := []struct {
- name string
- curve Curve
- }{
-- {"p224", P224()},
- {"p256", P256()},
- }
-
-@@ -359,43 +44,3 @@ 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 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-12-13 11:32:02.589039782 +0100
-+++ libgo/go/crypto/ecdsa/ecdsa_test.go 2014-02-18 17:28:22.909692022 +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-08-14 13:55:08.939843607 +0200
-+++ libgo/go/crypto/x509/x509.go 2014-02-18 17:28:22.943691764 +0100
-@@ -283,9 +283,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 }
-@@ -298,7 +295,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}
-@@ -306,8 +302,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):
-@@ -320,8 +314,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():
-@@ -1212,7 +1204,7 @@ func CreateCertificate(rand io.Reader, t
- hashFunc = crypto.SHA1
- case *ecdsa.PrivateKey:
- switch priv.Curve {
-- case elliptic.P224(), elliptic.P256():
-+ case elliptic.P256():
- hashFunc = crypto.SHA256
- signatureAlgorithm.Algorithm = oidSignatureECDSAWithSHA256
- case elliptic.P384():
---- libgo/go/crypto/elliptic/p224.go.jj 2012-12-13 11:32:02.641039533 +0100
-+++ libgo/go/crypto/elliptic/p224.go 2014-02-15 11:40:56.191557928 +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 2014-02-18 18:03:31.615598561 +0100
-+++ libgo/go/crypto/elliptic/p224_test.go 2014-02-15 11:40:56.191557928 +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)
-- }
-- }
--}
diff --git a/gcc48-libgomp-omp_h-multilib.patch b/gcc48-libgomp-omp_h-multilib.patch
deleted file mode 100644
index d0e98d1..0000000
--- a/gcc48-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/gcc48-libstdc++-docs.patch b/gcc48-libstdc++-docs.patch
deleted file mode 100644
index 6f87ea5..0000000
--- a/gcc48-libstdc++-docs.patch
+++ /dev/null
@@ -1,26 +0,0 @@
---- libstdc++-v3/doc/html/index.html.jj 2011-01-03 12:53:21.282829010 +0100
-+++ libstdc++-v3/doc/html/index.html 2011-01-04 18:06:28.999851145 +0100
-@@ -5,6 +5,8 @@
- <a class="link" href="http://www.fsf.org/" target="_top">FSF
- </a>
- </p><p>
-+ Release 4.8.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 4.8.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/gcc48-libtool-no-rpath.patch b/gcc48-libtool-no-rpath.patch
deleted file mode 100644
index 466c661..0000000
--- a/gcc48-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/gcc48-no-add-needed.patch b/gcc48-no-add-needed.patch
deleted file mode 100644
index b6ca777..0000000
--- a/gcc48-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
-@@ -77,7 +77,7 @@ do { \
- Signalize that because we have fde-glibc, we don't need all C shared libs
- linked against -lgcc_s. */
- #undef LINK_EH_SPEC
--#define LINK_EH_SPEC ""
-+#define LINK_EH_SPEC "--no-add-needed "
-
- /* Put all *tf routines in libgcc. */
- #undef LIBGCC2_HAS_TF_MODE
---- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100
-+++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100
-@@ -82,7 +82,7 @@ see the files COPYING3 and COPYING.RUNTI
- #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
-
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
- #endif
-
- #undef LINK_GCC_C_SEQUENCE_SPEC
---- gcc/config/rs6000/sysv4.h.jj 2011-01-03 13:02:18.255994215 +0100
-+++ gcc/config/rs6000/sysv4.h 2011-01-04 18:14:10.933888871 +0100
-@@ -820,7 +820,7 @@ extern int fixuplabelno;
- -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
-
- #if defined(HAVE_LD_EH_FRAME_HDR)
--# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
- #endif
-
- #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
diff --git a/gcc48-ppc32-retaddr.patch b/gcc48-ppc32-retaddr.patch
deleted file mode 100644
index 78120cc..0000000
--- a/gcc48-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
-@@ -18325,18 +18325,22 @@ rs6000_return_addr (int count, rtx frame
- don't try to be too clever here. */
- if (count != 0 || (DEFAULT_ABI != ABI_AIX && flag_pic))
- {
-+ rtx x;
- cfun->machine->ra_needs_full_frame = 1;
-
-- return
-- gen_rtx_MEM
-- (Pmode,
-- memory_address
-- (Pmode,
-- plus_constant (Pmode,
-- copy_to_reg
-- (gen_rtx_MEM (Pmode,
-- memory_address (Pmode, frame))),
-- RETURN_ADDRESS_OFFSET)));
-+ if (count == 0)
-+ {
-+ gcc_assert (frame == frame_pointer_rtx);
-+ x = arg_pointer_rtx;
-+ }
-+ else
-+ {
-+ x = memory_address (Pmode, frame);
-+ x = copy_to_reg (gen_rtx_MEM (Pmode, x));
-+ }
-+
-+ x = plus_constant (Pmode, x, RETURN_ADDRESS_OFFSET);
-+ return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
- }
-
- cfun->machine->ra_need_lr = 1;
---- gcc/testsuite/gcc.dg/20051128-1.c.jj 2005-10-10 11:21:41.096999000 +0200
-+++ gcc/testsuite/gcc.dg/20051128-1.c 2005-11-28 12:30:57.000000000 +0100
-@@ -0,0 +1,41 @@
-+/* { dg-do run } */
-+/* { dg-options "-O2 -fpic" } */
-+
-+extern void exit (int);
-+extern void abort (void);
-+
-+int b;
-+
-+struct A
-+{
-+ void *pad[147];
-+ void *ra, *h;
-+ long o;
-+};
-+
-+void
-+__attribute__((noinline))
-+foo (struct A *a, void *x)
-+{
-+ __builtin_memset (a, 0, sizeof (a));
-+ if (!b)
-+ exit (0);
-+}
-+
-+void
-+__attribute__((noinline))
-+bar (void)
-+{
-+ struct A a;
-+
-+ __builtin_unwind_init ();
-+ foo (&a, __builtin_return_address (0));
-+}
-+
-+int
-+main (void)
-+{
-+ bar ();
-+ abort ();
-+ return 0;
-+}
diff --git a/gcc48-pr28865.patch b/gcc48-pr28865.patch
deleted file mode 100644
index 8e07e94..0000000
--- a/gcc48-pr28865.patch
+++ /dev/null
@@ -1,190 +0,0 @@
-2014-01-16 Nick Clifton <nickc@redhat.com>
-
- PR middle-end/28865
- * varasm.c (output_constant): Return the number of bytes actually
- emitted.
- (output_constructor_array_range): Update the field size with the
- number of bytes emitted by output_constant.
- (output_constructor_regular_field): Likewise. Also do not
- complain if the total number of bytes emitted is now greater
- than the expected fieldpos.
- * output.h (output_constant): Update prototype and descriptive
- comment.
-
- * gcc.c-torture/compile/pr28865.c: New.
- * gcc.c-torture/execute/pr28865.c: New.
-
---- gcc/varasm.c (revision 206660)
-+++ gcc/varasm.c (revision 206661)
-@@ -4474,8 +4474,10 @@ static unsigned HOST_WIDE_INT
- This includes the pseudo-op such as ".int" or ".byte", and a newline.
- Assumes output_addressed_constants has been done on EXP already.
-
-- Generate exactly SIZE bytes of assembler data, padding at the end
-- with zeros if necessary. SIZE must always be specified.
-+ Generate at least SIZE bytes of assembler data, padding at the end
-+ with zeros if necessary. SIZE must always be specified. The returned
-+ value is the actual number of bytes of assembler data generated, which
-+ may be bigger than SIZE if the object contains a variable length field.
-
- SIZE is important for structure constructors,
- since trailing members may have been omitted from the constructor.
-@@ -4490,14 +4492,14 @@ static unsigned HOST_WIDE_INT
-
- ALIGN is the alignment of the data in bits. */
-
--void
-+unsigned HOST_WIDE_INT
- output_constant (tree exp, unsigned HOST_WIDE_INT size, unsigned int align)
- {
- enum tree_code code;
- unsigned HOST_WIDE_INT thissize;
-
- if (size == 0 || flag_syntax_only)
-- return;
-+ return size;
-
- /* See if we're trying to initialize a pointer in a non-default mode
- to the address of some declaration somewhere. If the target says
-@@ -4562,7 +4564,7 @@ output_constant (tree exp, unsigned HOST
- && vec_safe_is_empty (CONSTRUCTOR_ELTS (exp)))
- {
- assemble_zeros (size);
-- return;
-+ return size;
- }
-
- if (TREE_CODE (exp) == FDESC_EXPR)
-@@ -4574,7 +4576,7 @@ output_constant (tree exp, unsigned HOST
- #else
- gcc_unreachable ();
- #endif
-- return;
-+ return size;
- }
-
- /* Now output the underlying data. If we've handling the padding, return.
-@@ -4612,8 +4614,7 @@ output_constant (tree exp, unsigned HOST
- switch (TREE_CODE (exp))
- {
- case CONSTRUCTOR:
-- output_constructor (exp, size, align, NULL);
-- return;
-+ return output_constructor (exp, size, align, NULL);
- case STRING_CST:
- thissize = MIN ((unsigned HOST_WIDE_INT)TREE_STRING_LENGTH (exp),
- size);
-@@ -4648,11 +4649,10 @@ output_constant (tree exp, unsigned HOST
- case RECORD_TYPE:
- case UNION_TYPE:
- gcc_assert (TREE_CODE (exp) == CONSTRUCTOR);
-- output_constructor (exp, size, align, NULL);
-- return;
-+ return output_constructor (exp, size, align, NULL);
-
- case ERROR_MARK:
-- return;
-+ return 0;
-
- default:
- gcc_unreachable ();
-@@ -4660,6 +4660,8 @@ output_constant (tree exp, unsigned HOST
-
- if (size > thissize)
- assemble_zeros (size - thissize);
-+
-+ return size;
- }
-
- \f
-@@ -4759,7 +4761,7 @@ output_constructor_array_range (oc_local
- if (local->val == NULL_TREE)
- assemble_zeros (fieldsize);
- else
-- output_constant (local->val, fieldsize, align2);
-+ fieldsize = output_constant (local->val, fieldsize, align2);
-
- /* Count its size. */
- local->total_bytes += fieldsize;
-@@ -4808,9 +4810,8 @@ output_constructor_regular_field (oc_loc
- Note no alignment needed in an array, since that is guaranteed
- if each element has the proper size. */
- if ((local->field != NULL_TREE || local->index != NULL_TREE)
-- && fieldpos != local->total_bytes)
-+ && fieldpos > local->total_bytes)
- {
-- gcc_assert (fieldpos >= local->total_bytes);
- assemble_zeros (fieldpos - local->total_bytes);
- local->total_bytes = fieldpos;
- }
-@@ -4847,7 +4848,7 @@ output_constructor_regular_field (oc_loc
- if (local->val == NULL_TREE)
- assemble_zeros (fieldsize);
- else
-- output_constant (local->val, fieldsize, align2);
-+ fieldsize = output_constant (local->val, fieldsize, align2);
-
- /* Count its size. */
- local->total_bytes += fieldsize;
---- gcc/output.h (revision 206660)
-+++ gcc/output.h (revision 206661)
-@@ -294,11 +294,13 @@ extern void output_quoted_string (FILE *
- This includes the pseudo-op such as ".int" or ".byte", and a newline.
- Assumes output_addressed_constants has been done on EXP already.
-
-- Generate exactly SIZE bytes of assembler data, padding at the end
-- with zeros if necessary. SIZE must always be specified.
-+ Generate at least SIZE bytes of assembler data, padding at the end
-+ with zeros if necessary. SIZE must always be specified. The returned
-+ value is the actual number of bytes of assembler data generated, which
-+ may be bigger than SIZE if the object contains a variable length field.
-
- ALIGN is the alignment in bits that may be assumed for the data. */
--extern void output_constant (tree, unsigned HOST_WIDE_INT, unsigned int);
-+extern unsigned HOST_WIDE_INT output_constant (tree, unsigned HOST_WIDE_INT, unsigned int);
-
- /* When outputting delayed branch sequences, this rtx holds the
- sequence being output. It is null when no delayed branch
---- gcc/testsuite/gcc.c-torture/execute/pr28865.c (revision 0)
-+++ gcc/testsuite/gcc.c-torture/execute/pr28865.c (revision 206661)
-@@ -0,0 +1,21 @@
-+struct A { int a; char b[]; };
-+union B { struct A a; char b[sizeof (struct A) + 31]; };
-+union B b = { { 1, "123456789012345678901234567890" } };
-+union B c = { { 2, "123456789012345678901234567890" } };
-+
-+__attribute__((noinline, noclone)) void
-+foo (int *x[2])
-+{
-+ x[0] = &b.a.a;
-+ x[1] = &c.a.a;
-+}
-+
-+int
-+main ()
-+{
-+ int *x[2];
-+ foo (x);
-+ if (*x[0] != 1 || *x[1] != 2)
-+ __builtin_abort ();
-+ return 0;
-+}
---- gcc/testsuite/gcc.c-torture/compile/pr28865.c (revision 0)
-+++ gcc/testsuite/gcc.c-torture/compile/pr28865.c (revision 206661)
-@@ -0,0 +1,16 @@
-+struct var_len
-+{
-+ int field1;
-+ const char field2[];
-+};
-+
-+/* Note - strictly speaking this array declaration is illegal
-+ since each element has a variable length. GCC allows it
-+ (for the moment) because it is used in existing code, such
-+ as glibc. */
-+static const struct var_len var_array[] =
-+{
-+ { 1, "Long exposure noise reduction" },
-+ { 2, "Shutter/AE lock buttons" },
-+ { 3, "Mirror lockup" }
-+};
diff --git a/gcc48-pr38757.patch b/gcc48-pr38757.patch
deleted file mode 100644
index 4206584..0000000
--- a/gcc48-pr38757.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-2009-03-18 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/38757
- * langhooks.h (struct lang_hooks): Add source_language langhook.
- * langhooks-def.h (LANG_HOOKS_SOURCE_LANGUAGE): Define to NULL.
- (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_SOURCE_LANGUAGE.
- * dwarf2out.c (add_prototyped_attribute): Add DW_AT_prototype
- also for DW_LANG_{C,C99,ObjC}.
- (gen_compile_unit_die): Use lang_hooks.source_language () to
- determine if DW_LANG_C99 or DW_LANG_C89 should be returned.
-c/
- * c-lang.c (c_source_language): New function.
- (LANG_HOOKS_SOURCE_LANGUAGE): Define.
-
---- gcc/langhooks.h.jj 2011-01-03 12:53:05.125745450 +0100
-+++ gcc/langhooks.h 2011-01-04 17:59:43.166744926 +0100
-@@ -467,6 +467,10 @@ struct lang_hooks
- gimplification. */
- bool deep_unsharing;
-
-+ /* Return year of the source language standard version if the FE supports
-+ multiple versions of the standard. */
-+ int (*source_language) (void);
-+
- /* Whenever you add entries here, make sure you adjust langhooks-def.h
- and langhooks.c accordingly. */
- };
---- gcc/langhooks-def.h.jj 2011-01-03 12:53:05.000000000 +0100
-+++ gcc/langhooks-def.h 2011-01-04 18:00:44.858851030 +0100
-@@ -118,6 +118,7 @@ extern void lhd_omp_firstprivatize_type_
- #define LANG_HOOKS_BLOCK_MAY_FALLTHRU hook_bool_const_tree_true
- #define LANG_HOOKS_EH_USE_CXA_END_CLEANUP false
- #define LANG_HOOKS_DEEP_UNSHARING false
-+#define LANG_HOOKS_SOURCE_LANGUAGE NULL
-
- /* Attribute hooks. */
- #define LANG_HOOKS_ATTRIBUTE_TABLE NULL
-@@ -303,7 +304,8 @@ extern void lhd_end_section (void);
- LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS, \
- LANG_HOOKS_BLOCK_MAY_FALLTHRU, \
- LANG_HOOKS_EH_USE_CXA_END_CLEANUP, \
-- LANG_HOOKS_DEEP_UNSHARING \
-+ LANG_HOOKS_DEEP_UNSHARING, \
-+ LANG_HOOKS_SOURCE_LANGUAGE \
- }
-
- #endif /* GCC_LANG_HOOKS_DEF_H */
---- gcc/c/c-lang.c.jj 2011-01-03 12:53:05.376056936 +0100
-+++ gcc/c/c-lang.c 2011-01-04 17:59:43.167743798 +0100
-@@ -36,6 +36,12 @@ along with GCC; see the file COPYING3.
-
- enum c_language_kind c_language = clk_c;
-
-+static int
-+c_source_language (void)
-+{
-+ return flag_isoc99 ? 1999 : 1989;
-+}
-+
- /* Lang hooks common to C and ObjC are declared in c-objc-common.h;
- consequently, there should be very few hooks below. */
-
-@@ -45,6 +51,8 @@ enum c_language_kind c_language = clk_c;
- #define LANG_HOOKS_INIT c_objc_common_init
- #undef LANG_HOOKS_INIT_TS
- #define LANG_HOOKS_INIT_TS c_common_init_ts
-+#undef LANG_HOOKS_SOURCE_LANGUAGE
-+#define LANG_HOOKS_SOURCE_LANGUAGE c_source_language
-
- /* Each front end provides its own lang hook initializer. */
- struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
---- gcc/dwarf2out.c.jj 2011-01-03 12:53:05.102056475 +0100
-+++ gcc/dwarf2out.c 2011-01-04 18:03:14.534151763 +0100
-@@ -16109,9 +16109,18 @@ add_bit_size_attribute (dw_die_ref die,
- static inline void
- add_prototyped_attribute (dw_die_ref die, tree func_type)
- {
-- if (get_AT_unsigned (comp_unit_die (), DW_AT_language) == DW_LANG_C89
-- && prototype_p (func_type))
-- add_AT_flag (die, DW_AT_prototyped, 1);
-+ switch (get_AT_unsigned (comp_unit_die (), DW_AT_language))
-+ {
-+ case DW_LANG_C:
-+ case DW_LANG_C89:
-+ case DW_LANG_C99:
-+ case DW_LANG_ObjC:
-+ if (prototype_p (func_type))
-+ add_AT_flag (die, DW_AT_prototyped, 1);
-+ break;
-+ default:
-+ break;
-+ }
- }
-
- /* Add an 'abstract_origin' attribute below a given DIE. The DIE is found
-@@ -18915,6 +18924,10 @@ gen_compile_unit_die (const char *filena
- if (strcmp (language_string, "GNU Go") == 0)
- language = DW_LANG_Go;
- }
-+ else if (strcmp (language_string, "GNU C") == 0
-+ && lang_hooks.source_language
-+ && lang_hooks.source_language () >= 1999)
-+ language = DW_LANG_C99;
- }
- /* Use a degraded Fortran setting in strict DWARF2 so is_fortran works. */
- else if (strcmp (language_string, "GNU Fortran") == 0)
diff --git a/gcc48-pr56493.patch b/gcc48-pr56493.patch
deleted file mode 100644
index 87603db..0000000
--- a/gcc48-pr56493.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-2013-06-17 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/56493
- * convert.c (convert_to_real, convert_to_expr, convert_to_complex):
- Handle COMPOUND_EXPR.
-
- * c-c++-common/pr56493.c: New test.
-
---- gcc/convert.c.jj 2013-05-13 09:44:53.000000000 +0200
-+++ gcc/convert.c 2013-06-16 12:16:13.754108523 +0200
-@@ -95,6 +95,15 @@ convert_to_real (tree type, tree expr)
- enum built_in_function fcode = builtin_mathfn_code (expr);
- tree itype = TREE_TYPE (expr);
-
-+ if (TREE_CODE (expr) == COMPOUND_EXPR)
-+ {
-+ tree t = convert_to_real (type, TREE_OPERAND (expr, 1));
-+ if (t == TREE_OPERAND (expr, 1))
-+ return expr;
-+ return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR, TREE_TYPE (t),
-+ TREE_OPERAND (expr, 0), t);
-+ }
-+
- /* Disable until we figure out how to decide whether the functions are
- present in runtime. */
- /* Convert (float)sqrt((double)x) where x is float into sqrtf(x) */
-@@ -366,6 +375,15 @@ convert_to_integer (tree type, tree expr
- return error_mark_node;
- }
-
-+ if (ex_form == COMPOUND_EXPR)
-+ {
-+ tree t = convert_to_integer (type, TREE_OPERAND (expr, 1));
-+ if (t == TREE_OPERAND (expr, 1))
-+ return expr;
-+ return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR, TREE_TYPE (t),
-+ TREE_OPERAND (expr, 0), t);
-+ }
-+
- /* Convert e.g. (long)round(d) -> lround(d). */
- /* If we're converting to char, we may encounter differing behavior
- between converting from double->char vs double->long->char.
-@@ -854,6 +872,14 @@ convert_to_complex (tree type, tree expr
-
- if (TYPE_MAIN_VARIANT (elt_type) == TYPE_MAIN_VARIANT (subtype))
- return expr;
-+ else if (TREE_CODE (expr) == COMPOUND_EXPR)
-+ {
-+ tree t = convert_to_complex (type, TREE_OPERAND (expr, 1));
-+ if (t == TREE_OPERAND (expr, 1))
-+ return expr;
-+ return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR,
-+ TREE_TYPE (t), TREE_OPERAND (expr, 0), t);
-+ }
- else if (TREE_CODE (expr) == COMPLEX_EXPR)
- return fold_build2 (COMPLEX_EXPR, type,
- convert (subtype, TREE_OPERAND (expr, 0)),
---- gcc/testsuite/c-c++-common/pr56493.c.jj 2013-06-17 10:24:36.891659600 +0200
-+++ gcc/testsuite/c-c++-common/pr56493.c 2013-06-17 10:24:33.164720149 +0200
-@@ -0,0 +1,16 @@
-+/* PR c++/56493 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fdump-tree-gimple" } */
-+
-+unsigned long long bar (void);
-+int x;
-+
-+void
-+foo (void)
-+{
-+ x += bar ();
-+}
-+
-+/* Verify we narrow the addition from unsigned long long to unsigned int type. */
-+/* { dg-final { scan-tree-dump " (\[a-zA-Z._0-9]*) = \\(unsigned int\\) \[^;\n\r]*;.* (\[a-zA-Z._0-9]*) = \\(unsigned int\\) \[^;\n\r]*;.* = \\1 \\+ \\2;" "gimple" { target { ilp32 || lp64 } } } } */
-+/* { dg-final { cleanup-tree-dump "gimple" } } */
diff --git a/gcc48-pr56564.patch b/gcc48-pr56564.patch
deleted file mode 100644
index d81e02d..0000000
--- a/gcc48-pr56564.patch
+++ /dev/null
@@ -1,654 +0,0 @@
-2013-06-19 Igor Zamyatin <igor.zamyatin@intel.com>
-
- * gcc.dg/tree-ssa/loop-19.c: Add -fno-common.
-
-2013-06-12 Jakub Jelinek <jakub@redhat.com>
-
- PR target/56564
- * varasm.c (decl_binds_to_current_def_p): Call binds_local_p
- target hook even for !TREE_PUBLIC decls. If no resolution info
- is available, return false for common and external decls.
-
- * gcc.target/i386/pr56564-1.c: Skip on darwin, mingw and cygwin.
- * gcc.target/i386/pr56564-3.c: Likewise.
-
-2013-06-11 Jakub Jelinek <jakub@redhat.com>
-
- PR target/56564
- * varasm.c (get_variable_align): Move #endif to the right place.
-
-2013-06-10 Jakub Jelinek <jakub@redhat.com>
-
- PR target/56564
- * varasm.c (align_variable): Don't use DATA_ALIGNMENT or
- CONSTANT_ALIGNMENT if !decl_binds_to_current_def_p (decl).
- Use DATA_ABI_ALIGNMENT for that case instead if defined.
- (get_variable_align): New function.
- (get_variable_section, emit_bss, emit_common,
- assemble_variable_contents, place_block_symbol): Use
- get_variable_align instead of DECL_ALIGN.
- (assemble_noswitch_variable): Add align argument, use it
- instead of DECL_ALIGN.
- (assemble_variable): Adjust caller. Use get_variable_align
- instead of DECL_ALIGN.
- * config/i386/i386.h (DATA_ALIGNMENT): Adjust x86_data_alignment
- caller.
- (DATA_ABI_ALIGNMENT): Define.
- * config/i386/i386-protos.h (x86_data_alignment): Adjust prototype.
- * config/i386/i386.c (x86_data_alignment): Add opt argument. If
- opt is false, only return the psABI mandated alignment increase.
- * config/c6x/c6x.h (DATA_ALIGNMENT): Renamed to...
- (DATA_ABI_ALIGNMENT): ... this.
- * config/mmix/mmix.h (DATA_ALIGNMENT): Renamed to...
- (DATA_ABI_ALIGNMENT): ... this.
- * config/mmix/mmix.c (mmix_data_alignment): Adjust function comment.
- * config/s390/s390.h (DATA_ALIGNMENT): Renamed to...
- (DATA_ABI_ALIGNMENT): ... this.
- * doc/tm.texi.in (DATA_ABI_ALIGNMENT): Document.
- * doc/tm.texi: Regenerated.
-
- * gcc.target/i386/pr56564-1.c: New test.
- * gcc.target/i386/pr56564-2.c: New test.
- * gcc.target/i386/pr56564-3.c: New test.
- * gcc.target/i386/pr56564-4.c: New test.
- * gcc.target/i386/avx256-unaligned-load-4.c: Add -fno-common.
- * gcc.target/i386/avx256-unaligned-store-1.c: Likewise.
- * gcc.target/i386/avx256-unaligned-store-3.c: Likewise.
- * gcc.target/i386/avx256-unaligned-store-4.c: Likewise.
- * gcc.target/i386/vect-sizes-1.c: Likewise.
- * gcc.target/i386/memcpy-1.c: Likewise.
- * gcc.dg/vect/costmodel/i386/costmodel-vect-31.c (tmp): Initialize.
- * gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c (tmp): Likewise.
-
---- gcc/doc/tm.texi.in (revision 199897)
-+++ gcc/doc/tm.texi.in (revision 199898)
-@@ -1062,6 +1062,15 @@ arrays to be word-aligned so that @code{
- constants to character arrays can be done inline.
- @end defmac
-
-+@defmac DATA_ABI_ALIGNMENT (@var{type}, @var{basic-align})
-+Similar to @code{DATA_ALIGNMENT}, but for the cases where the ABI mandates
-+some alignment increase, instead of optimization only purposes. E.g.@
-+AMD x86-64 psABI says that variables with array type larger than 15 bytes
-+must be aligned to 16 byte boundaries.
-+
-+If this macro is not defined, then @var{basic-align} is used.
-+@end defmac
-+
- @defmac CONSTANT_ALIGNMENT (@var{constant}, @var{basic-align})
- If defined, a C expression to compute the alignment given to a constant
- that is being placed in memory. @var{constant} is the constant and
---- gcc/doc/tm.texi (revision 199897)
-+++ gcc/doc/tm.texi (revision 199898)
-@@ -1078,6 +1078,15 @@ arrays to be word-aligned so that @code{
- constants to character arrays can be done inline.
- @end defmac
-
-+@defmac DATA_ABI_ALIGNMENT (@var{type}, @var{basic-align})
-+Similar to @code{DATA_ALIGNMENT}, but for the cases where the ABI mandates
-+some alignment increase, instead of optimization only purposes. E.g.@
-+AMD x86-64 psABI says that variables with array type larger than 15 bytes
-+must be aligned to 16 byte boundaries.
-+
-+If this macro is not defined, then @var{basic-align} is used.
-+@end defmac
-+
- @defmac CONSTANT_ALIGNMENT (@var{constant}, @var{basic-align})
- If defined, a C expression to compute the alignment given to a constant
- that is being placed in memory. @var{constant} is the constant and
---- gcc/varasm.c (revision 199897)
-+++ gcc/varasm.c (revision 199984)
-@@ -966,13 +966,80 @@ align_variable (tree decl, bool dont_out
- align = MAX_OFILE_ALIGNMENT;
- }
-
-- /* On some machines, it is good to increase alignment sometimes. */
- if (! DECL_USER_ALIGN (decl))
- {
-+#ifdef DATA_ABI_ALIGNMENT
-+ unsigned int data_abi_align
-+ = DATA_ABI_ALIGNMENT (TREE_TYPE (decl), align);
-+ /* For backwards compatibility, don't assume the ABI alignment for
-+ TLS variables. */
-+ if (! DECL_THREAD_LOCAL_P (decl) || data_abi_align <= BITS_PER_WORD)
-+ align = data_abi_align;
-+#endif
-+
-+ /* On some machines, it is good to increase alignment sometimes.
-+ But as DECL_ALIGN is used both for actually emitting the variable
-+ and for code accessing the variable as guaranteed alignment, we
-+ can only increase the alignment if it is a performance optimization
-+ if the references to it must bind to the current definition. */
-+ if (decl_binds_to_current_def_p (decl))
-+ {
-+#ifdef DATA_ALIGNMENT
-+ unsigned int data_align = DATA_ALIGNMENT (TREE_TYPE (decl), align);
-+ /* Don't increase alignment too much for TLS variables - TLS space
-+ is too precious. */
-+ if (! DECL_THREAD_LOCAL_P (decl) || data_align <= BITS_PER_WORD)
-+ align = data_align;
-+#endif
-+#ifdef CONSTANT_ALIGNMENT
-+ if (DECL_INITIAL (decl) != 0
-+ && DECL_INITIAL (decl) != error_mark_node)
-+ {
-+ unsigned int const_align
-+ = CONSTANT_ALIGNMENT (DECL_INITIAL (decl), align);
-+ /* Don't increase alignment too much for TLS variables - TLS
-+ space is too precious. */
-+ if (! DECL_THREAD_LOCAL_P (decl) || const_align <= BITS_PER_WORD)
-+ align = const_align;
-+ }
-+#endif
-+ }
-+ }
-+
-+ /* Reset the alignment in case we have made it tighter, so we can benefit
-+ from it in get_pointer_alignment. */
-+ DECL_ALIGN (decl) = align;
-+}
-+
-+/* Return DECL_ALIGN (decl), possibly increased for optimization purposes
-+ beyond what align_variable returned. */
-+
-+static unsigned int
-+get_variable_align (tree decl)
-+{
-+ unsigned int align = DECL_ALIGN (decl);
-+
-+ /* For user aligned vars or static vars align_variable already did
-+ everything. */
-+ if (DECL_USER_ALIGN (decl) || !TREE_PUBLIC (decl))
-+ return align;
-+
-+#ifdef DATA_ABI_ALIGNMENT
-+ if (DECL_THREAD_LOCAL_P (decl))
-+ align = DATA_ABI_ALIGNMENT (TREE_TYPE (decl), align);
-+#endif
-+
-+ /* For decls that bind to the current definition, align_variable
-+ did also everything, except for not assuming ABI required alignment
-+ of TLS variables. For other vars, increase the alignment here
-+ as an optimization. */
-+ if (!decl_binds_to_current_def_p (decl))
-+ {
-+ /* On some machines, it is good to increase alignment sometimes. */
- #ifdef DATA_ALIGNMENT
- unsigned int data_align = DATA_ALIGNMENT (TREE_TYPE (decl), align);
- /* Don't increase alignment too much for TLS variables - TLS space
-- is too precious. */
-+ is too precious. */
- if (! DECL_THREAD_LOCAL_P (decl) || data_align <= BITS_PER_WORD)
- align = data_align;
- #endif
-@@ -989,9 +1056,7 @@ align_variable (tree decl, bool dont_out
- #endif
- }
-
-- /* Reset the alignment in case we have made it tighter, so we can benefit
-- from it in get_pointer_alignment. */
-- DECL_ALIGN (decl) = align;
-+ return align;
- }
-
- /* Return the section into which the given VAR_DECL or CONST_DECL
-@@ -1043,7 +1108,8 @@ get_variable_section (tree decl, bool pr
- return bss_noswitch_section;
- }
-
-- return targetm.asm_out.select_section (decl, reloc, DECL_ALIGN (decl));
-+ return targetm.asm_out.select_section (decl, reloc,
-+ get_variable_align (decl));
- }
-
- /* Return the block into which object_block DECL should be placed. */
-@@ -1780,7 +1846,8 @@ emit_bss (tree decl ATTRIBUTE_UNUSED,
- unsigned HOST_WIDE_INT rounded ATTRIBUTE_UNUSED)
- {
- #if defined ASM_OUTPUT_ALIGNED_BSS
-- ASM_OUTPUT_ALIGNED_BSS (asm_out_file, decl, name, size, DECL_ALIGN (decl));
-+ ASM_OUTPUT_ALIGNED_BSS (asm_out_file, decl, name, size,
-+ get_variable_align (decl));
- return true;
- #endif
- }
-@@ -1796,10 +1863,11 @@ emit_common (tree decl ATTRIBUTE_UNUSED,
- {
- #if defined ASM_OUTPUT_ALIGNED_DECL_COMMON
- ASM_OUTPUT_ALIGNED_DECL_COMMON (asm_out_file, decl, name,
-- size, DECL_ALIGN (decl));
-+ size, get_variable_align (decl));
- return true;
- #elif defined ASM_OUTPUT_ALIGNED_COMMON
-- ASM_OUTPUT_ALIGNED_COMMON (asm_out_file, name, size, DECL_ALIGN (decl));
-+ ASM_OUTPUT_ALIGNED_COMMON (asm_out_file, name, size,
-+ get_variable_align (decl));
- return true;
- #else
- ASM_OUTPUT_COMMON (asm_out_file, name, size, rounded);
-@@ -1828,7 +1896,8 @@ emit_tls_common (tree decl ATTRIBUTE_UNU
- NAME is the name of DECL's SYMBOL_REF. */
-
- static void
--assemble_noswitch_variable (tree decl, const char *name, section *sect)
-+assemble_noswitch_variable (tree decl, const char *name, section *sect,
-+ unsigned int align)
- {
- unsigned HOST_WIDE_INT size, rounded;
-
-@@ -1850,7 +1919,7 @@ assemble_noswitch_variable (tree decl, c
- * (BIGGEST_ALIGNMENT / BITS_PER_UNIT));
-
- if (!sect->noswitch.callback (decl, name, size, rounded)
-- && (unsigned HOST_WIDE_INT) DECL_ALIGN_UNIT (decl) > rounded)
-+ && (unsigned HOST_WIDE_INT) (align / BITS_PER_UNIT) > rounded)
- warning (0, "requested alignment for %q+D is greater than "
- "implemented alignment of %wu", decl, rounded);
- }
-@@ -1880,7 +1949,7 @@ assemble_variable_contents (tree decl, c
- /* Output the actual data. */
- output_constant (DECL_INITIAL (decl),
- tree_low_cst (DECL_SIZE_UNIT (decl), 1),
-- DECL_ALIGN (decl));
-+ get_variable_align (decl));
- else
- /* Leave space for it. */
- assemble_zeros (tree_low_cst (DECL_SIZE_UNIT (decl), 1));
-@@ -1904,6 +1973,7 @@ assemble_variable (tree decl, int top_le
- const char *name;
- rtx decl_rtl, symbol;
- section *sect;
-+ unsigned int align;
- bool asan_protected = false;
-
- /* This function is supposed to handle VARIABLES. Ensure we have one. */
-@@ -2003,6 +2073,8 @@ assemble_variable (tree decl, int top_le
-
- set_mem_align (decl_rtl, DECL_ALIGN (decl));
-
-+ align = get_variable_align (decl);
-+
- if (TREE_PUBLIC (decl))
- maybe_assemble_visibility (decl);
-
-@@ -2032,12 +2104,12 @@ assemble_variable (tree decl, int top_le
- place_block_symbol (symbol);
- }
- else if (SECTION_STYLE (sect) == SECTION_NOSWITCH)
-- assemble_noswitch_variable (decl, name, sect);
-+ assemble_noswitch_variable (decl, name, sect, align);
- else
- {
- switch_to_section (sect);
-- if (DECL_ALIGN (decl) > BITS_PER_UNIT)
-- ASM_OUTPUT_ALIGN (asm_out_file, floor_log2 (DECL_ALIGN_UNIT (decl)));
-+ if (align > BITS_PER_UNIT)
-+ ASM_OUTPUT_ALIGN (asm_out_file, floor_log2 (align / BITS_PER_UNIT));
- assemble_variable_contents (decl, name, dont_output_data);
- if (asan_protected)
- {
-@@ -6709,10 +6781,10 @@ bool
- decl_binds_to_current_def_p (tree decl)
- {
- gcc_assert (DECL_P (decl));
-- if (!TREE_PUBLIC (decl))
-- return true;
- if (!targetm.binds_local_p (decl))
- return false;
-+ if (!TREE_PUBLIC (decl))
-+ return true;
- /* When resolution is available, just use it. */
- if (TREE_CODE (decl) == VAR_DECL
- && (TREE_STATIC (decl) || DECL_EXTERNAL (decl)))
-@@ -6730,10 +6802,20 @@ decl_binds_to_current_def_p (tree decl)
- return resolution_to_local_definition_p (node->symbol.resolution);
- }
- /* Otherwise we have to assume the worst for DECL_WEAK (hidden weaks
-- binds locally but still can be overwritten).
-+ binds locally but still can be overwritten), DECL_COMMON (can be merged
-+ with a non-common definition somewhere in the same module) or
-+ DECL_EXTERNAL.
- This rely on fact that binds_local_p behave as decl_replaceable_p
- for all other declaration types. */
-- return !DECL_WEAK (decl);
-+ if (DECL_WEAK (decl))
-+ return false;
-+ if (DECL_COMMON (decl)
-+ && (DECL_INITIAL (decl) == NULL
-+ || DECL_INITIAL (decl) == error_mark_node))
-+ return false;
-+ if (DECL_EXTERNAL (decl))
-+ return false;
-+ return true;
- }
-
- /* A replaceable function or variable is one which may be replaced
-@@ -6959,7 +7041,7 @@ place_block_symbol (rtx symbol)
- else
- {
- decl = SYMBOL_REF_DECL (symbol);
-- alignment = DECL_ALIGN (decl);
-+ alignment = get_variable_align (decl);
- size = tree_low_cst (DECL_SIZE_UNIT (decl), 1);
- if (flag_asan && asan_protect_global (decl))
- {
---- gcc/config/s390/s390.h (revision 199897)
-+++ gcc/config/s390/s390.h (revision 199898)
-@@ -221,7 +221,7 @@ enum processor_flags
-
- /* Alignment on even addresses for LARL instruction. */
- #define CONSTANT_ALIGNMENT(EXP, ALIGN) (ALIGN) < 16 ? 16 : (ALIGN)
--#define DATA_ALIGNMENT(TYPE, ALIGN) (ALIGN) < 16 ? 16 : (ALIGN)
-+#define DATA_ABI_ALIGNMENT(TYPE, ALIGN) (ALIGN) < 16 ? 16 : (ALIGN)
-
- /* Alignment is not required by the hardware. */
- #define STRICT_ALIGNMENT 0
---- gcc/config/i386/i386.h (revision 199897)
-+++ gcc/config/i386/i386.h (revision 199898)
-@@ -859,7 +859,18 @@ enum target_cpu_default
- cause character arrays to be word-aligned so that `strcpy' calls
- that copy constants to character arrays can be done inline. */
-
--#define DATA_ALIGNMENT(TYPE, ALIGN) ix86_data_alignment ((TYPE), (ALIGN))
-+#define DATA_ALIGNMENT(TYPE, ALIGN) \
-+ ix86_data_alignment ((TYPE), (ALIGN), true)
-+
-+/* Similar to DATA_ALIGNMENT, but for the cases where the ABI mandates
-+ some alignment increase, instead of optimization only purposes. E.g.
-+ AMD x86-64 psABI says that variables with array type larger than 15 bytes
-+ must be aligned to 16 byte boundaries.
-+
-+ If this macro is not defined, then ALIGN is used. */
-+
-+#define DATA_ABI_ALIGNMENT(TYPE, ALIGN) \
-+ ix86_data_alignment ((TYPE), (ALIGN), false)
-
- /* If defined, a C expression to compute the alignment for a local
- variable. TYPE is the data type, and ALIGN is the alignment that
---- gcc/config/i386/i386-protos.h (revision 199897)
-+++ gcc/config/i386/i386-protos.h (revision 199898)
-@@ -207,7 +207,7 @@ extern void init_cumulative_args (CUMULA
- #endif /* RTX_CODE */
-
- #ifdef TREE_CODE
--extern int ix86_data_alignment (tree, int);
-+extern int ix86_data_alignment (tree, int, bool);
- extern unsigned int ix86_local_alignment (tree, enum machine_mode,
- unsigned int);
- extern unsigned int ix86_minimum_alignment (tree, enum machine_mode,
---- gcc/config/i386/i386.c (revision 199897)
-+++ gcc/config/i386/i386.c (revision 199898)
-@@ -25292,12 +25292,13 @@ ix86_constant_alignment (tree exp, int a
- instead of that alignment to align the object. */
-
- int
--ix86_data_alignment (tree type, int align)
-+ix86_data_alignment (tree type, int align, bool opt)
- {
- int max_align
- = optimize_size ? BITS_PER_WORD : MIN (256, MAX_OFILE_ALIGNMENT);
-
-- if (AGGREGATE_TYPE_P (type)
-+ if (opt
-+ && AGGREGATE_TYPE_P (type)
- && TYPE_SIZE (type)
- && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
- && (TREE_INT_CST_LOW (TYPE_SIZE (type)) >= (unsigned) max_align
-@@ -25309,14 +25310,17 @@ ix86_data_alignment (tree type, int alig
- to 16byte boundary. */
- if (TARGET_64BIT)
- {
-- if (AGGREGATE_TYPE_P (type)
-- && TYPE_SIZE (type)
-- && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
-- && (TREE_INT_CST_LOW (TYPE_SIZE (type)) >= 128
-- || TREE_INT_CST_HIGH (TYPE_SIZE (type))) && align < 128)
-+ if ((opt ? AGGREGATE_TYPE_P (type) : TREE_CODE (type) == ARRAY_TYPE)
-+ && TYPE_SIZE (type)
-+ && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
-+ && (TREE_INT_CST_LOW (TYPE_SIZE (type)) >= 128
-+ || TREE_INT_CST_HIGH (TYPE_SIZE (type))) && align < 128)
- return 128;
- }
-
-+ if (!opt)
-+ return align;
-+
- if (TREE_CODE (type) == ARRAY_TYPE)
- {
- if (TYPE_MODE (TREE_TYPE (type)) == DFmode && align < 64)
---- gcc/config/c6x/c6x.h (revision 199897)
-+++ gcc/config/c6x/c6x.h (revision 199898)
-@@ -134,7 +134,7 @@ extern c6x_cpu_t c6x_arch;
- Really only externally visible arrays must be aligned this way, as
- only those are directly visible from another compilation unit. But
- we don't have that information available here. */
--#define DATA_ALIGNMENT(TYPE, ALIGN) \
-+#define DATA_ABI_ALIGNMENT(TYPE, ALIGN) \
- (((ALIGN) < BITS_PER_UNIT * 8 && TREE_CODE (TYPE) == ARRAY_TYPE) \
- ? BITS_PER_UNIT * 8 : (ALIGN))
-
---- gcc/config/mmix/mmix.h (revision 199897)
-+++ gcc/config/mmix/mmix.h (revision 199898)
-@@ -164,7 +164,7 @@ struct GTY(()) machine_function
- /* Copied from elfos.h. */
- #define MAX_OFILE_ALIGNMENT (32768 * 8)
-
--#define DATA_ALIGNMENT(TYPE, BASIC_ALIGN) \
-+#define DATA_ABI_ALIGNMENT(TYPE, BASIC_ALIGN) \
- mmix_data_alignment (TYPE, BASIC_ALIGN)
-
- #define CONSTANT_ALIGNMENT(CONSTANT, BASIC_ALIGN) \
---- gcc/config/mmix/mmix.c (revision 199897)
-+++ gcc/config/mmix/mmix.c (revision 199898)
-@@ -313,7 +313,7 @@ mmix_init_machine_status (void)
- return ggc_alloc_cleared_machine_function ();
- }
-
--/* DATA_ALIGNMENT.
-+/* DATA_ABI_ALIGNMENT.
- We have trouble getting the address of stuff that is located at other
- than 32-bit alignments (GETA requirements), so try to give everything
- at least 32-bit alignment. */
---- gcc/testsuite/gcc.target/i386/memcpy-1.c (revision 199897)
-+++ gcc/testsuite/gcc.target/i386/memcpy-1.c (revision 199898)
-@@ -1,6 +1,6 @@
- /* { dg-do compile } */
- /* { dg-require-effective-target ia32 } */
--/* { dg-options "-O2 -march=pentiumpro -minline-all-stringops" } */
-+/* { dg-options "-O2 -march=pentiumpro -minline-all-stringops -fno-common" } */
- /* { dg-final { scan-assembler "rep" } } */
- /* { dg-final { scan-assembler "movs" } } */
- /* { dg-final { scan-assembler-not "test" } } */
---- gcc/testsuite/gcc.target/i386/vect-sizes-1.c (revision 199897)
-+++ gcc/testsuite/gcc.target/i386/vect-sizes-1.c (revision 199898)
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O3 -ffast-math -mavx -mtune=generic" } */
-+/* { dg-options "-O3 -ffast-math -mavx -mtune=generic -fno-common" } */
-
- double a[1024];
-
---- gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c (revision 199897)
-+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c (revision 199898)
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store" } */
-+/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store -fno-common" } */
-
- #define N 1024
-
---- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c (revision 199897)
-+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c (revision 199898)
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store" } */
-+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store -fno-common" } */
-
- #define N 1024
-
---- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c (revision 199897)
-+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c (revision 199898)
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store -mtune=generic" } */
-+/* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store -mtune=generic -fno-common" } */
-
- #define N 1024
-
---- gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c (revision 199897)
-+++ gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c (revision 199898)
-@@ -1,5 +1,5 @@
- /* { dg-do compile } */
--/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store" } */
-+/* { dg-options "-O3 -dp -mavx -mno-avx256-split-unaligned-load -mno-avx256-split-unaligned-store -fno-common" } */
-
- #define N 1024
-
---- gcc/testsuite/gcc.target/i386/pr56564-1.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/pr56564-1.c (revision 199985)
-@@ -0,0 +1,26 @@
-+/* PR target/56564 */
-+/* { dg-do compile { target { fpic && lp64 } } } */
-+/* { dg-skip-if "No symbol interposition for PIC" { *-*-mingw* *-*-cygwin* *-*-darwin* } } */
-+/* { dg-options "-O3 -fpic -fdump-tree-optimized" } */
-+
-+struct S { long a, b; } s = { 5, 6 };
-+char t[16] = { 7 };
-+
-+int
-+foo (void)
-+{
-+ return ((__UINTPTR_TYPE__) &s) & 15;
-+}
-+
-+int
-+bar (void)
-+{
-+ return ((__UINTPTR_TYPE__) &t[0]) & 15;
-+}
-+
-+/* { dg-final { scan-tree-dump-times "&s" 1 "optimized" } } */
-+/* { dg-final { scan-tree-dump-times "&t" 0 "optimized" } } */
-+/* { dg-final { scan-tree-dump-times "return 0" 1 "optimized" } } */
-+/* { dg-final { scan-assembler ".align\[ \t]*16\[^:]*\[\n\r]s:" { target { *-*-linux* } } } } */
-+/* { dg-final { scan-assembler ".align\[ \t]*16\[^:]*\[\n\r]t:" { target { *-*-linux* } } } } */
-+/* { dg-final { cleanup-tree-dump "optimized" } } */
---- gcc/testsuite/gcc.target/i386/pr56564-2.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/pr56564-2.c (revision 199898)
-@@ -0,0 +1,25 @@
-+/* PR target/56564 */
-+/* { dg-do compile { target { *-*-linux* && lp64 } } } */
-+/* { dg-options "-O3 -fno-pic -fdump-tree-optimized" } */
-+
-+struct S { long a, b; } s = { 5, 6 };
-+char t[16] = { 7 };
-+
-+int
-+foo (void)
-+{
-+ return ((__UINTPTR_TYPE__) &s) & 15;
-+}
-+
-+int
-+bar (void)
-+{
-+ return ((__UINTPTR_TYPE__) &t[0]) & 15;
-+}
-+
-+/* { dg-final { scan-tree-dump-times "&s" 0 "optimized" } } */
-+/* { dg-final { scan-tree-dump-times "&t" 0 "optimized" } } */
-+/* { dg-final { scan-tree-dump-times "return 0" 2 "optimized" } } */
-+/* { dg-final { scan-assembler ".align\[ \t]*16\[^:]*\[\n\r]s:" { target { *-*-linux* } } } } */
-+/* { dg-final { scan-assembler ".align\[ \t]*16\[^:]*\[\n\r]t:" { target { *-*-linux* } } } } */
-+/* { dg-final { cleanup-tree-dump "optimized" } } */
---- gcc/testsuite/gcc.target/i386/pr56564-3.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/pr56564-3.c (revision 199985)
-@@ -0,0 +1,29 @@
-+/* PR target/56564 */
-+/* { dg-do compile { target { fpic && lp64 } } } */
-+/* { dg-skip-if "No symbol interposition for PIC" { *-*-mingw* *-*-cygwin* *-*-darwin* } } */
-+/* { dg-options "-O3 -fpic -fdump-tree-optimized" } */
-+
-+__thread struct S { long a, b; } s = { 5, 6 };
-+__thread char t[16] = { 7 };
-+
-+int
-+foo (void)
-+{
-+ return ((__UINTPTR_TYPE__) &s) & 15;
-+}
-+
-+/* For backwards compatibility we don't assume that t must
-+ be aligned to 16 bytes, but align it anyway. */
-+
-+int
-+bar (void)
-+{
-+ return ((__UINTPTR_TYPE__) &t[0]) & 15;
-+}
-+
-+/* { dg-final { scan-tree-dump-times "&s" 1 "optimized" } } */
-+/* { dg-final { scan-tree-dump-times "&t" 1 "optimized" } } */
-+/* { dg-final { scan-tree-dump-times "return 0" 0 "optimized" } } */
-+/* { dg-final { scan-assembler-not ".align\[ \t]*16\[^:]*\[\n\r]s:" { target { *-*-linux* } } } } */
-+/* { dg-final { scan-assembler ".align\[ \t]*16\[^:]*\[\n\r]t:" { target { *-*-linux* } } } } */
-+/* { dg-final { cleanup-tree-dump "optimized" } } */
---- gcc/testsuite/gcc.target/i386/pr56564-4.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/pr56564-4.c (revision 199898)
-@@ -0,0 +1,22 @@
-+/* PR target/56564 */
-+/* { dg-do compile { target { *-*-linux* && lp64 } } } */
-+/* { dg-options "-O3 -fno-pic -fdump-tree-optimized" } */
-+
-+__thread struct S { long a, b; } s = { 5, 6 };
-+__thread char t[16] = { 7 };
-+
-+int
-+foo (void)
-+{
-+ return ((__UINTPTR_TYPE__) &s) & 15;
-+}
-+
-+int
-+bar (void)
-+{
-+ return ((__UINTPTR_TYPE__) &t[0]) & 15;
-+}
-+
-+/* { dg-final { scan-assembler-not ".align\[ \t]*16\[^:]*\[\n\r]s:" { target { *-*-linux* } } } } */
-+/* { dg-final { scan-assembler ".align\[ \t]*16\[^:]*\[\n\r]t:" { target { *-*-linux* } } } } */
-+/* { dg-final { cleanup-tree-dump "optimized" } } */
---- gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-31.c (revision 199897)
-+++ gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-31.c (revision 199898)
-@@ -18,7 +18,7 @@ struct s{
- struct t e; /* unaligned (offset 2N+4N+4 B) */
- };
-
--struct s tmp;
-+struct s tmp = { 1 };
-
- int main1 ()
- {
---- gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c (revision 199897)
-+++ gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c (revision 199898)
-@@ -18,7 +18,7 @@ struct s{
- struct t e; /* unaligned (offset 2N+4N+4 B) */
- };
-
--struct s tmp;
-+struct s tmp = { 1 };
-
- int main1 ()
- {
---- gcc/testsuite/gcc.dg/tree-ssa/loop-19.c (revision 200212)
-+++ gcc/testsuite/gcc.dg/tree-ssa/loop-19.c (revision 200213)
-@@ -6,7 +6,7 @@
-
- /* { dg-do compile { target { i?86-*-* || { x86_64-*-* || powerpc_hard_double } } } } */
- /* { dg-require-effective-target nonpic } */
--/* { dg-options "-O3 -fno-tree-loop-distribute-patterns -fno-prefetch-loop-arrays -fdump-tree-optimized" } */
-+/* { dg-options "-O3 -fno-tree-loop-distribute-patterns -fno-prefetch-loop-arrays -fdump-tree-optimized -fno-common" } */
-
- # define N 2000000
- double a[N],c[N];
diff --git a/gcc48-pr60010.patch b/gcc48-pr60010.patch
deleted file mode 100644
index 0baa553..0000000
--- a/gcc48-pr60010.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-2014-02-14 Kyle McMartin <kyle@redhat.com>
-
- PR pch/60010
- * config/host-linux.c (TRY_EMPTY_VM_SPACE): Define for AArch64.
-
---- gcc/config/host-linux.c (revision 207784)
-+++ gcc/config/host-linux.c (revision 207785)
-@@ -86,6 +86,8 @@
- # define TRY_EMPTY_VM_SPACE 0x60000000
- #elif defined(__mc68000__)
- # define TRY_EMPTY_VM_SPACE 0x40000000
-+#elif defined(__aarch64__)
-+# define TRY_EMPTY_VM_SPACE 0x1000000000
- #elif defined(__ARM_EABI__)
- # define TRY_EMPTY_VM_SPACE 0x60000000
- #elif defined(__mips__) && defined(__LP64__)
diff --git a/gcc48-pr60046.patch b/gcc48-pr60046.patch
deleted file mode 100644
index fde6da9..0000000
--- a/gcc48-pr60046.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-2014-02-19 Jason Merrill <jason@redhat.com>
-
- PR c++/60046
- * pt.c (maybe_instantiate_noexcept): Don't instantiate exception
- spec from template context.
-
---- gcc/cp/pt.c (revision 207920)
-+++ gcc/cp/pt.c (revision 207921)
-@@ -18567,6 +18567,10 @@ maybe_instantiate_noexcept (tree fn)
- {
- tree fntype, spec, noex, clone;
-
-+ /* Don't instantiate a noexcept-specification from template context. */
-+ if (processing_template_decl)
-+ return;
-+
- if (DECL_CLONED_FUNCTION_P (fn))
- fn = DECL_CLONED_FUNCTION (fn);
- fntype = TREE_TYPE (fn);
---- gcc/testsuite/g++.dg/cpp0x/noexcept22.C (revision 0)
-+++ gcc/testsuite/g++.dg/cpp0x/noexcept22.C (revision 207921)
-@@ -0,0 +1,21 @@
-+// PR c++/60046
-+// { dg-require-effective-target c++11 }
-+
-+constexpr bool foo () { return noexcept (true); }
-+template <typename T>
-+struct V
-+{
-+ void bar (V &) noexcept (foo ()) {}
-+};
-+template <typename T>
-+struct W : public V <int>
-+{
-+ void bar (W &x) { V <int>::bar (x); }
-+};
-+
-+int
-+main ()
-+{
-+ W <int> a, b;
-+ a.bar (b);
-+}
diff --git a/gcc48-pr60137.patch b/gcc48-pr60137.patch
deleted file mode 100644
index 74cd998..0000000
--- a/gcc48-pr60137.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-2014-02-11 Michael Meissner <meissner@linux.vnet.ibm.com>
-
- PR target/60137
- * config/rs6000/rs6000.md (128-bit GPR splitter): Add a splitter
- for VSX/Altivec vectors that land in GPR registers.
-
- * gcc.target/powerpc/pr60137.c: New file.
-
---- gcc/config/rs6000/rs6000.md (revision 207698)
-+++ gcc/config/rs6000/rs6000.md (revision 207699)
-@@ -9963,6 +9963,15 @@ (define_insn_and_split "reload_vsx_from_
- [(set_attr "length" "12")
- (set_attr "type" "three")])
-
-+(define_split
-+ [(set (match_operand:FMOVE128_GPR 0 "nonimmediate_operand" "")
-+ (match_operand:FMOVE128_GPR 1 "input_operand" ""))]
-+ "reload_completed
-+ && (int_reg_operand (operands[0], <MODE>mode)
-+ || int_reg_operand (operands[1], <MODE>mode))"
-+ [(pc)]
-+{ rs6000_split_multireg_move (operands[0], operands[1]); DONE; })
-+
- ;; Move SFmode to a VSX from a GPR register. Because scalar floating point
- ;; type is stored internally as double precision in the VSX registers, we have
- ;; to convert it from the vector format.
---- gcc/testsuite/gcc.target/powerpc/pr60137.c (revision 0)
-+++ gcc/testsuite/gcc.target/powerpc/pr60137.c (revision 207699)
-@@ -0,0 +1,17 @@
-+/* { dg-do compile { target { powerpc*-*-* } } } */
-+/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
-+/* { dg-require-effective-target powerpc_p8vector_ok } */
-+/* { dg-options "-mcpu=power8 -O3 -mno-vsx" } */
-+
-+/* target/60137, compiler got a 'could not split insn error'. */
-+
-+extern int target_flags;
-+extern char fixed_regs[53];
-+extern char call_used_regs[53];
-+
-+void init_reg_sets_1(void)
-+{
-+ int i;
-+ for (i = 0; i < 53; i++)
-+ fixed_regs[i] = call_used_regs[i] = (call_used_regs[i] &((target_flags & 0x02000000) ? 2 : 1)) != 0;
-+}
diff --git a/gcc48-rh330771.patch b/gcc48-rh330771.patch
deleted file mode 100644
index 102730f..0000000
--- a/gcc48-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/gcc48-sparc-config-detection.patch b/gcc48-sparc-config-detection.patch
deleted file mode 100644
index 97fed22..0000000
--- a/gcc48-sparc-config-detection.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- gcc/config.gcc.jj 2008-04-24 15:42:46.000000000 -0500
-+++ gcc/config.gcc 2008-04-24 15:44:51.000000000 -0500
-@@ -2421,7 +2421,7 @@ sparc-*-rtems*)
- tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h newlib-stdint.h"
- tmake_file="sparc/t-sparc sparc/t-elf sparc/t-rtems t-rtems"
- ;;
--sparc-*-linux*)
-+sparc-*-linux* | sparcv9-*-linux*)
- tm_file="${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/tso.h"
- extra_options="${extra_options} sparc/long-double-switch.opt"
- case ${target} in
-@@ -2474,7 +2474,7 @@ sparc64-*-rtems*)
- extra_options="${extra_options}"
- tmake_file="${tmake_file} sparc/t-sparc sparc/t-rtems-64 t-rtems"
- ;;
--sparc64-*-linux*)
-+sparc64*-*-linux*)
- tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h sparc/sysv4.h gnu-user.h linux.h glibc-stdint.h sparc/default-64.h sparc/linux64.h sparc/tso.h"
- extra_options="${extra_options} sparc/long-double-switch.opt"
- tmake_file="${tmake_file} sparc/t-sparc sparc/t-linux64"
---- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
-+++ libgcc/config.host 2008-04-24 15:46:49.000000000 -0500
-@@ -1002,7 +1002,7 @@ sparc-*-elf*)
- tmake_file="${tmake_file} t-fdpbit t-crtfm"
- extra_parts="$extra_parts crti.o crtn.o crtfastmath.o"
- ;;
--sparc-*-linux*) # SPARC's running GNU/Linux, libc6
-+sparc-*-linux* | sparcv9-*-linux*) # SPARC's running GNU/Linux, libc6
- tmake_file="${tmake_file} t-crtfm"
- if test "${host_address}" = 64; then
- tmake_file="$tmake_file sparc/t-linux64"
-@@ -1050,7 +1050,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
- tmake_file="$tmake_file t-crtfm"
- extra_parts="$extra_parts crtfastmath.o"
- ;;
--sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
-+sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux
- extra_parts="$extra_parts crtfastmath.o"
- tmake_file="${tmake_file} t-crtfm sparc/t-linux"
- if test "${host_address}" = 64; then
diff --git a/gcc49-cloog-dl.patch b/gcc49-cloog-dl.patch
new file mode 100644
index 0000000..8a72509
--- /dev/null
+++ b/gcc49-cloog-dl.patch
@@ -0,0 +1,476 @@
+--- gcc/Makefile.in.jj 2012-12-13 17:09:20.000000000 +0100
++++ gcc/Makefile.in 2012-12-14 11:45:22.585670055 +0100
+@@ -1006,7 +1006,7 @@ BUILD_LIBDEPS= $(BUILD_LIBIBERTY)
+ # and the system's installed libraries.
+ LIBS = @LIBS@ libcommon.a $(CPPLIB) $(LIBINTL) $(LIBICONV) $(LIBBACKTRACE) \
+ $(LIBIBERTY) $(LIBDECNUMBER) $(HOST_LIBS)
+-BACKENDLIBS = $(CLOOGLIBS) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
++BACKENDLIBS = $(if $(CLOOGLIBS),-ldl) $(GMPLIBS) $(PLUGINLIBS) $(HOST_LIBS) \
+ $(ZLIB)
+ # Any system libraries needed just for GNAT.
+ SYSLIBS = @GNAT_LIBEXC@
+@@ -2011,6 +2011,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 2012-12-13 11:31:27.000000000 +0100
++++ gcc/graphite-poly.h 2012-12-14 13:41:41.970800726 +0100
+@@ -22,6 +22,371 @@ along with GCC; see the file COPYING3.
+ #ifndef GCC_GRAPHITE_POLY_H
+ #define GCC_GRAPHITE_POLY_H
+
++#include <isl/aff.h>
++#include <isl/schedule.h>
++#include <isl/ilp.h>
++#include <isl/flow.h>
++#include <isl/options.h>
++#include <cloog/isl/cloog.h>
++#include <dlfcn.h>
++#define DYNSYMS \
++ DYNSYM (clast_pprint); \
++ DYNSYM (cloog_clast_create_from_input); \
++ DYNSYM (cloog_clast_free); \
++ DYNSYM (cloog_domain_from_isl_set); \
++ DYNSYM (cloog_input_alloc); \
++ DYNSYM (cloog_isl_state_malloc); \
++ DYNSYM (cloog_options_free); \
++ DYNSYM (cloog_options_malloc); \
++ DYNSYM (cloog_scattering_from_isl_map); \
++ DYNSYM (cloog_state_free); \
++ DYNSYM (cloog_union_domain_add_domain); \
++ DYNSYM (cloog_union_domain_alloc); \
++ DYNSYM (cloog_union_domain_set_name); \
++ DYNSYM (isl_aff_add_coefficient_si); \
++ DYNSYM (isl_aff_add_constant); \
++ DYNSYM (isl_aff_free); \
++ DYNSYM (isl_aff_get_coefficient); \
++ DYNSYM (isl_aff_get_space); \
++ DYNSYM (isl_aff_mod); \
++ DYNSYM (isl_aff_set_coefficient_si); \
++ DYNSYM (isl_aff_set_constant_si); \
++ DYNSYM (isl_aff_zero_on_domain); \
++ DYNSYM (isl_band_free); \
++ DYNSYM (isl_band_get_children); \
++ DYNSYM (isl_band_get_partial_schedule); \
++ DYNSYM (isl_band_has_children); \
++ DYNSYM (isl_band_list_free); \
++ DYNSYM (isl_band_list_get_band); \
++ DYNSYM (isl_band_list_get_ctx); \
++ DYNSYM (isl_band_list_n_band); \
++ DYNSYM (isl_band_member_is_zero_distance); \
++ DYNSYM (isl_band_n_member); \
++ DYNSYM (isl_basic_map_add_constraint); \
++ DYNSYM (isl_basic_map_project_out); \
++ DYNSYM (isl_basic_map_universe); \
++ DYNSYM (isl_constraint_set_coefficient); \
++ DYNSYM (isl_constraint_set_coefficient_si); \
++ DYNSYM (isl_constraint_set_constant); \
++ DYNSYM (isl_constraint_set_constant_si); \
++ DYNSYM (isl_ctx_alloc); \
++ DYNSYM (isl_ctx_free); \
++ DYNSYM (isl_equality_alloc); \
++ DYNSYM (isl_id_alloc); \
++ DYNSYM (isl_id_copy); \
++ DYNSYM (isl_id_free); \
++ DYNSYM (isl_inequality_alloc); \
++ DYNSYM (isl_local_space_copy); \
++ DYNSYM (isl_local_space_free); \
++ DYNSYM (isl_local_space_from_space); \
++ DYNSYM (isl_local_space_range); \
++ DYNSYM (isl_map_add_constraint); \
++ DYNSYM (isl_map_add_dims); \
++ DYNSYM (isl_map_align_params); \
++ DYNSYM (isl_map_apply_range); \
++ DYNSYM (isl_map_copy); \
++ DYNSYM (isl_map_dim); \
++ DYNSYM (isl_map_dump); \
++ DYNSYM (isl_map_equate); \
++ DYNSYM (isl_map_fix_si); \
++ DYNSYM (isl_map_flat_product); \
++ DYNSYM (isl_map_flat_range_product); \
++ DYNSYM (isl_map_free); \
++ DYNSYM (isl_map_from_basic_map); \
++ DYNSYM (isl_map_from_pw_aff); \
++ DYNSYM (isl_map_from_union_map); \
++ DYNSYM (isl_map_get_ctx); \
++ DYNSYM (isl_map_get_space); \
++ DYNSYM (isl_map_get_tuple_id); \
++ DYNSYM (isl_map_insert_dims); \
++ DYNSYM (isl_map_intersect); \
++ DYNSYM (isl_map_intersect_domain); \
++ DYNSYM (isl_map_intersect_range); \
++ DYNSYM (isl_map_is_empty); \
++ DYNSYM (isl_map_lex_ge); \
++ DYNSYM (isl_map_lex_le); \
++ DYNSYM (isl_map_n_out); \
++ DYNSYM (isl_map_range); \
++ DYNSYM (isl_map_set_tuple_id); \
++ DYNSYM (isl_map_universe); \
++ DYNSYM (isl_options_set_on_error); \
++ DYNSYM (isl_options_set_schedule_fuse); \
++ DYNSYM (isl_options_set_schedule_max_constant_term); \
++ DYNSYM (isl_options_set_schedule_maximize_band_depth); \
++ DYNSYM (isl_printer_free); \
++ DYNSYM (isl_printer_print_aff); \
++ DYNSYM (isl_printer_print_constraint); \
++ DYNSYM (isl_printer_print_map); \
++ DYNSYM (isl_printer_print_set); \
++ DYNSYM (isl_printer_to_file); \
++ DYNSYM (isl_pw_aff_add); \
++ DYNSYM (isl_pw_aff_alloc); \
++ DYNSYM (isl_pw_aff_copy); \
++ DYNSYM (isl_pw_aff_eq_set); \
++ DYNSYM (isl_pw_aff_free); \
++ DYNSYM (isl_pw_aff_from_aff); \
++ DYNSYM (isl_pw_aff_ge_set); \
++ DYNSYM (isl_pw_aff_gt_set); \
++ DYNSYM (isl_pw_aff_is_cst); \
++ DYNSYM (isl_pw_aff_le_set); \
++ DYNSYM (isl_pw_aff_lt_set); \
++ DYNSYM (isl_pw_aff_mod); \
++ DYNSYM (isl_pw_aff_mul); \
++ DYNSYM (isl_pw_aff_ne_set); \
++ DYNSYM (isl_pw_aff_nonneg_set); \
++ DYNSYM (isl_pw_aff_set_tuple_id); \
++ DYNSYM (isl_pw_aff_sub); \
++ DYNSYM (isl_pw_aff_zero_set); \
++ DYNSYM (isl_schedule_free); \
++ DYNSYM (isl_schedule_get_band_forest); \
++ DYNSYM (isl_set_add_constraint); \
++ DYNSYM (isl_set_add_dims); \
++ DYNSYM (isl_set_apply); \
++ DYNSYM (isl_set_coalesce); \
++ DYNSYM (isl_set_copy); \
++ DYNSYM (isl_set_dim); \
++ DYNSYM (isl_set_fix_si); \
++ DYNSYM (isl_set_free); \
++ DYNSYM (isl_set_from_cloog_domain); \
++ DYNSYM (isl_set_get_space); \
++ DYNSYM (isl_set_get_tuple_id); \
++ DYNSYM (isl_set_intersect); \
++ DYNSYM (isl_set_is_empty); \
++ DYNSYM (isl_set_max); \
++ DYNSYM (isl_set_min); \
++ DYNSYM (isl_set_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 (stmt_ass); \
++ DYNSYM (stmt_block); \
++ DYNSYM (stmt_for); \
++ DYNSYM (stmt_guard); \
++ DYNSYM (stmt_root); \
++ DYNSYM (stmt_user);
++extern struct cloog_pointers_s__
++{
++ bool inited;
++ void *h;
++#define DYNSYM(x) __typeof (x) *p_##x
++ DYNSYMS
++#undef DYNSYM
++} cloog_pointers__;
++
++#define cloog_block_alloc (*cloog_pointers__.p_cloog_block_alloc)
++#define clast_pprint (*cloog_pointers__.p_clast_pprint)
++#define cloog_clast_create_from_input (*cloog_pointers__.p_cloog_clast_create_from_input)
++#define cloog_clast_free (*cloog_pointers__.p_cloog_clast_free)
++#define cloog_domain_from_isl_set (*cloog_pointers__.p_cloog_domain_from_isl_set)
++#define cloog_input_alloc (*cloog_pointers__.p_cloog_input_alloc)
++#define cloog_isl_state_malloc (*cloog_pointers__.p_cloog_isl_state_malloc)
++#define cloog_options_free (*cloog_pointers__.p_cloog_options_free)
++#define cloog_options_malloc (*cloog_pointers__.p_cloog_options_malloc)
++#define cloog_scattering_from_isl_map (*cloog_pointers__.p_cloog_scattering_from_isl_map)
++#define cloog_state_free (*cloog_pointers__.p_cloog_state_free)
++#define cloog_union_domain_add_domain (*cloog_pointers__.p_cloog_union_domain_add_domain)
++#define cloog_union_domain_alloc (*cloog_pointers__.p_cloog_union_domain_alloc)
++#define cloog_union_domain_set_name (*cloog_pointers__.p_cloog_union_domain_set_name)
++#define isl_aff_add_coefficient_si (*cloog_pointers__.p_isl_aff_add_coefficient_si)
++#define isl_aff_add_constant (*cloog_pointers__.p_isl_aff_add_constant)
++#define isl_aff_free (*cloog_pointers__.p_isl_aff_free)
++#define isl_aff_get_coefficient (*cloog_pointers__.p_isl_aff_get_coefficient)
++#define isl_aff_get_space (*cloog_pointers__.p_isl_aff_get_space)
++#define isl_aff_mod (*cloog_pointers__.p_isl_aff_mod)
++#define isl_aff_set_coefficient_si (*cloog_pointers__.p_isl_aff_set_coefficient_si)
++#define isl_aff_set_constant_si (*cloog_pointers__.p_isl_aff_set_constant_si)
++#define isl_aff_zero_on_domain (*cloog_pointers__.p_isl_aff_zero_on_domain)
++#define isl_band_free (*cloog_pointers__.p_isl_band_free)
++#define isl_band_get_children (*cloog_pointers__.p_isl_band_get_children)
++#define isl_band_get_partial_schedule (*cloog_pointers__.p_isl_band_get_partial_schedule)
++#define isl_band_has_children (*cloog_pointers__.p_isl_band_has_children)
++#define isl_band_list_free (*cloog_pointers__.p_isl_band_list_free)
++#define isl_band_list_get_band (*cloog_pointers__.p_isl_band_list_get_band)
++#define isl_band_list_get_ctx (*cloog_pointers__.p_isl_band_list_get_ctx)
++#define isl_band_list_n_band (*cloog_pointers__.p_isl_band_list_n_band)
++#define isl_band_member_is_zero_distance (*cloog_pointers__.p_isl_band_member_is_zero_distance)
++#define isl_band_n_member (*cloog_pointers__.p_isl_band_n_member)
++#define isl_basic_map_add_constraint (*cloog_pointers__.p_isl_basic_map_add_constraint)
++#define isl_basic_map_project_out (*cloog_pointers__.p_isl_basic_map_project_out)
++#define isl_basic_map_universe (*cloog_pointers__.p_isl_basic_map_universe)
++#define isl_constraint_set_coefficient (*cloog_pointers__.p_isl_constraint_set_coefficient)
++#define isl_constraint_set_coefficient_si (*cloog_pointers__.p_isl_constraint_set_coefficient_si)
++#define isl_constraint_set_constant (*cloog_pointers__.p_isl_constraint_set_constant)
++#define isl_constraint_set_constant_si (*cloog_pointers__.p_isl_constraint_set_constant_si)
++#define isl_ctx_alloc (*cloog_pointers__.p_isl_ctx_alloc)
++#define isl_ctx_free (*cloog_pointers__.p_isl_ctx_free)
++#define isl_equality_alloc (*cloog_pointers__.p_isl_equality_alloc)
++#define isl_id_alloc (*cloog_pointers__.p_isl_id_alloc)
++#define isl_id_copy (*cloog_pointers__.p_isl_id_copy)
++#define isl_id_free (*cloog_pointers__.p_isl_id_free)
++#define isl_inequality_alloc (*cloog_pointers__.p_isl_inequality_alloc)
++#define isl_local_space_copy (*cloog_pointers__.p_isl_local_space_copy)
++#define isl_local_space_free (*cloog_pointers__.p_isl_local_space_free)
++#define isl_local_space_from_space (*cloog_pointers__.p_isl_local_space_from_space)
++#define isl_local_space_range (*cloog_pointers__.p_isl_local_space_range)
++#define isl_map_add_constraint (*cloog_pointers__.p_isl_map_add_constraint)
++#define isl_map_add_dims (*cloog_pointers__.p_isl_map_add_dims)
++#define isl_map_align_params (*cloog_pointers__.p_isl_map_align_params)
++#define isl_map_apply_range (*cloog_pointers__.p_isl_map_apply_range)
++#define isl_map_copy (*cloog_pointers__.p_isl_map_copy)
++#define isl_map_dim (*cloog_pointers__.p_isl_map_dim)
++#define isl_map_dump (*cloog_pointers__.p_isl_map_dump)
++#define isl_map_equate (*cloog_pointers__.p_isl_map_equate)
++#define isl_map_fix_si (*cloog_pointers__.p_isl_map_fix_si)
++#define isl_map_flat_product (*cloog_pointers__.p_isl_map_flat_product)
++#define isl_map_flat_range_product (*cloog_pointers__.p_isl_map_flat_range_product)
++#define isl_map_free (*cloog_pointers__.p_isl_map_free)
++#define isl_map_from_basic_map (*cloog_pointers__.p_isl_map_from_basic_map)
++#define isl_map_from_pw_aff (*cloog_pointers__.p_isl_map_from_pw_aff)
++#define isl_map_from_union_map (*cloog_pointers__.p_isl_map_from_union_map)
++#define isl_map_get_ctx (*cloog_pointers__.p_isl_map_get_ctx)
++#define isl_map_get_space (*cloog_pointers__.p_isl_map_get_space)
++#define isl_map_get_tuple_id (*cloog_pointers__.p_isl_map_get_tuple_id)
++#define isl_map_insert_dims (*cloog_pointers__.p_isl_map_insert_dims)
++#define isl_map_intersect (*cloog_pointers__.p_isl_map_intersect)
++#define isl_map_intersect_domain (*cloog_pointers__.p_isl_map_intersect_domain)
++#define isl_map_intersect_range (*cloog_pointers__.p_isl_map_intersect_range)
++#define isl_map_is_empty (*cloog_pointers__.p_isl_map_is_empty)
++#define isl_map_lex_ge (*cloog_pointers__.p_isl_map_lex_ge)
++#define isl_map_lex_le (*cloog_pointers__.p_isl_map_lex_le)
++#define isl_map_n_out (*cloog_pointers__.p_isl_map_n_out)
++#define isl_map_range (*cloog_pointers__.p_isl_map_range)
++#define isl_map_set_tuple_id (*cloog_pointers__.p_isl_map_set_tuple_id)
++#define isl_map_universe (*cloog_pointers__.p_isl_map_universe)
++#define isl_options_set_on_error (*cloog_pointers__.p_isl_options_set_on_error)
++#define isl_options_set_schedule_fuse (*cloog_pointers__.p_isl_options_set_schedule_fuse)
++#define isl_options_set_schedule_max_constant_term (*cloog_pointers__.p_isl_options_set_schedule_max_constant_term)
++#define isl_options_set_schedule_maximize_band_depth (*cloog_pointers__.p_isl_options_set_schedule_maximize_band_depth)
++#define isl_printer_free (*cloog_pointers__.p_isl_printer_free)
++#define isl_printer_print_aff (*cloog_pointers__.p_isl_printer_print_aff)
++#define isl_printer_print_constraint (*cloog_pointers__.p_isl_printer_print_constraint)
++#define isl_printer_print_map (*cloog_pointers__.p_isl_printer_print_map)
++#define isl_printer_print_set (*cloog_pointers__.p_isl_printer_print_set)
++#define isl_printer_to_file (*cloog_pointers__.p_isl_printer_to_file)
++#define isl_pw_aff_add (*cloog_pointers__.p_isl_pw_aff_add)
++#define isl_pw_aff_alloc (*cloog_pointers__.p_isl_pw_aff_alloc)
++#define isl_pw_aff_copy (*cloog_pointers__.p_isl_pw_aff_copy)
++#define isl_pw_aff_eq_set (*cloog_pointers__.p_isl_pw_aff_eq_set)
++#define isl_pw_aff_free (*cloog_pointers__.p_isl_pw_aff_free)
++#define isl_pw_aff_from_aff (*cloog_pointers__.p_isl_pw_aff_from_aff)
++#define isl_pw_aff_ge_set (*cloog_pointers__.p_isl_pw_aff_ge_set)
++#define isl_pw_aff_gt_set (*cloog_pointers__.p_isl_pw_aff_gt_set)
++#define isl_pw_aff_is_cst (*cloog_pointers__.p_isl_pw_aff_is_cst)
++#define isl_pw_aff_le_set (*cloog_pointers__.p_isl_pw_aff_le_set)
++#define isl_pw_aff_lt_set (*cloog_pointers__.p_isl_pw_aff_lt_set)
++#define isl_pw_aff_mod (*cloog_pointers__.p_isl_pw_aff_mod)
++#define isl_pw_aff_mul (*cloog_pointers__.p_isl_pw_aff_mul)
++#define isl_pw_aff_ne_set (*cloog_pointers__.p_isl_pw_aff_ne_set)
++#define isl_pw_aff_nonneg_set (*cloog_pointers__.p_isl_pw_aff_nonneg_set)
++#define isl_pw_aff_set_tuple_id (*cloog_pointers__.p_isl_pw_aff_set_tuple_id)
++#define isl_pw_aff_sub (*cloog_pointers__.p_isl_pw_aff_sub)
++#define isl_pw_aff_zero_set (*cloog_pointers__.p_isl_pw_aff_zero_set)
++#define isl_schedule_free (*cloog_pointers__.p_isl_schedule_free)
++#define isl_schedule_get_band_forest (*cloog_pointers__.p_isl_schedule_get_band_forest)
++#define isl_set_add_constraint (*cloog_pointers__.p_isl_set_add_constraint)
++#define isl_set_add_dims (*cloog_pointers__.p_isl_set_add_dims)
++#define isl_set_apply (*cloog_pointers__.p_isl_set_apply)
++#define isl_set_coalesce (*cloog_pointers__.p_isl_set_coalesce)
++#define isl_set_copy (*cloog_pointers__.p_isl_set_copy)
++#define isl_set_dim (*cloog_pointers__.p_isl_set_dim)
++#define isl_set_fix_si (*cloog_pointers__.p_isl_set_fix_si)
++#define isl_set_free (*cloog_pointers__.p_isl_set_free)
++#define isl_set_from_cloog_domain (*cloog_pointers__.p_isl_set_from_cloog_domain)
++#define isl_set_get_space (*cloog_pointers__.p_isl_set_get_space)
++#define isl_set_get_tuple_id (*cloog_pointers__.p_isl_set_get_tuple_id)
++#define isl_set_intersect (*cloog_pointers__.p_isl_set_intersect)
++#define isl_set_is_empty (*cloog_pointers__.p_isl_set_is_empty)
++#define isl_set_max (*cloog_pointers__.p_isl_set_max)
++#define isl_set_min (*cloog_pointers__.p_isl_set_min)
++#define isl_set_n_dim (*cloog_pointers__.p_isl_set_n_dim)
++#define isl_set_nat_universe (*cloog_pointers__.p_isl_set_nat_universe)
++#define isl_set_project_out (*cloog_pointers__.p_isl_set_project_out)
++#define isl_set_set_tuple_id (*cloog_pointers__.p_isl_set_set_tuple_id)
++#define isl_set_universe (*cloog_pointers__.p_isl_set_universe)
++#define isl_space_add_dims (*cloog_pointers__.p_isl_space_add_dims)
++#define isl_space_alloc (*cloog_pointers__.p_isl_space_alloc)
++#define isl_space_copy (*cloog_pointers__.p_isl_space_copy)
++#define isl_space_dim (*cloog_pointers__.p_isl_space_dim)
++#define isl_space_domain (*cloog_pointers__.p_isl_space_domain)
++#define isl_space_find_dim_by_id (*cloog_pointers__.p_isl_space_find_dim_by_id)
++#define isl_space_free (*cloog_pointers__.p_isl_space_free)
++#define isl_space_from_domain (*cloog_pointers__.p_isl_space_from_domain)
++#define isl_space_get_tuple_id (*cloog_pointers__.p_isl_space_get_tuple_id)
++#define isl_space_params_alloc (*cloog_pointers__.p_isl_space_params_alloc)
++#define isl_space_range (*cloog_pointers__.p_isl_space_range)
++#define isl_space_set_alloc (*cloog_pointers__.p_isl_space_set_alloc)
++#define isl_space_set_dim_id (*cloog_pointers__.p_isl_space_set_dim_id)
++#define isl_space_set_tuple_id (*cloog_pointers__.p_isl_space_set_tuple_id)
++#define isl_union_map_add_map (*cloog_pointers__.p_isl_union_map_add_map)
++#define isl_union_map_align_params (*cloog_pointers__.p_isl_union_map_align_params)
++#define isl_union_map_apply_domain (*cloog_pointers__.p_isl_union_map_apply_domain)
++#define isl_union_map_apply_range (*cloog_pointers__.p_isl_union_map_apply_range)
++#define isl_union_map_compute_flow (*cloog_pointers__.p_isl_union_map_compute_flow)
++#define isl_union_map_copy (*cloog_pointers__.p_isl_union_map_copy)
++#define isl_union_map_empty (*cloog_pointers__.p_isl_union_map_empty)
++#define isl_union_map_flat_range_product (*cloog_pointers__.p_isl_union_map_flat_range_product)
++#define isl_union_map_foreach_map (*cloog_pointers__.p_isl_union_map_foreach_map)
++#define isl_union_map_free (*cloog_pointers__.p_isl_union_map_free)
++#define isl_union_map_from_map (*cloog_pointers__.p_isl_union_map_from_map)
++#define isl_union_map_get_ctx (*cloog_pointers__.p_isl_union_map_get_ctx)
++#define isl_union_map_get_space (*cloog_pointers__.p_isl_union_map_get_space)
++#define isl_union_map_gist_domain (*cloog_pointers__.p_isl_union_map_gist_domain)
++#define isl_union_map_gist_range (*cloog_pointers__.p_isl_union_map_gist_range)
++#define isl_union_map_intersect_domain (*cloog_pointers__.p_isl_union_map_intersect_domain)
++#define isl_union_map_is_empty (*cloog_pointers__.p_isl_union_map_is_empty)
++#define isl_union_map_subtract (*cloog_pointers__.p_isl_union_map_subtract)
++#define isl_union_map_union (*cloog_pointers__.p_isl_union_map_union)
++#define isl_union_set_add_set (*cloog_pointers__.p_isl_union_set_add_set)
++#define isl_union_set_compute_schedule (*cloog_pointers__.p_isl_union_set_compute_schedule)
++#define isl_union_set_copy (*cloog_pointers__.p_isl_union_set_copy)
++#define isl_union_set_empty (*cloog_pointers__.p_isl_union_set_empty)
++#define isl_union_set_from_set (*cloog_pointers__.p_isl_union_set_from_set)
++#define stmt_ass (*cloog_pointers__.p_stmt_ass)
++#define stmt_block (*cloog_pointers__.p_stmt_block)
++#define stmt_for (*cloog_pointers__.p_stmt_for)
++#define stmt_guard (*cloog_pointers__.p_stmt_guard)
++#define stmt_root (*cloog_pointers__.p_stmt_root)
++#define stmt_user (*cloog_pointers__.p_stmt_user)
++
+ typedef struct poly_dr *poly_dr_p;
+
+ typedef struct poly_bb *poly_bb_p;
+--- gcc/graphite.c.jj 2012-12-13 11:31:00.000000000 +0100
++++ gcc/graphite.c 2012-12-14 13:40:44.155136961 +0100
+@@ -78,6 +78,34 @@ along with GCC; see the file COPYING3.
+
+ CloogState *cloog_state;
+
++__typeof (cloog_pointers__) cloog_pointers__;
++
++static bool
++init_cloog_pointers (void)
++{
++ void *h;
++
++ if (cloog_pointers__.inited)
++ return cloog_pointers__.h != NULL;
++ h = dlopen ("libcloog-isl.so.4", RTLD_LAZY);
++ cloog_pointers__.h = h;
++ if (h == NULL)
++ return false;
++#define DYNSYM(x) \
++ do \
++ { \
++ union { __typeof (cloog_pointers__.p_##x) p; void *q; } u; \
++ u.q = dlsym (h, #x); \
++ if (u.q == NULL) \
++ return false; \
++ cloog_pointers__.p_##x = u.p; \
++ } \
++ while (0)
++ DYNSYMS
++#undef DYNSYM
++ return true;
++}
++
+ /* Print global statistics to FILE. */
+
+ static void
+@@ -277,6 +305,15 @@ graphite_transform_loops (void)
+ if (parallelized_function_p (cfun->decl))
+ return;
+
++ if (number_of_loops (cfun) <= 1)
++ return;
++
++ if (!init_cloog_pointers ())
++ {
++ sorry ("Graphite loop optimizations cannot be used");
++ return;
++ }
++
+ ctx = isl_ctx_alloc ();
+ isl_options_set_on_error (ctx, ISL_ON_ERROR_ABORT);
+ if (!graphite_initialize (ctx))
+--- gcc/graphite-clast-to-gimple.c.jj 2012-12-13 11:31:27.000000000 +0100
++++ gcc/graphite-clast-to-gimple.c 2012-12-14 13:27:47.196519858 +0100
+@@ -910,7 +910,7 @@ compute_bounds_for_loop (struct clast_fo
+ from STMT_FOR. */
+
+ static tree
+-type_for_clast_for (struct clast_for *stmt_for, ivs_params_p ip)
++type_for_clast_for (struct clast_for *stmt_fora, ivs_params_p ip)
+ {
+ mpz_t bound_one, bound_two;
+ tree lb_type, ub_type;
+@@ -918,8 +918,8 @@ type_for_clast_for (struct clast_for *st
+ mpz_init (bound_one);
+ mpz_init (bound_two);
+
+- lb_type = type_for_clast_expr (stmt_for->LB, ip, bound_one, bound_two);
+- ub_type = type_for_clast_expr (stmt_for->UB, ip, bound_one, bound_two);
++ lb_type = type_for_clast_expr (stmt_fora->LB, ip, bound_one, bound_two);
++ ub_type = type_for_clast_expr (stmt_fora->UB, ip, bound_one, bound_two);
+
+ mpz_clear (bound_one);
+ mpz_clear (bound_two);
diff --git a/gcc49-cloog-dl2.patch b/gcc49-cloog-dl2.patch
new file mode 100644
index 0000000..2f647a3
--- /dev/null
+++ b/gcc49-cloog-dl2.patch
@@ -0,0 +1,74 @@
+2011-04-04 Jakub Jelinek <jakub@redhat.com>
+
+ * toplev.c (toplev_main_argv): New variable.
+ (toplev_main): Initialize it.
+ * graphite.c (init_cloog_pointers): Load libcloog-isl.so.4 from gcc's private
+ directory.
+
+--- gcc/toplev.c.jj 2008-12-09 23:59:10.000000000 +0100
++++ gcc/toplev.c 2009-01-27 14:33:52.000000000 +0100
+@@ -107,6 +107,8 @@ static bool no_backend;
+ /* Length of line when printing switch values. */
+ #define MAX_LINE 75
+
++const char **toplev_main_argv;
++
+ /* Decoded options, and number of such options. */
+ struct cl_decoded_option *save_decoded_options;
+ unsigned int save_decoded_options_count;
+@@ -1909,6 +1911,8 @@ toplev_main (int argc, char **argv)
+
+ expandargv (&argc, &argv);
+
++ toplev_main_argv = CONST_CAST2 (const char **, char **, argv);
++
+ /* Initialization of GCC's environment, and diagnostics. */
+ general_init (argv[0]);
+
+--- gcc/graphite.c.jj 2010-12-01 10:24:32.000000000 -0500
++++ gcc/graphite.c 2010-12-01 11:46:07.832118193 -0500
+@@ -72,11 +72,39 @@ __typeof (cloog_pointers__) cloog_pointe
+ static bool
+ init_cloog_pointers (void)
+ {
+- void *h;
+-
+- if (cloog_pointers__.inited)
+- return cloog_pointers__.h != NULL;
+- h = dlopen ("libcloog-isl.so.4", RTLD_LAZY);
++ void *h = NULL;
++ extern const char **toplev_main_argv;
++ char *buf, *p;
++ size_t len;
++
++ if (cloog_pointers__.inited)
++ return cloog_pointers__.h != NULL;
++ len = progname - toplev_main_argv[0];
++ buf = XALLOCAVAR (char, len + sizeof "libcloog-isl.so.4");
++ memcpy (buf, toplev_main_argv[0], len);
++ strcpy (buf + len, "libcloog-isl.so.4");
++ len += sizeof "libcloog-isl.so.4";
++ p = strstr (buf, "/libexec/");
++ if (p != NULL)
++ {
++ while (1)
++ {
++ char *q = strstr (p + 8, "/libexec/");
++ if (q == NULL)
++ break;
++ p = q;
++ }
++ memmove (p + 4, p + 8, len - (p + 8 - buf));
++ h = dlopen (buf, RTLD_LAZY);
++ if (h == NULL)
++ {
++ len = progname - toplev_main_argv[0];
++ memcpy (buf, toplev_main_argv[0], len);
++ strcpy (buf + len, "libcloog-isl.so.4");
++ }
++ }
++ if (h == NULL)
++ h = dlopen (buf, RTLD_LAZY);
+ cloog_pointers__.h = h;
+ if (h == NULL)
+ return false;
diff --git a/gcc49-color-auto.patch b/gcc49-color-auto.patch
new file mode 100644
index 0000000..a8cf938
--- /dev/null
+++ b/gcc49-color-auto.patch
@@ -0,0 +1,46 @@
+2013-09-20 Jakub Jelinek <jakub@redhat.com>
+
+ * common.opt (-fdiagnostics-color=): Default to auto.
+ * toplev.c (process_options): Always default to
+ -fdiagnostics-color=auto if no -f{,no-}diagnostics-color*.
+ * doc/invoke.texi (-fdiagnostics-color*): Adjust documentation
+ of the default.
+
+--- gcc/common.opt.jj 2013-09-18 12:06:53.000000000 +0200
++++ gcc/common.opt 2013-09-20 10:00:00.935823900 +0200
+@@ -1037,7 +1037,7 @@ Common Alias(fdiagnostics-color=,always,
+ ;
+
+ fdiagnostics-color=
+-Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_NO)
++Common Joined RejectNegative Var(flag_diagnostics_show_color) Enum(diagnostic_color_rule) Init(DIAGNOSTICS_COLOR_AUTO)
+ -fdiagnostics-color=[never|always|auto] Colorize diagnostics
+
+ ; Required for these enum values.
+--- gcc/toplev.c.jj 2013-09-09 11:32:39.000000000 +0200
++++ gcc/toplev.c 2013-09-20 10:10:08.198721005 +0200
+@@ -1229,10 +1229,8 @@ process_options (void)
+
+ maximum_field_alignment = initial_max_fld_align * BITS_PER_UNIT;
+
+- /* Default to -fdiagnostics-color=auto if GCC_COLORS is in the environment,
+- otherwise default to -fdiagnostics-color=never. */
+- if (!global_options_set.x_flag_diagnostics_show_color
+- && getenv ("GCC_COLORS"))
++ /* Default to -fdiagnostics-color=auto. */
++ if (!global_options_set.x_flag_diagnostics_show_color)
+ pp_show_color (global_dc->printer)
+ = colorize_init (DIAGNOSTICS_COLOR_AUTO);
+
+--- gcc/doc/invoke.texi.jj 2013-09-18 12:06:50.000000000 +0200
++++ gcc/doc/invoke.texi 2013-09-20 10:09:29.079904455 +0200
+@@ -3046,8 +3046,7 @@ a message which is too long to fit on a
+ @cindex highlight, color, colour
+ @vindex GCC_COLORS @r{environment variable}
+ Use color in diagnostics. @var{WHEN} is @samp{never}, @samp{always},
+-or @samp{auto}. The default is @samp{never} if @env{GCC_COLORS} environment
+-variable isn't present in the environment, and @samp{auto} otherwise.
++or @samp{auto}. The default is @samp{auto}.
+ @samp{auto} means to use color only when the standard error is a terminal.
+ The forms @option{-fdiagnostics-color} and @option{-fno-diagnostics-color} are
+ aliases for @option{-fdiagnostics-color=always} and
diff --git a/gcc49-hack.patch b/gcc49-hack.patch
new file mode 100644
index 0000000..1903e95
--- /dev/null
+++ b/gcc49-hack.patch
@@ -0,0 +1,102 @@
+--- libada/Makefile.in.jj 2009-01-14 12:07:35.000000000 +0100
++++ libada/Makefile.in 2009-01-15 14:25:33.000000000 +0100
+@@ -66,18 +66,40 @@ libsubdir := $(libdir)/gcc/$(target_nonc
+ ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR))
+ ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR))
+
++DEFAULTMULTIFLAGS :=
++ifeq ($(MULTISUBDIR),)
++targ:=$(subst -, ,$(target))
++arch:=$(word 1,$(targ))
++ifeq ($(words $(targ)),2)
++osys:=$(word 2,$(targ))
++else
++osys:=$(word 3,$(targ))
++endif
++ifeq ($(strip $(filter-out i%86 x86_64 powerpc% ppc% s390% sparc% linux%, $(arch) $(osys))),)
++ifeq ($(shell $(CC) $(CFLAGS) -print-multi-os-directory),../lib64)
++DEFAULTMULTIFLAGS := -m64
++else
++ifeq ($(strip $(filter-out s390%, $(arch))),)
++DEFAULTMULTIFLAGS := -m31
++else
++DEFAULTMULTIFLAGS := -m32
++endif
++endif
++endif
++endif
++
+ # exeext should not be used because it's the *host* exeext. We're building
+ # a *target* library, aren't we?!? Likewise for CC. Still, provide bogus
+ # definitions just in case something slips through the safety net provided
+ # by recursive make invocations in gcc/ada/Makefile.in
+ LIBADA_FLAGS_TO_PASS = \
+ "MAKEOVERRIDES=" \
+- "LDFLAGS=$(LDFLAGS)" \
++ "LDFLAGS=$(LDFLAGS) $(DEFAULTMULTIFLAGS)" \
+ "LN_S=$(LN_S)" \
+ "SHELL=$(SHELL)" \
+- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
+- "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
+- "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \
++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
++ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
++ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS)" \
+ "PICFLAG_FOR_TARGET=$(PICFLAG)" \
+ "THREAD_KIND=$(THREAD_KIND)" \
+ "TRACE=$(TRACE)" \
+@@ -88,7 +110,7 @@ LIBADA_FLAGS_TO_PASS = \
+ "exeext=.exeext.should.not.be.used " \
+ 'CC=the.host.compiler.should.not.be.needed' \
+ "GCC_FOR_TARGET=$(CC)" \
+- "CFLAGS=$(CFLAGS)"
++ "CFLAGS=$(CFLAGS) $(DEFAULTMULTIFLAGS)"
+
+ # Rules to build gnatlib.
+ .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool
+--- gcc/ada/sem_util.adb (revision 161677)
++++ gcc/ada/sem_util.adb (working copy)
+@@ -5487,7 +5487,7 @@ package body Sem_Util is
+ Exp : Node_Id;
+ Assn : Node_Id;
+ Choice : Node_Id;
+- Comp_Type : Entity_Id;
++ Comp_Type : Entity_Id := Empty;
+ Is_Array_Aggr : Boolean;
+
+ begin
+--- config-ml.in.jj 2010-06-30 09:50:44.000000000 +0200
++++ config-ml.in 2010-07-02 21:24:17.994211151 +0200
+@@ -516,6 +516,8 @@ multi-do:
+ ADAFLAGS="$(ADAFLAGS) $${flags}" \
+ prefix="$(prefix)" \
+ exec_prefix="$(exec_prefix)" \
++ mandir="$(mandir)" \
++ infodir="$(infodir)" \
+ GCJFLAGS="$(GCJFLAGS) $${flags}" \
+ GOCFLAGS="$(GOCFLAGS) $${flags}" \
+ CXXFLAGS="$(CXXFLAGS) $${flags}" \
+--- libjava/Makefile.am.jj 2010-07-09 11:17:33.729604090 +0200
++++ libjava/Makefile.am 2010-07-09 13:16:41.894375641 +0200
+@@ -710,7 +710,8 @@ if USE_LIBGCJ_BC
+ ## later.
+ @echo Installing dummy lib libgcj_bc.so.1.0.0; \
+ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
+- mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
++ $(INSTALL) $(INSTALL_STRIP_FLAG) $(here)/.libs/libgcj_bc.so $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
++ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0; \
+ $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
+ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
+ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
+--- libjava/Makefile.in.jj 2010-07-09 11:17:34.000000000 +0200
++++ libjava/Makefile.in 2010-07-09 13:18:07.542572270 +0200
+@@ -12665,7 +12665,8 @@ install-exec-hook: install-binPROGRAMS i
+ install-libexecsubPROGRAMS
+ @USE_LIBGCJ_BC_TRUE@ @echo Installing dummy lib libgcj_bc.so.1.0.0; \
+ @USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
+-@USE_LIBGCJ_BC_TRUE@ mv $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
++@USE_LIBGCJ_BC_TRUE@ $(INSTALL) $(INSTALL_STRIP_FLAG) $(here)/.libs/libgcj_bc.so $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so; \
++@USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0; \
+ @USE_LIBGCJ_BC_TRUE@ $(libgcj_bc_dummy_LINK) -xc /dev/null -Wl,-soname,libgcj_bc.so.1 \
+ @USE_LIBGCJ_BC_TRUE@ -o $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1.0.0 -lgcj || exit; \
+ @USE_LIBGCJ_BC_TRUE@ rm $(DESTDIR)$(toolexeclibdir)/libgcj_bc.so.1; \
diff --git a/gcc49-i386-libgomp.patch b/gcc49-i386-libgomp.patch
new file mode 100644
index 0000000..45883a6
--- /dev/null
+++ b/gcc49-i386-libgomp.patch
@@ -0,0 +1,20 @@
+--- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100
++++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100
+@@ -67,7 +67,7 @@ if test $enable_linux_futex = yes; then
+ ;;
+ *)
+ if test -z "$with_arch"; then
+- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
++ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
+ fi
+ esac
+ ;;
+@@ -79,7 +79,7 @@ if test $enable_linux_futex = yes; then
+ config_path="linux/x86 linux posix"
+ case " ${CC} ${CFLAGS} " in
+ *" -m32 "*)
+- XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686"
++ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
+ ;;
+ esac
+ ;;
diff --git a/gcc49-java-nomulti.patch b/gcc49-java-nomulti.patch
new file mode 100644
index 0000000..17334aa
--- /dev/null
+++ b/gcc49-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/gcc49-libgo-p224.patch b/gcc49-libgo-p224.patch
new file mode 100644
index 0000000..89e06e1
--- /dev/null
+++ b/gcc49-libgo-p224.patch
@@ -0,0 +1,1093 @@
+--- 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
+@@ -305,9 +305,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 }
+@@ -320,7 +317,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}
+@@ -328,8 +324,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):
+@@ -342,8 +336,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():
+@@ -1373,7 +1365,7 @@ func CreateCertificate(rand io.Reader, t
+ hashFunc = crypto.SHA1
+ case *ecdsa.PrivateKey:
+ switch priv.Curve {
+- case elliptic.P224(), elliptic.P256():
++ case elliptic.P256():
+ hashFunc = crypto.SHA256
+ signatureAlgorithm.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/gcc49-libgomp-omp_h-multilib.patch b/gcc49-libgomp-omp_h-multilib.patch
new file mode 100644
index 0000000..d0e98d1
--- /dev/null
+++ b/gcc49-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/gcc49-libstdc++-docs.patch b/gcc49-libstdc++-docs.patch
new file mode 100644
index 0000000..dd328a2
--- /dev/null
+++ b/gcc49-libstdc++-docs.patch
@@ -0,0 +1,26 @@
+--- libstdc++-v3/doc/html/index.html.jj 2011-01-03 12:53:21.282829010 +0100
++++ libstdc++-v3/doc/html/index.html 2011-01-04 18:06:28.999851145 +0100
+@@ -5,6 +5,8 @@
+ <a class="link" href="http://www.fsf.org/" target="_top">FSF
+ </a>
+ </p><p>
++ Release 4.9.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 4.9.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/gcc49-libtool-no-rpath.patch b/gcc49-libtool-no-rpath.patch
new file mode 100644
index 0000000..466c661
--- /dev/null
+++ b/gcc49-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/gcc49-no-add-needed.patch b/gcc49-no-add-needed.patch
new file mode 100644
index 0000000..b6ca777
--- /dev/null
+++ b/gcc49-no-add-needed.patch
@@ -0,0 +1,50 @@
+2010-02-08 Roland McGrath <roland@redhat.com>
+
+ * config/rs6000/sysv4.h (LINK_EH_SPEC): Pass --no-add-needed to the
+ linker.
+ * config/gnu-user.h (LINK_EH_SPEC): Likewise.
+ * config/alpha/elf.h (LINK_EH_SPEC): Likewise.
+ * config/ia64/linux.h (LINK_EH_SPEC): Likewise.
+
+--- gcc/config/alpha/elf.h.jj 2011-01-03 12:52:31.118056764 +0100
++++ gcc/config/alpha/elf.h 2011-01-04 18:14:10.931874160 +0100
+@@ -165,5 +165,5 @@ extern int alpha_this_gpdisp_sequence_nu
+ I imagine that other systems will catch up. In the meantime, it
+ doesn't harm to make sure that the data exists to be used later. */
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+--- gcc/config/ia64/linux.h.jj 2011-01-03 13:02:11.462994522 +0100
++++ gcc/config/ia64/linux.h 2011-01-04 18:14:10.931874160 +0100
+@@ -77,7 +77,7 @@ do { \
+ Signalize that because we have fde-glibc, we don't need all C shared libs
+ linked against -lgcc_s. */
+ #undef LINK_EH_SPEC
+-#define LINK_EH_SPEC ""
++#define LINK_EH_SPEC "--no-add-needed "
+
+ /* Put all *tf routines in libgcc. */
+ #undef LIBGCC2_HAS_TF_MODE
+--- gcc/config/gnu-user.h.jj 2011-01-03 12:53:03.739057299 +0100
++++ gcc/config/gnu-user.h 2011-01-04 18:14:10.932814884 +0100
+@@ -82,7 +82,7 @@ see the files COPYING3 and COPYING.RUNTI
+ #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+
+ #undef LINK_GCC_C_SEQUENCE_SPEC
+--- gcc/config/rs6000/sysv4.h.jj 2011-01-03 13:02:18.255994215 +0100
++++ gcc/config/rs6000/sysv4.h 2011-01-04 18:14:10.933888871 +0100
+@@ -820,7 +820,7 @@ extern int fixuplabelno;
+ -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++# define LINK_EH_SPEC "--no-add-needed %{!static:--eh-frame-hdr} "
+ #endif
+
+ #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
diff --git a/gcc49-ppc32-retaddr.patch b/gcc49-ppc32-retaddr.patch
new file mode 100644
index 0000000..7e8eeb5
--- /dev/null
+++ b/gcc49-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/gcc49-pr38757.patch b/gcc49-pr38757.patch
new file mode 100644
index 0000000..4206584
--- /dev/null
+++ b/gcc49-pr38757.patch
@@ -0,0 +1,106 @@
+2009-03-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/38757
+ * langhooks.h (struct lang_hooks): Add source_language langhook.
+ * langhooks-def.h (LANG_HOOKS_SOURCE_LANGUAGE): Define to NULL.
+ (LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_SOURCE_LANGUAGE.
+ * dwarf2out.c (add_prototyped_attribute): Add DW_AT_prototype
+ also for DW_LANG_{C,C99,ObjC}.
+ (gen_compile_unit_die): Use lang_hooks.source_language () to
+ determine if DW_LANG_C99 or DW_LANG_C89 should be returned.
+c/
+ * c-lang.c (c_source_language): New function.
+ (LANG_HOOKS_SOURCE_LANGUAGE): Define.
+
+--- gcc/langhooks.h.jj 2011-01-03 12:53:05.125745450 +0100
++++ gcc/langhooks.h 2011-01-04 17:59:43.166744926 +0100
+@@ -467,6 +467,10 @@ struct lang_hooks
+ gimplification. */
+ bool deep_unsharing;
+
++ /* Return year of the source language standard version if the FE supports
++ multiple versions of the standard. */
++ int (*source_language) (void);
++
+ /* Whenever you add entries here, make sure you adjust langhooks-def.h
+ and langhooks.c accordingly. */
+ };
+--- gcc/langhooks-def.h.jj 2011-01-03 12:53:05.000000000 +0100
++++ gcc/langhooks-def.h 2011-01-04 18:00:44.858851030 +0100
+@@ -118,6 +118,7 @@ extern void lhd_omp_firstprivatize_type_
+ #define LANG_HOOKS_BLOCK_MAY_FALLTHRU hook_bool_const_tree_true
+ #define LANG_HOOKS_EH_USE_CXA_END_CLEANUP false
+ #define LANG_HOOKS_DEEP_UNSHARING false
++#define LANG_HOOKS_SOURCE_LANGUAGE NULL
+
+ /* Attribute hooks. */
+ #define LANG_HOOKS_ATTRIBUTE_TABLE NULL
+@@ -303,7 +304,8 @@ extern void lhd_end_section (void);
+ LANG_HOOKS_EH_PROTECT_CLEANUP_ACTIONS, \
+ LANG_HOOKS_BLOCK_MAY_FALLTHRU, \
+ LANG_HOOKS_EH_USE_CXA_END_CLEANUP, \
+- LANG_HOOKS_DEEP_UNSHARING \
++ LANG_HOOKS_DEEP_UNSHARING, \
++ LANG_HOOKS_SOURCE_LANGUAGE \
+ }
+
+ #endif /* GCC_LANG_HOOKS_DEF_H */
+--- gcc/c/c-lang.c.jj 2011-01-03 12:53:05.376056936 +0100
++++ gcc/c/c-lang.c 2011-01-04 17:59:43.167743798 +0100
+@@ -36,6 +36,12 @@ along with GCC; see the file COPYING3.
+
+ enum c_language_kind c_language = clk_c;
+
++static int
++c_source_language (void)
++{
++ return flag_isoc99 ? 1999 : 1989;
++}
++
+ /* Lang hooks common to C and ObjC are declared in c-objc-common.h;
+ consequently, there should be very few hooks below. */
+
+@@ -45,6 +51,8 @@ enum c_language_kind c_language = clk_c;
+ #define LANG_HOOKS_INIT c_objc_common_init
+ #undef LANG_HOOKS_INIT_TS
+ #define LANG_HOOKS_INIT_TS c_common_init_ts
++#undef LANG_HOOKS_SOURCE_LANGUAGE
++#define LANG_HOOKS_SOURCE_LANGUAGE c_source_language
+
+ /* Each front end provides its own lang hook initializer. */
+ struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
+--- gcc/dwarf2out.c.jj 2011-01-03 12:53:05.102056475 +0100
++++ gcc/dwarf2out.c 2011-01-04 18:03:14.534151763 +0100
+@@ -16109,9 +16109,18 @@ add_bit_size_attribute (dw_die_ref die,
+ static inline void
+ add_prototyped_attribute (dw_die_ref die, tree func_type)
+ {
+- if (get_AT_unsigned (comp_unit_die (), DW_AT_language) == DW_LANG_C89
+- && prototype_p (func_type))
+- add_AT_flag (die, DW_AT_prototyped, 1);
++ switch (get_AT_unsigned (comp_unit_die (), DW_AT_language))
++ {
++ case DW_LANG_C:
++ case DW_LANG_C89:
++ case DW_LANG_C99:
++ case DW_LANG_ObjC:
++ if (prototype_p (func_type))
++ add_AT_flag (die, DW_AT_prototyped, 1);
++ break;
++ default:
++ break;
++ }
+ }
+
+ /* Add an 'abstract_origin' attribute below a given DIE. The DIE is found
+@@ -18915,6 +18924,10 @@ gen_compile_unit_die (const char *filena
+ if (strcmp (language_string, "GNU Go") == 0)
+ language = DW_LANG_Go;
+ }
++ else if (strcmp (language_string, "GNU C") == 0
++ && lang_hooks.source_language
++ && lang_hooks.source_language () >= 1999)
++ language = DW_LANG_C99;
+ }
+ /* Use a degraded Fortran setting in strict DWARF2 so is_fortran works. */
+ else if (strcmp (language_string, "GNU Fortran") == 0)
diff --git a/gcc49-pr56493.patch b/gcc49-pr56493.patch
new file mode 100644
index 0000000..87603db
--- /dev/null
+++ b/gcc49-pr56493.patch
@@ -0,0 +1,76 @@
+2013-06-17 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/56493
+ * convert.c (convert_to_real, convert_to_expr, convert_to_complex):
+ Handle COMPOUND_EXPR.
+
+ * c-c++-common/pr56493.c: New test.
+
+--- gcc/convert.c.jj 2013-05-13 09:44:53.000000000 +0200
++++ gcc/convert.c 2013-06-16 12:16:13.754108523 +0200
+@@ -95,6 +95,15 @@ convert_to_real (tree type, tree expr)
+ enum built_in_function fcode = builtin_mathfn_code (expr);
+ tree itype = TREE_TYPE (expr);
+
++ if (TREE_CODE (expr) == COMPOUND_EXPR)
++ {
++ tree t = convert_to_real (type, TREE_OPERAND (expr, 1));
++ if (t == TREE_OPERAND (expr, 1))
++ return expr;
++ return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR, TREE_TYPE (t),
++ TREE_OPERAND (expr, 0), t);
++ }
++
+ /* Disable until we figure out how to decide whether the functions are
+ present in runtime. */
+ /* Convert (float)sqrt((double)x) where x is float into sqrtf(x) */
+@@ -366,6 +375,15 @@ convert_to_integer (tree type, tree expr
+ return error_mark_node;
+ }
+
++ if (ex_form == COMPOUND_EXPR)
++ {
++ tree t = convert_to_integer (type, TREE_OPERAND (expr, 1));
++ if (t == TREE_OPERAND (expr, 1))
++ return expr;
++ return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR, TREE_TYPE (t),
++ TREE_OPERAND (expr, 0), t);
++ }
++
+ /* Convert e.g. (long)round(d) -> lround(d). */
+ /* If we're converting to char, we may encounter differing behavior
+ between converting from double->char vs double->long->char.
+@@ -854,6 +872,14 @@ convert_to_complex (tree type, tree expr
+
+ if (TYPE_MAIN_VARIANT (elt_type) == TYPE_MAIN_VARIANT (subtype))
+ return expr;
++ else if (TREE_CODE (expr) == COMPOUND_EXPR)
++ {
++ tree t = convert_to_complex (type, TREE_OPERAND (expr, 1));
++ if (t == TREE_OPERAND (expr, 1))
++ return expr;
++ return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR,
++ TREE_TYPE (t), TREE_OPERAND (expr, 0), t);
++ }
+ else if (TREE_CODE (expr) == COMPLEX_EXPR)
+ return fold_build2 (COMPLEX_EXPR, type,
+ convert (subtype, TREE_OPERAND (expr, 0)),
+--- gcc/testsuite/c-c++-common/pr56493.c.jj 2013-06-17 10:24:36.891659600 +0200
++++ gcc/testsuite/c-c++-common/pr56493.c 2013-06-17 10:24:33.164720149 +0200
+@@ -0,0 +1,16 @@
++/* PR c++/56493 */
++/* { dg-do compile } */
++/* { dg-options "-O2 -fdump-tree-gimple" } */
++
++unsigned long long bar (void);
++int x;
++
++void
++foo (void)
++{
++ x += bar ();
++}
++
++/* Verify we narrow the addition from unsigned long long to unsigned int type. */
++/* { dg-final { scan-tree-dump " (\[a-zA-Z._0-9]*) = \\(unsigned int\\) \[^;\n\r]*;.* (\[a-zA-Z._0-9]*) = \\(unsigned int\\) \[^;\n\r]*;.* = \\1 \\+ \\2;" "gimple" { target { ilp32 || lp64 } } } } */
++/* { dg-final { cleanup-tree-dump "gimple" } } */
diff --git a/gcc49-rh330771.patch b/gcc49-rh330771.patch
new file mode 100644
index 0000000..102730f
--- /dev/null
+++ b/gcc49-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/gcc49-sparc-config-detection.patch b/gcc49-sparc-config-detection.patch
new file mode 100644
index 0000000..cd683a0
--- /dev/null
+++ b/gcc49-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-elf 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/isl-0.11.1-aarch64-config.patch b/isl-0.11.1-aarch64-config.patch
deleted file mode 100644
index 461dac0..0000000
--- a/isl-0.11.1-aarch64-config.patch
+++ /dev/null
@@ -1,392 +0,0 @@
---- isl-0.11.1/config.guess
-+++ isl-0.11.1/config.guess
-@@ -2,9 +2,9 @@
- # Attempt to guess a canonical system name.
- # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
--# 2011 Free Software Foundation, Inc.
-+# 2011, 2012 Free Software Foundation, Inc.
-
--timestamp='2011-05-11'
-+timestamp='2012-06-10'
-
- # This file is free software; you can redistribute it and/or modify it
- # under the terms of the GNU General Public License as published by
-@@ -17,9 +17,7 @@ timestamp='2011-05-11'
- # General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
--# 02110-1301, USA.
-+# along with this program; if not, see <http://www.gnu.org/licenses/>.
- #
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
-@@ -57,8 +55,8 @@ GNU config.guess ($timestamp)
-
- Originally written by Per Bothner.
- Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
--2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
--Software Foundation, Inc.
-+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-+Free Software Foundation, Inc.
-
- This is free software; see the source for copying conditions. There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-@@ -145,7 +143,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
- case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
- *:NetBSD:*:*)
- # NetBSD (nbsd) targets should (where applicable) match one or
-- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
-+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
- # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
- # switched to ELF, *-*-netbsd* would select the old
- # object file format. This provides both forward
-@@ -792,13 +790,12 @@ EOF
- echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
- exit ;;
- *:FreeBSD:*:*)
-- case ${UNAME_MACHINE} in
-- pc98)
-- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-+ UNAME_PROCESSOR=`/usr/bin/uname -p`
-+ case ${UNAME_PROCESSOR} in
- amd64)
- echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- *)
-- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
- esac
- exit ;;
- i*:CYGWIN*:*)
-@@ -807,6 +804,9 @@ EOF
- *:MINGW*:*)
- echo ${UNAME_MACHINE}-pc-mingw32
- exit ;;
-+ i*:MSYS*:*)
-+ echo ${UNAME_MACHINE}-pc-msys
-+ exit ;;
- i*:windows32*:*)
- # uname -m includes "-pc" on this system.
- echo ${UNAME_MACHINE}-mingw32
-@@ -861,6 +861,13 @@ EOF
- i*86:Minix:*:*)
- echo ${UNAME_MACHINE}-pc-minix
- exit ;;
-+ aarch64:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit ;;
-+ aarch64_be:Linux:*:*)
-+ UNAME_MACHINE=aarch64_be
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit ;;
- alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
- EV5) UNAME_MACHINE=alphaev5 ;;
-@@ -895,13 +902,16 @@ EOF
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- cris:Linux:*:*)
-- echo cris-axis-linux-gnu
-+ echo ${UNAME_MACHINE}-axis-linux-gnu
- exit ;;
- crisv32:Linux:*:*)
-- echo crisv32-axis-linux-gnu
-+ echo ${UNAME_MACHINE}-axis-linux-gnu
- exit ;;
- frv:Linux:*:*)
-- echo frv-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
-+ exit ;;
-+ hexagon:Linux:*:*)
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- i*86:Linux:*:*)
- LIBC=gnu
-@@ -943,7 +953,7 @@ EOF
- test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
- ;;
- or32:Linux:*:*)
-- echo or32-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- padre:Linux:*:*)
- echo sparc-unknown-linux-gnu
-@@ -978,13 +988,13 @@ EOF
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- tile*:Linux:*:*)
-- echo ${UNAME_MACHINE}-tilera-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- vax:Linux:*:*)
- echo ${UNAME_MACHINE}-dec-linux-gnu
- exit ;;
- x86_64:Linux:*:*)
-- echo x86_64-unknown-linux-gnu
-+ echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit ;;
- xtensa*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
-@@ -1246,7 +1256,7 @@ EOF
- NEO-?:NONSTOP_KERNEL:*:*)
- echo neo-tandem-nsk${UNAME_RELEASE}
- exit ;;
-- NSE-?:NONSTOP_KERNEL:*:*)
-+ NSE-*:NONSTOP_KERNEL:*:*)
- echo nse-tandem-nsk${UNAME_RELEASE}
- exit ;;
- NSR-?:NONSTOP_KERNEL:*:*)
-@@ -1315,6 +1325,9 @@ EOF
- i*86:AROS:*:*)
- echo ${UNAME_MACHINE}-pc-aros
- exit ;;
-+ x86_64:VMkernel:*:*)
-+ echo ${UNAME_MACHINE}-unknown-esx
-+ exit ;;
- esac
-
- #echo '(No uname command or uname output not recognized.)' 1>&2
---- isl-0.11.1/config.sub
-+++ isl-0.11.1/config.sub
-@@ -2,9 +2,9 @@
- # Configuration validation subroutine script.
- # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
--# 2011 Free Software Foundation, Inc.
-+# 2011, 2012 Free Software Foundation, Inc.
-
--timestamp='2011-03-23'
-+timestamp='2012-04-18'
-
- # This file is (in principle) common to ALL GNU software.
- # The presence of a machine in this file suggests that SOME GNU software
-@@ -21,9 +21,7 @@ timestamp='2011-03-23'
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
--# along with this program; if not, write to the Free Software
--# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
--# 02110-1301, USA.
-+# along with this program; if not, see <http://www.gnu.org/licenses/>.
- #
- # As a special exception to the GNU General Public License, if you
- # distribute this file as part of a program that contains a
-@@ -76,8 +74,8 @@ version="\
- GNU config.sub ($timestamp)
-
- Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
--2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
--Software Foundation, Inc.
-+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-+Free Software Foundation, Inc.
-
- This is free software; see the source for copying conditions. There is NO
- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
-@@ -132,6 +130,10 @@ case $maybe_os in
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
-+ android-linux)
-+ os=-linux-android
-+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
-+ ;;
- *)
- basic_machine=`echo $1 | sed 's/-[^-]*$//'`
- if [ $basic_machine != $1 ]
-@@ -223,6 +225,12 @@ case $os in
- -isc*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
- ;;
-+ -lynx*178)
-+ os=-lynxos178
-+ ;;
-+ -lynx*5)
-+ os=-lynxos5
-+ ;;
- -lynx*)
- os=-lynxos
- ;;
-@@ -247,17 +255,22 @@ case $basic_machine in
- # Some are omitted here because they have special meanings below.
- 1750a | 580 \
- | a29k \
-+ | aarch64 | aarch64_be \
- | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
- | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
- | am33_2.0 \
- | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-+ | be32 | be64 \
- | bfin \
- | c4x | clipper \
- | d10v | d30v | dlx | dsp16xx \
-+ | epiphany \
- | fido | fr30 | frv \
- | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
-+ | hexagon \
- | i370 | i860 | i960 | ia64 \
- | ip2k | iq2000 \
-+ | le32 | le64 \
- | lm32 \
- | m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore | mep | metag \
-@@ -291,7 +304,7 @@ case $basic_machine in
- | pdp10 | pdp11 | pj | pjl \
- | powerpc | powerpc64 | powerpc64le | powerpcle \
- | pyramid \
-- | rx \
-+ | rl78 | rx \
- | score \
- | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
- | sh64 | sh64le \
-@@ -300,7 +313,7 @@ case $basic_machine in
- | spu \
- | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
- | ubicom32 \
-- | v850 | v850e \
-+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
- | we32k \
- | x86 | xc16x | xstormy16 | xtensa \
- | z8k | z80)
-@@ -315,8 +328,7 @@ case $basic_machine in
- c6x)
- basic_machine=tic6x-unknown
- ;;
-- m6811 | m68hc11 | m6812 | m68hc12 | picochip)
-- # Motorola 68HC11/12.
-+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
-@@ -329,7 +341,10 @@ case $basic_machine in
- strongarm | thumb | xscale)
- basic_machine=arm-unknown
- ;;
--
-+ xgate)
-+ basic_machine=$basic_machine-unknown
-+ os=-none
-+ ;;
- xscaleeb)
- basic_machine=armeb-unknown
- ;;
-@@ -352,11 +367,13 @@ case $basic_machine in
- # Recognize the basic CPU types with company name.
- 580-* \
- | a29k-* \
-+ | aarch64-* | aarch64_be-* \
- | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
- | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
- | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
- | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
- | avr-* | avr32-* \
-+ | be32-* | be64-* \
- | bfin-* | bs2000-* \
- | c[123]* | c30-* | [cjt]90-* | c4x-* \
- | clipper-* | craynv-* | cydra-* \
-@@ -365,8 +382,10 @@ case $basic_machine in
- | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
- | h8300-* | h8500-* \
- | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
-+ | hexagon-* \
- | i*86-* | i860-* | i960-* | ia64-* \
- | ip2k-* | iq2000-* \
-+ | le32-* | le64-* \
- | lm32-* \
- | m32c-* | m32r-* | m32rle-* \
- | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-@@ -400,7 +419,7 @@ case $basic_machine in
- | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
- | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
- | pyramid-* \
-- | romp-* | rs6000-* | rx-* \
-+ | rl78-* | romp-* | rs6000-* | rx-* \
- | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
- | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
- | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
-@@ -408,10 +427,11 @@ case $basic_machine in
- | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \
- | tahoe-* \
- | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
-- | tile-* | tilegx-* \
-+ | tile*-* \
- | tron-* \
- | ubicom32-* \
-- | v850-* | v850e-* | vax-* \
-+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
-+ | vax-* \
- | we32k-* \
- | x86-* | x86_64-* | xc16x-* | xps100-* \
- | xstormy16-* | xtensa*-* \
-@@ -711,7 +731,6 @@ case $basic_machine in
- i370-ibm* | ibm*)
- basic_machine=i370-ibm
- ;;
--# I'm not sure what "Sysv32" means. Should this be sysv3.2?
- i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
-@@ -808,10 +827,18 @@ case $basic_machine in
- ms1-*)
- basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
- ;;
-+ msys)
-+ basic_machine=i386-pc
-+ os=-msys
-+ ;;
- mvs)
- basic_machine=i370-ibm
- os=-mvs
- ;;
-+ nacl)
-+ basic_machine=le32-unknown
-+ os=-nacl
-+ ;;
- ncr3000)
- basic_machine=i486-ncr
- os=-sysv4
-@@ -1120,13 +1147,8 @@ case $basic_machine in
- basic_machine=t90-cray
- os=-unicos
- ;;
-- # This must be matched before tile*.
-- tilegx*)
-- basic_machine=tilegx-unknown
-- os=-linux-gnu
-- ;;
- tile*)
-- basic_machine=tile-unknown
-+ basic_machine=$basic_machine-unknown
- os=-linux-gnu
- ;;
- tx39)
-@@ -1336,7 +1358,7 @@ case $os in
- | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
- | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
- | -chorusos* | -chorusrdb* | -cegcc* \
-- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
-+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -linux-android* \
- | -linux-newlib* | -linux-uclibc* \
- | -uxpv* | -beos* | -mpeix* | -udk* \
-@@ -1521,6 +1543,9 @@ case $basic_machine in
- c4x-* | tic4x-*)
- os=-coff
- ;;
-+ hexagon-*)
-+ os=-elf
-+ ;;
- tic54x-*)
- os=-coff
- ;;
-@@ -1548,9 +1573,6 @@ case $basic_machine in
- ;;
- m68000-sun)
- os=-sunos3
-- # This also exists in the configure program, but was not the
-- # default.
-- # os=-sunos4
- ;;
- m68*-cisco)
- os=-aout
diff --git a/sources b/sources
index 6a9ecff..e171e68 100644
--- a/sources
+++ b/sources
@@ -1,4 +1,4 @@
-be78a47bd82523250eb3e91646db5b3d cloog-0.18.0.tar.gz
+e34fca0540d840e5d0f6427e98c92252 cloog-0.18.1.tar.gz
2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz
-9f699b42394bd2754d9f77427553d923 gcc-4.8.2-20140120.tar.bz2
-bce1586384d8635a76d2f017fb067cd2 isl-0.11.1.tar.bz2
+0234f026f694bc5837a5abb890f045a6 gcc-4.9.0-20140409.tar.bz2
+e039bfcfb6c2ab039b8ee69bf883e824 isl-0.12.2.tar.bz2
^ permalink raw reply related [flat|nested] 2+ messages in thread* [rpms/gcc] rhel-f41-base: 4.9.0-0.9
@ 2026-06-29 12:26 Jakub Jelinek
0 siblings, 0 replies; 2+ messages 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 : 7d55b59b7e15ab8773ef4111e5820af0678c9db1
Author : Jakub Jelinek <jakub@redhat.com>
Date : 2014-04-09T09:14:23+02:00
Stats : +1/-0 in 1 file(s)
URL : https://src.fedoraproject.org/rpms/gcc/c/7d55b59b7e15ab8773ef4111e5820af0678c9db1?branch=rhel-f41-base
Log:
4.9.0-0.9
---
diff --git a/gcc.spec b/gcc.spec
index 610c9ff..4c273c1 100644
--- a/gcc.spec
+++ b/gcc.spec
@@ -1061,6 +1061,7 @@ CC="$CC" CFLAGS="$OPT_FLAGS" \
../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
--with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap \
--enable-shared --enable-threads=posix --enable-checking=release \
+ --enable-multilib \
--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
--enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu \
--enable-languages=c,c++,objc,obj-c++,java,fortran${enablelada}${enablelgo},lto \
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-29 12:26 UTC | newest]
Thread overview: 2+ messages (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: 4.9.0-0.9 Jakub Jelinek
-- strict thread matches above, loose matches on Subject: below --
2026-06-29 12:26 Jakub Jelinek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox