public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/gcc] rhel-f41-base: 4.4.0-0.3
@ 2026-06-29 12:23 Jakub Jelinek
0 siblings, 0 replies; only message in thread
From: Jakub Jelinek @ 2026-06-29 12:23 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/gcc
Branch : rhel-f41-base
Commit : 7c074710931251a56f6fb71bebcee17f114e781d
Author : Jakub Jelinek <jakub@fedoraproject.org>
Date : 2009-01-16T18:34:38+00:00
Stats : +3094/-7247 in 53 file(s)
URL : https://src.fedoraproject.org/rpms/gcc/c/7c074710931251a56f6fb71bebcee17f114e781d?branch=rhel-f41-base
Log:
4.4.0-0.3
---
diff --git a/.cvsignore b/.cvsignore
index e17de7b..16f2639 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1,2 +1,2 @@
-gcc-4.3.2-20081105.tar.bz2
-fastjar-0.95.tar.gz
+fastjar-0.97.tar.gz
+gcc-4.4.0-20090115.tar.bz2
diff --git a/fastjar-0.97-segfault.patch b/fastjar-0.97-segfault.patch
new file mode 100644
index 0000000..ab62624
--- /dev/null
+++ b/fastjar-0.97-segfault.patch
@@ -0,0 +1,29 @@
+2009-01-14 Jakub Jelinek <jakub@redhat.com>
+
+ * jartool.c (make_manifest): Initialize current_time before
+ calling unix2dostime on it.
+
+--- fastjar-0.97/jartool.c.jj 2008-10-15 18:35:37.000000000 +0200
++++ fastjar-0.97/jartool.c 2009-01-14 15:40:50.000000000 +0100
+@@ -820,6 +820,10 @@ int make_manifest(int jfd, const char *m
+ int mod_time; /* file modification time */
+ struct zipentry *ze;
+
++ current_time = time(NULL);
++ if(current_time == (time_t)-1)
++ exit_on_error("time");
++
+ mod_time = unix2dostime(¤t_time);
+
+ /* If we are creating a new manifest, create a META-INF directory entry */
+@@ -828,10 +832,6 @@ int make_manifest(int jfd, const char *m
+
+ memset((file_header + 12), '\0', 16); /*clear mod time, crc, size fields*/
+
+- current_time = time(NULL);
+- if(current_time == (time_t)-1)
+- exit_on_error("time");
+-
+ PACK_UB2(file_header, LOC_EXTRA, 0);
+ PACK_UB2(file_header, LOC_COMP, 0);
+ PACK_UB2(file_header, LOC_FNLEN, nlen);
diff --git a/gcc.spec b/gcc.spec
new file mode 100644
index 0000000..fd69467
--- /dev/null
+++ b/gcc.spec
@@ -0,0 +1,1713 @@
+%define DATE 20090115
+%define SVNREV 141601
+%define gcc_version 4.4.0
+# Note, gcc_release must be integer, if you want to add suffixes to
+# %{release}, append them after %{gcc_release} on Release: line.
+%define gcc_release 0.3
+%define _unpackaged_files_terminate_build 0
+%define multilib_64_archs sparc64 ppc64 s390x x86_64
+%define include_gappletviewer 1
+%ifarch %{ix86} x86_64 ia64 ppc alpha
+%define build_ada 1
+%else
+%define build_ada 0
+%endif
+%define build_java 1
+# If you don't have already a usable gcc-java and libgcj for your arch,
+# do on some arch which has it rpmbuild -bc --with java_tar gcc41.spec
+# which creates libjava-classes-%{version}-%{release}.tar.bz2
+# With this then on the new arch do rpmbuild -ba -v --with java_bootstrap gcc41.spec
+%define bootstrap_java %{?_with_java_bootstrap:%{build_java}}%{!?_with_java_bootstrap:0}
+%define build_java_tar %{?_with_java_tar:%{build_java}}%{!?_with_java_tar:0}
+%ifarch s390x
+%define multilib_32_arch s390
+%endif
+%ifarch sparc64
+%define multilib_32_arch sparcv9
+%endif
+%ifarch ppc64
+%define multilib_32_arch ppc
+%endif
+%ifarch x86_64
+%define multilib_32_arch i386
+%endif
+Summary: Various compilers (C, C++, Objective-C, Java, ...)
+Name: gcc
+Version: %{gcc_version}
+Release: %{gcc_release}
+# libgcc, libgfortran, libmudflap and crtstuff have an exception which allows
+# linking it into any kind of programs or shared libraries without
+# restrictions.
+License: GPLv3+ and GPLv2+ with exceptions
+Group: Development/Languages
+# The source for this package was pulled from upstream's vcs. Use the
+# following commands to generate the tarball:
+# svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_3-branch@%{SVNREV} gcc-%{version}-%{DATE}
+# tar cf - gcc-%{version}-%{DATE} | bzip2 -9 > gcc-%{version}-%{DATE}.tar.bz2
+Source0: gcc-%{version}-%{DATE}.tar.bz2
+Source1: libgcc_post_upgrade.c
+Source2: README.libgcjwebplugin.so
+Source3: protoize.1
+%define fastjar_ver 0.97
+Source4: http://download.savannah.nongnu.org/releases/fastjar/fastjar-%{fastjar_ver}.tar.gz
+URL: http://gcc.gnu.org
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+# Need binutils with -pie support >= 2.14.90.0.4-4
+# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4
+# Need binutils which handle -msecure-plt on ppc >= 2.16.91.0.2-2
+# Need binutils which support .weakref >= 2.16.91.0.3-1
+# Need binutils which support --hash-style=gnu >= 2.17.50.0.2-7
+# Need binutils which support mffgpr and mftgpr >= 2.17.50.0.2-8
+# Need binutils which support --build-id >= 2.17.50.0.17-3
+BuildRequires: binutils >= 2.17.50.0.17-3
+BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, texinfo, sharutils
+%if %{build_java}
+BuildRequires: /usr/share/java/eclipse-ecj.jar, zip, unzip
+%if %{bootstrap_java}
+Source10: libjava-classes-%{version}-%{release}.tar.bz2
+%else
+BuildRequires: gcc-java, libgcj
+%endif
+%endif
+# Make sure pthread.h doesn't contain __thread tokens
+# Make sure glibc supports stack protector
+# Make sure glibc supports DT_GNU_HASH
+BuildRequires: glibc-devel >= 2.4.90-13
+BuildRequires: elfutils-devel >= 0.72
+%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
+# Make sure glibc supports TFmode long double
+BuildRequires: glibc >= 2.3.90-35
+%endif
+%ifarch %{multilib_64_archs} sparcv9 ppc
+# Ensure glibc{,-devel} is installed for both multilib arches
+BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
+%endif
+%if %{build_ada}
+# Ada requires Ada to build
+BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1
+%endif
+%ifarch ia64
+BuildRequires: libunwind >= 0.98
+%endif
+Requires: cpp = %{version}-%{release}
+# Need .eh_frame ld optimizations
+# Need proper visibility support
+# Need -pie support
+# Need --as-needed/--no-as-needed support
+# On ppc64, need omit dot symbols support and --non-overlapping-opd
+# Need binutils that owns /usr/bin/c++filt
+# Need binutils that support .weakref
+# Need binutils that supports --hash-style=gnu
+# Need binutils that support mffgpr/mftgpr
+# Need binutils that support --build-id
+Requires: binutils >= 2.17.50.0.17-3
+# Make sure gdb will understand DW_FORM_strp
+Conflicts: gdb < 5.1-2
+Requires: glibc-devel >= 2.2.90-12
+%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
+# Make sure glibc supports TFmode long double
+Requires: glibc >= 2.3.90-35
+%endif
+Requires: libgcc >= %{version}-%{release}
+Requires: libgomp = %{version}-%{release}
+%if !%{build_ada}
+Obsoletes: gcc-gnat < %{version}-%{release}
+Obsoletes: libgnat < %{version}-%{release}
+%endif
+Prereq: /sbin/install-info
+AutoReq: true
+
+Patch0: gcc44-hack.patch
+Patch1: gcc44-build-id.patch
+Patch2: gcc44-c++-builtin-redecl.patch
+Patch3: gcc44-ia64-libunwind.patch
+Patch4: gcc44-java-nomulti.patch
+Patch5: gcc44-ppc32-retaddr.patch
+Patch7: gcc44-pr27898.patch
+Patch8: gcc44-pr32139.patch
+Patch9: gcc44-pr33763.patch
+Patch10: gcc44-rh330771.patch
+Patch11: gcc44-rh341221.patch
+Patch12: gcc44-java-debug-iface-type.patch
+Patch13: gcc44-i386-libgomp.patch
+Patch15: gcc44-sparc-config-detection.patch
+Patch16: gcc44-libgomp-omp_h-multilib.patch
+Patch20: gcc44-libtool-no-rpath.patch
+
+Patch1000: fastjar-0.97-segfault.patch
+
+# On ARM EABI systems, we do want -gnueabi to be part of the
+# target triple.
+%ifnarch %{arm}
+%define _gnu %{nil}
+%endif
+%ifarch sparcv9
+%define gcc_target_platform sparc64-%{_vendor}-%{_target_os}
+%endif
+%ifarch ppc
+%define gcc_target_platform ppc64-%{_vendor}-%{_target_os}
+%endif
+%ifnarch sparcv9 ppc
+%define gcc_target_platform %{_target_platform}
+%endif
+
+%description
+The gcc package contains the GNU Compiler Collection version 4.4.
+You'll need this package in order to compile C code.
+
+%package -n libgcc
+Summary: GCC version 4.4 shared support library
+Group: System Environment/Libraries
+Autoreq: false
+
+%description -n libgcc
+This package contains GCC shared support library which is needed
+e.g. for exception handling support.
+
+%package c++
+Summary: C++ support for GCC
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libstdc++ = %{version}-%{release}
+Requires: libstdc++-devel = %{version}-%{release}
+Autoreq: true
+
+%description c++
+This package adds C++ support to the GNU Compiler Collection.
+It includes support for most of the current C++ specification,
+including templates and exception handling.
+
+%package -n libstdc++
+Summary: GNU Standard C++ Library
+Group: System Environment/Libraries
+Autoreq: true
+
+%description -n libstdc++
+The libstdc++ package contains a rewritten standard compliant GCC Standard
+C++ Library.
+
+%package -n libstdc++-devel
+Summary: Header files and libraries for C++ development
+Group: Development/Libraries
+Requires: libstdc++ = %{version}-%{release}, %{_prefix}/%{_lib}/libstdc++.so.6
+Autoreq: true
+
+%description -n libstdc++-devel
+This is the GNU implementation of the standard C++ libraries. This
+package includes the header files and libraries needed for C++
+development. This includes rewritten implementation of STL.
+
+%package objc
+Summary: Objective-C support for GCC
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libobjc = %{version}-%{release}
+Autoreq: true
+
+%description objc
+gcc-objc provides Objective-C support for the GCC.
+Mainly used on systems running NeXTSTEP, Objective-C is an
+object-oriented derivative of the C language.
+
+%package objc++
+Summary: Objective-C++ support for GCC
+Group: Development/Languages
+Requires: gcc-c++ = %{version}-%{release}, gcc-objc = %{version}-%{release}
+Autoreq: true
+
+%description objc++
+gcc-objc++ package provides Objective-C++ support for the GCC.
+
+%package -n libobjc
+Summary: Objective-C runtime
+Group: System Environment/Libraries
+Autoreq: true
+
+%description -n libobjc
+This package contains Objective-C shared library which is needed to run
+Objective-C dynamically linked programs.
+
+%package gfortran
+Summary: Fortran support
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libgfortran = %{version}-%{release}
+BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1
+Prereq: /sbin/install-info
+Autoreq: true
+
+%description gfortran
+The gcc-gfortran package provides support for compiling Fortran
+programs with the GNU Compiler Collection.
+
+%package -n libgfortran
+Summary: Fortran runtime
+Group: System Environment/Libraries
+Autoreq: true
+
+%description -n libgfortran
+This package contains Fortran shared library which is needed to run
+Fortran dynamically linked programs.
+
+%package -n libgomp
+Summary: GCC OpenMP v3.0 shared support library
+Group: System Environment/Libraries
+Prereq: /sbin/install-info
+
+%description -n libgomp
+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 and static libraries 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 java
+Summary: Java support for GCC
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libgcj = %{version}-%{release}
+Requires: libgcj-devel = %{version}-%{release}
+Requires: /usr/share/java/eclipse-ecj.jar
+Prereq: /sbin/install-info
+Autoreq: true
+
+%description java
+This package adds support for compiling Java(tm) programs and
+bytecode into native code.
+
+%package -n libgcj
+Summary: Java runtime library for gcc
+Group: System Environment/Libraries
+Prereq: /sbin/install-info
+Requires: zip >= 2.1
+Requires: gtk2 >= 2.4.0
+Requires: glib2 >= 2.4.0
+Requires: libart_lgpl >= 2.1.0
+%if %{build_java}
+BuildRequires: gtk2-devel >= 2.4.0
+BuildRequires: glib2-devel >= 2.4.0
+BuildRequires: xulrunner-devel
+BuildRequires: libart_lgpl-devel >= 2.1.0
+BuildRequires: alsa-lib-devel
+BuildRequires: libXtst-devel
+BuildRequires: libXt-devel
+%endif
+Autoreq: true
+
+%description -n libgcj
+The Java(tm) runtime library. You will need this package to run your Java
+programs compiled using the Java compiler from GNU Compiler Collection (gcj).
+
+%package -n libgcj-devel
+Summary: Libraries for Java development using GCC
+Group: Development/Languages
+Requires: libgcj = %{version}-%{release}, %{_prefix}/%{_lib}/libgcj.so.10
+Requires: zlib-devel, %{_prefix}/%{_lib}/libz.so
+Requires: /bin/awk
+Autoreq: false
+Autoprov: false
+
+%description -n libgcj-devel
+The Java(tm) static libraries and C header files. You will need this
+package to compile your Java programs using the GCC Java compiler (gcj).
+
+%package -n libgcj-src
+Summary: Java library sources from GCC4 preview
+Group: System Environment/Libraries
+Requires: libgcj = %{version}-%{release}
+Autoreq: true
+
+%description -n libgcj-src
+The Java(tm) runtime library sources for use in Eclipse.
+
+%package -n cpp
+Summary: The C Preprocessor
+Group: Development/Languages
+Prereq: /sbin/install-info
+Autoreq: true
+
+%description -n cpp
+Cpp is the GNU C-Compatible Compiler Preprocessor.
+Cpp is a macro processor which is used automatically
+by the C compiler to transform your program before actual
+compilation. It is called a macro processor because it allows
+you to define macros, abbreviations for longer
+constructs.
+
+The C preprocessor provides four separate functionalities: the
+inclusion of header files (files of declarations that can be
+substituted into your program); macro expansion (you can define macros,
+and the C preprocessor will replace the macros with their definitions
+throughout the program); conditional compilation (using special
+preprocessing directives, you can include or exclude parts of the
+program according to various conditions); and line control (if you use
+a program to combine or rearrange source files into an intermediate
+file which is then compiled, you can use line control to inform the
+compiler about where each source line originated).
+
+You should install this package if you are a C programmer and you use
+macros.
+
+%package gnat
+Summary: Ada 95 support for GCC
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libgnat = %{version}-%{release}, libgnat-devel = %{version}-%{release}
+Prereq: /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.
+
+%package -n libgnat
+Summary: GNU Ada 95 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.
+
+%package -n libgnat-devel
+Summary: GNU Ada 95 libraries
+Group: System Environment/Libraries
+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.
+
+%prep
+%setup -q -n gcc-%{version}-%{DATE}
+%patch0 -p0 -b .hack~
+%patch1 -p0 -b .build-id~
+%patch2 -p0 -b .c++-builtin-redecl~
+%patch3 -p0 -b .ia64-libunwind~
+%patch4 -p0 -b .java-nomulti~
+%patch5 -p0 -b .ppc32-retaddr~
+%patch7 -p0 -b .pr27898~
+%patch8 -p0 -b .pr32139~
+%patch9 -p0 -b .pr33763~
+%patch10 -p0 -b .rh330771~
+%patch11 -p0 -b .rh341221~
+%patch12 -p0 -b .java-debug-iface-type~
+%patch13 -p0 -b .i386-libgomp~
+%patch15 -p0 -b .sparc-config-detection~
+%patch16 -p0 -b .libgomp-omp_h-multilib~
+%patch20 -p0 -b .libtool-no-rpath~
+
+# This testcase doesn't compile.
+rm libjava/testsuite/libjava.lang/PR35020*
+
+tar xzf %{SOURCE4}
+
+%patch1000 -p0 -b .fastjar-0.97-segfault~
+
+%if %{bootstrap_java}
+tar xjf %{SOURCE10}
+%endif
+
+sed -i -e 's/4\.4\.1/4.4.0/' gcc/BASE-VER
+echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
+
+cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
+
+# Hack to avoid building multilib libjava
+perl -pi -e 's/^all: all-redirect/ifeq (\$(MULTISUBDIR),)\nall: all-redirect\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^install: install-redirect/ifeq (\$(MULTISUBDIR),)\ninstall: install-redirect\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^check: check-redirect/ifeq (\$(MULTISUBDIR),)\ncheck: check-redirect\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^all: all-recursive/ifeq (\$(MULTISUBDIR),)\nall: all-recursive\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^install: install-recursive/ifeq (\$(MULTISUBDIR),)\ninstall: install-recursive\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: check-recursive\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in
+
+./contrib/gcc_update --touch
+
+LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi
+
+%ifarch ppc
+if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then
+ mkdir -p libstdc++-v3/config/abi/post/powerpc64-linux-gnu/64
+ mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{,64/}baseline_symbols.txt
+ mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{32/,}baseline_symbols.txt
+ rm -rf libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32
+fi
+%endif
+%ifarch sparc
+if [ -d libstdc++-v3/config/abi/post/sparc64-linux-gnu ]; then
+ mkdir -p libstdc++-v3/config/abi/post/sparc64-linux-gnu/64
+ mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{,64/}baseline_symbols.txt
+ mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{32/,}baseline_symbols.txt
+ rm -rf libstdc++-v3/config/abi/post/sparc64-linux-gnu/32
+fi
+%endif
+
+%build
+
+%if %{build_java}
+# gjar isn't usable, so even when GCC source tree no longer includes
+# fastjar, build it anyway.
+mkdir fastjar-%{fastjar_ver}/obj-%{gcc_target_platform}
+cd fastjar-%{fastjar_ver}/obj-%{gcc_target_platform}
+../configure CFLAGS="$RPM_OPT_FLAGS" --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir}
+make %{?_smp_mflags}
+export PATH=`pwd`${PATH:+:$PATH}
+cd ../../
+%endif
+
+rm -fr obj-%{gcc_target_platform}
+mkdir obj-%{gcc_target_platform}
+cd obj-%{gcc_target_platform}
+
+%if %{build_java}
+%if !%{bootstrap_java}
+# If we don't have gjavah in $PATH, try to build it with the old gij
+mkdir java_hacks
+cd java_hacks
+cp -a ../../libjava/classpath/tools/external external
+mkdir -p gnu/classpath/tools
+cp -a ../../libjava/classpath/tools/gnu/classpath/tools/{common,javah,getopt} gnu/classpath/tools/
+cp -a ../../libjava/classpath/tools/resource/gnu/classpath/tools/common/Messages.properties gnu/classpath/tools/common
+cp -a ../../libjava/classpath/tools/resource/gnu/classpath/tools/getopt/Messages.properties gnu/classpath/tools/getopt
+cd external/asm; for i in `find . -name \*.java`; do gcj --encoding ISO-8859-1 -C $i -I.; done; cd ../..
+for i in `find gnu -name \*.java`; do gcj -C $i -I. -Iexternal/asm/; done
+gcj -findirect-dispatch -O2 -fmain=gnu.classpath.tools.javah.Main -I. -Iexternal/asm/ `find . -name \*.class` -o gjavah.real
+cat > gjavah <<EOF
+#!/bin/sh
+export CLASSPATH=`pwd`${CLASSPATH:+:$CLASSPATH}
+exec `pwd`/gjavah.real "\$@"
+EOF
+chmod +x `pwd`/gjavah
+cat > ecj1 <<EOF
+#!/bin/sh
+exec gij -cp /usr/share/java/eclipse-ecj.jar org.eclipse.jdt.internal.compiler.batch.GCCMain "\$@"
+EOF
+chmod +x `pwd`/ecj1
+export PATH=`pwd`${PATH:+:$PATH}
+cd ..
+%endif
+%endif
+
+CC=gcc
+OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'`
+%ifarch sparc
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'`
+%endif
+%ifarch %{ix86}
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-march=i386//g'`
+%endif
+%ifarch sparc64
+cat > gcc64 <<"EOF"
+#!/bin/sh
+exec /usr/bin/gcc -m64 "$@"
+EOF
+chmod +x gcc64
+CC=`pwd`/gcc64
+%endif
+%ifarch ppc64
+if gcc -m64 -xc -S /dev/null -o - > /dev/null 2>&1; then
+ cat > gcc64 <<"EOF"
+#!/bin/sh
+exec /usr/bin/gcc -m64 "$@"
+EOF
+ chmod +x gcc64
+ CC=`pwd`/gcc64
+fi
+%endif
+OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'`
+case "$OPT_FLAGS" in
+ *-fasynchronous-unwind-tables*)
+ sed -i -e 's/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables/' \
+ ../gcc/Makefile.in
+ ;;
+esac
+CC="$CC" CFLAGS="$OPT_FLAGS" CXXFLAGS="`echo $OPT_FLAGS | sed 's/ -Wall / /g'`" XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
+ GCJFLAGS="$OPT_FLAGS" \
+ ../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
+ --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap \
+ --enable-shared --enable-threads=posix --enable-checking=release \
+ --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
+%if !%{build_ada}
+ --enable-languages=c,c++,objc,obj-c++,java,fortran \
+%else
+ --enable-languages=c,c++,objc,obj-c++,java,fortran,ada \
+%endif
+%if !%{build_java}
+ --disable-libgcj \
+%else
+ --enable-java-awt=gtk --disable-dssi --enable-plugin \
+ --with-java-home=%{_prefix}/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre \
+ --enable-libgcj-multifile \
+%if !%{bootstrap_java}
+ --enable-java-maintainer-mode \
+%endif
+ --with-ecj-jar=/usr/share/java/eclipse-ecj.jar \
+ --disable-libjava-multilib \
+%endif
+%ifarch %{arm}
+ --disable-sjlj-exceptions \
+%endif
+%ifarch ppc ppc64
+ --enable-secureplt \
+%endif
+%ifarch sparc sparcv9 sparc64 ppc ppc64 s390 s390x alpha
+ --with-long-double-128 \
+%endif
+%ifarch sparc
+ --disable-linux-futex \
+%endif
+%ifarch sparc64
+ --with-cpu=ultrasparc \
+%endif
+%ifarch sparc sparcv9
+ --host=%{gcc_target_platform} --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=v7
+%endif
+%ifarch ppc
+ --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
+%endif
+%ifarch %{ix86} x86_64
+ --with-cpu=generic \
+%endif
+%ifarch s390 s390x
+ --with-tune=z9-109 \
+%endif
+%ifnarch sparc sparcv9 ppc
+ --build=%{gcc_target_platform}
+%endif
+
+#GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
+GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
+
+# run the tests.
+make %{?_smp_mflags} -k check ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ RUNTESTFLAGS="--target_board=unix/'{,-fstack-protector/--param=ssp-buffer-size=4}'" || :
+echo ====================TESTING=========================
+( ../contrib/test_summary || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}'
+echo ====================TESTING END=====================
+mkdir testlogs-%{_target_platform}-%{version}-%{release}
+for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats\|ada'`; do
+ ln $i testlogs-%{_target_platform}-%{version}-%{release}/ || :
+done
+tar cf - testlogs-%{_target_platform}-%{version}-%{release} | bzip2 -9c \
+ | uuencode testlogs-%{_target_platform}.tar.bz2 || :
+rm -rf testlogs-%{_target_platform}-%{version}-%{release}
+
+# Make protoize
+make -C gcc CC="./xgcc -B ./ -O2" proto
+
+# Make generated man pages even if Pod::Man is not new enough
+perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl
+for i in ../gcc/doc/*.texi; do
+ cp -a $i $i.orig; sed 's/ftable/table/' $i.orig > $i
+done
+make -C gcc generated-manpages
+for i in ../gcc/doc/*.texi; do mv -f $i.orig $i; done
+
+# Copy various doc files here and there
+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/changelogs/{gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}
+sed -e 's,@VERSION@,%{gcc_version},' %{SOURCE2} > rpm.doc/README.libgcjwebplugin.so
+
+for i in {gcc,gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}/ChangeLog*; do
+ cp -p $i rpm.doc/changelogs/$i
+done
+
+(cd gcc/fortran; for i in ChangeLog*; do
+ cp -p $i ../../rpm.doc/gfortran/$i
+done)
+(cd libgfortran; for i in ChangeLog*; do
+ cp -p $i ../rpm.doc/gfortran/$i.libgfortran
+done)
+(cd gcc/objc; for i in README*; do
+ cp -p $i ../../rpm.doc/objc/$i.objc
+done)
+(cd libobjc; for i in README*; do
+ cp -p $i ../rpm.doc/objc/$i.libobjc
+done)
+(cd boehm-gc; for i in ChangeLog*; do
+ cp -p $i ../rpm.doc/boehm-gc/$i.gc
+done)
+(cd fastjar-%{fastjar_ver}; for i in ChangeLog* README*; do
+ cp -p $i ../rpm.doc/fastjar/$i.fastjar
+done)
+(cd libffi; for i in ChangeLog* README* LICENSE; do
+ cp -p $i ../rpm.doc/libffi/$i.libffi
+done)
+(cd libjava; for i in ChangeLog* README*; do
+ cp -p $i ../rpm.doc/libjava/$i.libjava
+done)
+cp -p libjava/LIBGCJ_LICENSE rpm.doc/libjava/
+
+rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9]
+find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9
+
+%if %{build_java_tar}
+find libjava -name \*.h -type f | xargs grep -l '// DO NOT EDIT THIS FILE - it is machine generated' > libjava-classes.list
+find libjava -name \*.class -type f >> libjava-classes.list
+find libjava/testsuite -name \*.jar -type f >> libjava-classes.list
+tar cf - -T libjava-classes.list | bzip2 -9 > $RPM_SOURCE_DIR/libjava-classes-%{version}-%{release}.tar.bz2
+%endif
+
+%install
+rm -fr $RPM_BUILD_ROOT
+
+perl -pi -e \
+ 's~href="l(ibstdc|atest)~href="http://gcc.gnu.org/onlinedocs/libstdc++/l\1~' \
+ libstdc++-v3/doc/html/api.html
+
+cd obj-%{gcc_target_platform}
+
+%if %{build_java}
+export PATH=`pwd`/../fastjar-%{fastjar_ver}/obj-%{gcc_target_platform}${PATH:+:$PATH}
+%if !%{bootstrap_java}
+export PATH=`pwd`/java_hacks${PATH:+:$PATH}
+%endif
+%endif
+
+TARGET_PLATFORM=%{gcc_target_platform}
+
+# There are some MP bugs in libstdc++ Makefiles
+make -C %{gcc_target_platform}/libstdc++-v3
+
+make prefix=$RPM_BUILD_ROOT%{_prefix} mandir=$RPM_BUILD_ROOT%{_mandir} \
+ infodir=$RPM_BUILD_ROOT%{_infodir} install
+%if %{build_java}
+make DESTDIR=$RPM_BUILD_ROOT -C %{gcc_target_platform}/libjava install-src.zip
+%endif
+%if %{build_ada}
+chmod 644 $RPM_BUILD_ROOT%{_infodir}/gnat*
+%endif
+
+FULLPATH=$RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+FULLEPATH=$RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+
+# fix some things
+ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/cc
+mkdir -p $RPM_BUILD_ROOT/lib
+ln -sf ..%{_prefix}/bin/cpp $RPM_BUILD_ROOT/lib/cpp
+ln -sf gfortran $RPM_BUILD_ROOT%{_prefix}/bin/f95
+rm -f $RPM_BUILD_ROOT%{_infodir}/dir
+gzip -9 $RPM_BUILD_ROOT%{_infodir}/*.info*
+ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/gnatgcc
+
+cxxconfig="`find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h`"
+for i in `find %{gcc_target_platform}/[36]*/libstdc++-v3/include -name c++config.h 2>/dev/null`; do
+ if ! diff -up $cxxconfig $i; then
+ cat > $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/c++config.h <<EOF
+#ifndef _CPP_CPPCONFIG_WRAPPER
+#define _CPP_CPPCONFIG_WRAPPER 1
+#include <bits/wordsize.h>
+#if __WORDSIZE == 32
+%ifarch %{multilib_64_archs}
+`cat $(find %{gcc_target_platform}/32/libstdc++-v3/include -name c++config.h)`
+%else
+`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
+%endif
+#else
+%ifarch %{multilib_64_archs}
+`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
+%else
+`cat $(find %{gcc_target_platform}/64/libstdc++-v3/include -name c++config.h)`
+%endif
+#endif
+#endif
+EOF
+ break
+ fi
+done
+
+# Nuke bits/stdc++.h.gch dirs
+# 1) there is no bits/stdc++.h header installed, so when gch file can't be
+# used, compilation fails
+# 2) sometimes it is hard to match the exact options used for building
+# libstdc++-v3 or they aren't desirable
+# 3) there are multilib issues, conflicts etc. with this
+# 4) it is huge
+# People can always precompile on their own whatever they want, but
+# shipping this for everybody is unnecessary.
+rm -rf $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/stdc++.h.gch
+
+%ifarch sparcv9 sparc64
+ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
+ $RPM_BUILD_ROOT%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
+%endif
+%ifarch ppc ppc64
+ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
+ $RPM_BUILD_ROOT%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
+%endif
+
+%ifarch sparcv9 ppc
+FULLLPATH=$FULLPATH/lib32
+%endif
+%ifarch sparc64 ppc64
+FULLLPATH=$FULLPATH/lib64
+%endif
+if [ -n "$FULLLPATH" ]; then
+ mkdir -p $FULLLPATH
+else
+ FULLLPATH=$FULLPATH
+fi
+
+find $RPM_BUILD_ROOT -name \*.la | xargs rm -f
+%if %{build_java}
+# gcj -static doesn't work properly anyway, unless using --whole-archive
+# and saving 35MB is not bad.
+find $RPM_BUILD_ROOT -name libgcj.a -o -name libgtkpeer.a \
+ -o -name libgjsmalsa.a -o -name libgcj-tools.a -o -name libjvm.a \
+ -o -name libgij.a -o -name libgcj_bc.a -o -name libjavamath.a \
+ | xargs rm -f
+
+mv $RPM_BUILD_ROOT%{_prefix}/lib/libgcj.spec $FULLPATH/
+sed -i -e 's/lib: /&%%{static:%%eJava programs cannot be linked statically}/' \
+ $FULLPATH/libgcj.spec
+%endif
+
+mkdir -p $RPM_BUILD_ROOT/%{_lib}
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcc_s.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
+chmod 755 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
+ln -sf libgcc_s-%{gcc_version}-%{DATE}.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so.1
+ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so
+%ifarch sparcv9 ppc
+ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64/libgcc_s.so
+%endif
+%ifarch %{multilib_64_archs}
+ln -sf /lib/libgcc_s.so.1 $FULLPATH/32/libgcc_s.so
+%endif
+
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/
+
+%if %{build_ada}
+mv -f $FULLPATH/adalib/libgnarl-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
+mv -f $FULLPATH/adalib/libgnat-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
+rm -f $FULLPATH/adalib/libgnarl.so* $FULLPATH/adalib/libgnat.so*
+%endif
+
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/libexec/getconf
+if gcc/xgcc -B gcc/ -E -dD -xc /dev/null | grep __LONG_MAX__.*2147483647; then
+ ln -sf POSIX_V6_ILP32_OFF32 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default
+else
+ ln -sf POSIX_V6_LP64_OFF64 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default
+fi
+
+%if %{build_java}
+pushd ../fastjar-%{fastjar_ver}/obj-%{gcc_target_platform}
+make install DESTDIR=$RPM_BUILD_ROOT
+popd
+
+if [ "%{_lib}" != "lib" ]; then
+ mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig
+ sed '/^libdir/s/lib$/%{_lib}/' $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc \
+ > $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig/`basename $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc`
+fi
+%endif
+
+pushd $FULLPATH
+if [ "%{_lib}" = "lib" ]; then
+ln -sf ../../../libobjc.so.2 libobjc.so
+ln -sf ../../../libstdc++.so.6.* 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_java}
+ln -sf ../../../libgcj.so.10.* libgcj.so
+ln -sf ../../../libgcj-tools.so.10.* libgcj-tools.so
+ln -sf ../../../libgij.so.10.* libgij.so
+%endif
+else
+ln -sf ../../../../%{_lib}/libobjc.so.2 libobjc.so
+ln -sf ../../../../%{_lib}/libstdc++.so.6.* 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_java}
+ln -sf ../../../../%{_lib}/libgcj.so.10.* libgcj.so
+ln -sf ../../../../%{_lib}/libgcj-tools.so.10.* libgcj-tools.so
+ln -sf ../../../../%{_lib}/libgij.so.10.* libgij.so
+%endif
+fi
+%if %{build_java}
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcj_bc.so $FULLLPATH/
+%endif
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libsupc++.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.*a $FULLLPATH/
+
+%if %{build_ada}
+%ifarch sparcv9 ppc
+rm -rf $FULLPATH/64/ada{include,lib}
+%endif
+%ifarch %{multilib_64_archs}
+rm -rf $FULLPATH/32/ada{include,lib}
+%endif
+if [ "$FULLPATH" != "$FULLLPATH" ]; then
+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.4.so
+ln -sf ../../../../../libgnat-*.so libgnat.so
+ln -sf ../../../../../libgnat-*.so libgnat-4.4.so
+else
+ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl.so
+ln -sf ../../../../../../%{_lib}/libgnarl-*.so libgnarl-4.4.so
+ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat.so
+ln -sf ../../../../../../%{_lib}/libgnat-*.so libgnat-4.4.so
+fi
+popd
+else
+pushd $FULLPATH/adalib
+if [ "%{_lib}" = "lib" ]; then
+ln -sf ../../../../libgnarl-*.so libgnarl.so
+ln -sf ../../../../libgnarl-*.so libgnarl-4.4.so
+ln -sf ../../../../libgnat-*.so libgnat.so
+ln -sf ../../../../libgnat-*.so libgnat-4.4.so
+else
+ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so
+ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-4.4.so
+ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so
+ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-4.4.so
+fi
+popd
+fi
+%endif
+
+%ifarch sparcv9 ppc
+ln -sf ../../../../../lib64/libobjc.so.2 64/libobjc.so
+ln -sf ../`echo ../../../../lib/libstdc++.so.6.* | 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_java}
+ln -sf ../`echo ../../../../lib/libgcj.so.10.* | sed s~/lib/~/lib64/~` 64/libgcj.so
+ln -sf ../`echo ../../../../lib/libgcj-tools.so.10.* | sed s~/lib/~/lib64/~` 64/libgcj-tools.so
+ln -sf ../`echo ../../../../lib/libgij.so.10.* | 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
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libsupc++.*a 64/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgfortran.*a 64/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libobjc.*a 64/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgomp.*a 64/
+ln -sf lib32/libstdc++.a libstdc++.a
+ln -sf ../lib64/libstdc++.a 64/libstdc++.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_ada}
+ln -sf lib32/adainclude adainclude
+ln -sf ../lib64/adainclude 64/adainclude
+ln -sf lib32/adalib adalib
+ln -sf ../lib64/adalib 64/adalib
+%endif
+%endif
+%ifarch %{multilib_64_archs}
+mkdir -p 32
+ln -sf ../../../../libobjc.so.2 32/libobjc.so
+ln -sf ../`echo ../../../../lib64/libstdc++.so.6.* | 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_java}
+ln -sf ../`echo ../../../../lib64/libgcj.so.10.* | sed s~/../lib64/~/~` 32/libgcj.so
+ln -sf ../`echo ../../../../lib64/libgcj-tools.so.10.* | sed s~/../lib64/~/~` 32/libgcj-tools.so
+ln -sf ../`echo ../../../../lib64/libgij.so.10.* | sed s~/../lib64/~/~` 32/libgij.so
+%endif
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libsupc++.*a 32/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortran.*a 32/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libobjc.*a 32/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgomp.*a 32/
+%endif
+%ifarch sparc64 ppc64
+ln -sf ../lib32/libstdc++.a 32/libstdc++.a
+ln -sf lib64/libstdc++.a libstdc++.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_java}
+ln -sf ../lib32/libgcj_bc.so 32/libgcj_bc.so
+ln -sf lib64/libgcj_bc.so libgcj_bc.so
+%endif
+%if %{build_ada}
+ln -sf ../lib32/adainclude 32/adainclude
+ln -sf lib64/adainclude adainclude
+ln -sf ../lib32/adalib 32/adalib
+ln -sf lib64/adalib adalib
+%endif
+%else
+%ifarch %{multilib_64_archs}
+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}/libmudflap.a 32/libmudflap.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libmudflapth.a 32/libmudflapth.a
+%if %{build_java}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgcj_bc.so 32/libgcj_bc.so
+%endif
+%if %{build_ada}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/adainclude 32/adainclude
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/adalib 32/adalib
+%endif
+%endif
+%endif
+
+# 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 \) -a -type f`
+popd
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.so.3.*
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.so.1.*
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.so.0.*
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.so.2.*
+
+%if %{build_ada}
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnarl*so*
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnat*so*
+%endif
+
+mv $FULLPATH/include-fixed/syslimits.h $FULLPATH/include/syslimits.h
+mv $FULLPATH/include-fixed/limits.h $FULLPATH/include/limits.h
+for h in `find $FULLPATH/include -name \*.h`; do
+ if grep -q 'It has been auto-edited by fixincludes from' $h; then
+ rh=`grep -A2 'It has been auto-edited by fixincludes from' $h | tail -1 | sed 's|^.*"\(.*\)".*$|\1|'`
+ diff -up $rh $h || :
+ rm -f $h
+ fi
+done
+
+cat > $RPM_BUILD_ROOT%{_prefix}/bin/c89 <<"EOF"
+#!/bin/sh
+fl="-std=c89"
+for opt; do
+ case "$opt" in
+ -ansi|-std=c89|-std=iso9899:1990) fl="";;
+ -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2
+ exit 1;;
+ esac
+done
+exec gcc $fl ${1+"$@"}
+EOF
+cat > $RPM_BUILD_ROOT%{_prefix}/bin/c99 <<"EOF"
+#!/bin/sh
+fl="-std=c99"
+for opt; do
+ case "$opt" in
+ -std=c99|-std=iso9899:1999) fl="";;
+ -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2
+ exit 1;;
+ esac
+done
+exec gcc $fl ${1+"$@"}
+EOF
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/bin/c?9
+
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/sbin
+gcc -static -Os %{SOURCE1} -o $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
+strip $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
+
+cd ..
+%find_lang %{name}
+%find_lang cpplib
+
+# Remove binaries we will not be including, so that they don't end up in
+# gcc-debuginfo
+rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/{libffi*,libiberty.a}
+rm -f $FULLEPATH/install-tools/{mkheaders,fixincl}
+rm -f $RPM_BUILD_ROOT%{_prefix}/lib/{32,64}/libiberty.a
+rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libssp*
+rm -f $RPM_BUILD_ROOT%{_prefix}/bin/gnative2ascii
+
+%ifarch %{multilib_64_archs}
+# Remove libraries for the other arch on multilib arches
+rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.so*
+rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.a
+%else
+%ifarch sparcv9 ppc
+rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.so*
+rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.a
+%endif
+%endif
+
+%if %{build_java}
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \
+ $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \
+ $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version} \
+ $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
+touch $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db
+%endif
+
+install -m644 %{SOURCE3} $RPM_BUILD_ROOT%{_mandir}/man1/protoize.1
+echo '.so man1/protoize.1' > $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
+chmod 644 $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
+
+%preun
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
+fi
+
+%post -n cpp
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
+
+%preun -n cpp
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
+fi
+
+%post gfortran
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
+
+%preun gfortran
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
+fi
+
+%post java
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/gcj.info.gz || :
+
+%preun java
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/gcj.info.gz || :
+fi
+
+%post gnat
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || :
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || :
+
+%preun gnat
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || :
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || :
+fi
+
+# Because glibc Prereq's libgcc and /sbin/ldconfig
+# comes from glibc, it might not exist yet when
+# libgcc is installed
+%post -n libgcc -p %{_prefix}/sbin/libgcc_post_upgrade
+
+%post -n libstdc++ -p /sbin/ldconfig
+
+%postun -n libstdc++ -p /sbin/ldconfig
+
+%post -n libobjc -p /sbin/ldconfig
+
+%postun -n libobjc -p /sbin/ldconfig
+
+%post -n libgcj
+/sbin/ldconfig
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/cp-tools.info.gz || :
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/fastjar.info.gz || :
+
+%preun -n libgcj
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/cp-tools.info.gz || :
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/fastjar.info.gz || :
+fi
+
+%postun -n libgcj -p /sbin/ldconfig
+
+%post -n libgfortran -p /sbin/ldconfig
+
+%postun -n libgfortran -p /sbin/ldconfig
+
+%post -n libgnat -p /sbin/ldconfig
+
+%postun -n libgnat -p /sbin/ldconfig
+
+%post -n libgomp
+/sbin/ldconfig
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/libgomp.info.gz || :
+
+%preun -n libgomp
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/libgomp.info.gz || :
+fi
+
+%postun -n libgomp -p /sbin/ldconfig
+
+%post -n libmudflap -p /sbin/ldconfig
+
+%postun -n libmudflap -p /sbin/ldconfig
+
+%files -f %{name}.lang
+%defattr(-,root,root)
+%{_prefix}/bin/cc
+%{_prefix}/bin/c89
+%{_prefix}/bin/c99
+%{_prefix}/bin/gcc
+%{_prefix}/bin/gcov
+%{_prefix}/bin/protoize
+%{_prefix}/bin/unprotoize
+%ifarch ppc
+%{_prefix}/bin/%{_target_platform}-gcc
+%endif
+%ifarch sparc64 sparcv9
+%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
+%endif
+%ifarch ppc64
+%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
+%endif
+%{_prefix}/bin/%{gcc_target_platform}-gcc
+%{_mandir}/man1/gcc.1*
+%{_mandir}/man1/gcov.1*
+%{_mandir}/man1/protoize.1*
+%{_mandir}/man1/unprotoize.1*
+%{_infodir}/gcc*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/SYSCALLS.c.X
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stddef.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdarg.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdfix.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/varargs.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/float.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/limits.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdbool.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/iso646.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/syslimits.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/unwind.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/omp.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
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/emmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/pmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/tmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ammintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/smmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/nmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/bmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/wmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/immintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/avxintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/x86intrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mmintrin-common.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
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cross-stdarg.h
+%endif
+%ifarch ia64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ia64intrin.h
+%endif
+%ifarch ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ppc-asm.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/altivec.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/spe.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/paired.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ppu_intrinsics.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/si2vmx.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/spu2vmx.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/vec_types.h
+%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
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcov.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_eh.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_s.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.spec
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.so
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/crt*.o
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcov.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc_eh.a
+%{_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
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/crt*.o
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcov.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_eh.a
+%{_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
+%endif
+%ifarch sparcv9 sparc64 ppc ppc64
+%{_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
+%endif
+%dir %{_prefix}/libexec/getconf
+%{_prefix}/libexec/getconf/default
+%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING*
+
+%files -n cpp -f cpplib.lang
+%defattr(-,root,root)
+/lib/cpp
+%{_prefix}/bin/cpp
+%{_mandir}/man1/cpp.1*
+%{_infodir}/cpp*
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1
+
+%files -n libgcc
+%defattr(-,root,root)
+/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
+/%{_lib}/libgcc_s.so.1
+%{_prefix}/sbin/libgcc_post_upgrade
+%doc gcc/COPYING.LIB
+
+%files c++
+%defattr(-,root,root)
+%{_prefix}/bin/%{gcc_target_platform}-*++
+%{_prefix}/bin/g++
+%{_prefix}/bin/c++
+%{_mandir}/man1/g++.1*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1plus
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libsupc++.a
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libsupc++.a
+%endif
+%ifarch sparcv9 ppc %{multilib_64_archs}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
+%endif
+%ifarch sparcv9 sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a
+%endif
+%doc rpm.doc/changelogs/gcc/cp/ChangeLog*
+
+%files -n libstdc++
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libstdc++.so.6*
+
+%files -n libstdc++-devel
+%defattr(-,root,root)
+%dir %{_prefix}/include/c++
+%dir %{_prefix}/include/c++/%{gcc_version}
+%{_prefix}/include/c++/%{gcc_version}/[^gjos]*
+%{_prefix}/include/c++/%{gcc_version}/os*
+%{_prefix}/include/c++/%{gcc_version}/s[^u]*
+%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/libstdc++.a
+%endif
+%ifarch sparc64 ppc64
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libstdc++.a
+%endif
+%ifnarch sparcv9 sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a
+%endif
+%ifnarch sparcv9 ppc %{multilib_64_archs}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
+%endif
+%doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README* libstdc++-v3/doc/html/
+
+%files objc
+%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}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/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/objc
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1obj
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.so
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.so
+%endif
+%doc rpm.doc/objc/*
+%doc libobjc/THREADS* rpm.doc/changelogs/libobjc/ChangeLog*
+
+%files objc++
+%defattr(-,root,root)
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1objplus
+
+%files -n libobjc
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libobjc.so.2*
+
+%files gfortran
+%defattr(-,root,root)
+%{_prefix}/bin/gfortran
+%{_prefix}/bin/f95
+%{_mandir}/man1/gfortran.1*
+%{_infodir}/gfortran*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.f90
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib_kinds.mod
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/f951
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortranbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.so
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortranbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortranbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.so
+%endif
+%doc rpm.doc/gfortran/*
+
+%files -n libgfortran
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libgfortran.so.3*
+
+%if %{build_java}
+%files java
+%defattr(-,root,root)
+%{_prefix}/bin/gcj
+%{_prefix}/bin/gjavah
+%{_prefix}/bin/gcjh
+%{_prefix}/bin/jcf-dump
+%{_mandir}/man1/gcj.1*
+%{_mandir}/man1/jcf-dump.1*
+%{_mandir}/man1/gjavah.1*
+%{_mandir}/man1/gcjh.1*
+%{_infodir}/gcj*
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jc1
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/ecj1
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jvgenmain
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj-tools.so
+%ifarch sparcv9 sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so
+%endif
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgij.so
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj-tools.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj_bc.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgij.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj-tools.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj_bc.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgij.so
+%endif
+%doc rpm.doc/changelogs/gcc/java/ChangeLog*
+
+%files -n libgcj
+%defattr(-,root,root)
+%{_prefix}/bin/jv-convert
+%{_prefix}/bin/gij
+%{_prefix}/bin/gjar
+%{_prefix}/bin/fastjar
+%{_prefix}/bin/grepjar
+%{_prefix}/bin/grmic
+%{_prefix}/bin/grmid
+%{_prefix}/bin/grmiregistry
+%{_prefix}/bin/gtnameserv
+%{_prefix}/bin/gkeytool
+%{_prefix}/bin/gorbd
+%{_prefix}/bin/gserialver
+%{_prefix}/bin/gcj-dbtool
+%if %{include_gappletviewer}
+%{_prefix}/bin/gappletviewer
+%{_mandir}/man1/gappletviewer.1*
+%endif
+%{_prefix}/bin/gjarsigner
+%{_mandir}/man1/fastjar.1*
+%{_mandir}/man1/grepjar.1*
+%{_mandir}/man1/gjar.1*
+%{_mandir}/man1/gjarsigner.1*
+%{_mandir}/man1/jv-convert.1*
+%{_mandir}/man1/gij.1*
+%{_mandir}/man1/grmic.1*
+%{_mandir}/man1/grmiregistry.1*
+%{_mandir}/man1/gcj-dbtool.1*
+%{_mandir}/man1/gkeytool.1*
+%{_mandir}/man1/gorbd.1*
+%{_mandir}/man1/grmid.1*
+%{_mandir}/man1/gserialver.1*
+%{_mandir}/man1/gtnameserv.1*
+%{_infodir}/fastjar.info*
+%{_infodir}/cp-tools.info*
+%{_prefix}/%{_lib}/libgcj.so.*
+%{_prefix}/%{_lib}/libgcj-tools.so.*
+%{_prefix}/%{_lib}/libgcj_bc.so.*
+%{_prefix}/%{_lib}/libgij.so.*
+%dir %{_prefix}/%{_lib}/gcj-%{version}
+%{_prefix}/%{_lib}/gcj-%{version}/libgtkpeer.so
+%{_prefix}/%{_lib}/gcj-%{version}/libgjsmalsa.so
+%{_prefix}/%{_lib}/gcj-%{version}/libjawt.so
+%if %{include_gappletviewer}
+%{_prefix}/%{_lib}/gcj-%{version}/libgcjwebplugin.so
+%endif
+%{_prefix}/%{_lib}/gcj-%{version}/libjvm.so
+%{_prefix}/%{_lib}/gcj-%{version}/libjavamath.so
+%dir %{_prefix}/share/java
+%{_prefix}/share/java/[^sl]*
+%{_prefix}/share/java/libgcj-%{version}.jar
+%dir %{_prefix}/%{_lib}/security
+%config(noreplace) %{_prefix}/%{_lib}/security/classpath.security
+%{_prefix}/%{_lib}/logging.properties
+%dir %{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
+%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_prefix}/%{_lib}/gcj-%{version}/classmap.db
+%if %{include_gappletviewer}
+%doc rpm.doc/README.libgcjwebplugin.so
+%endif
+
+%files -n libgcj-devel
+%defattr(-,root,root)
+%{_prefix}/bin/addr2name.awk
+%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/gcj
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt_md.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni_md.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jvmpi.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.spec
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libgcj_bc.so
+%endif
+%ifarch sparc64 ppc64
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libgcj_bc.so
+%endif
+%ifnarch sparcv9 sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so
+%endif
+%dir %{_prefix}/include/c++
+%dir %{_prefix}/include/c++/%{gcc_version}
+%{_prefix}/include/c++/%{gcc_version}/[gj]*
+%{_prefix}/include/c++/%{gcc_version}/org
+%{_prefix}/include/c++/%{gcc_version}/sun
+%{_prefix}/%{_lib}/pkgconfig/libgcj-*.pc
+%doc rpm.doc/boehm-gc/* rpm.doc/fastjar/* rpm.doc/libffi/*
+%doc rpm.doc/libjava/*
+
+%files -n libgcj-src
+%defattr(-,root,root)
+%dir %{_prefix}/share/java
+%{_prefix}/share/java/src*.zip
+%{_prefix}/share/java/libgcj-tools-%{version}.jar
+%endif
+
+%if %{build_ada}
+%files gnat
+%defattr(-,root,root)
+%{_prefix}/bin/gnat*
+%{_infodir}/gnat*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%ifarch sparcv9 ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/adainclude
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/adalib
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/adainclude
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/adalib
+%endif
+%ifarch sparcv9 sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adainclude
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib
+%endif
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/gnat1
+%doc rpm.doc/changelogs/gcc/ada/ChangeLog*
+
+%files -n libgnat
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libgnat-*.so
+%{_prefix}/%{_lib}/libgnarl-*.so
+
+%files -n libgnat-devel
+%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/adainclude
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/adalib
+%endif
+%ifarch sparc64 ppc64
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/adainclude
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/adalib
+%endif
+%ifnarch sparcv9 sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adainclude
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib
+%endif
+%endif
+
+%files -n libgomp
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libgomp.so.1*
+%{_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
+%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
+%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
+%{_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
+%endif
+%doc rpm.doc/changelogs/libmudflap/ChangeLog*
+
+%changelog
+* Fri Jan 16 2009 Jakub Jelinek <jakub@redhat.com> 4.4.0-0.3
+- initial 4.4 package, using newly created redhat/gcc-4_4-branch
diff --git a/gcc43-aes.patch b/gcc43-aes.patch
deleted file mode 100644
index 9a45d45..0000000
--- a/gcc43-aes.patch
+++ /dev/null
@@ -1,1351 +0,0 @@
-2008-04-04 H.J. Lu <hongjiu.lu@intel.com>
-
- * config.gcc (extra_headers): Add wmmintrin.h for x86 and x86-64.
-
- * config/i386/cpuid.h (bit_AES): New.
- (bit_PCLMUL): Likewise.
-
- * config/i386/i386.c (pta_flags): Add PTA_AES and PTA_PCLMUL.
- (override_options): Handle PTA_AES and PTA_PCLMUL. Enable
- SSE2 if AES or PCLMUL is enabled.
- (ix86_builtins): Add IX86_BUILTIN_AESENC128,
- IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
- IX86_BUILTIN_AESDECLAST128, IX86_BUILTIN_AESIMC128,
- IX86_BUILTIN_AESKEYGENASSIST128 and IX86_BUILTIN_PCLMULQDQ128.
- (bdesc_sse_3arg): Add IX86_BUILTIN_PCLMULQDQ128.
- (bdesc_2arg): Add IX86_BUILTIN_AESENC128,
- IX86_BUILTIN_AESENCLAST128, IX86_BUILTIN_AESDEC128,
- IX86_BUILTIN_AESDECLAST128 and IX86_BUILTIN_AESKEYGENASSIST128.
- (bdesc_1arg): Add IX86_BUILTIN_AESIMC128.
- (ix86_init_mmx_sse_builtins): Define __builtin_ia32_aesenc128,
- __builtin_ia32_aesenclast128, __builtin_ia32_aesdec128,
- __builtin_ia32_aesdeclast128,__builtin_ia32_aesimc128,
- __builtin_ia32_aeskeygenassist128 and
- __builtin_ia32_pclmulqdq128.
- * config/i386/i386.c (ix86_expand_binop_imm_builtin): New.
- (ix86_expand_builtin): Use it for IX86_BUILTIN_PSLLDQI128 and
- IX86_BUILTIN_PSRLDQI128. Handle IX86_BUILTIN_AESKEYGENASSIST128.
-
- * config/i386/i386.h (TARGET_AES): New.
- (TARGET_PCLMUL): Likewise.
- (TARGET_CPU_CPP_BUILTINS): Handle TARGET_AES and TARGET_PCLMUL.
-
- * config/i386/i386.md (UNSPEC_AESENC): New.
- (UNSPEC_AESENCLAST): Likewise.
- (UNSPEC_AESDEC): Likewise.
- (UNSPEC_AESDECLAST): Likewise.
- (UNSPEC_AESIMC): Likewise.
- (UNSPEC_AESKEYGENASSIST): Likewise.
- (UNSPEC_PCLMULQDQ): Likewise.
-
- * config/i386/i386.opt (maes): New.
- (mpclmul): Likewise.
-
- * config/i386/sse.md (aesenc): New pattern.
- (aesenclast): Likewise.
- (aesdec): Likewise.
- (aesdeclast): Likewise.
- (aesimc): Likewise.
- (aeskeygenassist): Likewise.
- (pclmulqdq): Likewise.
-
- * config/i386/wmmintrin.h: New.
-
- * doc/extend.texi: Document AES and PCLMUL built-in function.
-
- * doc/invoke.texi: Document -maes and -mpclmul.
-
- * g++.dg/other/i386-2.C: Include <wmmintrin.h>.
- * g++.dg/other/i386-3.C: Likewise.
- * gcc.target/i386/sse-13.c: Likewise.
- * gcc.target/i386/sse-14.c: Likewise.
-
- * gcc.target/i386/aes-check.h: New.
- * gcc.target/i386/aesdec.c: Likewise.
- * gcc.target/i386/aesdeclast.c: Likewise.
- * gcc.target/i386/aesenc.c: Likewise.
- * gcc.target/i386/aesenclast.c: Likewise.
- * gcc.target/i386/aesimc.c: Likewise.
- * gcc.target/i386/aeskeygenassist.c: Likewise.
- * gcc.target/i386/pclmulqdq.c: Likewise.
- * gcc.target/i386/pclmul-check.h: Likewise.
-
- * gcc.target/i386/i386.exp (check_effective_target_aes): New.
- (check_effective_target_pclmul): Likewise.
-
---- gcc/config.gcc (revision 133901)
-+++ gcc/config.gcc (revision 133902)
-@@ -309,13 +309,15 @@ i[34567]86-*-*)
- cpu_type=i386
- extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
- pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
-- nmmintrin.h bmmintrin.h mmintrin-common.h"
-+ nmmintrin.h bmmintrin.h mmintrin-common.h
-+ wmmintrin.h"
- ;;
- x86_64-*-*)
- cpu_type=i386
- extra_headers="cpuid.h mmintrin.h mm3dnow.h xmmintrin.h emmintrin.h
- pmmintrin.h tmmintrin.h ammintrin.h smmintrin.h
-- nmmintrin.h bmmintrin.h mmintrin-common.h"
-+ nmmintrin.h bmmintrin.h mmintrin-common.h
-+ wmmintrin.h"
- need_64bit_hwint=yes
- ;;
- ia64-*-*)
---- gcc/config/i386/i386.h (revision 133901)
-+++ gcc/config/i386/i386.h (revision 133902)
-@@ -395,6 +395,8 @@ extern int x86_prefetch_sse;
- #define TARGET_SAHF x86_sahf
- #define TARGET_RECIP x86_recip
- #define TARGET_FUSED_MADD x86_fused_muladd
-+#define TARGET_AES (TARGET_SSE2 && x86_aes)
-+#define TARGET_PCLMUL (TARGET_SSE2 && x86_pclmul)
-
- #define ASSEMBLER_DIALECT (ix86_asm_dialect)
-
-@@ -683,6 +685,10 @@ extern const char *host_detect_local_cpu
- builtin_define ("__SSE4_1__"); \
- if (TARGET_SSE4_2) \
- builtin_define ("__SSE4_2__"); \
-+ if (TARGET_AES) \
-+ builtin_define ("__AES__"); \
-+ if (TARGET_PCLMUL) \
-+ builtin_define ("__PCLMUL__"); \
- if (TARGET_SSE4A) \
- builtin_define ("__SSE4A__"); \
- if (TARGET_SSE5) \
---- gcc/config/i386/i386.md (revision 133901)
-+++ gcc/config/i386/i386.md (revision 133902)
-@@ -186,6 +186,17 @@ (define_constants
- (UNSPEC_FRCZ 156)
- (UNSPEC_CVTPH2PS 157)
- (UNSPEC_CVTPS2PH 158)
-+
-+ ; For AES support
-+ (UNSPEC_AESENC 159)
-+ (UNSPEC_AESENCLAST 160)
-+ (UNSPEC_AESDEC 161)
-+ (UNSPEC_AESDECLAST 162)
-+ (UNSPEC_AESIMC 163)
-+ (UNSPEC_AESKEYGENASSIST 164)
-+
-+ ; For PCLMUL support
-+ (UNSPEC_PCLMUL 165)
- ])
-
- (define_constants
---- gcc/config/i386/wmmintrin.h (revision 0)
-+++ gcc/config/i386/wmmintrin.h (revision 133902)
-@@ -0,0 +1,123 @@
-+/* Copyright (C) 2008 Free Software Foundation, Inc.
-+
-+ This file is part of GCC.
-+
-+ GCC is free software; you can redistribute it and/or modify
-+ it under the terms of the GNU General Public License as published by
-+ the Free Software Foundation; either version 2, or (at your option)
-+ any later version.
-+
-+ GCC is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You should have received a copy of the GNU General Public License
-+ along with GCC; see the file COPYING. If not, write to
-+ the Free Software Foundation, 59 Temple Place - Suite 330,
-+ Boston, MA 02111-1307, USA. */
-+
-+/* As a special exception, if you include this header file into source
-+ files compiled by GCC, this header file does not by itself cause
-+ the resulting executable to be covered by the GNU General Public
-+ License. This exception does not however invalidate any other
-+ reasons why the executable file might be covered by the GNU General
-+ Public License. */
-+
-+/* Implemented from the specification included in the Intel C++ Compiler
-+ User Guide and Reference, version 10.1. */
-+
-+#ifndef _WMMINTRIN_H_INCLUDED
-+#define _WMMINTRIN_H_INCLUDED
-+
-+/* We need definitions from the SSE2 header file. */
-+#include <emmintrin.h>
-+
-+#if !defined (__AES__) && !defined (__PCLMUL__)
-+# error "AES/PCLMUL instructions not enabled"
-+#else
-+
-+/* AES */
-+
-+#ifdef __AES__
-+/* Performs 1 round of AES decryption of the first m128i using
-+ the second m128i as a round key. */
-+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_aesdec_si128 (__m128i __X, __m128i __Y)
-+{
-+ return (__m128i) __builtin_ia32_aesdec128 ((__v2di)__X, (__v2di)__Y);
-+}
-+
-+/* Performs the last round of AES decryption of the first m128i
-+ using the second m128i as a round key. */
-+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_aesdeclast_si128 (__m128i __X, __m128i __Y)
-+{
-+ return (__m128i) __builtin_ia32_aesdeclast128 ((__v2di)__X,
-+ (__v2di)__Y);
-+}
-+
-+/* Performs 1 round of AES encryption of the first m128i using
-+ the second m128i as a round key. */
-+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_aesenc_si128 (__m128i __X, __m128i __Y)
-+{
-+ return (__m128i) __builtin_ia32_aesenc128 ((__v2di)__X, (__v2di)__Y);
-+}
-+
-+/* Performs the last round of AES encryption of the first m128i
-+ using the second m128i as a round key. */
-+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_aesenclast_si128 (__m128i __X, __m128i __Y)
-+{
-+ return (__m128i) __builtin_ia32_aesenclast128 ((__v2di)__X, (__v2di)__Y);
-+}
-+
-+/* Performs the InverseMixColumn operation on the source m128i
-+ and stores the result into m128i destination. */
-+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_aesimc_si128 (__m128i __X)
-+{
-+ return (__m128i) __builtin_ia32_aesimc128 ((__v2di)__X);
-+}
-+
-+/* Generates a m128i round key for the input m128i AES cipher key and
-+ byte round constant. The second parameter must be a compile time
-+ constant. */
-+#ifdef __OPTIMIZE__
-+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_aeskeygenassist_si128 (__m128i __X, const int __C)
-+{
-+ return (__m128i) __builtin_ia32_aeskeygenassist128 ((__v2di)__X, __C);
-+}
-+#else
-+#define _mm_aeskeygenassist_si128(X, C) \
-+ ((__m128i) __builtin_ia32_aeskeygenassist128 ((__v2di)(__m128i)(X), \
-+ (int)(C)))
-+#endif
-+#endif /* __AES__ */
-+
-+/* PCLMUL */
-+
-+#ifdef __PCLMUL__
-+/* Performs carry-less integer multiplication of 64-bit halves of
-+ 128-bit input operands. The third parameter inducates which 64-bit
-+ haves of the input parameters v1 and v2 should be used. It must be
-+ a compile time constant. */
-+#ifdef __OPTIMIZE__
-+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
-+_mm_clmulepi64_si128 (__m128i __X, __m128i __Y, const int __I)
-+{
-+ return (__m128i) __builtin_ia32_pclmulqdq128 ((__v2di)__X,
-+ (__v2di)__Y, __I);
-+}
-+#else
-+#define _mm_clmulepi64_si128(X, Y, I) \
-+ ((__m128i) __builtin_ia32_pclmulqdq128 ((__v2di)(__m128i)(X), \
-+ (__v2di)(__m128i)(Y), (int)(I)))
-+#endif
-+#endif /* __PCLMUL__ */
-+
-+#endif /* __AES__/__PCLMUL__ */
-+
-+#endif /* _WMMINTRIN_H_INCLUDED */
---- gcc/config/i386/cpuid.h (revision 133901)
-+++ gcc/config/i386/cpuid.h (revision 133902)
-@@ -33,11 +33,13 @@
-
- /* %ecx */
- #define bit_SSE3 (1 << 0)
-+#define bit_PCLMUL (1 << 1)
- #define bit_SSSE3 (1 << 9)
- #define bit_CMPXCHG16B (1 << 13)
- #define bit_SSE4_1 (1 << 19)
- #define bit_SSE4_2 (1 << 20)
- #define bit_POPCNT (1 << 23)
-+#define bit_AES (1 << 25)
-
- /* %edx */
- #define bit_CMPXCHG8B (1 << 8)
---- gcc/config/i386/sse.md (revision 133901)
-+++ gcc/config/i386/sse.md (revision 133902)
-@@ -7897,3 +7897,80 @@ (define_insn "sse5_pcom_tf<mode>3"
- }
- [(set_attr "type" "ssecmp")
- (set_attr "mode" "TI")])
-+
-+(define_insn "aesenc"
-+ [(set (match_operand:V2DI 0 "register_operand" "=x")
-+ (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0")
-+ (match_operand:V2DI 2 "nonimmediate_operand" "xm")]
-+ UNSPEC_AESENC))]
-+ "TARGET_AES"
-+ "aesenc\t{%2, %0|%0, %2}"
-+ [(set_attr "type" "sselog1")
-+ (set_attr "prefix_extra" "1")
-+ (set_attr "mode" "TI")])
-+
-+(define_insn "aesenclast"
-+ [(set (match_operand:V2DI 0 "register_operand" "=x")
-+ (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0")
-+ (match_operand:V2DI 2 "nonimmediate_operand" "xm")]
-+ UNSPEC_AESENCLAST))]
-+ "TARGET_AES"
-+ "aesenclast\t{%2, %0|%0, %2}"
-+ [(set_attr "type" "sselog1")
-+ (set_attr "prefix_extra" "1")
-+ (set_attr "mode" "TI")])
-+
-+(define_insn "aesdec"
-+ [(set (match_operand:V2DI 0 "register_operand" "=x")
-+ (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0")
-+ (match_operand:V2DI 2 "nonimmediate_operand" "xm")]
-+ UNSPEC_AESDEC))]
-+ "TARGET_AES"
-+ "aesdec\t{%2, %0|%0, %2}"
-+ [(set_attr "type" "sselog1")
-+ (set_attr "prefix_extra" "1")
-+ (set_attr "mode" "TI")])
-+
-+(define_insn "aesdeclast"
-+ [(set (match_operand:V2DI 0 "register_operand" "=x")
-+ (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0")
-+ (match_operand:V2DI 2 "nonimmediate_operand" "xm")]
-+ UNSPEC_AESDECLAST))]
-+ "TARGET_AES"
-+ "aesdeclast\t{%2, %0|%0, %2}"
-+ [(set_attr "type" "sselog1")
-+ (set_attr "prefix_extra" "1")
-+ (set_attr "mode" "TI")])
-+
-+(define_insn "aesimc"
-+ [(set (match_operand:V2DI 0 "register_operand" "=x")
-+ (unspec:V2DI [(match_operand:V2DI 1 "nonimmediate_operand" "xm")]
-+ UNSPEC_AESIMC))]
-+ "TARGET_AES"
-+ "aesimc\t{%1, %0|%0, %1}"
-+ [(set_attr "type" "sselog1")
-+ (set_attr "prefix_extra" "1")
-+ (set_attr "mode" "TI")])
-+
-+(define_insn "aeskeygenassist"
-+ [(set (match_operand:V2DI 0 "register_operand" "=x")
-+ (unspec:V2DI [(match_operand:V2DI 1 "nonimmediate_operand" "xm")
-+ (match_operand:SI 2 "const_0_to_255_operand" "n")]
-+ UNSPEC_AESKEYGENASSIST))]
-+ "TARGET_AES"
-+ "aeskeygenassist\t{%2, %1, %0|%0, %1, %2}"
-+ [(set_attr "type" "sselog1")
-+ (set_attr "prefix_extra" "1")
-+ (set_attr "mode" "TI")])
-+
-+(define_insn "pclmulqdq"
-+ [(set (match_operand:V2DI 0 "register_operand" "=x")
-+ (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0")
-+ (match_operand:V2DI 2 "nonimmediate_operand" "xm")
-+ (match_operand:SI 3 "const_0_to_255_operand" "n")]
-+ UNSPEC_PCLMUL))]
-+ "TARGET_PCLMUL"
-+ "pclmulqdq\t{%3, %2, %0|%0, %2, %3}"
-+ [(set_attr "type" "sselog1")
-+ (set_attr "prefix_extra" "1")
-+ (set_attr "mode" "TI")])
---- gcc/config/i386/i386.opt (revision 133901)
-+++ gcc/config/i386/i386.opt (revision 133902)
-@@ -275,3 +275,11 @@ Target Report Var(x86_fused_muladd) Init
- Enable automatic generation of fused floating point multiply-add instructions
- if the ISA supports such instructions. The -mfused-madd option is on by
- default.
-+
-+maes
-+Target Report RejectNegative Var(x86_aes)
-+Support AES built-in functions and code generation
-+
-+mpclmul
-+Target Report RejectNegative Var(x86_pclmul)
-+Support PCLMUL built-in functions and code generation
---- gcc/config/i386/i386.c (revision 133901)
-+++ gcc/config/i386/i386.c (revision 133902)
-@@ -2077,7 +2077,9 @@ override_options (void)
- PTA_NO_SAHF = 1 << 13,
- PTA_SSE4_1 = 1 << 14,
- PTA_SSE4_2 = 1 << 15,
-- PTA_SSE5 = 1 << 16
-+ PTA_SSE5 = 1 << 16,
-+ PTA_AES = 1 << 17,
-+ PTA_PCLMUL = 1 << 18
- };
-
- static struct pta
-@@ -2384,6 +2386,10 @@ override_options (void)
- x86_prefetch_sse = true;
- if (!(TARGET_64BIT && (processor_alias_table[i].flags & PTA_NO_SAHF)))
- x86_sahf = true;
-+ if (processor_alias_table[i].flags & PTA_AES)
-+ x86_aes = true;
-+ if (processor_alias_table[i].flags & PTA_PCLMUL)
-+ x86_pclmul = true;
-
- break;
- }
-@@ -2427,6 +2433,14 @@ override_options (void)
- if (i == pta_size)
- error ("bad value (%s) for -mtune= switch", ix86_tune_string);
-
-+ /* Enable SSE2 if AES or PCLMUL is enabled. */
-+ if ((x86_aes || x86_pclmul)
-+ && !(ix86_isa_flags_explicit & OPTION_MASK_ISA_SSE2))
-+ {
-+ ix86_isa_flags |= OPTION_MASK_ISA_SSE2_SET;
-+ ix86_isa_flags_explicit |= OPTION_MASK_ISA_SSE2_SET;
-+ }
-+
- ix86_tune_mask = 1u << ix86_tune;
- for (i = 0; i < X86_TUNE_LAST; ++i)
- ix86_tune_features[i] &= ix86_tune_mask;
-@@ -17545,6 +17559,17 @@ enum ix86_builtins
-
- IX86_BUILTIN_PCMPGTQ,
-
-+ /* AES instructions */
-+ IX86_BUILTIN_AESENC128,
-+ IX86_BUILTIN_AESENCLAST128,
-+ IX86_BUILTIN_AESDEC128,
-+ IX86_BUILTIN_AESDECLAST128,
-+ IX86_BUILTIN_AESIMC128,
-+ IX86_BUILTIN_AESKEYGENASSIST128,
-+
-+ /* PCLMUL instruction */
-+ IX86_BUILTIN_PCLMULQDQ128,
-+
- /* TFmode support builtins. */
- IX86_BUILTIN_INFQ,
- IX86_BUILTIN_FABSQ,
-@@ -17900,6 +17925,9 @@ static const struct builtin_description
- { OPTION_MASK_ISA_SSE4_1, CODE_FOR_sse4_1_pblendw, "__builtin_ia32_pblendw128", IX86_BUILTIN_PBLENDW128, UNKNOWN, 0 },
- { OPTION_MASK_ISA_ROUND, CODE_FOR_sse4_1_roundsd, 0, IX86_BUILTIN_ROUNDSD, UNKNOWN, 0 },
- { OPTION_MASK_ISA_ROUND, CODE_FOR_sse4_1_roundss, 0, IX86_BUILTIN_ROUNDSS, UNKNOWN, 0 },
-+
-+ /* PCLMUL */
-+ { OPTION_MASK_ISA_SSE2, CODE_FOR_pclmulqdq, 0, IX86_BUILTIN_PCLMULQDQ128, UNKNOWN, 0 },
- };
-
- static const struct builtin_description bdesc_2arg[] =
-@@ -18210,6 +18238,13 @@ static const struct builtin_description
-
- /* SSE4.2 */
- { OPTION_MASK_ISA_SSE4_2, CODE_FOR_sse4_2_gtv2di3, "__builtin_ia32_pcmpgtq", IX86_BUILTIN_PCMPGTQ, UNKNOWN, 0 },
-+
-+ /* AES */
-+ { OPTION_MASK_ISA_SSE2, CODE_FOR_aesenc, 0, IX86_BUILTIN_AESENC128, UNKNOWN, 0 },
-+ { OPTION_MASK_ISA_SSE2, CODE_FOR_aesenclast, 0, IX86_BUILTIN_AESENCLAST128, UNKNOWN, 0 },
-+ { OPTION_MASK_ISA_SSE2, CODE_FOR_aesdec, 0, IX86_BUILTIN_AESDEC128, UNKNOWN, 0 },
-+ { OPTION_MASK_ISA_SSE2, CODE_FOR_aesdeclast, 0, IX86_BUILTIN_AESDECLAST128, UNKNOWN, 0 },
-+ { OPTION_MASK_ISA_SSE2, CODE_FOR_aeskeygenassist, 0, IX86_BUILTIN_AESKEYGENASSIST128, UNKNOWN, 0 },
- };
-
- static const struct builtin_description bdesc_1arg[] =
-@@ -18285,6 +18320,9 @@ static const struct builtin_description
- /* Fake 1 arg builtins with a constant smaller than 8 bits as the 2nd arg. */
- { OPTION_MASK_ISA_SSE4_1, CODE_FOR_sse4_1_roundpd, 0, IX86_BUILTIN_ROUNDPD, UNKNOWN, 0 },
- { OPTION_MASK_ISA_SSE4_1, CODE_FOR_sse4_1_roundps, 0, IX86_BUILTIN_ROUNDPS, UNKNOWN, 0 },
-+
-+ /* AES */
-+ { OPTION_MASK_ISA_SSE2, CODE_FOR_aesimc, 0, IX86_BUILTIN_AESIMC128, UNKNOWN, 0 },
- };
-
- /* SSE5 */
-@@ -19518,6 +19556,25 @@ ix86_init_mmx_sse_builtins (void)
- NULL_TREE);
- def_builtin_const (OPTION_MASK_ISA_SSE4_2 | OPTION_MASK_ISA_64BIT, "__builtin_ia32_crc32di", ftype, IX86_BUILTIN_CRC32DI);
-
-+ /* AES */
-+ if (TARGET_AES)
-+ {
-+ /* Define AES built-in functions only if AES is enabled. */
-+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_aesenc128", v2di_ftype_v2di_v2di, IX86_BUILTIN_AESENC128);
-+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_aesenclast128", v2di_ftype_v2di_v2di, IX86_BUILTIN_AESENCLAST128);
-+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_aesdec128", v2di_ftype_v2di_v2di, IX86_BUILTIN_AESDEC128);
-+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_aesdeclast128", v2di_ftype_v2di_v2di, IX86_BUILTIN_AESDECLAST128);
-+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_aesimc128", v2di_ftype_v2di, IX86_BUILTIN_AESIMC128);
-+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_aeskeygenassist128", v2di_ftype_v2di_int, IX86_BUILTIN_AESKEYGENASSIST128);
-+ }
-+
-+ /* PCLMUL */
-+ if (TARGET_PCLMUL)
-+ {
-+ /* Define PCLMUL built-in function only if PCLMUL is enabled. */
-+ def_builtin_const (OPTION_MASK_ISA_SSE2, "__builtin_ia32_pclmulqdq128", v2di_ftype_v2di_v2di_int, IX86_BUILTIN_PCLMULQDQ128);
-+ }
-+
- /* AMDFAM10 SSE4A New built-ins */
- def_builtin (OPTION_MASK_ISA_SSE4A, "__builtin_ia32_movntsd", void_ftype_pdouble_v2df, IX86_BUILTIN_MOVNTSD);
- def_builtin (OPTION_MASK_ISA_SSE4A, "__builtin_ia32_movntss", void_ftype_pfloat_v4sf, IX86_BUILTIN_MOVNTSS);
-@@ -19793,6 +19850,44 @@ ix86_expand_crc32 (enum insn_code icode,
- return target;
- }
-
-+/* Subroutine of ix86_expand_builtin to take care of binop insns
-+ with an immediate. */
-+
-+static rtx
-+ix86_expand_binop_imm_builtin (enum insn_code icode, tree exp,
-+ rtx target)
-+{
-+ rtx pat;
-+ tree arg0 = CALL_EXPR_ARG (exp, 0);
-+ tree arg1 = CALL_EXPR_ARG (exp, 1);
-+ rtx op0 = expand_normal (arg0);
-+ rtx op1 = expand_normal (arg1);
-+ enum machine_mode tmode = insn_data[icode].operand[0].mode;
-+ enum machine_mode mode0 = insn_data[icode].operand[1].mode;
-+ enum machine_mode mode1 = insn_data[icode].operand[2].mode;
-+
-+ if (! (*insn_data[icode].operand[1].predicate) (op0, mode1))
-+ {
-+ op0 = copy_to_reg (op0);
-+ op0 = simplify_gen_subreg (mode0, op0, GET_MODE (op0), 0);
-+ }
-+
-+ if (! (*insn_data[icode].operand[2].predicate) (op1, mode1))
-+ {
-+ error ("the last operand must be an immediate");
-+ return const0_rtx;
-+ }
-+
-+ target = gen_reg_rtx (V2DImode);
-+ pat = GEN_FCN (icode) (simplify_gen_subreg (tmode, target,
-+ V2DImode, 0),
-+ op0, op1);
-+ if (! pat)
-+ return 0;
-+ emit_insn (pat);
-+ return target;
-+}
-+
- /* Subroutine of ix86_expand_builtin to take care of binop insns. */
-
- static rtx
-@@ -20889,34 +20984,18 @@ ix86_expand_builtin (tree exp, rtx targe
- return target;
-
- case IX86_BUILTIN_PSLLDQI128:
-+ return ix86_expand_binop_imm_builtin (CODE_FOR_sse2_ashlti3,
-+ exp, target);
-+ break;
-+
- case IX86_BUILTIN_PSRLDQI128:
-- icode = (fcode == IX86_BUILTIN_PSLLDQI128 ? CODE_FOR_sse2_ashlti3
-- : CODE_FOR_sse2_lshrti3);
-- arg0 = CALL_EXPR_ARG (exp, 0);
-- arg1 = CALL_EXPR_ARG (exp, 1);
-- op0 = expand_normal (arg0);
-- op1 = expand_normal (arg1);
-- tmode = insn_data[icode].operand[0].mode;
-- mode1 = insn_data[icode].operand[1].mode;
-- mode2 = insn_data[icode].operand[2].mode;
-+ return ix86_expand_binop_imm_builtin (CODE_FOR_sse2_lshrti3,
-+ exp, target);
-+ break;
-
-- if (! (*insn_data[icode].operand[1].predicate) (op0, mode1))
-- {
-- op0 = copy_to_reg (op0);
-- op0 = simplify_gen_subreg (mode1, op0, GET_MODE (op0), 0);
-- }
-- if (! (*insn_data[icode].operand[2].predicate) (op1, mode2))
-- {
-- error ("shift must be an immediate");
-- return const0_rtx;
-- }
-- target = gen_reg_rtx (V2DImode);
-- pat = GEN_FCN (icode) (simplify_gen_subreg (tmode, target, V2DImode, 0),
-- op0, op1);
-- if (! pat)
-- return 0;
-- emit_insn (pat);
-- return target;
-+ case IX86_BUILTIN_AESKEYGENASSIST128:
-+ return ix86_expand_binop_imm_builtin (CODE_FOR_aeskeygenassist,
-+ exp, target);
-
- case IX86_BUILTIN_FEMMS:
- emit_insn (gen_mmx_femms ());
---- gcc/doc/extend.texi (revision 133901)
-+++ gcc/doc/extend.texi (revision 133902)
-@@ -8013,6 +8013,27 @@ depending on the size of @code{unsigned
- Generates the @code{popcntq} machine instruction.
- @end table
-
-+The following built-in functions are available when @option{-maes} is
-+used. All of them generate the machine instruction that is part of the
-+name.
-+
-+@smallexample
-+v2di __builtin_ia32_aesenc128 (v2di, v2di)
-+v2di __builtin_ia32_aesenclast128 (v2di, v2di)
-+v2di __builtin_ia32_aesdec128 (v2di, v2di)
-+v2di __builtin_ia32_aesdeclast128 (v2di, v2di)
-+v2di __builtin_ia32_aeskeygenassist128 (v2di, const int)
-+v2di __builtin_ia32_aesimc128 (v2di)
-+@end smallexample
-+
-+The following built-in function is available when @option{-mpclmul} is
-+used.
-+
-+@table @code
-+@item v2di __builtin_ia32_pclmulqdq128 (v2di, v2di, const int)
-+Generates the @code{pclmulqdq} machine instruction.
-+@end table
-+
- The following built-in functions are available when @option{-msse4a} is used.
- All of them generate the machine instruction that is part of the name.
-
---- gcc/doc/invoke.texi (revision 133901)
-+++ gcc/doc/invoke.texi (revision 133902)
-@@ -551,6 +551,7 @@ Objective-C and Objective-C++ Dialects}.
- -mno-wide-multiply -mrtd -malign-double @gol
- -mpreferred-stack-boundary=@var{num} -mcld -mcx16 -msahf -mrecip @gol
- -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -msse4 @gol
-+-maes -mpclmul @gol
- -msse4a -m3dnow -mpopcnt -mabm -msse5 @gol
- -mthreads -mno-align-stringops -minline-all-stringops @gol
- -mpush-args -maccumulate-outgoing-args -m128bit-long-double @gol
-@@ -10732,6 +10733,10 @@ preferred alignment to @option{-mpreferr
- @itemx -mno-sse4.2
- @item -msse4
- @itemx -mno-sse4
-+@itemx -maes
-+@itemx -mno-aes
-+@itemx -mpclmul
-+@itemx -mno-pclmul
- @item -msse4a
- @item -mno-sse4a
- @item -msse5
-@@ -10749,8 +10754,8 @@ preferred alignment to @option{-mpreferr
- @opindex m3dnow
- @opindex mno-3dnow
- These switches enable or disable the use of instructions in the MMX,
--SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4A, SSE5, ABM or 3DNow!@: extended
--instruction sets.
-+SSE, SSE2, SSE3, SSSE3, SSE4.1, AES, PCLMUL, SSE4A, SSE5, ABM or
-+3DNow!@: extended instruction sets.
- These extensions are also available as built-in functions: see
- @ref{X86 Built-in Functions}, for details of the functions enabled and
- disabled by these switches.
---- gcc/testsuite/gcc.target/i386/sse-14.c (revision 133901)
-+++ gcc/testsuite/gcc.target/i386/sse-14.c (revision 133902)
-@@ -1,14 +1,15 @@
- /* { dg-do compile } */
--/* { dg-options "-O0 -march=k8 -m3dnow -msse4 -msse5" } */
-+/* { dg-options "-O0 -march=k8 -m3dnow -msse4 -msse5 -maes -mpclmul" } */
-
- /* Test that the intrinsics compile without optimization. All of them are
-- defined as inline functions in {,x,e,p,t,s,a,b}mmintrin.h and mm3dnow.h
-+ defined as inline functions in {,x,e,p,t,s,w,a,b}mmintrin.h and mm3dnow.h
- that reference the proper builtin functions. Defining away "extern" and
- "__inline" results in all of them being compiled as proper functions. */
-
- #define extern
- #define __inline
-
-+#include <wmmintrin.h>
- #include <bmmintrin.h>
- #include <smmintrin.h>
- #include <mm3dnow.h>
-@@ -44,6 +45,10 @@
- test_1x (_mm_extracti_si64, __m128i, __m128i, 1, 1)
- test_2x (_mm_inserti_si64, __m128i, __m128i, __m128i, 1, 1)
-
-+/* wmmintrin.h */
-+test_1 (_mm_aeskeygenassist_si128, __m128i, __m128i, 1)
-+test_2 (_mm_clmulepi64_si128, __m128i, __m128i, __m128i, 1)
-+
- /* smmintrin.h */
- test_2 (_mm_blend_epi16, __m128i, __m128i, __m128i, 1)
- test_2 (_mm_blend_ps, __m128, __m128, __m128, 1)
---- gcc/testsuite/gcc.target/i386/i386.exp (revision 133901)
-+++ gcc/testsuite/gcc.target/i386/i386.exp (revision 133902)
-@@ -51,6 +51,34 @@ proc check_effective_target_sse4 { } {
- } "-O2 -msse4.1" ]
- }
-
-+# Return 1 if aes instructions can be compiled.
-+proc check_effective_target_aes { } {
-+ return [check_no_compiler_messages aes object {
-+ typedef long long __m128i __attribute__ ((__vector_size__ (16)));
-+ typedef long long __v2di __attribute__ ((__vector_size__ (16)));
-+
-+ __m128i _mm_aesimc_si128 (__m128i __X)
-+ {
-+ return (__m128i) __builtin_ia32_aesimc128 ((__v2di)__X);
-+ }
-+ } "-O2 -maes" ]
-+}
-+
-+# Return 1 if pclmul instructions can be compiled.
-+proc check_effective_target_pclmul { } {
-+ return [check_no_compiler_messages pclmul object {
-+ typedef long long __m128i __attribute__ ((__vector_size__ (16)));
-+ typedef long long __v2di __attribute__ ((__vector_size__ (16)));
-+
-+ __m128i pclmulqdq_test (__m128i __X, __m128i __Y)
-+ {
-+ return (__m128i) __builtin_ia32_pclmulqdq128 ((__v2di)__X,
-+ (__v2di)__Y,
-+ 1);
-+ }
-+ } "-O2 -mpclmul" ]
-+}
-+
- # Return 1 if sse4a instructions can be compiled.
- proc check_effective_target_sse4a { } {
- return [check_no_compiler_messages sse4a object {
---- gcc/testsuite/gcc.target/i386/aesdeclast.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/aesdeclast.c (revision 133902)
-@@ -0,0 +1,69 @@
-+/* { dg-do run } */
-+/* { dg-require-effective-target aes } */
-+/* { dg-options "-O2 -maes" } */
-+
-+#include <wmmintrin.h>
-+#include <string.h>
-+
-+#include "aes-check.h"
-+
-+extern void abort (void);
-+
-+#define NUM 1024
-+
-+static __m128i src1[NUM];
-+static __m128i src2[NUM];
-+static __m128i edst[NUM];
-+
-+static __m128i resdst[NUM];
-+
-+/* Initialize input/output vectors. (Currently, there is only one set of
-+ input/output vectors). */
-+
-+static void
-+init_data (__m128i *s1, __m128i *s2, __m128i *d)
-+{
-+ int i;
-+
-+ for (i = 0; i < NUM; i++)
-+ {
-+ s1[i] = _mm_setr_epi32 (0x5d53475d, 0x63746f72,
-+ 0x73745665, 0x7b5b5465);
-+ s2[i] = _mm_setr_epi32 (0x726f6e5d, 0x5b477565,
-+ 0x68617929, 0x48692853);
-+ d[i] = _mm_setr_epi32 (0x72a593d0, 0xd410637b,
-+ 0x6b317f95, 0xc5a391ef);
-+ }
-+}
-+
-+static void
-+aes_test (void)
-+{
-+ int i;
-+
-+ init_data (src1, src2, edst);
-+
-+ for (i = 0; i < NUM; i += 16)
-+ {
-+ resdst[i] = _mm_aesdeclast_si128 (src1[i], src2[i]);
-+ resdst[i + 1] = _mm_aesdeclast_si128 (src1[i + 1], src2[i + 1]);
-+ resdst[i + 2] = _mm_aesdeclast_si128 (src1[i + 2], src2[i + 2]);
-+ resdst[i + 3] = _mm_aesdeclast_si128 (src1[i + 3], src2[i + 3]);
-+ resdst[i + 4] = _mm_aesdeclast_si128 (src1[i + 4], src2[i + 4]);
-+ resdst[i + 5] = _mm_aesdeclast_si128 (src1[i + 5], src2[i + 5]);
-+ resdst[i + 6] = _mm_aesdeclast_si128 (src1[i + 6], src2[i + 6]);
-+ resdst[i + 7] = _mm_aesdeclast_si128 (src1[i + 7], src2[i + 7]);
-+ resdst[i + 8] = _mm_aesdeclast_si128 (src1[i + 8], src2[i + 8]);
-+ resdst[i + 9] = _mm_aesdeclast_si128 (src1[i + 9], src2[i + 9]);
-+ resdst[i + 10] = _mm_aesdeclast_si128 (src1[i + 10], src2[i + 10]);
-+ resdst[i + 11] = _mm_aesdeclast_si128 (src1[i + 11], src2[i + 11]);
-+ resdst[i + 12] = _mm_aesdeclast_si128 (src1[i + 12], src2[i + 12]);
-+ resdst[i + 13] = _mm_aesdeclast_si128 (src1[i + 13], src2[i + 13]);
-+ resdst[i + 14] = _mm_aesdeclast_si128 (src1[i + 14], src2[i + 14]);
-+ resdst[i + 15] = _mm_aesdeclast_si128 (src1[i + 15], src2[i + 15]);
-+ }
-+
-+ for (i = 0; i < NUM; i++)
-+ if (memcmp (edst + i, resdst + i, sizeof (__m128i)))
-+ abort ();
-+}
---- gcc/testsuite/gcc.target/i386/pclmulqdq.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/pclmulqdq.c (revision 133902)
-@@ -0,0 +1,87 @@
-+/* { dg-do run } */
-+/* { dg-require-effective-target pclmul } */
-+/* { dg-options "-O2 -mpclmul" } */
-+
-+#include <wmmintrin.h>
-+#include <string.h>
-+
-+#include "pclmul-check.h"
-+
-+extern void abort (void);
-+
-+#define NUM 1024
-+
-+static __m128i s1[NUM];
-+static __m128i s2[NUM];
-+/* We need this array to generate mem form of inst */
-+static __m128i s2m[NUM];
-+
-+static __m128i e_00[NUM];
-+static __m128i e_01[NUM];
-+static __m128i e_10[NUM];
-+static __m128i e_11[NUM];
-+
-+static __m128i d_00[NUM];
-+static __m128i d_01[NUM];
-+static __m128i d_10[NUM];
-+static __m128i d_11[NUM];
-+
-+/* Initialize input/output vectors. (Currently, there is only one set
-+ of input/output vectors). */
-+static void
-+init_data (__m128i *ls1, __m128i *ls2, __m128i *le_00, __m128i *le_01,
-+ __m128i *le_10, __m128i *le_11)
-+{
-+ int i;
-+
-+ for (i = 0; i < NUM; i++)
-+ {
-+ ls1[i] = _mm_set_epi32 (0x7B5B5465, 0x73745665,
-+ 0x63746F72, 0x5D53475D);
-+ ls2[i] = _mm_set_epi32 (0x48692853, 0x68617929,
-+ 0x5B477565, 0x726F6E5D);
-+ s2m[i] = _mm_set_epi32 (0x48692853, 0x68617929,
-+ 0x5B477565, 0x726F6E5D);
-+ le_00[i] = _mm_set_epi32 (0x1D4D84C8, 0x5C3440C0,
-+ 0x929633D5, 0xD36F0451);
-+ le_01[i] = _mm_set_epi32 (0x1A2BF6DB, 0x3A30862F,
-+ 0xBABF262D, 0xF4B7D5C9);
-+ le_10[i] = _mm_set_epi32 (0x1BD17C8D, 0x556AB5A1,
-+ 0x7FA540AC, 0x2A281315);
-+ le_11[i] = _mm_set_epi32 (0x1D1E1F2C, 0x592E7C45,
-+ 0xD66EE03E, 0x410FD4ED);
-+ }
-+}
-+
-+static void
-+pclmul_test (void)
-+{
-+ int i;
-+
-+ init_data (s1, s2, e_00, e_01, e_10, e_11);
-+
-+ for (i = 0; i < NUM; i += 2)
-+ {
-+ d_00[i] = _mm_clmulepi64_si128 (s1[i], s2m[i], 0x00);
-+ d_01[i] = _mm_clmulepi64_si128 (s1[i], s2[i], 0x01);
-+ d_10[i] = _mm_clmulepi64_si128 (s1[i], s2[i], 0x10);
-+ d_11[i] = _mm_clmulepi64_si128 (s1[i], s2[i], 0x11);
-+
-+ d_11[i + 1] = _mm_clmulepi64_si128 (s1[i + 1], s2[i + 1], 0x11);
-+ d_00[i + 1] = _mm_clmulepi64_si128 (s1[i + 1], s2[i + 1], 0x00);
-+ d_10[i + 1] = _mm_clmulepi64_si128 (s1[i + 1], s2m[i + 1], 0x10);
-+ d_01[i + 1] = _mm_clmulepi64_si128 (s1[i + 1], s2[i + 1], 0x01);
-+ }
-+
-+ for (i = 0; i < NUM; i++)
-+ {
-+ if (memcmp (d_00 + i, e_00 + i, sizeof (__m128i)))
-+ abort ();
-+ if (memcmp (d_01 + i, e_01 + i, sizeof (__m128i)))
-+ abort ();
-+ if (memcmp (d_10 + i, e_10 + i, sizeof (__m128i)))
-+ abort ();
-+ if (memcmp(d_11 + i, e_11 + i, sizeof (__m128i)))
-+ abort ();
-+ }
-+}
---- gcc/testsuite/gcc.target/i386/aes-check.h (revision 0)
-+++ gcc/testsuite/gcc.target/i386/aes-check.h (revision 133902)
-@@ -0,0 +1,30 @@
-+#include <stdio.h>
-+#include <stdlib.h>
-+
-+#include "cpuid.h"
-+
-+static void aes_test (void);
-+
-+int
-+main ()
-+{
-+ unsigned int eax, ebx, ecx, edx;
-+
-+ if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-+ return 0;
-+
-+ /* Run AES test only if host has AES support. */
-+ if (ecx & bit_AES)
-+ {
-+ aes_test ();
-+#ifdef DEBUG
-+ printf ("PASSED\n");
-+#endif
-+ }
-+#ifdef DEBUG
-+ else
-+ printf ("SKIPPED\n");
-+#endif
-+
-+ return 0;
-+}
---- gcc/testsuite/gcc.target/i386/pclmul-check.h (revision 0)
-+++ gcc/testsuite/gcc.target/i386/pclmul-check.h (revision 133902)
-@@ -0,0 +1,30 @@
-+#include <stdio.h>
-+#include <stdlib.h>
-+
-+#include "cpuid.h"
-+
-+static void pclmul_test (void);
-+
-+int
-+main ()
-+{
-+ unsigned int eax, ebx, ecx, edx;
-+
-+ if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
-+ return 0;
-+
-+ /* Run PCLMULQDQ test only if host has PCLMULQDQ support. */
-+ if (ecx & bit_PCLMUL)
-+ {
-+ pclmul_test ();
-+#ifdef DEBUG
-+ printf ("PASSED\n");
-+#endif
-+ }
-+#ifdef DEBUG
-+ else
-+ printf ("SKIPPED\n");
-+#endif
-+
-+ return 0;
-+}
---- gcc/testsuite/gcc.target/i386/aeskeygenassist.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/aeskeygenassist.c (revision 133902)
-@@ -0,0 +1,66 @@
-+/* { dg-do run } */
-+/* { dg-require-effective-target aes } */
-+/* { dg-options "-O2 -maes" } */
-+
-+#include <wmmintrin.h>
-+#include <string.h>
-+
-+#include "aes-check.h"
-+
-+extern void abort (void);
-+
-+#define NUM 1024
-+#define IMM8 1
-+
-+static __m128i src1[NUM];
-+static __m128i edst[NUM];
-+
-+static __m128i resdst[NUM];
-+
-+/* Initialize input/output vectors. (Currently, there is only one set
-+ of input/output vectors). */
-+
-+static void
-+init_data (__m128i *s1, __m128i *d)
-+{
-+ int i;
-+ for (i = 0; i < NUM; i++)
-+ {
-+ s1[i] = _mm_setr_epi32 (0x16157e2b, 0xa6d2ae28,
-+ 0x8815f7ab, 0x3c4fcf09);
-+ d[i] = _mm_setr_epi32 (0x24b5e434, 0x3424b5e5,
-+ 0xeb848a01, 0x01eb848b);
-+ }
-+}
-+
-+static void
-+aes_test (void)
-+{
-+ int i;
-+
-+ init_data (src1, edst);
-+
-+ for (i = 0; i < NUM; i += 16)
-+ {
-+ resdst[i] = _mm_aeskeygenassist_si128 (src1[i], IMM8);
-+ resdst[i + 1] = _mm_aeskeygenassist_si128 (src1[i + 1], IMM8);
-+ resdst[i + 2] = _mm_aeskeygenassist_si128 (src1[i + 2], IMM8);
-+ resdst[i + 3] = _mm_aeskeygenassist_si128 (src1[i + 3], IMM8);
-+ resdst[i + 4] = _mm_aeskeygenassist_si128 (src1[i + 4], IMM8);
-+ resdst[i + 5] = _mm_aeskeygenassist_si128 (src1[i + 5], IMM8);
-+ resdst[i + 6] = _mm_aeskeygenassist_si128 (src1[i + 6], IMM8);
-+ resdst[i + 7] = _mm_aeskeygenassist_si128 (src1[i + 7], IMM8);
-+ resdst[i + 8] = _mm_aeskeygenassist_si128 (src1[i + 8], IMM8);
-+ resdst[i + 9] = _mm_aeskeygenassist_si128 (src1[i + 9], IMM8);
-+ resdst[i + 10] = _mm_aeskeygenassist_si128 (src1[i + 10], IMM8);
-+ resdst[i + 11] = _mm_aeskeygenassist_si128 (src1[i + 11], IMM8);
-+ resdst[i + 12] = _mm_aeskeygenassist_si128 (src1[i + 12], IMM8);
-+ resdst[i + 13] = _mm_aeskeygenassist_si128 (src1[i + 13], IMM8);
-+ resdst[i + 14] = _mm_aeskeygenassist_si128 (src1[i + 14], IMM8);
-+ resdst[i + 15] = _mm_aeskeygenassist_si128 (src1[i + 15], IMM8);
-+ }
-+
-+ for (i = 0; i < NUM; i++)
-+ if (memcmp(edst + i, resdst + i, sizeof (__m128i)))
-+ abort ();
-+}
---- gcc/testsuite/gcc.target/i386/aesenclast.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/aesenclast.c (revision 133902)
-@@ -0,0 +1,68 @@
-+/* { dg-do run } */
-+/* { dg-require-effective-target aes } */
-+/* { dg-options "-O2 -maes" } */
-+
-+#include <wmmintrin.h>
-+#include <string.h>
-+
-+#include "aes-check.h"
-+
-+extern void abort (void);
-+
-+#define NUM 1024
-+
-+static __m128i src1[NUM];
-+static __m128i src2[NUM];
-+static __m128i edst[NUM];
-+
-+static __m128i resdst[NUM];
-+
-+/* Initialize input/output vectors. (Currently, there is only one
-+ set of input/output vectors). */
-+
-+static void
-+init_data (__m128i *s1, __m128i *s2, __m128i *d)
-+{
-+ int i;
-+ for (i = 0; i < NUM; i++)
-+ {
-+ s1[i] = _mm_setr_epi32 (0x5d53475d, 0x63746f72,
-+ 0x73745665, 0x7b5b5465);
-+ s2[i] = _mm_setr_epi32 (0x726f6e5d, 0x5b477565,
-+ 0x68617929, 0x48692853);
-+ d[i] = _mm_setr_epi32 (0x53fdc611, 0x177ec425,
-+ 0x938c5964, 0xc7fb881e);
-+ }
-+}
-+
-+static void
-+aes_test (void)
-+{
-+ int i;
-+
-+ init_data (src1, src2, edst);
-+
-+ for (i = 0; i < NUM; i += 16)
-+ {
-+ resdst[i] = _mm_aesenclast_si128 (src1[i], src2[i]);
-+ resdst[i + 1] = _mm_aesenclast_si128 (src1[i + 1], src2[i + 1]);
-+ resdst[i + 2] = _mm_aesenclast_si128 (src1[i + 2], src2[i + 2]);
-+ resdst[i + 3] = _mm_aesenclast_si128 (src1[i + 3], src2[i + 3]);
-+ resdst[i + 4] = _mm_aesenclast_si128 (src1[i + 4], src2[i + 4]);
-+ resdst[i + 5] = _mm_aesenclast_si128 (src1[i + 5], src2[i + 5]);
-+ resdst[i + 6] = _mm_aesenclast_si128 (src1[i + 6], src2[i + 6]);
-+ resdst[i + 7] = _mm_aesenclast_si128 (src1[i + 7], src2[i + 7]);
-+ resdst[i + 8] = _mm_aesenclast_si128 (src1[i + 8], src2[i + 8]);
-+ resdst[i + 9] = _mm_aesenclast_si128 (src1[i + 9], src2[i + 9]);
-+ resdst[i + 10] = _mm_aesenclast_si128 (src1[i + 10], src2[i + 10]);
-+ resdst[i + 11] = _mm_aesenclast_si128 (src1[i + 11], src2[i + 11]);
-+ resdst[i + 12] = _mm_aesenclast_si128 (src1[i + 12], src2[i + 12]);
-+ resdst[i + 13] = _mm_aesenclast_si128 (src1[i + 13], src2[i + 13]);
-+ resdst[i + 14] = _mm_aesenclast_si128 (src1[i + 14], src2[i + 14]);
-+ resdst[i + 15] = _mm_aesenclast_si128 (src1[i + 15], src2[i + 15]);
-+ }
-+
-+ for (i = 0; i < NUM; i++)
-+ if (memcmp(edst + i, resdst + i, sizeof (__m128i)))
-+ abort ();
-+}
---- gcc/testsuite/gcc.target/i386/aesimc.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/aesimc.c (revision 133902)
-@@ -0,0 +1,66 @@
-+/* { dg-do run } */
-+/* { dg-require-effective-target aes } */
-+/* { dg-options "-O2 -maes" } */
-+
-+#include <wmmintrin.h>
-+#include <string.h>
-+
-+#include "aes-check.h"
-+
-+extern void abort (void);
-+
-+#define NUM 1024
-+
-+static __m128i src1[NUM];
-+static __m128i edst[NUM];
-+
-+static __m128i resdst[NUM];
-+
-+/* Initialize input/output vectors. (Currently, there is only one set
-+ of input/output vectors). */
-+
-+static void
-+init_data (__m128i *s1, __m128i *d)
-+{
-+ int i;
-+
-+ for (i = 0; i < NUM; i++)
-+ {
-+ s1[i] = _mm_setr_epi32 (0x5d53475d, 0x63746f72,
-+ 0x73745665, 0x7b5b5465);
-+ d[i] = _mm_setr_epi32 (0x81c3b3e5, 0x2b18330a,
-+ 0x44b109c8, 0x627a6f66);
-+ }
-+}
-+
-+static void
-+aes_test (void)
-+{
-+ int i;
-+
-+ init_data (src1, edst);
-+
-+ for (i = 0; i < NUM; i += 16)
-+ {
-+ resdst[i] = _mm_aesimc_si128 (src1[i]);
-+ resdst[i + 1] = _mm_aesimc_si128 (src1[i + 1]);
-+ resdst[i + 2] = _mm_aesimc_si128 (src1[i + 2]);
-+ resdst[i + 3] = _mm_aesimc_si128 (src1[i + 3]);
-+ resdst[i + 4] = _mm_aesimc_si128 (src1[i + 4]);
-+ resdst[i + 5] = _mm_aesimc_si128 (src1[i + 5]);
-+ resdst[i + 6] = _mm_aesimc_si128 (src1[i + 6]);
-+ resdst[i + 7] = _mm_aesimc_si128 (src1[i + 7]);
-+ resdst[i + 8] = _mm_aesimc_si128 (src1[i + 8]);
-+ resdst[i + 9] = _mm_aesimc_si128 (src1[i + 9]);
-+ resdst[i + 10] = _mm_aesimc_si128 (src1[i + 10]);
-+ resdst[i + 11] = _mm_aesimc_si128 (src1[i + 11]);
-+ resdst[i + 12] = _mm_aesimc_si128 (src1[i + 12]);
-+ resdst[i + 13] = _mm_aesimc_si128 (src1[i + 13]);
-+ resdst[i + 14] = _mm_aesimc_si128 (src1[i + 14]);
-+ resdst[i + 15] = _mm_aesimc_si128 (src1[i + 15]);
-+ }
-+
-+ for (i = 0; i < NUM; i++)
-+ if (memcmp(edst + i, resdst + i, sizeof (__m128i)))
-+ abort ();
-+}
---- gcc/testsuite/gcc.target/i386/aesenc.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/aesenc.c (revision 133902)
-@@ -0,0 +1,68 @@
-+/* { dg-do run } */
-+/* { dg-require-effective-target aes } */
-+/* { dg-options "-O2 -maes" } */
-+
-+#include <wmmintrin.h>
-+#include <string.h>
-+
-+#include "aes-check.h"
-+
-+extern void abort (void);
-+
-+#define NUM 1024
-+
-+static __m128i src1[NUM];
-+static __m128i src2[NUM];
-+static __m128i edst[NUM];
-+
-+static __m128i resdst[NUM];
-+
-+/* Initialize input/output vectors. (Currently, there is only one set
-+ of input/output vectors). */
-+
-+static void
-+init_data (__m128i *s1, __m128i *s2, __m128i *d)
-+{
-+ int i;
-+ for (i = 0; i < NUM; i++)
-+ {
-+ s1[i] = _mm_setr_epi32 (0x5d53475d, 0x63746f72,
-+ 0x73745665, 0x7b5b5465);
-+ s2[i] = _mm_setr_epi32 (0x726f6e5d, 0x5b477565,
-+ 0x68617929, 0x48692853);
-+ d[i] = _mm_setr_epi32 (0xded7e595, 0x8b104b58,
-+ 0x9fdba3c5, 0xa8311c2f);
-+ }
-+}
-+
-+static void
-+aes_test (void)
-+{
-+ int i;
-+
-+ init_data (src1, src2, edst);
-+
-+ for (i = 0; i < NUM; i += 16)
-+ {
-+ resdst[i] = _mm_aesenc_si128 (src1[i], src2[i]);
-+ resdst[i + 1] = _mm_aesenc_si128 (src1[i + 1], src2[i + 1]);
-+ resdst[i + 2] = _mm_aesenc_si128 (src1[i + 2], src2[i + 2]);
-+ resdst[i + 3] = _mm_aesenc_si128 (src1[i + 3], src2[i + 3]);
-+ resdst[i + 4] = _mm_aesenc_si128 (src1[i + 4], src2[i + 4]);
-+ resdst[i + 5] = _mm_aesenc_si128 (src1[i + 5], src2[i + 5]);
-+ resdst[i + 6] = _mm_aesenc_si128 (src1[i + 6], src2[i + 6]);
-+ resdst[i + 7] = _mm_aesenc_si128 (src1[i + 7], src2[i + 7]);
-+ resdst[i + 8] = _mm_aesenc_si128 (src1[i + 8], src2[i + 8]);
-+ resdst[i + 9] = _mm_aesenc_si128 (src1[i + 9], src2[i + 9]);
-+ resdst[i + 10] = _mm_aesenc_si128 (src1[i + 10], src2[i + 10]);
-+ resdst[i + 11] = _mm_aesenc_si128 (src1[i + 11], src2[i + 11]);
-+ resdst[i + 12] = _mm_aesenc_si128 (src1[i + 12], src2[i + 12]);
-+ resdst[i + 13] = _mm_aesenc_si128 (src1[i + 13], src2[i + 13]);
-+ resdst[i + 14] = _mm_aesenc_si128 (src1[i + 14], src2[i + 14]);
-+ resdst[i + 15] = _mm_aesenc_si128 (src1[i + 15], src2[i + 15]);
-+ }
-+
-+ for (i = 0; i < NUM; i++)
-+ if (memcmp (edst + i, resdst + i, sizeof (__m128i)))
-+ abort ();
-+}
---- gcc/testsuite/gcc.target/i386/sse-13.c (revision 133901)
-+++ gcc/testsuite/gcc.target/i386/sse-13.c (revision 133902)
-@@ -1,8 +1,8 @@
- /* { dg-do compile } */
--/* { dg-options "-O2 -march=k8 -m3dnow -msse4 -msse5" } */
-+/* { dg-options "-O2 -march=k8 -m3dnow -msse4 -msse5 -maes -mpclmul" } */
-
- /* Test that the intrinsics compile with optimization. All of them are
-- defined as inline functions in {,x,e,p,t,s,a,b}mmintrin.h and mm3dnow.h
-+ defined as inline functions in {,x,e,p,t,s,w,a,b}mmintrin.h and mm3dnow.h
- that reference the proper builtin functions. Defining away "extern" and
- "__inline" results in all of them being compiled as proper functions. */
-
-@@ -15,6 +15,10 @@
- #define __builtin_ia32_extrqi(X, I, L) __builtin_ia32_extrqi(X, 1, 1)
- #define __builtin_ia32_insertqi(X, Y, I, L) __builtin_ia32_insertqi(X, Y, 1, 1)
-
-+/* wmmintrin.h */
-+#define __builtin_ia32_aeskeygenassist128(X, C) __builtin_ia32_aeskeygenassist128(X, 1)
-+#define __builtin_ia32_pclmulqdq128(X, Y, I) __builtin_ia32_pclmulqdq128(X, Y, 1)
-+
- /* smmintrin.h */
- #define __builtin_ia32_pblendw128(X, Y, M) __builtin_ia32_pblendw128 (X, Y, 1)
- #define __builtin_ia32_blendps(X, Y, M) __builtin_ia32_blendps(X, Y, 1)
-@@ -92,6 +96,7 @@
- #define __builtin_ia32_protdi(A, B) __builtin_ia32_protdi(A,1)
- #define __builtin_ia32_protqi(A, B) __builtin_ia32_protqi(A,1)
-
-+#include <wmmintrin.h>
- #include <bmmintrin.h>
- #include <smmintrin.h>
- #include <mm3dnow.h>
---- gcc/testsuite/gcc.target/i386/aesdec.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/aesdec.c (revision 133902)
-@@ -0,0 +1,67 @@
-+/* { dg-do run } */
-+/* { dg-require-effective-target aes } */
-+/* { dg-options "-O2 -maes" } */
-+
-+#include <wmmintrin.h>
-+#include <string.h>
-+
-+#include "aes-check.h"
-+
-+extern void abort (void);
-+
-+#define NUM 1024
-+
-+static __m128i src1[NUM];
-+static __m128i src2[NUM];
-+static __m128i edst[NUM];
-+
-+static __m128i resdst[NUM];
-+
-+/* Initialize input/output vectors. (Currently, there is only one set
-+ of input/output vectors). */
-+static void
-+init_data (__m128i *s1, __m128i *s2, __m128i *d)
-+{
-+ int i;
-+ for (i = 0; i < NUM; i++)
-+ {
-+ s1[i] = _mm_setr_epi32 (0x5d53475d, 0x63746f72,
-+ 0x73745665, 0x7b5b5465);
-+ s2[i] = _mm_setr_epi32 (0x726f6e5d, 0x5b477565,
-+ 0x68617929, 0x48692853);
-+ d[i] = _mm_setr_epi32 (0xb730392a, 0xb58eb95e,
-+ 0xfaea2787, 0x138ac342);
-+ }
-+}
-+
-+static void
-+aes_test (void)
-+{
-+ int i;
-+
-+ init_data (src1, src2, edst);
-+
-+ for (i = 0; i < NUM; i += 16)
-+ {
-+ resdst[i] = _mm_aesdec_si128 (src1[i], src2[i]);
-+ resdst[i + 1] = _mm_aesdec_si128 (src1[i + 1], src2[i + 1]);
-+ resdst[i + 2] = _mm_aesdec_si128 (src1[i + 2], src2[i + 2]);
-+ resdst[i + 3] = _mm_aesdec_si128 (src1[i + 3], src2[i + 3]);
-+ resdst[i + 4] = _mm_aesdec_si128 (src1[i + 4], src2[i + 4]);
-+ resdst[i + 5] = _mm_aesdec_si128 (src1[i + 5], src2[i + 5]);
-+ resdst[i + 6] = _mm_aesdec_si128 (src1[i + 6], src2[i + 6]);
-+ resdst[i + 7] = _mm_aesdec_si128 (src1[i + 7], src2[i + 7]);
-+ resdst[i + 8] = _mm_aesdec_si128 (src1[i + 8], src2[i + 8]);
-+ resdst[i + 9] = _mm_aesdec_si128 (src1[i + 9], src2[i + 9]);
-+ resdst[i + 10] = _mm_aesdec_si128 (src1[i + 10], src2[i + 10]);
-+ resdst[i + 11] = _mm_aesdec_si128 (src1[i + 11], src2[i + 11]);
-+ resdst[i + 12] = _mm_aesdec_si128 (src1[i + 12], src2[i + 12]);
-+ resdst[i + 13] = _mm_aesdec_si128 (src1[i + 13], src2[i + 13]);
-+ resdst[i + 14] = _mm_aesdec_si128 (src1[i + 14], src2[i + 14]);
-+ resdst[i + 15] = _mm_aesdec_si128 (src1[i + 15], src2[i + 15]);
-+ }
-+
-+ for (i = 0; i < NUM; i++)
-+ if (memcmp (edst + i, resdst + i, sizeof (__m128i)))
-+ abort ();
-+}
---- gcc/testsuite/g++.dg/other/i386-2.C (revision 133901)
-+++ gcc/testsuite/g++.dg/other/i386-2.C (revision 133902)
-@@ -1,8 +1,9 @@
--/* Test that {,x,e,p,t,s,a,b}mmintrin.h, mm3dnow.h and mm_malloc.h are
-+/* Test that {,x,e,p,t,s,w,a,b}mmintrin.h, mm3dnow.h and mm_malloc.h are
- usable with -O -pedantic-errors. */
- /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
--/* { dg-options "-O -pedantic-errors -march=k8 -m3dnow -msse4 -msse5" } */
-+/* { dg-options "-O -pedantic-errors -march=k8 -m3dnow -msse4 -msse5 -maes -mpclmul" } */
-
-+#include <wmmintrin.h>
- #include <bmmintrin.h>
- #include <smmintrin.h>
- #include <mm3dnow.h>
---- gcc/testsuite/g++.dg/other/i386-3.C (revision 133901)
-+++ gcc/testsuite/g++.dg/other/i386-3.C (revision 133902)
-@@ -1,8 +1,9 @@
--/* Test that {,x,e,p,t,s,a,b}mmintrin.h, mm3dnow.h and mm_malloc.h are
-+/* Test that {,x,e,p,t,s,w,a,b}mmintrin.h, mm3dnow.h and mm_malloc.h are
- usable with -O -fkeep-inline-functions. */
- /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
--/* { dg-options "-O -fkeep-inline-functions -march=k8 -m3dnow -msse4 -msse5" } */
-+/* { dg-options "-O -fkeep-inline-functions -march=k8 -m3dnow -maes -mpclmul -msse4 -msse5" } */
-
-+#include <wmmintrin.h>
- #include <bmmintrin.h>
- #include <smmintrin.h>
- #include <mm3dnow.h>
diff --git a/gcc43-altivec-tests.patch b/gcc43-altivec-tests.patch
deleted file mode 100644
index 0b7a456..0000000
--- a/gcc43-altivec-tests.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-2008-08-26 Janis Johnson <janis187@us.ibm.com>
-
- * g++.dg/ext/altivec-3.C: Move AltiVec code out of main.
-
-2008-04-04 Janis Johnson <janis187@us.ibm.com>
-
- * gcc.dg/var-expand3.c: Skip for powerpc-linux if not on AltiVec HW.
-
---- gcc/testsuite/g++.dg/ext/altivec-3.C (revision 139609)
-+++ gcc/testsuite/g++.dg/ext/altivec-3.C (revision 139610)
-@@ -120,16 +120,19 @@ void baz2 (int i, ... )
- CHECK_INVARIANT (vec_all_eq (vxi.v, vx_g.v));
- }
-
--int main(void)
-+void main1(void)
- {
- CHECK_INVARIANT (sizeof(struct foo) == 8 && sizeof(struct vfoo) == 48);
-
-- altivec_check();
--
- bar(i_1, x_g, (short)i_2, (float)d_2, ld_1, (char)i_1, d_3);
- baz(i_1, v_g, i_1, vx_g, i_1, v2_g, i_1, vx2_g);
- quux(i_1, v_g, v_g);
- baz2(i_1, vx_g);
--
-+}
-+
-+int main(void)
-+{
-+ altivec_check();
-+ main1();
- return 0;
- }
---- gcc/testsuite/gcc.dg/var-expand3.c (revision 133910)
-+++ gcc/testsuite/gcc.dg/var-expand3.c (revision 133911)
-@@ -1,4 +1,4 @@
--/* { dg-do run { target { powerpc*-*-* && powerpc_altivec_ok } } }} */
-+/* { dg-do run { target { powerpc*-*-* && vmx_hw } } }} */
- /* { dg-options "-O2 -funroll-loops -ffast-math -fvariable-expansion-in-unroller -maltivec -dL" } */
-
- #include "altivec.h"
diff --git a/gcc43-build-id.patch b/gcc43-build-id.patch
deleted file mode 100644
index 3f9a415..0000000
--- a/gcc43-build-id.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-2007-07-22 Roland McGrath <roland@redhat.com>
-
- * config/rs6000/sysv4.h (LINK_EH_SPEC): Add --build-id for
- non-relocatable link.
- * config/linux.h (LINK_EH_SPEC): Likewise.
- * config/sparc/linux.h (LINK_EH_SPEC): Likewise.
- * config/sparc/linux64.h (LINK_EH_SPEC): Likewise.
- * config/alpha/elf.h (LINK_EH_SPEC): Likewise.
- * config/ia64/linux.h (LINK_EH_SPEC): Likewise.
-
---- gcc/config/rs6000/sysv4.h.~1~
-+++ gcc/config/rs6000/sysv4.h
-@@ -906,7 +906,7 @@ extern int fixuplabelno;
- %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}"
-
- #if defined(HAVE_LD_EH_FRAME_HDR)
--# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
- #endif
-
- #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
---- gcc/config/linux.h.~1~
-+++ gcc/config/linux.h
-@@ -85,7 +85,7 @@ Boston, MA 02110-1301, USA. */
- } while (0)
-
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
- #endif
-
- /* Define this so we can compile MS code for use with WINE. */
---- gcc/config/sparc/linux64.h.~1~
-+++ gcc/config/sparc/linux64.h
-@@ -316,7 +316,7 @@ do { \
- #define DITF_CONVERSION_LIBFUNCS 1
-
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
- #endif
- \f
- #ifdef HAVE_AS_TLS
---- gcc/config/sparc/linux.h.~1~
-+++ gcc/config/sparc/linux.h
-@@ -188,7 +188,7 @@ do { \
- #define DITF_CONVERSION_LIBFUNCS 1
-
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
- #endif
- \f
- #ifdef HAVE_AS_TLS
---- gcc/config/alpha/elf.h.~1~
-+++ gcc/config/alpha/elf.h
-@@ -453,5 +453,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 "%{!static:--eh-frame-hdr} %{!r:--build-id} "
- #endif
---- gcc/config/ia64/linux.h.~1~
-+++ gcc/config/ia64/linux.h
-@@ -56,7 +56,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 "%{!r:--build-id} "
-
- #define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h"
-
diff --git a/gcc43-c++-builtin-redecl.patch b/gcc43-c++-builtin-redecl.patch
deleted file mode 100644
index 77655ad..0000000
--- a/gcc43-c++-builtin-redecl.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-2007-10-02 Jakub Jelinek <jakub@redhat.com>
-
- * decl.c (duplicate_decls): When redeclaring a builtin function,
- keep the merged decl builtin whenever types match, even if new
- decl defines a function.
-
- * gcc.dg/builtins-65.c: New test.
- * g++.dg/ext/builtin10.C: New test.
-
---- gcc/cp/decl.c.jj 2007-10-01 22:11:09.000000000 +0200
-+++ gcc/cp/decl.c 2007-10-02 11:39:46.000000000 +0200
-@@ -1988,23 +1988,21 @@ duplicate_decls (tree newdecl, tree oldd
- DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl);
- DECL_RESULT (olddecl) = DECL_RESULT (newdecl);
- }
-+ /* If redeclaring a builtin function, it stays built in. */
-+ if (types_match && DECL_BUILT_IN (olddecl))
-+ {
-+ DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
-+ DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
-+ /* If we're keeping the built-in definition, keep the rtl,
-+ regardless of declaration matches. */
-+ COPY_DECL_RTL (olddecl, newdecl);
-+ }
- if (new_defines_function)
- /* If defining a function declared with other language
- linkage, use the previously declared language linkage. */
- SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl));
- else if (types_match)
- {
-- /* If redeclaring a builtin function, and not a definition,
-- it stays built in. */
-- if (DECL_BUILT_IN (olddecl))
-- {
-- DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
-- DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
-- /* If we're keeping the built-in definition, keep the rtl,
-- regardless of declaration matches. */
-- COPY_DECL_RTL (olddecl, newdecl);
-- }
--
- DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
- /* Don't clear out the arguments if we're redefining a function. */
- if (DECL_ARGUMENTS (olddecl))
---- gcc/testsuite/gcc.dg/builtins-65.c.jj 2007-10-02 11:23:51.000000000 +0200
-+++ gcc/testsuite/gcc.dg/builtins-65.c 2007-10-02 11:24:12.000000000 +0200
-@@ -0,0 +1,25 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2" } */
-+
-+typedef __SIZE_TYPE__ size_t;
-+extern void __chk_fail (void);
-+extern int snprintf (char *, size_t, const char *, ...);
-+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
-+{
-+ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
-+ __chk_fail ();
-+ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
-+}
-+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
-+
-+char buf[10];
-+
-+int
-+main (void)
-+{
-+ snprintf (buf, 10, "%d%d\n", 10, 10);
-+ return 0;
-+}
-+
-+/* { dg-final { scan-assembler "mysnprintf" } } */
-+/* { dg-final { scan-assembler-not "__chk_fail" } } */
---- gcc/testsuite/g++.dg/ext/builtin10.C.jj 2007-10-02 11:19:45.000000000 +0200
-+++ gcc/testsuite/g++.dg/ext/builtin10.C 2007-10-02 11:23:26.000000000 +0200
-@@ -0,0 +1,27 @@
-+// { dg-do compile }
-+// { dg-options "-O2" }
-+
-+typedef __SIZE_TYPE__ size_t;
-+extern "C" {
-+extern void __chk_fail (void);
-+extern int snprintf (char *, size_t, const char *, ...);
-+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
-+{
-+ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
-+ __chk_fail ();
-+ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
-+}
-+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
-+}
-+
-+char buf[10];
-+
-+int
-+main (void)
-+{
-+ snprintf (buf, 10, "%d%d\n", 10, 10);
-+ return 0;
-+}
-+
-+// { dg-final { scan-assembler "mysnprintf" } }
-+// { dg-final { scan-assembler-not "__chk_fail" } }
diff --git a/gcc43-i386-libgomp.patch b/gcc43-i386-libgomp.patch
deleted file mode 100644
index 2ad3b24..0000000
--- a/gcc43-i386-libgomp.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-Build i386.rpm libgomp and libsupc++.a(guard.o) as i486+, pre-i486
-hardware isn't supported because NPTL doesn't support it anyway.
-
---- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100
-+++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100
-@@ -44,14 +44,14 @@ if test $enable_linux_futex = yes; then
- ;;
-
- # Note that bare i386 is not included here. We need cmpxchg.
-- i[456]86-*-linux*)
-+ i[3456]86-*-linux*)
- config_path="linux/x86 linux posix"
- case " ${CC} ${CFLAGS} " in
- *" -m64 "*)
- ;;
- *)
- if test -z "$with_arch"; then
-- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
-+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
- fi
- esac
- ;;
-@@ -63,7 +63,7 @@ if test $enable_linux_futex = yes; then
- config_path="linux/x86 linux posix"
- case " ${CC} ${CFLAGS} " in
- *" -m32 "*)
-- XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686"
-+ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
- ;;
- esac
- ;;
---- libstdc++-v3/libsupc++/guard.cc.jj 2008-03-01 00:58:24.000000000 +0100
-+++ libstdc++-v3/libsupc++/guard.cc 2008-03-27 14:08:44.000000000 +0100
-@@ -35,6 +35,27 @@
- #include <new>
- #include <ext/atomicity.h>
- #include <ext/concurrence.h>
-+#if defined __i386__ && !defined _GLIBCXX_ATOMIC_BUILTINS
-+# define _GLIBCXX_ATOMIC_BUILTINS 1
-+# define __sync_val_compare_and_swap(a, b, c) \
-+ ({ \
-+ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \
-+ int sltas; \
-+ __asm __volatile ("lock; cmpxchgl %3, (%1)" \
-+ : "=a" (sltas) \
-+ : "r" (a), "0" (b), "r" (c) : "memory"); \
-+ sltas; \
-+ })
-+# define __sync_lock_test_and_set(a, b) \
-+ ({ \
-+ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \
-+ int sltas; \
-+ __asm __volatile ("xchgl (%1), %0" \
-+ : "=r" (sltas) \
-+ : "r" (a), "0" (b) : "memory"); \
-+ sltas; \
-+ })
-+#endif
- #if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \
- && defined(_GLIBCXX_ATOMIC_BUILTINS) && defined(_GLIBCXX_HAVE_LINUX_FUTEX)
- # include <climits>
diff --git a/gcc43-ia64-libunwind.patch b/gcc43-ia64-libunwind.patch
deleted file mode 100644
index 8e10979..0000000
--- a/gcc43-ia64-libunwind.patch
+++ /dev/null
@@ -1,538 +0,0 @@
-2004-11-27 Jakub Jelinek <jakub@redhat.com>
-
- * config.gcc (ia64*-*-linux*): If native and libelf is installed,
- use ia64/t-glibc-no-libunwind instead of the other t-*unwind*
- fragments.
- * config/ia64/t-glibc-no-libunwind: New file.
- * config/ia64/change-symver.c: New file.
- * config/ia64/unwind-ia64.c: If USE_SYMVER_GLOBAL and SHARED,
- define _Unwind_* to __symverglobal_Unwind_*.
- (alias): Undefine.
- (symverglobal): Define. Use it on _Unwind_*.
- * config/ia64/mkmap-symver-multi.awk: New file.
- * config/ia64/libgcc-ia64-no-libunwind.ver: New file.
-
---- gcc/config.gcc.jj 2004-10-04 08:55:44.000000000 -0400
-+++ gcc/config.gcc 2004-11-13 05:23:50.000000000 -0500
-@@ -1185,9 +1185,16 @@ ia64*-*-freebsd*)
- ;;
- ia64*-*-linux*)
- tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h ia64/sysv4.h ia64/linux.h"
-- tmake_file="${tmake_file} ia64/t-ia64 t-libunwind ia64/t-glibc"
-- if test x$with_system_libunwind != xyes ; then
-- tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
-+ tmake_file="${tmake_file} ia64/t-ia64"
-+ if test x${target} = x${host} && test x${target} = x${build} \
-+ && grep gelf_getverdef /usr/include/gelf.h > /dev/null 2>&1 \
-+ && test -f /usr/lib/libelf.so; then
-+ tmake_file="${tmake_file} ia64/t-glibc-no-libunwind"
-+ else
-+ tmake_file="${tmake_file} t-libunwind ia64/t-glibc"
-+ if test x$with_system_libunwind != xyes ; then
-+ tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
-+ fi
- fi
- target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
- extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
---- gcc/config/ia64/t-glibc-no-libunwind.jj 2004-02-18 10:27:36.000000000 -0500
-+++ gcc/config/ia64/t-glibc-no-libunwind 2004-11-15 09:56:33.000000000 -0500
-@@ -0,0 +1,30 @@
-+# Don't use system libunwind library on IA-64 GLIBC based system,
-+# but make _Unwind_* symbols unversioned, so that created programs
-+# are usable even when libgcc_s uses libunwind.
-+LIB2ADDEH += $(srcdir)/config/ia64/fde-glibc.c
-+SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64-no-libunwind.ver
-+SHLIB_MKMAP = $(srcdir)/config/ia64/mkmap-symver-multi.awk
-+
-+SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-+ -Wl,--soname=$(SHLIB_SONAME) \
-+ -Wl,--version-script=$(SHLIB_MAP) \
-+ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \
-+ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
-+ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
-+ mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
-+ $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
-+ else true; fi && \
-+ gcc -O2 -o $(SHLIB_DIR)/$(SHLIB_SONAME).tweak \
-+ $$(gcc_srcdir)/config/ia64/change-symver.c -lelf && \
-+ $(SHLIB_DIR)/$(SHLIB_SONAME).tweak $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \
-+ GCC_3.4.2 _GLOBAL_ \
-+ _Unwind_GetGR _Unwind_RaiseException _Unwind_GetRegionStart _Unwind_SetIP \
-+ _Unwind_GetIP _Unwind_GetLanguageSpecificData _Unwind_Resume \
-+ _Unwind_DeleteException _Unwind_SetGR _Unwind_ForcedUnwind \
-+ _Unwind_Backtrace _Unwind_FindEnclosingFunction _Unwind_GetCFA \
-+ _Unwind_Resume_or_Rethrow _Unwind_GetBSP && \
-+ rm -f $(SHLIB_DIR)/$(SHLIB_SONAME).tweak && \
-+ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
-+ $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
-+
-+TARGET_LIBGCC2_CFLAGS += -DUSE_SYMVER_GLOBAL
---- gcc/config/ia64/change-symver.c.jj 2004-02-18 10:27:36.000000000 -0500
-+++ gcc/config/ia64/change-symver.c 2004-11-13 05:23:50.000000000 -0500
-@@ -0,0 +1,211 @@
-+#define _GNU_SOURCE 1
-+#define _FILE_OFFSET_BITS 64
-+#include <endian.h>
-+#include <errno.h>
-+#include <error.h>
-+#include <fcntl.h>
-+#include <fnmatch.h>
-+#include <gelf.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <unistd.h>
-+
-+int
-+compute_veridx (const char *name, Elf *elf, Elf_Data *verd, GElf_Shdr *verd_shdr)
-+{
-+ if (strcmp (name, "_GLOBAL_") == 0)
-+ return 1;
-+
-+ int cnt;
-+ size_t offset = 0;
-+ for (cnt = verd_shdr->sh_info; --cnt >= 0; )
-+ {
-+ GElf_Verdef defmem;
-+ GElf_Verdef *def;
-+ GElf_Verdaux auxmem;
-+ GElf_Verdaux *aux;
-+ unsigned int auxoffset;
-+
-+ /* Get the data at the next offset. */
-+ def = gelf_getverdef (verd, offset, &defmem);
-+ if (def == NULL)
-+ break;
-+
-+ auxoffset = offset + def->vd_aux;
-+ aux = gelf_getverdaux (verd, auxoffset, &auxmem);
-+ if (aux == NULL)
-+ break;
-+
-+ if (strcmp (name, elf_strptr (elf, verd_shdr->sh_link,
-+ aux->vda_name)) == 0)
-+ return def->vd_ndx;
-+
-+ /* Find the next offset. */
-+ offset += def->vd_next;
-+ }
-+
-+ return -1;
-+}
-+
-+int
-+main (int argc, char **argv)
-+{
-+ if (argc < 4)
-+ error (1, 0, "Usage: change_symver library from_symver to_symver symbol...\nExample: change_symver libfoo.so FOO_1.0 *global* bar baz");
-+
-+ const char *fname = argv[1];
-+
-+ /* Open the file. */
-+ int fd;
-+ fd = open (fname, O_RDWR);
-+ if (fd == -1)
-+ error (1, errno, fname);
-+
-+ elf_version (EV_CURRENT);
-+
-+ /* Now get the ELF descriptor. */
-+ Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
-+ if (elf == NULL || elf_kind (elf) != ELF_K_ELF)
-+ error (1, 0, "Couldn't open %s: %s", fname, elf_errmsg (-1));
-+
-+ size_t shstrndx;
-+ /* Get the section header string table index. */
-+ if (elf_getshstrndx (elf, &shstrndx) < 0)
-+ error (1, 0, "cannot get shstrndx from %s", fname);
-+
-+ GElf_Ehdr ehdr_mem;
-+ GElf_Ehdr *ehdr;
-+
-+ /* We need the ELF header in a few places. */
-+ ehdr = gelf_getehdr (elf, &ehdr_mem);
-+ if (ehdr == NULL)
-+ error (1, 0, "couldn't get ELF headers %s: %s", fname, elf_errmsg (-1));
-+
-+ Elf_Scn *scn = NULL;
-+ GElf_Shdr shdr_mem, verd_shdr, ver_shdr, dynsym_shdr;
-+ Elf_Data *ver = NULL, *verd = NULL, *dynsym = NULL;
-+
-+ while ((scn = elf_nextscn (elf, scn)) != NULL)
-+ {
-+ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
-+
-+ if (shdr == NULL)
-+ error (1, 0, "couldn't get shdr from %s", fname);
-+
-+ if ((shdr->sh_flags & SHF_ALLOC) != 0)
-+ {
-+ const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
-+ Elf_Data **p;
-+
-+ if (strcmp (name, ".gnu.version") == 0)
-+ {
-+ p = &ver;
-+ ver_shdr = *shdr;
-+ }
-+ else if (strcmp (name, ".gnu.version_d") == 0)
-+ {
-+ p = &verd;
-+ verd_shdr = *shdr;
-+ }
-+ else if (strcmp (name, ".dynsym") == 0)
-+ {
-+ p = &dynsym;
-+ dynsym_shdr = *shdr;
-+ }
-+ else
-+ continue;
-+
-+ if (*p != NULL)
-+ error (1, 0, "Two %s sections in %s", name, fname);
-+ *p = elf_getdata (scn, NULL);
-+ if (*p == NULL || elf_getdata (scn, *p) != NULL)
-+ error (1, 0, "No data or non-contiguous data in %s section in %s",
-+ name, fname);
-+ }
-+ }
-+
-+ if (ver == NULL || verd == NULL || dynsym == NULL)
-+ error (1, 0, "Couldn't find one of the needed sections in %s", fname);
-+
-+ int from_idx = compute_veridx (argv[2], elf, verd, &verd_shdr);
-+ if (from_idx == -1)
-+ error (1, 0, "Could not find symbol version %s in %s", argv[2], fname);
-+
-+ int to_idx = compute_veridx (argv[3], elf, verd, &verd_shdr);
-+ if (to_idx == -1)
-+ error (1, 0, "Could not find symbol version %s in %s", argv[3], fname);
-+
-+ if (dynsym_shdr.sh_entsize != gelf_fsize (elf, ELF_T_SYM, 1, ehdr->e_version)
-+ || dynsym_shdr.sh_size % dynsym_shdr.sh_entsize
-+ || ver_shdr.sh_entsize != 2
-+ || (ver_shdr.sh_size & 1)
-+ || dynsym_shdr.sh_size / dynsym_shdr.sh_entsize != ver_shdr.sh_size / 2)
-+ error (1, 0, "Unexpected sh_size or sh_entsize in %s", fname);
-+
-+ size_t nentries = ver_shdr.sh_size / 2;
-+ size_t cnt;
-+ GElf_Versym array[nentries];
-+ for (cnt = 0; cnt < nentries; ++cnt)
-+ {
-+ GElf_Versym vsymmem;
-+ GElf_Versym *vsym;
-+
-+ vsym = gelf_getversym (ver, cnt, &vsymmem);
-+ if (vsym == NULL)
-+ error (1, 0, "gelt_getversym failed in %s: %s", fname, elf_errmsg (-1));
-+
-+ array[cnt] = *vsym;
-+ if (*vsym != from_idx)
-+ continue;
-+
-+ GElf_Sym sym_mem;
-+ GElf_Sym *sym;
-+ sym = gelf_getsym (dynsym, cnt, &sym_mem);
-+ if (sym == NULL)
-+ error (1, 0, "gelt_getsym failed in %s: %s", fname, elf_errmsg (-1));
-+
-+ const char *name = elf_strptr (elf, dynsym_shdr.sh_link, sym->st_name);
-+
-+ int argn;
-+ for (argn = 4; argn < argc; ++argn)
-+ if (fnmatch (argv[argn], name, 0) == 0)
-+ {
-+ array[cnt] = to_idx;
-+ break;
-+ }
-+ }
-+
-+ if (sizeof (array[0]) != 2)
-+ abort ();
-+
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+ if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
-+ ;
-+ else if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
-+#elif __BYTE_ORDER == __BIG_ENDIAN
-+ if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
-+ ;
-+ else if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
-+#else
-+# error Unsupported endianity
-+#endif
-+ {
-+ for (cnt = 0; cnt < nentries; ++cnt)
-+ array[cnt] = ((array[cnt] & 0xff) << 8) | ((array[cnt] & 0xff00) >> 8);
-+ }
-+ else
-+ error (1, 0, "Unknown EI_DATA %d in %s", ehdr->e_ident[EI_DATA], fname);
-+
-+ if (elf_end (elf) != 0)
-+ error (1, 0, "couldn't close %s: %s", fname, elf_errmsg (-1));
-+
-+ if (lseek (fd, ver_shdr.sh_offset, SEEK_SET) != (off_t) ver_shdr.sh_offset)
-+ error (1, 0, "failed to seek to %zd in %s", (size_t) ver_shdr.sh_offset,
-+ fname);
-+
-+ if (write (fd, array, 2 * nentries) != (ssize_t) (2 * nentries))
-+ error (1, 0, "failed to write .gnu.version section into %s", fname);
-+
-+ close (fd);
-+ return 0;
-+}
---- gcc/config/ia64/unwind-ia64.c.jj 2004-10-04 08:55:57.000000000 -0400
-+++ gcc/config/ia64/unwind-ia64.c 2004-11-15 09:07:45.000000000 -0500
-@@ -51,6 +51,51 @@
- #define UNW_FLAG_UHANDLER(x) ((x) & 0x0000000200000000L)
- #define UNW_LENGTH(x) ((x) & 0x00000000ffffffffL)
-
-+#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
-+extern _Unwind_Reason_Code __symverglobal_Unwind_Backtrace
-+ (_Unwind_Trace_Fn, void *);
-+extern void __symverglobal_Unwind_DeleteException
-+ (struct _Unwind_Exception *);
-+extern void * __symverglobal_Unwind_FindEnclosingFunction (void *);
-+extern _Unwind_Reason_Code __symverglobal_Unwind_ForcedUnwind
-+ (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
-+extern _Unwind_Word __symverglobal_Unwind_GetCFA
-+ (struct _Unwind_Context *);
-+extern _Unwind_Word __symverglobal_Unwind_GetBSP
-+ (struct _Unwind_Context *);
-+extern _Unwind_Word __symverglobal_Unwind_GetGR
-+ (struct _Unwind_Context *, int );
-+extern _Unwind_Ptr __symverglobal_Unwind_GetIP (struct _Unwind_Context *);
-+extern void *__symverglobal_Unwind_GetLanguageSpecificData
-+ (struct _Unwind_Context *);
-+extern _Unwind_Ptr __symverglobal_Unwind_GetRegionStart
-+ (struct _Unwind_Context *);
-+extern _Unwind_Reason_Code __symverglobal_Unwind_RaiseException
-+ (struct _Unwind_Exception *);
-+extern void __symverglobal_Unwind_Resume (struct _Unwind_Exception *);
-+extern _Unwind_Reason_Code __symverglobal_Unwind_Resume_or_Rethrow
-+ (struct _Unwind_Exception *);
-+extern void __symverglobal_Unwind_SetGR
-+ (struct _Unwind_Context *, int, _Unwind_Word);
-+extern void __symverglobal_Unwind_SetIP
-+ (struct _Unwind_Context *, _Unwind_Ptr);
-+#define _Unwind_Backtrace __symverglobal_Unwind_Backtrace
-+#define _Unwind_DeleteException __symverglobal_Unwind_DeleteException
-+#define _Unwind_FindEnclosingFunction __symverglobal_Unwind_FindEnclosingFunction
-+#define _Unwind_ForcedUnwind __symverglobal_Unwind_ForcedUnwind
-+#define _Unwind_GetBSP __symverglobal_Unwind_GetBSP
-+#define _Unwind_GetCFA __symverglobal_Unwind_GetCFA
-+#define _Unwind_GetGR __symverglobal_Unwind_GetGR
-+#define _Unwind_GetIP __symverglobal_Unwind_GetIP
-+#define _Unwind_GetLanguageSpecificData __symverglobal_Unwind_GetLanguageSpecificData
-+#define _Unwind_GetRegionStart __symverglobal_Unwind_GetRegionStart
-+#define _Unwind_RaiseException __symverglobal_Unwind_RaiseException
-+#define _Unwind_Resume __symverglobal_Unwind_Resume
-+#define _Unwind_Resume_or_Rethrow __symverglobal_Unwind_Resume_or_Rethrow
-+#define _Unwind_SetGR __symverglobal_Unwind_SetGR
-+#define _Unwind_SetIP __symverglobal_Unwind_SetIP
-+#endif
-+
- enum unw_application_register
- {
- UNW_AR_BSP,
-@@ -2402,4 +2447,44 @@ alias (_Unwind_SetGR);
- alias (_Unwind_SetIP);
- #endif
-
-+#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
-+#undef alias
-+#define symverglobal(name, version) \
-+__typeof (__symverglobal##name) __symverlocal##name \
-+ __attribute__ ((alias ("__symverglobal" #name))); \
-+__asm__ (".symver __symverglobal" #name"," #name "@@GCC_3.4.2");\
-+__asm__ (".symver __symverlocal" #name"," #name "@" #version)
-+
-+#undef _Unwind_Backtrace
-+#undef _Unwind_DeleteException
-+#undef _Unwind_FindEnclosingFunction
-+#undef _Unwind_ForcedUnwind
-+#undef _Unwind_GetBSP
-+#undef _Unwind_GetCFA
-+#undef _Unwind_GetGR
-+#undef _Unwind_GetIP
-+#undef _Unwind_GetLanguageSpecificData
-+#undef _Unwind_GetRegionStart
-+#undef _Unwind_RaiseException
-+#undef _Unwind_Resume
-+#undef _Unwind_Resume_or_Rethrow
-+#undef _Unwind_SetGR
-+#undef _Unwind_SetIP
-+symverglobal (_Unwind_Backtrace, GCC_3.3);
-+symverglobal (_Unwind_DeleteException, GCC_3.0);
-+symverglobal (_Unwind_FindEnclosingFunction, GCC_3.3);
-+symverglobal (_Unwind_ForcedUnwind, GCC_3.0);
-+symverglobal (_Unwind_GetBSP, GCC_3.3.2);
-+symverglobal (_Unwind_GetCFA, GCC_3.3);
-+symverglobal (_Unwind_GetGR, GCC_3.0);
-+symverglobal (_Unwind_GetIP, GCC_3.0);
-+symverglobal (_Unwind_GetLanguageSpecificData, GCC_3.0);
-+symverglobal (_Unwind_GetRegionStart, GCC_3.0);
-+symverglobal (_Unwind_RaiseException, GCC_3.0);
-+symverglobal (_Unwind_Resume, GCC_3.0);
-+symverglobal (_Unwind_Resume_or_Rethrow, GCC_3.3);
-+symverglobal (_Unwind_SetGR, GCC_3.0);
-+symverglobal (_Unwind_SetIP, GCC_3.0);
-+#endif
-+
- #endif
---- gcc/config/ia64/mkmap-symver-multi.awk.jj 2004-02-18 10:27:36.000000000 -0500
-+++ gcc/config/ia64/mkmap-symver-multi.awk 2004-11-15 09:46:50.000000000 -0500
-@@ -0,0 +1,133 @@
-+# Generate an ELF symbol version map a-la Solaris and GNU ld.
-+# Contributed by Richard Henderson <rth@cygnus.com>
-+#
-+# This file is part of GCC.
-+#
-+# GCC is free software; you can redistribute it and/or modify it under
-+# the terms of the GNU General Public License as published by the Free
-+# Software Foundation; either version 2, or (at your option) any later
-+# version.
-+#
-+# GCC is distributed in the hope that it will be useful, but WITHOUT
-+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
-+# License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING. If not, write to the Free
-+# Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-+# 02110-1301, USA.
-+
-+BEGIN {
-+ state = "nm";
-+ sawsymbol = 0;
-+}
-+
-+# Remove comment and blank lines.
-+/^ *#/ || /^ *$/ {
-+ next;
-+}
-+
-+# We begin with nm input. Collect the set of symbols that are present
-+# so that we can not emit them into the final version script -- Solaris
-+# complains at us if we do.
-+
-+state == "nm" && /^%%/ {
-+ state = "ver";
-+ next;
-+}
-+
-+state == "nm" && ($1 == "U" || $2 == "U") {
-+ next;
-+}
-+
-+state == "nm" && NF == 3 {
-+ if ($3 ~ /^[^@]*@GCC_[0-9.]*$/) {
-+ def[$3] = 1
-+ tl=$3
-+ sub(/^.*@/,"",tl)
-+ ver[$3] = tl
-+ } else {
-+ sub(/@@?GCC_[0-9.]*$/,"",$3)
-+ def[$3] = 1;
-+ }
-+ sawsymbol = 1;
-+ next;
-+}
-+
-+state == "nm" {
-+ next;
-+}
-+
-+# Now we process a simplified variant of the Solaris symbol version
-+# script. We have one symbol per line, no semicolons, simple markers
-+# for beginning and ending each section, and %inherit markers for
-+# describing version inheritence. A symbol may appear in more than
-+# one symbol version, and the last seen takes effect.
-+
-+NF == 3 && $1 == "%inherit" {
-+ inherit[$2] = $3;
-+ next;
-+}
-+
-+NF == 2 && $2 == "{" {
-+ libs[$1] = 1;
-+ thislib = $1;
-+ next;
-+}
-+
-+$1 == "}" {
-+ thislib = "";
-+ next;
-+}
-+
-+{
-+ ver[$1] = thislib;
-+ next;
-+}
-+
-+END {
-+ if (!sawsymbol)
-+ {
-+ print "No symbols seen -- broken or mis-installed nm?" | "cat 1>&2";
-+ exit 1;
-+ }
-+ for (l in libs)
-+ output(l);
-+}
-+
-+function output(lib) {
-+ if (done[lib])
-+ return;
-+ done[lib] = 1;
-+ if (inherit[lib])
-+ output(inherit[lib]);
-+
-+ empty=1
-+ for (sym in ver)
-+ if ((ver[sym] == lib) && (sym in def))
-+ {
-+ if (empty)
-+ {
-+ printf("%s {\n", lib);
-+ printf(" global:\n");
-+ empty = 0;
-+ }
-+ symp = sym;
-+ sub(/@GCC_[0-9.]*$/,"",symp);
-+ printf("\t%s;\n", symp);
-+ if (dotsyms)
-+ printf("\t.%s;\n", symp);
-+ }
-+
-+ if (empty)
-+ {
-+ for (l in libs)
-+ if (inherit[l] == lib)
-+ inherit[l] = inherit[lib];
-+ }
-+ else if (inherit[lib])
-+ printf("} %s;\n", inherit[lib]);
-+ else
-+ printf ("\n local:\n\t*;\n};\n");
-+}
---- gcc/config/ia64/libgcc-ia64-no-libunwind.ver.jj 2004-02-18 10:27:36.000000000 -0500
-+++ gcc/config/ia64/libgcc-ia64-no-libunwind.ver 2004-11-15 09:19:56.000000000 -0500
-@@ -0,0 +1,17 @@
-+GCC_3.4.2 {
-+ _Unwind_GetGR
-+ _Unwind_RaiseException
-+ _Unwind_GetRegionStart
-+ _Unwind_SetIP
-+ _Unwind_GetIP
-+ _Unwind_GetLanguageSpecificData
-+ _Unwind_Resume
-+ _Unwind_DeleteException
-+ _Unwind_SetGR
-+ _Unwind_ForcedUnwind
-+ _Unwind_Backtrace
-+ _Unwind_FindEnclosingFunction
-+ _Unwind_GetCFA
-+ _Unwind_Resume_or_Rethrow
-+ _Unwind_GetBSP
-+}
diff --git a/gcc43-java-debug-iface-type.patch b/gcc43-java-debug-iface-type.patch
deleted file mode 100644
index 63a1b50..0000000
--- a/gcc43-java-debug-iface-type.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-2008-01-25 Jakub Jelinek <jakub@redhat.com>
-
- * lang.c (java_classify_record): Revert 2007-12-20 change.
-
---- gcc/java/lang.c 2007-12-27 09:09:49.000000000 +0100
-+++ gcc/java/lang.c 2008-01-25 17:43:57.000000000 +0100
-@@ -965,9 +965,7 @@ java_classify_record (tree type)
- if (! CLASS_P (type))
- return RECORD_IS_STRUCT;
-
-- /* ??? GDB does not support DW_TAG_interface_type as of December,
-- 2007. Re-enable this at a later time. */
-- if (0 && CLASS_INTERFACE (TYPE_NAME (type)))
-+ if (CLASS_INTERFACE (TYPE_NAME (type)))
- return RECORD_IS_INTERFACE;
-
- return RECORD_IS_CLASS;
diff --git a/gcc43-java-nomulti.patch b/gcc43-java-nomulti.patch
deleted file mode 100644
index f07ead8..0000000
--- a/gcc43-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
-@@ -1018,6 +1018,8 @@ Optional Features:
- --enable-gconf-peer compile GConf native peers for util.preferences
- --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
-@@ -1848,6 +1850,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/gcc43-libgomp-omp_h-multilib.patch b/gcc43-libgomp-omp_h-multilib.patch
deleted file mode 100644
index d0e98d1..0000000
--- a/gcc43-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/gcc43-libtool-no-rpath.patch b/gcc43-libtool-no-rpath.patch
deleted file mode 100644
index 466c661..0000000
--- a/gcc43-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/gcc43-ppc32-retaddr.patch b/gcc43-ppc32-retaddr.patch
deleted file mode 100644
index e9ae1bc..0000000
--- a/gcc43-ppc32-retaddr.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-2005-11-28 Jakub Jelinek <jakub@redhat.com>
-
- * config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
- read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
- instead of doing an extran indirection from frame_pointer_rtx.
-
- * gcc.dg/20051128-1.c: New test.
-
---- gcc/config/rs6000/rs6000.c.jj 2005-11-26 14:38:01.000000000 +0100
-+++ gcc/config/rs6000/rs6000.c 2005-11-28 20:32:18.000000000 +0100
-@@ -13166,17 +13166,22 @@ rs6000_return_addr (int count, rtx frame
- don't try to be too clever here. */
- if (count != 0 || (DEFAULT_ABI != ABI_AIX && flag_pic))
- {
-+ rtx x;
- cfun->machine->ra_needs_full_frame = 1;
-
-- return
-- gen_rtx_MEM
-- (Pmode,
-- memory_address
-- (Pmode,
-- plus_constant (copy_to_reg
-- (gen_rtx_MEM (Pmode,
-- memory_address (Pmode, frame))),
-- RETURN_ADDRESS_OFFSET)));
-+ if (count == 0)
-+ {
-+ gcc_assert (frame == frame_pointer_rtx);
-+ x = arg_pointer_rtx;
-+ }
-+ else
-+ {
-+ x = memory_address (Pmode, frame);
-+ x = copy_to_reg (gen_rtx_MEM (Pmode, x));
-+ }
-+
-+ x = plus_constant (x, RETURN_ADDRESS_OFFSET);
-+ return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
- }
-
- cfun->machine->ra_need_lr = 1;
---- gcc/testsuite/gcc.dg/20051128-1.c.jj 2005-10-10 11:21:41.096999000 +0200
-+++ gcc/testsuite/gcc.dg/20051128-1.c 2005-11-28 12:30:57.000000000 +0100
-@@ -0,0 +1,41 @@
-+/* { dg-do run } */
-+/* { dg-options "-O2 -fpic" } */
-+
-+extern void exit (int);
-+extern void abort (void);
-+
-+int b;
-+
-+struct A
-+{
-+ void *pad[147];
-+ void *ra, *h;
-+ long o;
-+};
-+
-+void
-+__attribute__((noinline))
-+foo (struct A *a, void *x)
-+{
-+ __builtin_memset (a, 0, sizeof (a));
-+ if (!b)
-+ exit (0);
-+}
-+
-+void
-+__attribute__((noinline))
-+bar (void)
-+{
-+ struct A a;
-+
-+ __builtin_unwind_init ();
-+ foo (&a, __builtin_return_address (0));
-+}
-+
-+int
-+main (void)
-+{
-+ bar ();
-+ abort ();
-+ return 0;
-+}
diff --git a/gcc43-ppc64-ia64-GNU-stack.patch b/gcc43-ppc64-ia64-GNU-stack.patch
deleted file mode 100644
index d49f2b9..0000000
--- a/gcc43-ppc64-ia64-GNU-stack.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-2007-08-27 Jakub Jelinek <jakub@redhat.com>
-
- * config/rs6000/rs6000.c (rs6000_elf_end_indicate_exec_stack): New.
- * config/rs6000/linux64.h (TARGET_ASM_FILE_END): Use
- rs6000_elf_end_indicate_exec_stack.
- * config/ia64/ia64.c (ia64_linux_file_end): new.
- * config/ia64/linux.h (TARGET_ASM_FILE_END): Use ia64_linux_file_end.
-
---- gcc/config/rs6000/rs6000.c.jj 2007-12-07 18:41:08.000000000 +0100
-+++ gcc/config/rs6000/rs6000.c 2007-12-07 18:42:12.000000000 +0100
-@@ -746,6 +746,7 @@ static void rs6000_file_start (void);
- static int rs6000_elf_reloc_rw_mask (void);
- static void rs6000_elf_asm_out_constructor (rtx, int);
- static void rs6000_elf_asm_out_destructor (rtx, int);
-+static void rs6000_elf_end_indicate_exec_stack (void) ATTRIBUTE_UNUSED;
- static void rs6000_elf_asm_init_sections (void);
- static section *rs6000_elf_select_rtx_section (enum machine_mode, rtx,
- unsigned HOST_WIDE_INT);
-@@ -20418,6 +20419,20 @@ rs6000_elf_declare_function_name (FILE *
- }
- ASM_OUTPUT_LABEL (file, name);
- }
-+
-+static void
-+rs6000_elf_end_indicate_exec_stack (void)
-+{
-+ if (TARGET_32BIT)
-+ file_end_indicate_exec_stack ();
-+ else
-+ {
-+ int saved_trampolines_created = trampolines_created;
-+ trampolines_created = 0;
-+ file_end_indicate_exec_stack ();
-+ trampolines_created = saved_trampolines_created;
-+ }
-+}
- #endif
-
- #if TARGET_XCOFF
---- gcc/config/rs6000/linux64.h.jj 2007-12-07 17:18:06.000000000 +0100
-+++ gcc/config/rs6000/linux64.h 2007-12-07 18:41:21.000000000 +0100
-@@ -504,7 +504,7 @@ extern int dot_symbols;
- #undef DRAFT_V4_STRUCT_RET
- #define DRAFT_V4_STRUCT_RET (!TARGET_64BIT)
-
--#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
-+#define TARGET_ASM_FILE_END rs6000_elf_end_indicate_exec_stack
-
- #define TARGET_POSIX_IO
-
---- gcc/config/ia64/linux.h.jj 2007-12-07 18:17:43.000000000 +0100
-+++ gcc/config/ia64/linux.h 2007-12-07 18:41:21.000000000 +0100
-@@ -5,7 +5,7 @@
-
- #define TARGET_VERSION fprintf (stderr, " (IA-64) Linux");
-
--#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
-+#define TARGET_ASM_FILE_END ia64_linux_file_end
-
- /* This is for -profile to use -lc_p instead of -lc. */
- #undef CC1_SPEC
---- gcc/config/ia64/ia64.c.jj 2007-12-07 15:41:58.000000000 +0100
-+++ gcc/config/ia64/ia64.c 2007-12-07 18:43:18.000000000 +0100
-@@ -262,6 +262,8 @@ static section *ia64_select_rtx_section
- static void ia64_output_dwarf_dtprel (FILE *, int, rtx)
- ATTRIBUTE_UNUSED;
- static unsigned int ia64_section_type_flags (tree, const char *, int);
-+static void ia64_linux_file_end (void)
-+ ATTRIBUTE_UNUSED;
- static void ia64_init_libfuncs (void)
- ATTRIBUTE_UNUSED;
- static void ia64_hpux_init_libfuncs (void)
-@@ -9957,4 +9959,13 @@ ia64_c_mode_for_suffix (char suffix)
- return VOIDmode;
- }
-
-+static void
-+ia64_linux_file_end (void)
-+{
-+ int saved_trampolines_created = trampolines_created;
-+ trampolines_created = 0;
-+ file_end_indicate_exec_stack ();
-+ trampolines_created = saved_trampolines_created;
-+}
-+
- #include "gt-ia64.h"
diff --git a/gcc43-pr27898.patch b/gcc43-pr27898.patch
deleted file mode 100644
index 172bb81..0000000
--- a/gcc43-pr27898.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-2006-08-18 Jakub Jelinek <jakub@redhat.com>
-
- PR c/27898
- * gcc.dg/pr27898.c: New test.
-
---- gcc/testsuite/gcc.dg/pr27898.c.jj 2006-08-18 09:19:33.000000000 +0200
-+++ gcc/testsuite/gcc.dg/pr27898.c 2006-08-18 09:19:27.000000000 +0200
-@@ -0,0 +1,8 @@
-+/* PR c/27898 */
-+/* { dg-do compile } */
-+/* { dg-options "--combine" } */
-+/* { dg-additional-sources "pr27898.c" } */
-+
-+union u { struct { int i; }; };
-+
-+extern int foo (union u *);
diff --git a/gcc43-pr29609-2.patch b/gcc43-pr29609-2.patch
deleted file mode 100644
index e057605..0000000
--- a/gcc43-pr29609-2.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-2008-10-09 Jakub Jelinek <jakub@redhat.com>
-
- * tree-ssa-live.c (remove_unused_locals): Mark all edge's goto_block
- as used.
- * gimple-low.c (lower_return_expr, lower_builtin_setjmp): Set
- TREE_BLOCK on the newly created stmts.
- * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Only set
- goto_block on edges if goto_locus is known.
-
---- gcc/tree-ssa-live.c.jj 2008-10-07 21:25:57.000000000 +0200
-+++ gcc/tree-ssa-live.c 2008-10-09 00:25:20.000000000 +0200
-@@ -591,6 +591,8 @@ remove_unused_locals (void)
- {
- block_stmt_iterator bsi;
- tree phi, def;
-+ edge_iterator ei;
-+ edge e;
-
- /* Walk the statements. */
- for (bsi = bsi_start (bb); !bsi_end_p (bsi); bsi_next (&bsi))
-@@ -614,6 +616,10 @@ remove_unused_locals (void)
- mark_all_vars_used (&arg, NULL);
- }
- }
-+
-+ FOR_EACH_EDGE (e, ei, bb->succs)
-+ if (e->goto_locus)
-+ TREE_USED (e->goto_block) = true;
- }
-
- /* Remove unmarked local vars from unexpanded_var_list. */
---- gcc/gimple-low.c.jj 2008-10-07 21:25:58.000000000 +0200
-+++ gcc/gimple-low.c 2008-10-09 00:42:31.000000000 +0200
-@@ -590,6 +590,7 @@ lower_return_expr (tree_stmt_iterator *t
- found:
- t = build1 (GOTO_EXPR, void_type_node, label);
- SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt));
-+ TREE_BLOCK (t) = TREE_BLOCK (stmt);
- tsi_link_before (tsi, t, TSI_SAME_STMT);
- tsi_delink (tsi);
- }
-@@ -672,6 +673,7 @@ lower_builtin_setjmp (tree_stmt_iterator
- t = implicit_built_in_decls[BUILT_IN_SETJMP_SETUP];
- t = build_call_expr (t, 2, CALL_EXPR_ARG (stmt, 0), arg);
- SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt));
-+ TREE_BLOCK (t) = TREE_BLOCK (stmt);
- tsi_link_before (tsi, t, TSI_SAME_STMT);
-
- /* Build 'DEST = 0' and insert. */
-@@ -680,6 +682,7 @@ lower_builtin_setjmp (tree_stmt_iterator
- t = build_gimple_modify_stmt (dest, fold_convert (TREE_TYPE (dest),
- integer_zero_node));
- SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt));
-+ TREE_BLOCK (t) = TREE_BLOCK (stmt);
- tsi_link_before (tsi, t, TSI_SAME_STMT);
- }
-
-@@ -696,6 +699,7 @@ lower_builtin_setjmp (tree_stmt_iterator
- t = implicit_built_in_decls[BUILT_IN_SETJMP_RECEIVER];
- t = build_call_expr (t, 1, arg);
- SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt));
-+ TREE_BLOCK (t) = TREE_BLOCK (stmt);
- tsi_link_before (tsi, t, TSI_SAME_STMT);
-
- /* Build 'DEST = 1' and insert. */
-@@ -704,6 +708,7 @@ lower_builtin_setjmp (tree_stmt_iterator
- t = build_gimple_modify_stmt (dest, fold_convert (TREE_TYPE (dest),
- integer_one_node));
- SET_EXPR_LOCUS (t, EXPR_LOCUS (stmt));
-+ TREE_BLOCK (t) = TREE_BLOCK (stmt);
- tsi_link_before (tsi, t, TSI_SAME_STMT);
- }
-
---- gcc/tree-cfg.c.jj 2008-10-07 21:39:14.000000000 +0200
-+++ gcc/tree-cfg.c 2008-10-09 00:00:48.000000000 +0200
-@@ -634,7 +634,8 @@ make_cond_expr_edges (basic_block bb)
- #else
- e->goto_locus = EXPR_LOCUS (COND_EXPR_THEN (entry));
- #endif
-- e->goto_block = TREE_BLOCK (COND_EXPR_THEN (entry));
-+ if (e->goto_locus)
-+ e->goto_block = TREE_BLOCK (COND_EXPR_THEN (entry));
- e = make_edge (bb, else_bb, EDGE_FALSE_VALUE);
- if (e)
- {
-@@ -643,7 +644,8 @@ make_cond_expr_edges (basic_block bb)
- #else
- e->goto_locus = EXPR_LOCUS (COND_EXPR_ELSE (entry));
- #endif
-- e->goto_block = TREE_BLOCK (COND_EXPR_ELSE (entry));
-+ if (e->goto_locus)
-+ e->goto_block = TREE_BLOCK (COND_EXPR_ELSE (entry));
- }
-
- /* We do not need the gotos anymore. */
-@@ -843,7 +845,8 @@ make_goto_expr_edges (basic_block bb)
- #else
- e->goto_locus = EXPR_LOCUS (goto_t);
- #endif
-- e->goto_block = TREE_BLOCK (goto_t);
-+ if (e->goto_locus)
-+ e->goto_block = TREE_BLOCK (goto_t);
- bsi_remove (&last, true);
- return;
- }
diff --git a/gcc43-pr29609-3.patch b/gcc43-pr29609-3.patch
deleted file mode 100644
index 72791cd..0000000
--- a/gcc43-pr29609-3.patch
+++ /dev/null
@@ -1,168 +0,0 @@
-2008-10-09 Jakub Jelinek <jakub@redhat.com>
-
- * rtl.h (locator_eq): New decl.
- * cfglayout.c (locator_scope): New function.
- (insn_scope): Use it.
- (locator_eq): New function.
- (fixup_reorder_chain): Search for last insn in src bb
- that has locator set or first insn in dest bb. Use
- locator_eq instead of == to compare locators.
- * cfgrtl.c (cfg_layout_merge_blocks): Likewise.
- * cfgcleanup.c (try_forward_edges): Use locator_eq instead of
- == to compare locators.
-
---- gcc/cfglayout.c.jj 2008-10-07 21:35:33.000000000 +0200
-+++ gcc/cfglayout.c 2008-10-09 11:18:51.000000000 +0200
-@@ -448,13 +448,12 @@ change_scope (rtx orig_insn, tree s1, tr
- }
- }
-
--/* Return lexical scope block insn belong to. */
-+/* Return lexical scope block locator belongs to. */
- static tree
--insn_scope (const_rtx insn)
-+locator_scope (int loc)
- {
- int max = VEC_length (int, block_locators_locs);
- int min = 0;
-- int loc = INSN_LOCATOR (insn);
-
- /* When block_locators_locs was initialized, the pro- and epilogue
- insns didn't exist yet and can therefore not be found this way.
-@@ -488,6 +487,13 @@ insn_scope (const_rtx insn)
- return VEC_index (tree, block_locators_blocks, min);
- }
-
-+/* Return lexical scope block insn belongs to. */
-+static tree
-+insn_scope (const_rtx insn)
-+{
-+ return locator_scope (INSN_LOCATOR (insn));
-+}
-+
- /* Return line number of the statement specified by the locator. */
- static location_t
- locator_location (int loc)
-@@ -551,6 +557,17 @@ insn_file (const_rtx insn)
- return locator_file (INSN_LOCATOR (insn));
- }
-
-+/* Return true if LOC1 and LOC2 locators have the same location and scope. */
-+bool
-+locator_eq (int loc1, int loc2)
-+{
-+ if (loc1 == loc2)
-+ return true;
-+ if (locator_location (loc1) != locator_location (loc2))
-+ return false;
-+ return locator_scope (loc1) == locator_scope (loc2);
-+}
-+
- /* Rebuild all the NOTE_INSN_BLOCK_BEG and NOTE_INSN_BLOCK_END notes based
- on the scope tree and the newly reordered instructions. */
-
-@@ -901,24 +918,30 @@ fixup_reorder_chain (void)
- if (e->goto_locus && !(e->flags & EDGE_ABNORMAL))
- {
- basic_block nb;
-+ rtx end;
-
-- if (simplejump_p (BB_END (e->src)))
-+ insn = BB_END (e->src);
-+ end = PREV_INSN (BB_HEAD (e->src));
-+ while (insn != end
-+ && (!INSN_P (insn) || INSN_LOCATOR (insn) == 0))
-+ insn = PREV_INSN (insn);
-+ if (insn != end
-+ && locator_eq (INSN_LOCATOR (insn), (int) e->goto_locus))
-+ continue;
-+ if (simplejump_p (BB_END (e->src))
-+ && INSN_LOCATOR (BB_END (e->src)) == 0)
- {
-- if (INSN_LOCATOR (BB_END (e->src)) == (int) e->goto_locus)
-- continue;
-- if (INSN_LOCATOR (BB_END (e->src)) == 0)
-- {
-- INSN_LOCATOR (BB_END (e->src)) = e->goto_locus;
-- continue;
-- }
-+ INSN_LOCATOR (BB_END (e->src)) = e->goto_locus;
-+ continue;
- }
- if (e->dest != EXIT_BLOCK_PTR)
- {
- insn = BB_HEAD (e->dest);
-- if (!INSN_P (insn))
-- insn = next_insn (insn);
-- if (insn && INSN_P (insn)
-- && INSN_LOCATOR (insn) == (int) e->goto_locus)
-+ end = NEXT_INSN (BB_END (e->dest));
-+ while (insn != end && !INSN_P (insn))
-+ insn = NEXT_INSN (insn);
-+ if (insn != end && INSN_LOCATOR (insn)
-+ && locator_eq (INSN_LOCATOR (insn), (int) e->goto_locus))
- continue;
- }
- nb = split_edge (e);
---- gcc/rtl.h.jj 2008-10-07 21:25:44.000000000 +0200
-+++ gcc/rtl.h 2008-10-09 11:15:57.000000000 +0200
-@@ -1622,6 +1622,7 @@ extern int insn_line (const_rtx);
- extern const char * insn_file (const_rtx);
- extern int locator_line (int);
- extern const char * locator_file (int);
-+extern bool locator_eq (int, int);
- extern int prologue_locator, epilogue_locator;
-
- /* In jump.c */
---- gcc/cfgrtl.c.jj 2008-10-07 21:35:33.000000000 +0200
-+++ gcc/cfgrtl.c 2008-10-09 10:37:03.000000000 +0200
-@@ -2623,19 +2623,21 @@ cfg_layout_merge_blocks (basic_block a,
- some unique locus, emit a nop with that locus in between. */
- if (!optimize && EDGE_SUCC (a, 0)->goto_locus)
- {
-- rtx insn = BB_END (a);
-+ rtx insn = BB_END (a), end = PREV_INSN (BB_HEAD (a));
- int goto_locus = EDGE_SUCC (a, 0)->goto_locus;
-
-- if (NOTE_P (insn))
-- insn = prev_nonnote_insn (insn);
-- if (insn && INSN_P (insn) && INSN_LOCATOR (insn) == goto_locus)
-+ while (insn != end && (!INSN_P (insn) || INSN_LOCATOR (insn) == 0))
-+ insn = PREV_INSN (insn);
-+ if (insn != end && locator_eq (INSN_LOCATOR (insn), goto_locus))
- goto_locus = 0;
- else
- {
- insn = BB_HEAD (b);
-- if (!INSN_P (insn))
-- insn = next_insn (insn);
-- if (insn && INSN_P (insn) && INSN_LOCATOR (insn) == goto_locus)
-+ end = NEXT_INSN (BB_END (b));
-+ while (insn != end && !INSN_P (insn))
-+ insn = NEXT_INSN (insn);
-+ if (insn != end && INSN_LOCATOR (insn) != 0
-+ && locator_eq (INSN_LOCATOR (insn), goto_locus))
- goto_locus = 0;
- }
- if (goto_locus)
---- gcc/cfgcleanup.c.jj 2008-10-07 21:35:33.000000000 +0200
-+++ gcc/cfgcleanup.c 2008-10-09 11:07:40.000000000 +0200
-@@ -482,7 +482,7 @@ try_forward_edges (int mode, basic_block
- blocks with different locus are not optimized out. */
- int locus = single_succ_edge (target)->goto_locus;
-
-- if (locus && goto_locus && locus != goto_locus)
-+ if (locus && goto_locus && !locator_eq (locus, goto_locus))
- counter = n_basic_blocks;
- else if (locus)
- goto_locus = locus;
-@@ -491,7 +491,8 @@ try_forward_edges (int mode, basic_block
- {
- locus = INSN_LOCATOR (BB_END (target));
-
-- if (locus && goto_locus && locus != goto_locus)
-+ if (locus && goto_locus
-+ && !locator_eq (locus, goto_locus))
- counter = n_basic_blocks;
- else if (locus)
- goto_locus = locus;
diff --git a/gcc43-pr29609.patch b/gcc43-pr29609.patch
deleted file mode 100644
index 1a8dfbf..0000000
--- a/gcc43-pr29609.patch
+++ /dev/null
@@ -1,899 +0,0 @@
-2008-10-08 Jakub Jelinek <jakub@redhat.com>
-
- * cfgexpand.c (expand_gimple_cond_expr): Convert also goto_block and
- goto_locus of true_edge into RTL locator.
-
-2008-10-07 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/29609
- PR debug/36690
- PR debug/37616
- * basic-block.h (struct edge_def): Add goto_block field.
- * cfglayout.c (fixup_reorder_chain): Ensure that there is at least
- one insn with locus corresponding to edge's goto_locus if !optimize.
- * profile.c (branch_prob): Copy edge's goto_block.
- * cfgrtl.c (force_nonfallthru_and_redirect): Use goto_locus for
- emitted jumps.
- (cfg_layout_merge_blocks): Emit a nop with edge's goto_locus
- locator in between the merged basic blocks if !optimize and needed.
- * cfgexpand.c (expand_gimple_cond_expr): Convert goto_block and
- goto_locus into RTL locator. For unconditional jump use that
- locator for the jump insn.
- (expand_gimple_basic_block): Convert goto_block and goto_locus into
- RTL locator for all remaining edges. For unconditional jump
- use that locator for the jump insn.
- * cfgcleanup.c (try_forward_edges): Avoid the optimization if
- there is more than one edge or insn locator along the forwarding
- edges and !optimize. If there is just one, set e->goto_locus.
- * tree-cfg.c (make_cond_expr_edges, make_goto_expr_edges): Set also
- edge's goto_block.
- (move_block_to_fn): Adjust edge's goto_block.
-
- * gcc.dg/debug/pr29609-1.c: New test.
- * gcc.dg/debug/pr29609-2.c: New test.
- * gcc.dg/debug/pr36690-1.c: New test.
- * gcc.dg/debug/pr36690-2.c: New test.
- * gcc.dg/debug/pr36690-3.c: New test.
- * gcc.dg/debug/pr37616.c: New test.
- * gcc.dg/debug/dwarf2/pr29609-1.c: New test.
- * gcc.dg/debug/dwarf2/pr29609-2.c: New test.
- * gcc.dg/debug/dwarf2/pr36690-1.c: New test.
- * gcc.dg/debug/dwarf2/pr36690-2.c: New test.
- * gcc.dg/debug/dwarf2/pr36690-3.c: New test.
- * gcc.dg/debug/dwarf2/pr37616.c: New test.
-
---- gcc/profile.c (revision 140947)
-+++ gcc/profile.c (revision 140948)
-@@ -825,7 +825,9 @@ branch_prob (void)
- #endif
- {
- basic_block new = split_edge (e);
-- single_succ_edge (new)->goto_locus = e->goto_locus;
-+ edge ne = single_succ_edge (new);
-+ ne->goto_locus = e->goto_locus;
-+ ne->goto_block = e->goto_block;
- }
- if ((e->flags & (EDGE_ABNORMAL | EDGE_ABNORMAL_CALL))
- && e->dest != EXIT_BLOCK_PTR)
---- gcc/cfgexpand.c (revision 140947)
-+++ gcc/cfgexpand.c (revision 140948)
-@@ -1316,7 +1316,12 @@ expand_gimple_cond_expr (basic_block bb,
- add_reg_br_prob_note (last, true_edge->probability);
- maybe_dump_rtl_for_tree_stmt (stmt, last);
- if (true_edge->goto_locus)
-- set_curr_insn_source_location (location_from_locus (true_edge->goto_locus));
-+ {
-+ set_curr_insn_source_location (location_from_locus (true_edge->goto_locus));
-+ set_curr_insn_block (true_edge->goto_block);
-+ true_edge->goto_locus = curr_insn_locator ();
-+ }
-+ true_edge->goto_block = NULL;
- false_edge->flags |= EDGE_FALLTHRU;
- return NULL;
- }
-@@ -1326,7 +1331,12 @@ expand_gimple_cond_expr (basic_block bb,
- add_reg_br_prob_note (last, false_edge->probability);
- maybe_dump_rtl_for_tree_stmt (stmt, last);
- if (false_edge->goto_locus)
-- set_curr_insn_source_location (location_from_locus (false_edge->goto_locus));
-+ {
-+ set_curr_insn_source_location (location_from_locus (false_edge->goto_locus));
-+ set_curr_insn_block (false_edge->goto_block);
-+ false_edge->goto_locus = curr_insn_locator ();
-+ }
-+ false_edge->goto_block = NULL;
- true_edge->flags |= EDGE_FALLTHRU;
- return NULL;
- }
-@@ -1334,6 +1344,13 @@ expand_gimple_cond_expr (basic_block bb,
- jumpif (pred, label_rtx_for_bb (true_edge->dest));
- add_reg_br_prob_note (last, true_edge->probability);
- last = get_last_insn ();
-+ if (false_edge->goto_locus)
-+ {
-+ set_curr_insn_source_location (location_from_locus (false_edge->goto_locus));
-+ set_curr_insn_block (false_edge->goto_block);
-+ false_edge->goto_locus = curr_insn_locator ();
-+ }
-+ false_edge->goto_block = NULL;
- emit_jump (label_rtx_for_bb (false_edge->dest));
-
- BB_END (bb) = last;
-@@ -1356,9 +1373,13 @@ expand_gimple_cond_expr (basic_block bb,
-
- maybe_dump_rtl_for_tree_stmt (stmt, last2);
-
-- if (false_edge->goto_locus)
-- set_curr_insn_source_location (location_from_locus (false_edge->goto_locus));
--
-+ if (true_edge->goto_locus)
-+ {
-+ set_curr_insn_source_location (location_from_locus (true_edge->goto_locus));
-+ set_curr_insn_block (true_edge->goto_block);
-+ true_edge->goto_locus = curr_insn_locator ();
-+ }
-+ true_edge->goto_block = NULL;
- return new_bb;
- }
-
-@@ -1613,19 +1634,21 @@ expand_gimple_basic_block (basic_block b
- }
- }
-
-- /* Expand implicit goto. */
-+ /* Expand implicit goto and convert goto_locus. */
- FOR_EACH_EDGE (e, ei, bb->succs)
- {
-- if (e->flags & EDGE_FALLTHRU)
-- break;
-- }
--
-- if (e && e->dest != bb->next_bb)
-- {
-- emit_jump (label_rtx_for_bb (e->dest));
-- if (e->goto_locus)
-- set_curr_insn_source_location (location_from_locus (e->goto_locus));
-- e->flags &= ~EDGE_FALLTHRU;
-+ if (e->goto_locus && e->goto_block)
-+ {
-+ set_curr_insn_source_location (location_from_locus (e->goto_locus));
-+ set_curr_insn_block (e->goto_block);
-+ e->goto_locus = curr_insn_locator ();
-+ }
-+ e->goto_block = NULL;
-+ if ((e->flags & EDGE_FALLTHRU) && e->dest != bb->next_bb)
-+ {
-+ emit_jump (label_rtx_for_bb (e->dest));
-+ e->flags &= ~EDGE_FALLTHRU;
-+ }
- }
-
- do_pending_stack_adjust ();
---- gcc/cfgcleanup.c (revision 140947)
-+++ gcc/cfgcleanup.c (revision 140948)
-@@ -429,7 +429,7 @@ try_forward_edges (int mode, basic_block
- for (ei = ei_start (b->succs); (e = ei_safe_edge (ei)); )
- {
- basic_block target, first;
-- int counter;
-+ int counter, goto_locus;
- bool threaded = false;
- int nthreaded_edges = 0;
- bool may_thread = first_pass | df_get_bb_dirty (b);
-@@ -447,6 +447,7 @@ try_forward_edges (int mode, basic_block
-
- target = first = e->dest;
- counter = NUM_FIXED_BLOCKS;
-+ goto_locus = e->goto_locus;
-
- /* If we are partitioning hot/cold basic_blocks, we don't want to mess
- up jumps that cross between hot/cold sections.
-@@ -476,6 +477,27 @@ try_forward_edges (int mode, basic_block
- new_target = single_succ (target);
- if (target == new_target)
- counter = n_basic_blocks;
-+ else if (!optimize)
-+ {
-+ /* When not optimizing, ensure that edges or forwarder
-+ blocks with different locus are not optimized out. */
-+ int locus = single_succ_edge (target)->goto_locus;
-+
-+ if (locus && goto_locus && locus != goto_locus)
-+ counter = n_basic_blocks;
-+ else if (locus)
-+ goto_locus = locus;
-+
-+ if (INSN_P (BB_END (target)))
-+ {
-+ locus = INSN_LOCATOR (BB_END (target));
-+
-+ if (locus && goto_locus && locus != goto_locus)
-+ counter = n_basic_blocks;
-+ else if (locus)
-+ goto_locus = locus;
-+ }
-+ }
- }
-
- /* Allow to thread only over one edge at time to simplify updating
-@@ -539,6 +561,8 @@ try_forward_edges (int mode, basic_block
- int edge_frequency;
- int n = 0;
-
-+ e->goto_locus = goto_locus;
-+
- /* Don't force if target is exit block. */
- if (threaded && target != EXIT_BLOCK_PTR)
- {
---- gcc/cfglayout.c (revision 140947)
-+++ gcc/cfglayout.c (revision 140948)
-@@ -887,6 +887,46 @@ fixup_reorder_chain (void)
- if (e && !can_fallthru (e->src, e->dest))
- force_nonfallthru (e);
- }
-+
-+ /* Ensure goto_locus from edges has some instructions with that locus
-+ in RTL. */
-+ if (!optimize)
-+ FOR_EACH_BB (bb)
-+ {
-+ edge e;
-+ edge_iterator ei;
-+
-+ FOR_EACH_EDGE (e, ei, bb->succs)
-+ if (e->goto_locus && !(e->flags & EDGE_ABNORMAL))
-+ {
-+ basic_block nb;
-+
-+ if (simplejump_p (BB_END (e->src)))
-+ {
-+ if (INSN_LOCATOR (BB_END (e->src)) == (int) e->goto_locus)
-+ continue;
-+ if (INSN_LOCATOR (BB_END (e->src)) == 0)
-+ {
-+ INSN_LOCATOR (BB_END (e->src)) = e->goto_locus;
-+ continue;
-+ }
-+ }
-+ if (e->dest != EXIT_BLOCK_PTR)
-+ {
-+ insn = BB_HEAD (e->dest);
-+ if (!INSN_P (insn))
-+ insn = next_insn (insn);
-+ if (insn && INSN_P (insn)
-+ && INSN_LOCATOR (insn) == (int) e->goto_locus)
-+ continue;
-+ }
-+ nb = split_edge (e);
-+ if (!INSN_P (BB_END (nb)))
-+ BB_END (nb) = emit_insn_after_noloc (gen_nop (), BB_END (nb),
-+ nb);
-+ INSN_LOCATOR (BB_END (nb)) = e->goto_locus;
-+ }
-+ }
- }
- \f
- /* Perform sanity checks on the insn chain.
---- gcc/basic-block.h (revision 140947)
-+++ gcc/basic-block.h (revision 140948)
-@@ -129,7 +129,8 @@ struct edge_def GTY(())
- /* Auxiliary info specific to a pass. */
- PTR GTY ((skip (""))) aux;
-
-- /* Location of any goto implicit in the edge, during tree-ssa. */
-+ /* Location of any goto implicit in the edge and associated BLOCK. */
-+ tree goto_block;
- source_locus goto_locus;
-
- /* The index number corresponding to this edge in the edge vector
---- gcc/tree-cfg.c (revision 140947)
-+++ gcc/tree-cfg.c (revision 140948)
-@@ -634,6 +634,7 @@ make_cond_expr_edges (basic_block bb)
- #else
- e->goto_locus = EXPR_LOCUS (COND_EXPR_THEN (entry));
- #endif
-+ e->goto_block = TREE_BLOCK (COND_EXPR_THEN (entry));
- e = make_edge (bb, else_bb, EDGE_FALSE_VALUE);
- if (e)
- {
-@@ -642,6 +643,7 @@ make_cond_expr_edges (basic_block bb)
- #else
- e->goto_locus = EXPR_LOCUS (COND_EXPR_ELSE (entry));
- #endif
-+ e->goto_block = TREE_BLOCK (COND_EXPR_ELSE (entry));
- }
-
- /* We do not need the gotos anymore. */
-@@ -841,6 +843,7 @@ make_goto_expr_edges (basic_block bb)
- #else
- e->goto_locus = EXPR_LOCUS (goto_t);
- #endif
-+ e->goto_block = TREE_BLOCK (goto_t);
- bsi_remove (&last, true);
- return;
- }
-@@ -5874,6 +5877,23 @@ move_block_to_fn (struct function *dest_
- update_stmt (stmt);
- pop_cfun ();
- }
-+
-+ FOR_EACH_EDGE (e, ei, bb->succs)
-+ if (e->goto_locus)
-+ {
-+ tree block = e->goto_block;
-+ if (d->orig_block == NULL_TREE
-+ || block == d->orig_block)
-+ e->goto_block = d->new_block;
-+#ifdef ENABLE_CHECKING
-+ else if (block != d->new_block)
-+ {
-+ while (block && block != d->orig_block)
-+ block = BLOCK_SUPERCONTEXT (block);
-+ gcc_assert (block);
-+ }
-+#endif
-+ }
- }
-
- /* Examine the statements in BB (which is in SRC_CFUN); find and return
---- gcc/cfgrtl.c (revision 140947)
-+++ gcc/cfgrtl.c (revision 140948)
-@@ -1009,6 +1009,7 @@ force_nonfallthru_and_redirect (edge e,
- rtx note;
- edge new_edge;
- int abnormal_edge_flags = 0;
-+ int loc;
-
- /* In the case the last instruction is conditional jump to the next
- instruction, first redirect the jump itself and then continue
-@@ -1127,11 +1128,15 @@ force_nonfallthru_and_redirect (edge e,
- else
- jump_block = e->src;
-
-+ if (e->goto_locus && e->goto_block == NULL)
-+ loc = e->goto_locus;
-+ else
-+ loc = 0;
- e->flags &= ~EDGE_FALLTHRU;
- if (target == EXIT_BLOCK_PTR)
- {
- #ifdef HAVE_return
-- emit_jump_insn_after_noloc (gen_return (), BB_END (jump_block));
-+ emit_jump_insn_after_setloc (gen_return (), BB_END (jump_block), loc);
- #else
- gcc_unreachable ();
- #endif
-@@ -1139,7 +1144,7 @@ force_nonfallthru_and_redirect (edge e,
- else
- {
- rtx label = block_label (target);
-- emit_jump_insn_after_noloc (gen_jump (label), BB_END (jump_block));
-+ emit_jump_insn_after_setloc (gen_jump (label), BB_END (jump_block), loc);
- JUMP_LABEL (BB_END (jump_block)) = label;
- LABEL_NUSES (label)++;
- }
-@@ -2606,6 +2611,32 @@ cfg_layout_merge_blocks (basic_block a,
- try_redirect_by_replacing_jump (EDGE_SUCC (a, 0), b, true);
- gcc_assert (!JUMP_P (BB_END (a)));
-
-+ /* When not optimizing and the edge is the only place in RTL which holds
-+ some unique locus, emit a nop with that locus in between. */
-+ if (!optimize && EDGE_SUCC (a, 0)->goto_locus)
-+ {
-+ rtx insn = BB_END (a);
-+ int goto_locus = EDGE_SUCC (a, 0)->goto_locus;
-+
-+ if (NOTE_P (insn))
-+ insn = prev_nonnote_insn (insn);
-+ if (insn && INSN_P (insn) && INSN_LOCATOR (insn) == goto_locus)
-+ goto_locus = 0;
-+ else
-+ {
-+ insn = BB_HEAD (b);
-+ if (!INSN_P (insn))
-+ insn = next_insn (insn);
-+ if (insn && INSN_P (insn) && INSN_LOCATOR (insn) == goto_locus)
-+ goto_locus = 0;
-+ }
-+ if (goto_locus)
-+ {
-+ BB_END (a) = emit_insn_after_noloc (gen_nop (), BB_END (a), a);
-+ INSN_LOCATOR (BB_END (a)) = goto_locus;
-+ }
-+ }
-+
- /* Possible line number notes should appear in between. */
- if (b->il.rtl->header)
- {
---- gcc/testsuite/gcc.dg/debug/pr36690-1.c (revision 0)
-+++ gcc/testsuite/gcc.dg/debug/pr36690-1.c (revision 140948)
-@@ -0,0 +1,23 @@
-+/* PR debug/36690 */
-+/* Verify that break func is hit.
-+ This version of the test just checks that it can be compiled, linked
-+ and executed, further testing is done in corresponding gcc.dg/dwarf2/
-+ test and hopefully in gdb testsuite. */
-+/* { dg-do run } */
-+/* { dg-options "-O0 -g -dA" } */
-+
-+int i;
-+
-+void
-+func (void)
-+{
-+ while (i == 1)
-+ i = 0;
-+}
-+
-+int
-+main (void)
-+{
-+ func ();
-+ return 0;
-+}
---- gcc/testsuite/gcc.dg/debug/pr36690-2.c (revision 0)
-+++ gcc/testsuite/gcc.dg/debug/pr36690-2.c (revision 140948)
-@@ -0,0 +1,40 @@
-+/* PR debug/36690 */
-+/* Verify that breakpoint can be put on goto f1, it is hit and
-+ varz at that spot is defined and contains 5. Nowhere else
-+ in the function should be varz in the scope.
-+ This version of the test just checks that it can be compiled, linked
-+ and executed, further testing is done in corresponding gcc.dg/dwarf2/
-+ test and hopefully in gdb testsuite. */
-+/* { dg-do run } */
-+/* { dg-options "-O0 -g -dA" } */
-+
-+int cnt;
-+
-+void
-+bar (int i)
-+{
-+ cnt += i;
-+}
-+
-+void
-+foo (int i)
-+{
-+ if (!i)
-+ bar (0);
-+ else
-+ {
-+ static int varz = 5;
-+ goto f1;
-+ }
-+ bar (1);
-+f1:
-+ bar (2);
-+}
-+
-+int
-+main (void)
-+{
-+ foo (0);
-+ foo (1);
-+ return 0;
-+}
---- gcc/testsuite/gcc.dg/debug/pr29609-1.c (revision 0)
-+++ gcc/testsuite/gcc.dg/debug/pr29609-1.c (revision 140948)
-@@ -0,0 +1,33 @@
-+/* PR debug/29609 */
-+/* Verify that breakpoint on the break is hit.
-+ This version of the test just checks that it can be compiled, linked
-+ and executed, further testing is done in corresponding gcc.dg/dwarf2/
-+ test and hopefully in gdb testsuite. */
-+/* { dg-do run } */
-+/* { dg-options "-O0 -g -dA" } */
-+
-+extern void abort (void);
-+
-+int
-+foo (void)
-+{
-+ int a, i;
-+
-+ for (i = 1; i <= 10; i++)
-+ {
-+ if (i < 3)
-+ a = 1;
-+ else
-+ break;
-+ a = 5;
-+ }
-+ return a;
-+}
-+
-+int
-+main (void)
-+{
-+ if (foo () != 5)
-+ abort ();
-+ return 0;
-+}
---- gcc/testsuite/gcc.dg/debug/pr36690-3.c (revision 0)
-+++ gcc/testsuite/gcc.dg/debug/pr36690-3.c (revision 140948)
-@@ -0,0 +1,47 @@
-+/* PR debug/36690 */
-+/* { dg-do run } */
-+/* { dg-options "-O0 -g -dA" } */
-+
-+int cnt;
-+
-+void
-+bar (int i)
-+{
-+ cnt += i;
-+}
-+
-+void
-+foo (int i, int j)
-+{
-+ if (j)
-+ {
-+ bar (i + 1);
-+ goto f1;
-+ }
-+ bar (i + 2);
-+ goto f2;
-+f1:
-+ if (i > 10)
-+ goto f3;
-+f2:
-+ if (i > 40)
-+ goto f4;
-+ else
-+ goto f5;
-+f3:
-+ bar (i);
-+f4:
-+ bar (i);
-+f5:
-+ bar (i);
-+}
-+
-+int
-+main (void)
-+{
-+ foo (0, 1);
-+ foo (11, 1);
-+ foo (21, 0);
-+ foo (41, 0);
-+ return 0;
-+}
---- gcc/testsuite/gcc.dg/debug/pr29609-2.c (revision 0)
-+++ gcc/testsuite/gcc.dg/debug/pr29609-2.c (revision 140948)
-@@ -0,0 +1,53 @@
-+/* PR debug/29609 */
-+/* Verify that breakpoint on both goto failure; stmts is hit.
-+ This version of the test just checks that it can be compiled, linked
-+ and executed, further testing is done in corresponding gcc.dg/dwarf2/
-+ test and hopefully in gdb testsuite. */
-+/* { dg-do run } */
-+/* { dg-options "-O0 -g -dA" } */
-+
-+extern void abort (void);
-+int x;
-+
-+int
-+foo (void)
-+{
-+ return 0 ^ x;
-+}
-+
-+int
-+bar (void)
-+{
-+ return 1 ^ x;
-+}
-+
-+int
-+baz (void)
-+{
-+ int c;
-+
-+ if (!foo ())
-+ goto failure;
-+
-+ if (!bar ())
-+ goto failure;
-+
-+ return 0;
-+
-+failure:
-+ return 1;
-+}
-+
-+int
-+main (void)
-+{
-+ if (baz () != 1)
-+ abort ();
-+ x = 1;
-+ if (baz () != 1)
-+ abort ();
-+ x = 2;
-+ if (baz () != 0)
-+ abort ();
-+ return 0;
-+}
---- gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-1.c (revision 0)
-+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-1.c (revision 140948)
-@@ -0,0 +1,22 @@
-+/* PR debug/36690 */
-+/* Verify that break func is hit. */
-+/* { dg-do compile } */
-+/* { dg-options "-O0 -gdwarf-2 -dA" } */
-+
-+int i;
-+
-+void
-+func (void)
-+{
-+ while (i == 1)
-+ i = 0;
-+}
-+
-+int
-+main (void)
-+{
-+ func ();
-+ return 0;
-+}
-+
-+/* { dg-final { scan-assembler "pr36690-1.c:11" } } */
---- gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-2.c (revision 0)
-+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-2.c (revision 140948)
-@@ -0,0 +1,39 @@
-+/* PR debug/36690 */
-+/* Verify that breakpoint can be put on goto f1, it is hit and
-+ varz at that spot is defined and contains 5. Nowhere else
-+ in the function should be varz in the scope. */
-+/* { dg-do compile } */
-+/* { dg-options "-O0 -gdwarf-2 -dA" } */
-+
-+int cnt;
-+
-+void
-+bar (int i)
-+{
-+ cnt += i;
-+}
-+
-+void
-+foo (int i)
-+{
-+ if (!i)
-+ bar (0);
-+ else
-+ {
-+ static int varz = 5;
-+ goto f1;
-+ }
-+ bar (1);
-+f1:
-+ bar (2);
-+}
-+
-+int
-+main (void)
-+{
-+ foo (0);
-+ foo (1);
-+ return 0;
-+}
-+
-+/* { dg-final { scan-assembler "pr36690-2.c:24" } } */
---- gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-1.c (revision 0)
-+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-1.c (revision 140948)
-@@ -0,0 +1,32 @@
-+/* PR debug/29609 */
-+/* Verify that breakpoint on the break is hit. */
-+/* { dg-do compile } */
-+/* { dg-options "-O0 -gdwarf-2 -dA" } */
-+
-+void abort (void);
-+
-+int
-+foo (void)
-+{
-+ int a, i;
-+
-+ for (i = 1; i <= 10; i++)
-+ {
-+ if (i < 3)
-+ a = 1;
-+ else
-+ break;
-+ a = 5;
-+ }
-+ return a;
-+}
-+
-+int
-+main (void)
-+{
-+ if (foo () != 5)
-+ abort ();
-+ return 0;
-+}
-+
-+/* { dg-final { scan-assembler "pr29609-1.c:18" } } */
---- gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-3.c (revision 0)
-+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr36690-3.c (revision 140948)
-@@ -0,0 +1,53 @@
-+/* PR debug/36690 */
-+/* { dg-do compile } */
-+/* { dg-options "-O0 -gdwarf-2 -dA" } */
-+
-+int cnt;
-+
-+void
-+bar (int i)
-+{
-+ cnt += i;
-+}
-+
-+void
-+foo (int i, int j)
-+{
-+ if (j)
-+ {
-+ bar (i + 1);
-+ goto f1;
-+ }
-+ bar (i + 2);
-+ goto f2;
-+f1:
-+ if (i > 10)
-+ goto f3;
-+f2:
-+ if (i > 40)
-+ goto f4;
-+ else
-+ goto f5;
-+f3:
-+ bar (i);
-+f4:
-+ bar (i);
-+f5:
-+ bar (i);
-+}
-+
-+int
-+main (void)
-+{
-+ foo (0, 1);
-+ foo (11, 1);
-+ foo (21, 0);
-+ foo (41, 0);
-+ return 0;
-+}
-+
-+/* { dg-final { scan-assembler "pr36690-3.c:19" } } */
-+/* { dg-final { scan-assembler "pr36690-3.c:22" } } */
-+/* { dg-final { scan-assembler "pr36690-3.c:25" } } */
-+/* { dg-final { scan-assembler "pr36690-3.c:28" } } */
-+/* { dg-final { scan-assembler "pr36690-3.c:30" } } */
---- gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-2.c (revision 0)
-+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr29609-2.c (revision 140948)
-@@ -0,0 +1,53 @@
-+/* PR debug/29609 */
-+/* Verify that breakpoint on both goto failure; stmts is hit. */
-+/* { dg-do compile } */
-+/* { dg-options "-O0 -gdwarf-2 -dA" } */
-+
-+extern void abort (void);
-+int x;
-+
-+int
-+foo (void)
-+{
-+ return 0 ^ x;
-+}
-+
-+int
-+bar (void)
-+{
-+ return 1 ^ x;
-+}
-+
-+int
-+baz (void)
-+{
-+ int c;
-+
-+ if (!foo ())
-+ goto failure;
-+
-+ if (!bar ())
-+ goto failure;
-+
-+ return 0;
-+
-+failure:
-+ return 1;
-+}
-+
-+int
-+main (void)
-+{
-+ if (baz () != 1)
-+ abort ();
-+ x = 1;
-+ if (baz () != 1)
-+ abort ();
-+ x = 2;
-+ if (baz () != 0)
-+ abort ();
-+ return 0;
-+}
-+
-+/* { dg-final { scan-assembler "pr29609-2.c:27" } } */
-+/* { dg-final { scan-assembler "pr29609-2.c:30" } } */
---- gcc/testsuite/gcc.dg/debug/dwarf2/pr37616.c (revision 0)
-+++ gcc/testsuite/gcc.dg/debug/dwarf2/pr37616.c (revision 140948)
-@@ -0,0 +1,41 @@
-+/* PR debug/37616 */
-+/* Test that one can put breakpoints onto continue, exitlab and break
-+ and actually see program reaching those breakpoints. */
-+/* { dg-do compile } */
-+/* { dg-options "-O0 -gdwarf-2 -dA" } */
-+
-+extern void abort (void);
-+
-+int
-+foo (int parm)
-+{
-+ int varj, varm;
-+
-+ for (varj = 0; varj < 10; varj++)
-+ {
-+ if (varj == 5)
-+ continue;
-+ if (varj == 7 && !parm)
-+ goto exitlab;
-+ if (varj == 9)
-+ break;
-+ varm = varj;
-+ }
-+
-+exitlab:
-+ return varm;
-+}
-+
-+int
-+main (void)
-+{
-+ if (foo (0) != 6)
-+ abort ();
-+ if (foo (1) != 8)
-+ abort ();
-+ return 0;
-+}
-+
-+/* { dg-final { scan-assembler "pr37616.c:17" } } */
-+/* { dg-final { scan-assembler "pr37616.c:19" } } */
-+/* { dg-final { scan-assembler "pr37616.c:21" } } */
---- gcc/testsuite/gcc.dg/debug/pr37616.c (revision 0)
-+++ gcc/testsuite/gcc.dg/debug/pr37616.c (revision 140948)
-@@ -0,0 +1,40 @@
-+/* PR debug/37616 */
-+/* Test that one can put breakpoints onto continue, exitlab and break
-+ and actually see program reaching those breakpoints.
-+ This version of the test just checks that it can be compiled, linked
-+ and executed, further testing is done in corresponding gcc.dg/dwarf2/
-+ test and hopefully in gdb testsuite. */
-+/* { dg-do run } */
-+/* { dg-options "-O0 -g -dA" } */
-+
-+extern void abort (void);
-+
-+int
-+foo (int parm)
-+{
-+ int varj, varm;
-+
-+ for (varj = 0; varj < 10; varj++)
-+ {
-+ if (varj == 5)
-+ continue;
-+ if (varj == 7 && !parm)
-+ goto exitlab;
-+ if (varj == 9)
-+ break;
-+ varm = varj;
-+ }
-+
-+exitlab:
-+ return varm;
-+}
-+
-+int
-+main (void)
-+{
-+ if (foo (0) != 6)
-+ abort ();
-+ if (foo (1) != 8)
-+ abort ();
-+ return 0;
-+}
diff --git a/gcc43-pr32139.patch b/gcc43-pr32139.patch
deleted file mode 100644
index f356967..0000000
--- a/gcc43-pr32139.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-2007-06-01 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/32139
- * gcc.c-torture/compile/20070531-1.c: New test.
-
---- gcc/testsuite/gcc.c-torture/compile/20070531-1.c.jj 2007-05-31 13:47:22.000000000 +0200
-+++ gcc/testsuite/gcc.c-torture/compile/20070531-1.c 2007-06-01 10:57:15.000000000 +0200
-@@ -0,0 +1,11 @@
-+/* PR tree-optimization/32139 */
-+int foo (void);
-+int bar (void) __attribute__ ((const));
-+
-+int
-+test (int x)
-+{
-+ int a = (x == 10000 ? foo : bar) ();
-+ int b = (x == 10000 ? foo : bar) ();
-+ return a + b;
-+}
diff --git a/gcc43-pr33763.patch b/gcc43-pr33763.patch
deleted file mode 100644
index 9e9c90d..0000000
--- a/gcc43-pr33763.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-2007-11-06 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/33763
- * gcc.dg/pr33763.c: New test.
- * g++.dg/opt/inline13.C: New test.
-
-2007-11-06 Jan Hubicka <jh@suse.cz>
-
- PR tree-optimization/33763
- * tree-inline.c (expand_call_inline): Silently ignore always_inline
- attribute for redefined extern inline functions.
-
---- gcc/tree-inline.c.jj 2007-11-06 09:29:04.000000000 +0100
-+++ gcc/tree-inline.c 2007-11-06 16:19:12.000000000 +0100
-@@ -2582,6 +2582,12 @@ expand_call_inline (basic_block bb, tree
- if (!cgraph_inline_p (cg_edge, &reason))
- {
- if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn))
-+ /* For extern inline functions that get redefined we always
-+ silently ignored alway_inline flag. Better behaviour would
-+ be to be able to keep both bodies and use extern inline body
-+ for inlining, but we can't do that because frontends overwrite
-+ the body. */
-+ && !cg_edge->callee->local.redefined_extern_inline
- /* Avoid warnings during early inline pass. */
- && (!flag_unit_at_a_time || cgraph_global_info_ready))
- {
---- gcc/testsuite/gcc.dg/pr33763.c.jj 2007-11-06 16:19:12.000000000 +0100
-+++ gcc/testsuite/gcc.dg/pr33763.c 2007-11-06 16:19:12.000000000 +0100
-@@ -0,0 +1,60 @@
-+/* PR tree-optimization/33763 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2" } */
-+
-+typedef struct
-+{
-+ void *a;
-+ void *b;
-+} T;
-+extern void *foo (const char *, const char *);
-+extern void *bar (void *, const char *, T);
-+extern int baz (const char *, int);
-+
-+extern inline __attribute__ ((always_inline, gnu_inline)) int
-+baz (const char *x, int y)
-+{
-+ return 2;
-+}
-+
-+int
-+baz (const char *x, int y)
-+{
-+ return 1;
-+}
-+
-+int xa, xb;
-+
-+static void *
-+inl (const char *x, const char *y)
-+{
-+ T t = { &xa, &xb };
-+ int *f = (int *) __builtin_malloc (sizeof (int));
-+ const char *z;
-+ int o = 0;
-+ void *r = 0;
-+
-+ for (z = y; *z; z++)
-+ {
-+ if (*z == 'r')
-+ o |= 1;
-+ if (*z == 'w')
-+ o |= 2;
-+ }
-+ if (o == 1)
-+ *f = baz (x, 0);
-+ if (o == 2)
-+ *f = baz (x, 1);
-+ if (o == 3)
-+ *f = baz (x, 2);
-+
-+ if (o && *f > 0)
-+ r = bar (f, "w", t);
-+ return r;
-+}
-+
-+void *
-+foo (const char *x, const char *y)
-+{
-+ return inl (x, y);
-+}
---- gcc/testsuite/g++.dg/opt/inline13.C.jj 2007-11-06 16:20:20.000000000 +0100
-+++ gcc/testsuite/g++.dg/opt/inline13.C 2007-11-06 16:21:30.000000000 +0100
-@@ -0,0 +1,60 @@
-+// PR tree-optimization/33763
-+// { dg-do compile }
-+// { dg-options "-O2" }
-+
-+typedef struct
-+{
-+ void *a;
-+ void *b;
-+} T;
-+extern void *foo (const char *, const char *);
-+extern void *bar (void *, const char *, T);
-+extern int baz (const char *, int);
-+
-+extern inline __attribute__ ((always_inline, gnu_inline)) int
-+baz (const char *x, int y)
-+{
-+ return 2;
-+}
-+
-+int
-+baz (const char *x, int y)
-+{
-+ return 1;
-+}
-+
-+int xa, xb;
-+
-+static void *
-+inl (const char *x, const char *y)
-+{
-+ T t = { &xa, &xb };
-+ int *f = (int *) __builtin_malloc (sizeof (int));
-+ const char *z;
-+ int o = 0;
-+ void *r = 0;
-+
-+ for (z = y; *z; z++)
-+ {
-+ if (*z == 'r')
-+ o |= 1;
-+ if (*z == 'w')
-+ o |= 2;
-+ }
-+ if (o == 1)
-+ *f = baz (x, 0);
-+ if (o == 2)
-+ *f = baz (x, 1);
-+ if (o == 3)
-+ *f = baz (x, 2);
-+
-+ if (o && *f > 0)
-+ r = bar (f, "w", t);
-+ return r;
-+}
-+
-+void *
-+foo (const char *x, const char *y)
-+{
-+ return inl (x, y);
-+}
diff --git a/gcc43-pr34037.patch b/gcc43-pr34037.patch
deleted file mode 100644
index 2c5a163..0000000
--- a/gcc43-pr34037.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-2008-09-11 Jakub Jelinek <jakub@redhat.com>
-
- PR debug/34037
- * gimplify.c (gimplify_type_sizes): When not optimizing, ensure
- TYPE_MIN_VALUE and TYPE_MAX_VALUE is not is not DECL_IGNORED_P
- VAR_DECL.
- * cfgexpand.c (expand_used_vars): Keep DECL_ARTIFICIAL
- !DECL_IGNORED_P vars in unexpanded_var_list list for instantiate_decls,
- ggc_free other TREE_LIST nodes from that chain.
- * function.c (instantiate_decls): Instantiate also DECL_RTL
- of vars in cfun->unexpanded_var_list, free that list afterwards.
-
---- gcc/gimplify.c.jj 2008-09-10 20:50:11.000000000 +0200
-+++ gcc/gimplify.c 2008-09-11 13:54:22.000000000 +0200
-@@ -7105,6 +7105,18 @@ gimplify_type_sizes (tree type, gimple_s
- /* These types may not have declarations, so handle them here. */
- gimplify_type_sizes (TREE_TYPE (type), list_p);
- gimplify_type_sizes (TYPE_DOMAIN (type), list_p);
-+ /* When not optimizing, ensure VLA bounds aren't removed. */
-+ if (!optimize
-+ && TYPE_DOMAIN (type)
-+ && INTEGRAL_TYPE_P (TYPE_DOMAIN (type)))
-+ {
-+ t = TYPE_MIN_VALUE (TYPE_DOMAIN (type));
-+ if (t && TREE_CODE (t) == VAR_DECL && DECL_ARTIFICIAL (t))
-+ DECL_IGNORED_P (t) = 0;
-+ t = TYPE_MAX_VALUE (TYPE_DOMAIN (type));
-+ if (t && TREE_CODE (t) == VAR_DECL && DECL_ARTIFICIAL (t))
-+ DECL_IGNORED_P (t) = 0;
-+ }
- break;
-
- case RECORD_TYPE:
---- gcc/cfgexpand.c.jj 2008-09-09 16:08:04.000000000 +0200
-+++ gcc/cfgexpand.c 2008-09-11 15:01:00.000000000 +0200
-@@ -1440,7 +1440,7 @@ estimated_stack_frame_size (void)
- static void
- expand_used_vars (void)
- {
-- tree t, outer_block = DECL_INITIAL (current_function_decl);
-+ tree t, next, outer_block = DECL_INITIAL (current_function_decl);
-
- /* Compute the phase of the stack frame for this function. */
- {
-@@ -1453,11 +1453,15 @@ expand_used_vars (void)
-
- /* At this point all variables on the unexpanded_var_list with TREE_USED
- set are not associated with any block scope. Lay them out. */
-- for (t = cfun->unexpanded_var_list; t; t = TREE_CHAIN (t))
-+ t = cfun->unexpanded_var_list;
-+ cfun->unexpanded_var_list = NULL_TREE;
-+ for (; t; t = next)
- {
- tree var = TREE_VALUE (t);
- bool expand_now = false;
-
-+ next = TREE_CHAIN (t);
-+
- /* We didn't set a block for static or extern because it's hard
- to tell the difference between a global variable (re)declared
- in a local scope, and one that's really declared there to
-@@ -1484,9 +1488,25 @@ expand_used_vars (void)
- TREE_USED (var) = 1;
-
- if (expand_now)
-- expand_one_var (var, true, true);
-+ {
-+ expand_one_var (var, true, true);
-+ if (DECL_ARTIFICIAL (var) && !DECL_IGNORED_P (var))
-+ {
-+ rtx rtl = DECL_RTL_IF_SET (var);
-+
-+ /* Keep artificial non-ignored vars in cfun->unexpanded_var_list
-+ chain until instantiate_decls. */
-+ if (rtl && (MEM_P (rtl) || GET_CODE (rtl) == CONCAT))
-+ {
-+ TREE_CHAIN (t) = cfun->unexpanded_var_list;
-+ cfun->unexpanded_var_list = t;
-+ continue;
-+ }
-+ }
-+ }
-+
-+ ggc_free (t);
- }
-- cfun->unexpanded_var_list = NULL_TREE;
-
- /* At this point, all variables within the block tree with TREE_USED
- set are actually used by the optimized function. Lay them out. */
---- gcc/function.c.jj 2008-09-09 21:13:24.000000000 +0200
-+++ gcc/function.c 2008-09-11 14:56:47.000000000 +0200
-@@ -1645,7 +1645,7 @@ instantiate_decls_1 (tree let)
- static void
- instantiate_decls (tree fndecl)
- {
-- tree decl;
-+ tree decl, t, next;
-
- /* Process all parameters of the function. */
- for (decl = DECL_ARGUMENTS (fndecl); decl; decl = TREE_CHAIN (decl))
-@@ -1661,6 +1661,17 @@ instantiate_decls (tree fndecl)
-
- /* Now process all variables defined in the function or its subblocks. */
- instantiate_decls_1 (DECL_INITIAL (fndecl));
-+
-+ t = cfun->unexpanded_var_list;
-+ cfun->unexpanded_var_list = NULL_TREE;
-+ for (; t; t = next)
-+ {
-+ next = TREE_CHAIN (t);
-+ decl = TREE_VALUE (t);
-+ if (DECL_RTL_SET_P (decl))
-+ instantiate_decl_rtl (DECL_RTL (decl));
-+ ggc_free (t);
-+ }
- }
-
- /* Pass through the INSNS of function FNDECL and convert virtual register
diff --git a/gcc43-pr36741-revert.patch b/gcc43-pr36741-revert.patch
deleted file mode 100644
index 5a67d96..0000000
--- a/gcc43-pr36741-revert.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-Revert:
-2008-08-28 Dodji Seketeli <dodji@redhat.com>
-
- PR c++/36741
- * tree.c (int_fits_type_p): Don't forget unsigned integers
- of type sizetype which higher end word equals -1.
-
- * g++.dg/other/new-size-type.C: New test.
-
---- gcc/tree.c (revision 139711)
-+++ gcc/tree.c (revision 139710)
-@@ -6296,21 +6296,6 @@ int_fits_type_p (const_tree c, const_tre
- for "unknown if constant fits", 0 for "constant known *not* to fit" and 1
- for "constant known to fit". */
-
-- if (TREE_TYPE (c) == sizetype
-- && TYPE_UNSIGNED (TREE_TYPE (c))
-- && TREE_INT_CST_HIGH (c) == -1
-- && !TREE_OVERFLOW (c))
-- /* So c is an unsigned integer which type is sizetype.
-- sizetype'd integers are sign extended even though they are
-- unsigned. If the integer value fits in the lower end word of c,
-- and if the higher end word has all its bits set to 1, that
-- means the higher end bits are set to 1 only for sign extension.
-- So let's convert c into an equivalent zero extended unsigned
-- integer. */
-- c = force_fit_type_double (size_type_node,
-- TREE_INT_CST_LOW (c),
-- TREE_INT_CST_HIGH (c),
-- false, false);
- /* Check if C >= type_low_bound. */
- if (type_low_bound && TREE_CODE (type_low_bound) == INTEGER_CST)
- {
---- gcc/testsuite/g++.dg/other/new-size-type.C (revision 139711)
-+++ gcc/testsuite/g++.dg/other/new-size-type.C (revision 139710)
-@@ -1,10 +1,10 @@
- // Contributed by Dodji Seketeli <dodji@redhat.com>
- // Origin: PR c++/36741
-
- #include <stddef.h>
- const char*
- foo()
- {
-- return new char[~static_cast<size_t>(0)];// { dg-bogus "large" }
-+ return new char[~static_cast<size_t>(0)];// { dg-bogus "large" "" { xfail *-*-* } }
- }
-
diff --git a/gcc43-pr37189.patch b/gcc43-pr37189.patch
deleted file mode 100644
index 2e61f3d..0000000
--- a/gcc43-pr37189.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-2008-09-03 Jakub Jelinek <jakub@redhat.com>
-
- PR c++/37189
- * cp-tree.h (defer_mark_used_calls, deferred_mark_used_calls): New
- extern decls.
- * decl2.c (mark_used): If defer_mark_used_calls, push decl into
- deferred_mark_used_calls vector and exit early.
- * decl.c (defer_mark_used_calls, deferred_mark_used_calls): New
- variables.
- (finish_function): Set defer_mark_used_calls for the duration of the
- function. Call mark_used on any queued decls.
-
- PR c++/37189
- * g++.dg/gomp/pr37189.C: New test.
-
---- gcc/cp/decl2.c (revision 139954)
-+++ gcc/cp/decl2.c (revision 139955)
-@@ -3776,6 +3776,15 @@ mark_used (tree decl)
- /* If we don't need a value, then we don't need to synthesize DECL. */
- if (skip_evaluation)
- return;
-+
-+ /* If within finish_function, defer the rest until that function
-+ finishes, otherwise it might recurse. */
-+ if (defer_mark_used_calls)
-+ {
-+ VEC_safe_push (tree, gc, deferred_mark_used_calls, decl);
-+ return;
-+ }
-+
- /* Normally, we can wait until instantiation-time to synthesize
- DECL. However, if DECL is a static data member initialized with
- a constant, we need the value right now because a reference to
---- gcc/cp/decl.c (revision 139954)
-+++ gcc/cp/decl.c (revision 139955)
-@@ -227,6 +227,11 @@ struct named_label_entry GTY(())
- function, two inside the body of a function in a local class, etc.) */
- int function_depth;
-
-+/* To avoid unwanted recursion, finish_function defers all mark_used calls
-+ encountered during its execution until it finishes. */
-+bool defer_mark_used_calls;
-+VEC(tree, gc) *deferred_mark_used_calls;
-+
- /* States indicating how grokdeclarator() should handle declspecs marked
- with __attribute__((deprecated)). An object declared as
- __attribute__((deprecated)) suppresses warnings of uses of other
-@@ -12033,6 +12038,9 @@ finish_function (int flags)
- if (fndecl == NULL_TREE)
- return error_mark_node;
-
-+ gcc_assert (!defer_mark_used_calls);
-+ defer_mark_used_calls = true;
-+
- if (DECL_NONSTATIC_MEMBER_FUNCTION_P (fndecl)
- && DECL_VIRTUAL_P (fndecl)
- && !processing_template_decl)
-@@ -12232,6 +12240,17 @@ finish_function (int flags)
- cxx_pop_function_context and then reset via pop_function_context. */
- current_function_decl = NULL_TREE;
-
-+ defer_mark_used_calls = false;
-+ if (deferred_mark_used_calls)
-+ {
-+ unsigned int i;
-+ tree decl;
-+
-+ for (i = 0; VEC_iterate (tree, deferred_mark_used_calls, i, decl); i++)
-+ mark_used (decl);
-+ VEC_free (tree, gc, deferred_mark_used_calls);
-+ }
-+
- return fndecl;
- }
- \f
---- gcc/cp/cp-tree.h (revision 139954)
-+++ gcc/cp/cp-tree.h (revision 139955)
-@@ -4381,6 +4381,9 @@ extern void initialize_artificial_var (
- extern tree check_var_type (tree, tree);
- extern tree reshape_init (tree, tree);
-
-+extern bool defer_mark_used_calls;
-+extern GTY(()) VEC(tree, gc) *deferred_mark_used_calls;
-+
- /* in decl2.c */
- extern bool check_java_method (tree);
- extern tree build_memfn_type (tree, tree, cp_cv_quals);
---- gcc/testsuite/g++.dg/gomp/pr37189.C (revision 0)
-+++ gcc/testsuite/g++.dg/gomp/pr37189.C (revision 139955)
-@@ -0,0 +1,27 @@
-+// PR c++/37189
-+// { dg-do compile }
-+// { dg-options "-fopenmp" }
-+
-+struct S
-+{
-+ S () {}
-+ S (S const &) {}
-+};
-+
-+struct T
-+{
-+ S s;
-+};
-+
-+void
-+bar (T &)
-+{
-+}
-+
-+int
-+foo ()
-+{
-+ T t;
-+ #pragma omp task
-+ bar (t);
-+}
diff --git a/gcc43-pr37738.patch b/gcc43-pr37738.patch
deleted file mode 100644
index 90c3235..0000000
--- a/gcc43-pr37738.patch
+++ /dev/null
@@ -1,276 +0,0 @@
-2008-10-07 Jakub Jelinek <jakub@redhat.com>
-
- * f95-lang.c (poplevel): Don't clear BLOCK_VARS if functionbody.
- * trans-decl.c (gfc_build_qualified_array): Build accurate debug type
- even if nest.
- (build_entry_thunks, gfc_generate_function_code,
- gfc_generate_constructors): Ensure DECL_SAVED_TREE is a BIND_EXPR
- with DECL_INITIAL as its BLOCK.
-
- PR debug/37738
- * dwarf2out.c (common_block_die_table): New variable.
- (common_block_die_table_hash, common_block_die_table_eq): New
- functions.
- (gen_variable_die): Look up a DW_TAG_common_block die for a particular
- COMMON block in the current scope rather than globally. Optimize
- DW_OP_addr SYMBOL_REF DW_OP_plus_uconst off into
- DW_OP_addr SYMBOL_REF+off.
-
- * gfortran.dg/debug/pr37738.f: New test.
-
---- gcc/testsuite/gfortran.dg/debug/pr37738.f (revision 0)
-+++ gcc/testsuite/gfortran.dg/debug/pr37738.f (revision 140945)
-@@ -0,0 +1,30 @@
-+C PR debug/37738
-+C { dg-do compile }
-+C { dg-skip-if "DWARF-2 only" { "*-*-*" } { "*" } { "-gdwarf-2" } }
-+C { dg-options "-dA" }
-+
-+ subroutine a
-+ integer*4 a_i, c_i
-+ common /block/a_i, c_i
-+ a_i = 1
-+ c_i = 4
-+ end subroutine a
-+ subroutine b
-+ integer*4 b_i
-+ common /block/b_i, d_i
-+ b_i = 2
-+ d_i = 5
-+ end subroutine b
-+ subroutine c
-+ integer*4 a_i, c_i
-+ common /block/a_i, c_i
-+ if (a_i .ne. 2) call abort
-+ if (c_i .ne. 5) call abort
-+ end subroutine c
-+ program abc
-+ call a
-+ call b
-+ call c
-+ end program abc
-+
-+C { dg-final { scan-assembler-times "DIE\[^\n\]*DW_TAG_common_block" 3 } }
---- gcc/dwarf2out.c (revision 140943)
-+++ gcc/dwarf2out.c (revision 140945)
-@@ -4748,6 +4748,10 @@ static GTY((param_is (struct dwarf_file_
- The key is a DECL_UID() which is a unique number identifying each decl. */
- static GTY ((param_is (struct die_struct))) htab_t decl_die_table;
-
-+/* A hash table of references to DIE's that describe COMMON blocks.
-+ The key is DECL_UID() ^ die_parent. */
-+static GTY ((param_is (struct die_struct))) htab_t common_block_die_table;
-+
- /* Node of the variable location list. */
- struct var_loc_node GTY ((chain_next ("%h.next")))
- {
-@@ -4960,6 +4964,8 @@ static void equate_type_number_to_die (t
- static hashval_t decl_die_table_hash (const void *);
- static int decl_die_table_eq (const void *, const void *);
- static dw_die_ref lookup_decl_die (tree);
-+static hashval_t common_block_die_table_hash (const void *);
-+static int common_block_die_table_eq (const void *, const void *);
- static hashval_t decl_loc_table_hash (const void *);
- static int decl_loc_table_eq (const void *, const void *);
- static var_loc_list *lookup_decl_loc (const_tree);
-@@ -13812,6 +13818,26 @@ gen_subprogram_die (tree decl, dw_die_re
-
- }
-
-+/* Returns a hash value for X (which really is a die_struct). */
-+
-+static hashval_t
-+common_block_die_table_hash (const void *x)
-+{
-+ const_dw_die_ref d = (const_dw_die_ref) x;
-+ return (hashval_t) d->decl_id ^ htab_hash_pointer (d->die_parent);
-+}
-+
-+/* Return nonzero if decl_id and die_parent of die_struct X is the same
-+ as decl_id and die_parent of die_struct Y. */
-+
-+static int
-+common_block_die_table_eq (const void *x, const void *y)
-+{
-+ const_dw_die_ref d = (const_dw_die_ref) x;
-+ const_dw_die_ref e = (const_dw_die_ref) y;
-+ return d->decl_id == e->decl_id && d->die_parent == e->die_parent;
-+}
-+
- /* Generate a DIE to represent a declared data object. */
-
- static void
-@@ -13853,6 +13879,7 @@ gen_variable_die (tree decl, dw_die_ref
- tree field;
- dw_die_ref com_die;
- dw_loc_descr_ref loc;
-+ die_node com_die_arg;
-
- var_die = lookup_decl_die (decl);
- if (var_die)
-@@ -13863,21 +13890,41 @@ gen_variable_die (tree decl, dw_die_ref
- if (loc)
- {
- if (off)
-- add_loc_descr (&loc, new_loc_descr (DW_OP_plus_uconst,
-+ {
-+ /* Optimize the common case. */
-+ if (loc->dw_loc_opc == DW_OP_addr
-+ && loc->dw_loc_next == NULL
-+ && GET_CODE (loc->dw_loc_oprnd1.v.val_addr)
-+ == SYMBOL_REF)
-+ loc->dw_loc_oprnd1.v.val_addr
-+ = plus_constant (loc->dw_loc_oprnd1.v.val_addr, off);
-+ else
-+ add_loc_descr (&loc,
-+ new_loc_descr (DW_OP_plus_uconst,
- off, 0));
-+ }
- add_AT_loc (var_die, DW_AT_location, loc);
- remove_AT (var_die, DW_AT_declaration);
- }
- }
- return;
- }
-+
-+ if (common_block_die_table == NULL)
-+ common_block_die_table
-+ = htab_create_ggc (10, common_block_die_table_hash,
-+ common_block_die_table_eq, NULL);
-+
- field = TREE_OPERAND (DECL_VALUE_EXPR (decl), 0);
-- com_die = lookup_decl_die (com_decl);
-+ com_die_arg.decl_id = DECL_UID (com_decl);
-+ com_die_arg.die_parent = context_die;
-+ com_die = (dw_die_ref) htab_find (common_block_die_table, &com_die_arg);
- loc = loc_descriptor_from_tree (com_decl);
- if (com_die == NULL)
- {
- const char *cnam
- = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (com_decl));
-+ void **slot;
-
- com_die = new_die (DW_TAG_common_block, context_die, decl);
- add_name_and_src_coords_attributes (com_die, com_decl);
-@@ -13891,7 +13938,9 @@ gen_variable_die (tree decl, dw_die_ref
- else if (DECL_EXTERNAL (decl))
- add_AT_flag (com_die, DW_AT_declaration, 1);
- add_pubname_string (cnam, com_die); /* ??? needed? */
-- equate_decl_number_to_die (com_decl, com_die);
-+ com_die->decl_id = DECL_UID (com_decl);
-+ slot = htab_find_slot (common_block_die_table, com_die, INSERT);
-+ *slot = (void *) com_die;
- }
- else if (get_AT (com_die, DW_AT_location) == NULL && loc)
- {
-@@ -13907,7 +13956,17 @@ gen_variable_die (tree decl, dw_die_ref
- if (loc)
- {
- if (off)
-- add_loc_descr (&loc, new_loc_descr (DW_OP_plus_uconst, off, 0));
-+ {
-+ /* Optimize the common case. */
-+ if (loc->dw_loc_opc == DW_OP_addr
-+ && loc->dw_loc_next == NULL
-+ && GET_CODE (loc->dw_loc_oprnd1.v.val_addr) == SYMBOL_REF)
-+ loc->dw_loc_oprnd1.v.val_addr
-+ = plus_constant (loc->dw_loc_oprnd1.v.val_addr, off);
-+ else
-+ add_loc_descr (&loc, new_loc_descr (DW_OP_plus_uconst,
-+ off, 0));
-+ }
- add_AT_loc (var_die, DW_AT_location, loc);
- }
- else if (DECL_EXTERNAL (decl))
---- gcc/fortran/f95-lang.c (revision 140943)
-+++ gcc/fortran/f95-lang.c (revision 140945)
-@@ -457,14 +457,8 @@ poplevel (int keep, int reverse, int fun
- current_binding_level = current_binding_level->level_chain;
-
- if (functionbody)
-- {
-- /* This is the top level block of a function. The ..._DECL chain stored
-- in BLOCK_VARS are the function's parameters (PARM_DECL nodes). Don't
-- leave them in the BLOCK because they are found in the FUNCTION_DECL
-- instead. */
-- DECL_INITIAL (current_function_decl) = block_node;
-- BLOCK_VARS (block_node) = 0;
-- }
-+ /* This is the top level block of a function. */
-+ DECL_INITIAL (current_function_decl) = block_node;
- else if (current_binding_level == global_binding_level)
- /* When using gfc_start_block/gfc_finish_block from middle-end hooks,
- don't add newly created BLOCKs as sublocks of global_binding_level. */
---- gcc/fortran/trans-decl.c (revision 140943)
-+++ gcc/fortran/trans-decl.c (revision 140945)
-@@ -704,7 +704,7 @@ gfc_build_qualified_array (tree decl, gf
- layout_type (type);
- }
-
-- if (nest || write_symbols == NO_DEBUG)
-+ if (write_symbols == NO_DEBUG)
- return;
-
- if (TYPE_NAME (type) != NULL_TREE
-@@ -1761,7 +1761,7 @@ build_entry_thunks (gfc_namespace * ns)
-
- thunk_fndecl = thunk_sym->backend_decl;
-
-- gfc_start_block (&body);
-+ gfc_init_block (&body);
-
- /* Pass extra parameter identifying this entry point. */
- tmp = build_int_cst (gfc_array_index_type, el->id);
-@@ -1869,8 +1869,12 @@ build_entry_thunks (gfc_namespace * ns)
-
- /* Finish off this function and send it for code generation. */
- DECL_SAVED_TREE (thunk_fndecl) = gfc_finish_block (&body);
-+ tmp = getdecls ();
- poplevel (1, 0, 1);
- BLOCK_SUPERCONTEXT (DECL_INITIAL (thunk_fndecl)) = thunk_fndecl;
-+ DECL_SAVED_TREE (thunk_fndecl)
-+ = build3_v (BIND_EXPR, tmp, DECL_SAVED_TREE (thunk_fndecl),
-+ DECL_INITIAL (thunk_fndecl));
-
- /* Output the GENERIC tree. */
- dump_function (TDI_original, thunk_fndecl);
-@@ -3652,7 +3656,7 @@ gfc_generate_function_code (gfc_namespac
-
- trans_function_start (sym);
-
-- gfc_start_block (&block);
-+ gfc_init_block (&block);
-
- if (ns->entries && ns->proc_name->ts.type == BT_CHARACTER)
- {
-@@ -3886,11 +3890,16 @@ gfc_generate_function_code (gfc_namespac
- saved_function_decls = NULL_TREE;
-
- DECL_SAVED_TREE (fndecl) = gfc_finish_block (&block);
-+ decl = getdecls ();
-
- /* Finish off this function and send it for code generation. */
- poplevel (1, 0, 1);
- BLOCK_SUPERCONTEXT (DECL_INITIAL (fndecl)) = fndecl;
-
-+ DECL_SAVED_TREE (fndecl)
-+ = build3_v (BIND_EXPR, decl, DECL_SAVED_TREE (fndecl),
-+ DECL_INITIAL (fndecl));
-+
- /* Output the GENERIC tree. */
- dump_function (TDI_original, fndecl);
-
-@@ -3969,9 +3978,13 @@ gfc_generate_constructors (void)
- DECL_SAVED_TREE (fndecl) = build_stmt (EXPR_STMT, tmp);
- }
-
-+ decl = getdecls ();
- poplevel (1, 0, 1);
-
- BLOCK_SUPERCONTEXT (DECL_INITIAL (fndecl)) = fndecl;
-+ DECL_SAVED_TREE (fndecl)
-+ = build3_v (BIND_EXPR, decl, DECL_SAVED_TREE (fndecl),
-+ DECL_INITIAL (fndecl));
-
- free_after_parsing (cfun);
- free_after_compilation (cfun);
diff --git a/gcc43-pr37858.patch b/gcc43-pr37858.patch
deleted file mode 100644
index 21fa405..0000000
--- a/gcc43-pr37858.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-2008-11-03 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/37858
- * passes.c (execute_one_pass): Don't look at cfun->curr_properties
- for ipa and simple ipa passes.
-
- * gcc.dg/pr37858.c: New test.
-
---- gcc/passes.c (revision 141544)
-+++ gcc/passes.c (revision 141545)
-@@ -1289,6 +1289,7 @@ execute_one_pass (struct opt_pass *pass)
- if (initializing_dump
- && dump_file
- && graph_dump_format != no_graph
-+ && cfun
- && (cfun->curr_properties & (PROP_cfg | PROP_rtl))
- == (PROP_cfg | PROP_rtl))
- {
---- gcc/testsuite/gcc.dg/pr37858.c (revision 0)
-+++ gcc/testsuite/gcc.dg/pr37858.c (revision 141545)
-@@ -0,0 +1,11 @@
-+/* PR middle-end/37858 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fdump-ipa-early_local_cleanups -dv" } */
-+
-+int
-+main (void)
-+{
-+ return 0;
-+}
-+
-+/* { dg-final { cleanup-ipa-dump "early_local_cleanups" } } */
diff --git a/gcc43-pr37870.patch b/gcc43-pr37870.patch
deleted file mode 100644
index 3e43d4f..0000000
--- a/gcc43-pr37870.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-2008-10-29 Jakub Jelinek <jakub@redhat.com>
-
- PR middle-end/37870
- * expmed.c (extract_bit_field_1): If int_mode_for_mode returns
- BLKmode for non-memory, convert using a wider MODE_INT mode
- or through memory.
-
- * gcc.target/i386/pr37870.c: New test.
-
---- gcc/expmed.c (revision 141429)
-+++ gcc/expmed.c (revision 141430)
-@@ -1278,9 +1278,8 @@ extract_bit_field_1 (rtx str_rtx, unsign
- {
- if (MEM_P (op0))
- op0 = adjust_address (op0, imode, 0);
-- else
-+ else if (imode != BLKmode)
- {
-- gcc_assert (imode != BLKmode);
- op0 = gen_lowpart (imode, op0);
-
- /* If we got a SUBREG, force it into a register since we
-@@ -1288,6 +1287,24 @@ extract_bit_field_1 (rtx str_rtx, unsign
- if (GET_CODE (op0) == SUBREG)
- op0 = force_reg (imode, op0);
- }
-+ else if (REG_P (op0))
-+ {
-+ rtx reg, subreg;
-+ imode = smallest_mode_for_size (GET_MODE_BITSIZE (GET_MODE (op0)),
-+ MODE_INT);
-+ reg = gen_reg_rtx (imode);
-+ subreg = gen_lowpart_SUBREG (GET_MODE (op0), reg);
-+ emit_move_insn (subreg, op0);
-+ op0 = reg;
-+ bitnum += SUBREG_BYTE (subreg) * BITS_PER_UNIT;
-+ }
-+ else
-+ {
-+ rtx mem = assign_stack_temp (GET_MODE (op0),
-+ GET_MODE_SIZE (GET_MODE (op0)), 0);
-+ emit_move_insn (mem, op0);
-+ op0 = adjust_address (mem, BLKmode, 0);
-+ }
- }
- }
-
---- gcc/testsuite/gcc.target/i386/pr37870.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/pr37870.c (revision 141430)
-@@ -0,0 +1,29 @@
-+/* PR middle-end/37870 */
-+/* { dg-do run } */
-+/* { dg-options "-O2" } */
-+
-+unsigned int
-+foo (long double x)
-+{
-+ struct { char a[8]; unsigned int b:7; } c;
-+ __builtin_memcpy (&c, &x, sizeof (c));
-+ return c.b;
-+}
-+
-+unsigned int
-+bar (long double x)
-+{
-+ union { struct { char a[8]; unsigned int b:7; } c; long double d; } u;
-+ u.d = x;
-+ return u.c.b;
-+}
-+
-+int
-+main (void)
-+{
-+ if (foo (1.245L) != bar (1.245L)
-+ || foo (245.67L) != bar (245.67L)
-+ || foo (0.00567L) != bar (0.00567L))
-+ __builtin_abort ();
-+ return 0;
-+}
diff --git a/gcc43-pr37879.patch b/gcc43-pr37879.patch
deleted file mode 100644
index a6deb97..0000000
--- a/gcc43-pr37879.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-2008-10-27 Jakub Jelinek <jakub@redhat.com>
-
- PR tree-optimization/37879
- * predict.c (tree_estimate_probability): Check if last_stmt is
- non-NULL before dereferencing it.
-
- * gcc.dg/pr37879.c: New test.
-
---- gcc/predict.c (revision 141389)
-+++ gcc/predict.c (revision 141390)
-@@ -1374,6 +1374,7 @@ tree_estimate_probability (void)
- {
- edge e;
- edge_iterator ei;
-+ tree last;
-
- FOR_EACH_EDGE (e, ei, bb->succs)
- {
-@@ -1396,7 +1397,8 @@ tree_estimate_probability (void)
- && e->dest != EXIT_BLOCK_PTR
- && single_succ_p (e->dest)
- && single_succ_edge (e->dest)->dest == EXIT_BLOCK_PTR
-- && TREE_CODE (last_stmt (e->dest)) == RETURN_EXPR)
-+ && (last = last_stmt (e->dest)) != NULL_TREE
-+ && TREE_CODE (last) == RETURN_EXPR)
- {
- edge e1;
- edge_iterator ei1;
---- gcc/testsuite/gcc.dg/pr37879.c (revision 0)
-+++ gcc/testsuite/gcc.dg/pr37879.c (revision 141390)
-@@ -0,0 +1,28 @@
-+/* PR tree-optimization/37879 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2" } */
-+
-+static inline void bar (int) __attribute__ ((noreturn));
-+void baz () __attribute__ ((noreturn));
-+
-+inline int
-+foo (int i)
-+{
-+ return i;
-+}
-+
-+int i = 23;
-+static inline void
-+bar (int j)
-+{
-+ if (j)
-+ asm ("");
-+} /* { dg-warning "does return" } */
-+
-+void
-+baz ()
-+{
-+ int j;
-+ bar (foo (j = i++));
-+ asm ("");
-+}
diff --git a/gcc43-pr37924.patch b/gcc43-pr37924.patch
deleted file mode 100644
index 62baac2..0000000
--- a/gcc43-pr37924.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-2008-10-28 Jakub Jelinek <jakub@redhat.com>
-
- PR c/37924
- * combine.c (make_compound_operation): Don't call make_extraction with
- non-positive length.
- (simplify_shift_const_1): Canonicalize count even if complement_p.
-
- * gcc.c-torture/execute/pr37924.c: New test.
-
---- gcc/combine.c (revision 141412)
-+++ gcc/combine.c (revision 141413)
-@@ -7024,7 +7024,8 @@ make_compound_operation (rtx x, enum rtx
- if (GET_CODE (rhs) == CONST_INT
- && GET_CODE (lhs) == ASHIFT
- && GET_CODE (XEXP (lhs, 1)) == CONST_INT
-- && INTVAL (rhs) >= INTVAL (XEXP (lhs, 1)))
-+ && INTVAL (rhs) >= INTVAL (XEXP (lhs, 1))
-+ && INTVAL (rhs) < mode_width)
- {
- new = make_compound_operation (XEXP (lhs, 0), next_code);
- new = make_extraction (mode, new,
-@@ -7044,6 +7045,7 @@ make_compound_operation (rtx x, enum rtx
- && (OBJECT_P (SUBREG_REG (lhs))))
- && GET_CODE (rhs) == CONST_INT
- && INTVAL (rhs) < HOST_BITS_PER_WIDE_INT
-+ && INTVAL (rhs) < mode_width
- && (new = extract_left_shift (lhs, INTVAL (rhs))) != 0)
- new = make_extraction (mode, make_compound_operation (new, next_code),
- 0, NULL_RTX, mode_width - INTVAL (rhs),
-@@ -9023,11 +9025,6 @@ simplify_shift_const_1 (enum rtx_code co
- if (GET_CODE (varop) == CLOBBER)
- return NULL_RTX;
-
-- /* If we discovered we had to complement VAROP, leave. Making a NOT
-- here would cause an infinite loop. */
-- if (complement_p)
-- break;
--
- /* Convert ROTATERT to ROTATE. */
- if (code == ROTATERT)
- {
-@@ -9073,6 +9070,11 @@ simplify_shift_const_1 (enum rtx_code co
- }
- }
-
-+ /* If we discovered we had to complement VAROP, leave. Making a NOT
-+ here would cause an infinite loop. */
-+ if (complement_p)
-+ break;
-+
- /* An arithmetic right shift of a quantity known to be -1 or 0
- is a no-op. */
- if (code == ASHIFTRT
---- gcc/testsuite/gcc.c-torture/execute/pr37924.c (revision 0)
-+++ gcc/testsuite/gcc.c-torture/execute/pr37924.c (revision 141413)
-@@ -0,0 +1,50 @@
-+/* PR c/37924 */
-+
-+extern void abort (void);
-+
-+signed char a;
-+unsigned char b;
-+
-+int
-+test1 (void)
-+{
-+ int c = -1;
-+ return ((unsigned int) (a ^ c)) >> 9;
-+}
-+
-+int
-+test2 (void)
-+{
-+ int c = -1;
-+ return ((unsigned int) (b ^ c)) >> 9;
-+}
-+
-+int
-+main (void)
-+{
-+ a = 0;
-+ if (test1 () != (-1U >> 9))
-+ abort ();
-+ a = 0x40;
-+ if (test1 () != (-1U >> 9))
-+ abort ();
-+ a = 0x80;
-+ if (test1 () != (a < 0) ? 0 : (-1U >> 9))
-+ abort ();
-+ a = 0xff;
-+ if (test1 () != (a < 0) ? 0 : (-1U >> 9))
-+ abort ();
-+ b = 0;
-+ if (test2 () != (-1U >> 9))
-+ abort ();
-+ b = 0x40;
-+ if (test2 () != (-1U >> 9))
-+ abort ();
-+ b = 0x80;
-+ if (test2 () != (-1U >> 9))
-+ abort ();
-+ b = 0xff;
-+ if (test2 () != (-1U >> 9))
-+ abort ();
-+ return 0;
-+}
diff --git a/gcc43-rh251682.patch b/gcc43-rh251682.patch
deleted file mode 100644
index e96ae6f..0000000
--- a/gcc43-rh251682.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-2008-04-01 Jakub Jelinek <jakub@redhat.com>
-
- PR pch/13675
- * files.c (struct _cpp_file): Remove pch field.
- (pch_open_file): Don't set file->pch, just file->pchname.
- (should_stack_file): After pfile->cb.read_pch call
- free pchname and clear pchname, don't close file->fd.
- Test file->pchname instead of file->pch. Don't close fd after cb.
- (_cpp_stack_include): Test file->pchname instead of file->pch.
-
- * c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
-
---- libcpp/files.c.jj 2008-02-18 23:50:17.000000000 +0100
-+++ libcpp/files.c 2008-03-31 15:59:01.000000000 +0200
-@@ -106,9 +106,6 @@ struct _cpp_file
-
- /* If BUFFER above contains the true contents of the file. */
- bool buffer_valid;
--
-- /* File is a PCH (on return from find_include_file). */
-- bool pch;
- };
-
- /* A singly-linked list for all searches for a given file name, with
-@@ -322,9 +319,7 @@ pch_open_file (cpp_reader *pfile, _cpp_f
- }
- closedir (pchdir);
- }
-- if (valid)
-- file->pch = true;
-- else
-+ if (!valid)
- *invalid_pch = true;
- }
-
-@@ -703,11 +698,12 @@ should_stack_file (cpp_reader *pfile, _c
- return false;
-
- /* Handle PCH files immediately; don't stack them. */
-- if (file->pch)
-+ if (file->pchname)
- {
- pfile->cb.read_pch (pfile, file->pchname, file->fd, file->path);
-- close (file->fd);
- file->fd = -1;
-+ free ((void *) file->pchname);
-+ file->pchname = NULL;
- return false;
- }
-
-@@ -916,7 +912,7 @@ _cpp_stack_include (cpp_reader *pfile, c
- complicates LAST_SOURCE_LINE_LOCATION. This does not apply if we
- found a PCH file (in which case linemap_add is not called) or we
- were included from the command-line. */
-- if (! file->pch && file->err_no == 0 && type != IT_CMDLINE)
-+ if (file->pchname == NULL && file->err_no == 0 && type != IT_CMDLINE)
- pfile->line_table->highest_location--;
-
- return _cpp_stack_file (pfile, file, type == IT_IMPORT);
---- gcc/c-pch.c.jj 2008-02-18 23:46:08.000000000 +0100
-+++ gcc/c-pch.c 2008-03-31 15:56:00.000000000 +0200
-@@ -372,6 +372,7 @@ c_common_read_pch (cpp_reader *pfile, co
- if (f == NULL)
- {
- cpp_errno (pfile, CPP_DL_ERROR, "calling fdopen");
-+ close (fd);
- return;
- }
-
-@@ -380,6 +381,7 @@ c_common_read_pch (cpp_reader *pfile, co
- if (fread (&h, sizeof (h), 1, f) != 1)
- {
- cpp_errno (pfile, CPP_DL_ERROR, "reading");
-+ fclose (f);
- return;
- }
-
-@@ -425,7 +427,10 @@ c_common_read_pch (cpp_reader *pfile, co
- gt_pch_restore (f);
-
- if (cpp_read_state (pfile, name, f, smd) != 0)
-- return;
-+ {
-+ fclose (f);
-+ return;
-+ }
-
- fclose (f);
-
diff --git a/gcc43-rh330771.patch b/gcc43-rh330771.patch
deleted file mode 100644
index f52b919..0000000
--- a/gcc43-rh330771.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-2007-10-16 Jakub Jelinek <jakub@redhat.com>
-
- * Makefile.am (libgcj_tools_la_LIBADD): Add.
- * Makefile.in: Regenerated.
-
---- libjava/Makefile.am.jj 2007-03-17 09:20:30.000000000 +0100
-+++ libjava/Makefile.am 2007-10-16 15:45:14.000000000 +0200
-@@ -277,6 +277,8 @@ EXTRA_libgcj_la_SOURCES = java/lang/Obje
-
- libgcj_tools_la_SOURCES = classpath/tools/tools.zip
- libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes -fsource-filename=$(here)/classpath/tools/all-classes.lst
-+## See jv_convert_LDADD.
-+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
- libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
- -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
- $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
---- libjava/Makefile.in.jj 2007-07-04 21:11:11.000000000 +0200
-+++ libjava/Makefile.in 2007-10-16 15:56:07.000000000 +0200
-@@ -153,7 +153,6 @@ am__objects_1 = gnu/gcj/xlib/lib_gnu_awt
- am_lib_gnu_awt_xlib_la_OBJECTS = $(am__objects_1)
- lib_gnu_awt_xlib_la_OBJECTS = $(am_lib_gnu_awt_xlib_la_OBJECTS)
- @XLIB_AWT_TRUE@am_lib_gnu_awt_xlib_la_rpath = -rpath $(toolexeclibdir)
--libgcj_tools_la_LIBADD =
- am_libgcj_tools_la_OBJECTS = classpath/tools/libgcj_tools_la-tools.lo
- libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS)
- @INTERPRETER_TRUE@am__DEPENDENCIES_1 = gnu/classpath/jdwp.lo \
-@@ -941,6 +940,7 @@ libgcj_la_LINK = $(LIBLINK)
- EXTRA_libgcj_la_SOURCES = java/lang/Object.java
- libgcj_tools_la_SOURCES = classpath/tools/tools.zip
- libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes -fsource-filename=$(here)/classpath/tools/all-classes.lst
-+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
- libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
- -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
- $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
diff --git a/gcc43-rh341221.patch b/gcc43-rh341221.patch
deleted file mode 100644
index 28e73b0..0000000
--- a/gcc43-rh341221.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-2007-10-21 Jakub Jelinek <jakub@redhat.com>
-
- * doc/Makefile.am (POD2MAN): Set date from cp-tools.texinfo
- timestamp rather than from current date.
- * doc/Makefile.in: Regenerated.
-
---- libjava/classpath/doc/Makefile.am.jj 2007-12-07 17:55:00.000000000 +0100
-+++ libjava/classpath/doc/Makefile.am 2007-12-07 18:55:28.000000000 +0100
-@@ -30,7 +30,7 @@ TOOLS_MANFILES = \
- gserialver.1 \
- gtnameserv.1
-
--POD2MAN = pod2man --center="GNU" --release="$(VERSION)"
-+POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
- TEXI2POD = perl $(srcdir)/texi2pod.pl
- STAMP = echo timestamp >
-
---- libjava/classpath/doc/Makefile.in.jj 2007-12-07 17:55:00.000000000 +0100
-+++ libjava/classpath/doc/Makefile.in 2007-12-07 18:55:43.000000000 +0100
-@@ -357,7 +357,7 @@ TOOLS_MANFILES = \
- gserialver.1 \
- gtnameserv.1
-
--POD2MAN = pod2man --center="GNU" --release="$(VERSION)"
-+POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
- TEXI2POD = perl $(srcdir)/texi2pod.pl
- STAMP = echo timestamp >
- @GENINSRC_FALSE@STAMP_GENINSRC =
diff --git a/gcc43-sparc-config-detection.patch b/gcc43-sparc-config-detection.patch
deleted file mode 100644
index 4ee95d4..0000000
--- a/gcc43-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
-@@ -2343,7 +2343,7 @@ sparc-*-elf*)
- extra_parts="crti.o crtn.o crtbegin.o crtend.o"
- use_fixproto=yes
- ;;
--sparc-*-linux*) # SPARC's running GNU/Linux, libc6
-+sparc-*-linux* | sparcv9*-*-linux*) # SPARC's running GNU/Linux, libc6
- tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h"
- extra_options="${extra_options} sparc/long-double-switch.opt"
- tmake_file="${tmake_file} sparc/t-linux sparc/t-crtfm"
-@@ -2477,7 +2477,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
- esac
- need_64bit_hwint=yes
- ;;
--sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
-+sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux
- tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux64.h"
- extra_options="${extra_options} sparc/long-double-switch.opt"
- tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
---- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
-+++ libgcc/config.host 2008-04-24 15:46:49.000000000 -0500
-@@ -572,7 +572,7 @@ sparc64-*-openbsd*)
- ;;
- sparc-*-elf*)
- ;;
--sparc-*-linux*) # SPARC's running GNU/Linux, libc6
-+sparc-*-linux* | sparcv9*-*-linux*) # SPARC's running GNU/Linux, libc6
- extra_parts="$extra_parts crtfastmath.o"
- tmake_file="${tmake_file} sparc/t-crtfm"
- ;;
-@@ -590,7 +590,7 @@ sparc-wrs-vxworks)
- ;;
- sparc64-*-freebsd*|ultrasparc-*-freebsd*)
- ;;
--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} sparc/t-crtfm"
- ;;
diff --git a/gcc43-x86_64-va_start.patch b/gcc43-x86_64-va_start.patch
deleted file mode 100644
index efa06bc..0000000
--- a/gcc43-x86_64-va_start.patch
+++ /dev/null
@@ -1,355 +0,0 @@
-2008-09-02 H.J. Lu <hongjiu.lu@intel.com>
- Jakub Jelinek <jakub@redhat.com>
-
- * config/i386/i386.c (X86_64_VARARGS_SIZE): Removed.
- (setup_incoming_varargs_64): Set/check ix86_varargs_gpr_size and
- ix86_varargs_fpr_size. Use ix86_varargs_gpr_size instead of
- REGPARM_MAX. Don't set ix86_save_varrargs_registers.
- (ix86_va_start): Check ix86_varargs_gpr_size and
- ix86_varargs_fpr_size instead of cfun->va_list_gpr_size and
- cfun->va_list_fpr_size, respectively. Subtract 8*REGPARM_MAX
- from frame pointer if ix86_varargs_gpr_size == 0.
- (ix86_compute_frame_layout): Updated.
- * config/i386/i386.h (ix86_save_varrargs_registers): Removed.
- (ix86_varargs_gpr_size): Define.
- (ix86_varargs_fpr_size): Likewise.
- (machine_function): Remove save_varrargs_registers.
- Add varargs_gpr_size and varargs_fpr_size.
-
- * gcc.target/i386/amd64-abi-3.c: New test.
- * gcc.target/i386/amd64-abi-4.c: Likewise.
- * gcc.target/i386/amd64-abi-5.c: Likewise.
- * gcc.target/i386/amd64-abi-6.c: Likewise.
-
---- gcc/config/i386/i386.h (revision 139909)
-+++ gcc/config/i386/i386.h (revision 139910)
-@@ -2440,7 +2440,8 @@ struct machine_function GTY(())
- struct stack_local_entry *stack_locals;
- const char *some_ld_name;
- rtx force_align_arg_pointer;
-- int save_varrargs_registers;
-+ int varargs_gpr_size;
-+ int varargs_fpr_size;
- int accesses_prev_frame;
- int optimize_mode_switching[MAX_386_ENTITIES];
- int needs_cld;
-@@ -2463,7 +2464,8 @@ struct machine_function GTY(())
- };
-
- #define ix86_stack_locals (cfun->machine->stack_locals)
--#define ix86_save_varrargs_registers (cfun->machine->save_varrargs_registers)
-+#define ix86_varargs_gpr_size (cfun->machine->varargs_gpr_size)
-+#define ix86_varargs_fpr_size (cfun->machine->varargs_fpr_size)
- #define ix86_optimize_mode_switching (cfun->machine->optimize_mode_switching)
- #define ix86_current_function_needs_cld (cfun->machine->needs_cld)
- #define ix86_tls_descriptor_calls_expanded_in_cfun \
---- gcc/config/i386/i386.c (revision 139909)
-+++ gcc/config/i386/i386.c (revision 139910)
-@@ -1616,9 +1616,6 @@ rtx ix86_compare_op0 = NULL_RTX;
- rtx ix86_compare_op1 = NULL_RTX;
- rtx ix86_compare_emitted = NULL_RTX;
-
--/* Size of the register save area. */
--#define X86_64_VARARGS_SIZE (REGPARM_MAX * UNITS_PER_WORD + SSE_REGPARM_MAX * 16)
--
- /* Define the structure for the machine field in struct function. */
-
- struct stack_local_entry GTY(())
-@@ -4976,11 +4973,22 @@ setup_incoming_varargs_64 (CUMULATIVE_AR
- alias_set_type set;
- int i;
-
-- if (! cfun->va_list_gpr_size && ! cfun->va_list_fpr_size)
-+ /* GPR size of varargs save area. */
-+ if (cfun->va_list_gpr_size)
-+ ix86_varargs_gpr_size = REGPARM_MAX * UNITS_PER_WORD;
-+ else
-+ ix86_varargs_gpr_size = 0;
-+
-+ /* FPR size of varargs save area. We don't need it if we don't pass
-+ anything in SSE registers. */
-+ if (cum->sse_nregs && cfun->va_list_fpr_size)
-+ ix86_varargs_fpr_size = SSE_REGPARM_MAX * 16;
-+ else
-+ ix86_varargs_fpr_size = 0;
-+
-+ if (! ix86_varargs_gpr_size && ! ix86_varargs_fpr_size)
- return;
-
-- /* Indicate to allocate space on the stack for varargs save area. */
-- ix86_save_varrargs_registers = 1;
- /* We need 16-byte stack alignment to save SSE registers. If user
- asked for lower preferred_stack_boundary, lets just hope that he knows
- what he is doing and won't varargs SSE values.
-@@ -5006,7 +5014,7 @@ setup_incoming_varargs_64 (CUMULATIVE_AR
- x86_64_int_parameter_registers[i]));
- }
-
-- if (cum->sse_nregs && cfun->va_list_fpr_size)
-+ if (ix86_varargs_fpr_size)
- {
- /* Now emit code to save SSE registers. The AX parameter contains number
- of SSE parameter registers used to call this function. We use
-@@ -5041,7 +5049,7 @@ setup_incoming_varargs_64 (CUMULATIVE_AR
- tmp_reg = gen_reg_rtx (Pmode);
- emit_insn (gen_rtx_SET (VOIDmode, tmp_reg,
- plus_constant (save_area,
-- 8 * REGPARM_MAX + 127)));
-+ ix86_varargs_gpr_size + 127)));
- mem = gen_rtx_MEM (BLKmode, plus_constant (tmp_reg, -127));
- MEM_NOTRAP_P (mem) = 1;
- set_mem_alias_set (mem, set);
-@@ -5145,7 +5153,7 @@ ix86_va_start (tree valist, rtx nextarg)
- expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
- }
-
-- if (cfun->va_list_fpr_size)
-+ if (TARGET_SSE && cfun->va_list_fpr_size)
- {
- type = TREE_TYPE (fpr);
- t = build2 (GIMPLE_MODIFY_STMT, type, fpr,
-@@ -5164,12 +5172,15 @@ ix86_va_start (tree valist, rtx nextarg)
- TREE_SIDE_EFFECTS (t) = 1;
- expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
-
-- if (cfun->va_list_gpr_size || cfun->va_list_fpr_size)
-+ if (ix86_varargs_gpr_size || ix86_varargs_fpr_size)
- {
- /* Find the register save area.
- Prologue of the function save it right above stack frame. */
- type = TREE_TYPE (sav);
- t = make_tree (type, frame_pointer_rtx);
-+ if (!ix86_varargs_gpr_size)
-+ t = build2 (POINTER_PLUS_EXPR, type, t,
-+ size_int (-8 * REGPARM_MAX));
- t = build2 (GIMPLE_MODIFY_STMT, type, sav, t);
- TREE_SIDE_EFFECTS (t) = 1;
- expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL);
-@@ -6079,13 +6090,8 @@ ix86_compute_frame_layout (struct ix86_f
- offset += frame->nregs * UNITS_PER_WORD;
-
- /* Va-arg area */
-- if (ix86_save_varrargs_registers)
-- {
-- offset += X86_64_VARARGS_SIZE;
-- frame->va_arg_size = X86_64_VARARGS_SIZE;
-- }
-- else
-- frame->va_arg_size = 0;
-+ frame->va_arg_size = ix86_varargs_gpr_size + ix86_varargs_fpr_size;
-+ offset += frame->va_arg_size;
-
- /* Align start of frame for local function. */
- frame->padding1 = ((offset + stack_alignment_needed - 1)
---- gcc/testsuite/gcc.target/i386/amd64-abi-3.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/amd64-abi-3.c (revision 139910)
-@@ -0,0 +1,18 @@
-+/* { dg-do compile } */
-+/* { dg-require-effective-target lp64 } */
-+/* { dg-options "-O2 -mno-sse" } */
-+/* { dg-final { scan-assembler "subq\[\\t \]*\\\$88,\[\\t \]*%rsp" } } */
-+/* { dg-final { scan-assembler-not "subq\[\\t \]*\\\$216,\[\\t \]*%rsp" } } */
-+
-+#include <stdarg.h>
-+
-+void foo (va_list va_arglist);
-+
-+void
-+test (int a1, ...)
-+{
-+ va_list va_arglist;
-+ va_start (va_arglist, a1);
-+ foo (va_arglist);
-+ va_end (va_arglist);
-+}
---- gcc/testsuite/gcc.target/i386/amd64-abi-5.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/amd64-abi-5.c (revision 139910)
-@@ -0,0 +1,64 @@
-+/* { dg-do run } */
-+/* { dg-require-effective-target lp64 } */
-+/* { dg-options "-O2" } */
-+
-+#include <stdarg.h>
-+#include <assert.h>
-+
-+int n1 = 30;
-+double n2 = 324;
-+double n3 = 39494.94;
-+double n4 = 407;
-+double n5 = 32.304;
-+double n6 = 394.14;
-+double n7 = 4.07;
-+double n8 = 32.4;
-+double n9 = 314.194;
-+double n10 = 0.1407;
-+
-+int e1;
-+double e2;
-+double e3;
-+double e4;
-+double e5;
-+double e6;
-+double e7;
-+double e8;
-+double e9;
-+double e10;
-+
-+static void
-+__attribute__((noinline))
-+test (int a1, ...)
-+{
-+ e1 = a1;
-+ va_list va_arglist;
-+ va_start (va_arglist, a1);
-+ e2 = va_arg (va_arglist, double);
-+ e3 = va_arg (va_arglist, double);
-+ e4 = va_arg (va_arglist, double);
-+ e5 = va_arg (va_arglist, double);
-+ e6 = va_arg (va_arglist, double);
-+ e7 = va_arg (va_arglist, double);
-+ e8 = va_arg (va_arglist, double);
-+ e9 = va_arg (va_arglist, double);
-+ e10 = va_arg (va_arglist, double);
-+ va_end (va_arglist);
-+}
-+
-+int
-+main ()
-+{
-+ test (n1, n2, n3, n4, n5, n6, n7, n8, n9, n10);
-+ assert (n1 == e1);
-+ assert (n2 == e2);
-+ assert (n3 == e3);
-+ assert (n4 == e4);
-+ assert (n5 == e5);
-+ assert (n6 == e6);
-+ assert (n7 == e7);
-+ assert (n8 == e8);
-+ assert (n9 == e9);
-+ assert (n10 == e10);
-+ return 0;
-+}
---- gcc/testsuite/gcc.target/i386/amd64-abi-4.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/amd64-abi-4.c (revision 139910)
-@@ -0,0 +1,47 @@
-+/* { dg-do run } */
-+/* { dg-require-effective-target lp64 } */
-+/* { dg-options "-O2 -mno-sse" } */
-+
-+#include <stdarg.h>
-+#include <assert.h>
-+
-+int n1 = 30;
-+int n2 = 324;
-+void *n3 = (void *) &n2;
-+int n4 = 407;
-+
-+int e1;
-+int e2;
-+void *e3;
-+int e4;
-+
-+static void
-+__attribute__((noinline))
-+foo (va_list va_arglist)
-+{
-+ e2 = va_arg (va_arglist, int);
-+ e3 = va_arg (va_arglist, void *);
-+ e4 = va_arg (va_arglist, int);
-+}
-+
-+static void
-+__attribute__((noinline))
-+test (int a1, ...)
-+{
-+ e1 = a1;
-+ va_list va_arglist;
-+ va_start (va_arglist, a1);
-+ foo (va_arglist);
-+ va_end (va_arglist);
-+}
-+
-+int
-+main ()
-+{
-+ test (n1, n2, n3, n4);
-+ assert (n1 == e1);
-+ assert (n2 == e2);
-+ assert (n3 == e3);
-+ assert (n4 == e4);
-+ return 0;
-+}
---- gcc/testsuite/gcc.target/i386/amd64-abi-6.c (revision 0)
-+++ gcc/testsuite/gcc.target/i386/amd64-abi-6.c (revision 139910)
-@@ -0,0 +1,71 @@
-+/* { dg-do run } */
-+/* { dg-require-effective-target lp64 } */
-+/* { dg-options "-O2" } */
-+
-+#include <stdarg.h>
-+#include <assert.h>
-+
-+int n1 = 30;
-+double n2 = 324;
-+double n3 = 39494.94;
-+double n4 = 407;
-+double n5 = 32.304;
-+double n6 = 394.14;
-+double n7 = 4.07;
-+double n8 = 32.4;
-+double n9 = 314.194;
-+double n10 = 0.1407;
-+
-+int e1;
-+double e2;
-+double e3;
-+double e4;
-+double e5;
-+double e6;
-+double e7;
-+double e8;
-+double e9;
-+double e10;
-+
-+static void
-+__attribute__((noinline))
-+foo (va_list va_arglist)
-+{
-+ e2 = va_arg (va_arglist, double);
-+ e3 = va_arg (va_arglist, double);
-+ e4 = va_arg (va_arglist, double);
-+ e5 = va_arg (va_arglist, double);
-+ e6 = va_arg (va_arglist, double);
-+ e7 = va_arg (va_arglist, double);
-+ e8 = va_arg (va_arglist, double);
-+ e9 = va_arg (va_arglist, double);
-+ e10 = va_arg (va_arglist, double);
-+}
-+
-+static void
-+__attribute__((noinline))
-+test (int a1, ...)
-+{
-+ va_list va_arglist;
-+ e1 = a1;
-+ va_start (va_arglist, a1);
-+ foo (va_arglist);
-+ va_end (va_arglist);
-+}
-+
-+int
-+main ()
-+{
-+ test (n1, n2, n3, n4, n5, n6, n7, n8, n9, n10);
-+ assert (n1 == e1);
-+ assert (n2 == e2);
-+ assert (n3 == e3);
-+ assert (n4 == e4);
-+ assert (n5 == e5);
-+ assert (n6 == e6);
-+ assert (n7 == e7);
-+ assert (n8 == e8);
-+ assert (n9 == e9);
-+ assert (n10 == e10);
-+ return 0;
-+}
diff --git a/gcc43.spec b/gcc43.spec
deleted file mode 100644
index 97a3e01..0000000
--- a/gcc43.spec
+++ /dev/null
@@ -1,2058 +0,0 @@
-%define DATE 20081105
-%define SVNREV 141601
-%define gcc_version 4.3.2
-# Note, gcc_release must be integer, if you want to add suffixes to
-# %{release}, append them after %{gcc_release} on Release: line.
-%define gcc_release 7
-%define _unpackaged_files_terminate_build 0
-%define multilib_64_archs sparc64 ppc64 s390x x86_64
-%define include_gappletviewer 1
-%ifarch %{ix86} x86_64 ia64 ppc alpha
-%define build_ada 1
-%else
-%define build_ada 0
-%endif
-%define build_java 1
-# If you don't have already a usable gcc-java and libgcj for your arch,
-# do on some arch which has it rpmbuild -bc --with java_tar gcc41.spec
-# which creates libjava-classes-%{version}-%{release}.tar.bz2
-# With this then on the new arch do rpmbuild -ba -v --with java_bootstrap gcc41.spec
-%define bootstrap_java %{?_with_java_bootstrap:%{build_java}}%{!?_with_java_bootstrap:0}
-%define build_java_tar %{?_with_java_tar:%{build_java}}%{!?_with_java_tar:0}
-%ifarch s390x
-%define multilib_32_arch s390
-%endif
-%ifarch sparc64
-%define multilib_32_arch sparcv9
-%endif
-%ifarch ppc64
-%define multilib_32_arch ppc
-%endif
-%ifarch x86_64
-%define multilib_32_arch i386
-%endif
-Summary: Various compilers (C, C++, Objective-C, Java, ...)
-Name: gcc
-Version: %{gcc_version}
-Release: %{gcc_release}
-# libgcc, libgfortran, libmudflap and crtstuff have an exception which allows
-# linking it into any kind of programs or shared libraries without
-# restrictions.
-License: GPLv3+ and GPLv2+ with exceptions
-Group: Development/Languages
-# The source for this package was pulled from upstream's vcs. Use the
-# following commands to generate the tarball:
-# svn export svn://gcc.gnu.org/svn/gcc/branches/redhat/gcc-4_3-branch@%{SVNREV} gcc-%{version}-%{DATE}
-# tar cf - gcc-%{version}-%{DATE} | bzip2 -9 > gcc-%{version}-%{DATE}.tar.bz2
-Source0: gcc-%{version}-%{DATE}.tar.bz2
-Source1: libgcc_post_upgrade.c
-Source2: README.libgcjwebplugin.so
-Source3: protoize.1
-%define fastjar_ver 0.95
-Source4: http://download.savannah.nongnu.org/releases/fastjar/fastjar-%{fastjar_ver}.tar.gz
-URL: http://gcc.gnu.org
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-# Need binutils with -pie support >= 2.14.90.0.4-4
-# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4
-# Need binutils which handle -msecure-plt on ppc >= 2.16.91.0.2-2
-# Need binutils which support .weakref >= 2.16.91.0.3-1
-# Need binutils which support --hash-style=gnu >= 2.17.50.0.2-7
-# Need binutils which support mffgpr and mftgpr >= 2.17.50.0.2-8
-# Need binutils which support --build-id >= 2.17.50.0.17-3
-BuildRequires: binutils >= 2.17.50.0.17-3
-BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, texinfo, sharutils
-%if %{build_java}
-BuildRequires: /usr/share/java/eclipse-ecj.jar, zip, unzip
-%if %{bootstrap_java}
-Source10: libjava-classes-%{version}-%{release}.tar.bz2
-%else
-BuildRequires: gcc-java, libgcj
-%endif
-%endif
-# Make sure pthread.h doesn't contain __thread tokens
-# Make sure glibc supports stack protector
-# Make sure glibc supports DT_GNU_HASH
-BuildRequires: glibc-devel >= 2.4.90-13
-BuildRequires: elfutils-devel >= 0.72
-%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
-# Make sure glibc supports TFmode long double
-BuildRequires: glibc >= 2.3.90-35
-%endif
-%ifarch %{multilib_64_archs} sparcv9 ppc
-# Ensure glibc{,-devel} is installed for both multilib arches
-BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
-%endif
-%if %{build_ada}
-# Ada requires Ada to build
-BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1
-%endif
-%ifarch ia64
-BuildRequires: libunwind >= 0.98
-%endif
-Requires: cpp = %{version}-%{release}
-# Need .eh_frame ld optimizations
-# Need proper visibility support
-# Need -pie support
-# Need --as-needed/--no-as-needed support
-# On ppc64, need omit dot symbols support and --non-overlapping-opd
-# Need binutils that owns /usr/bin/c++filt
-# Need binutils that support .weakref
-# Need binutils that supports --hash-style=gnu
-# Need binutils that support mffgpr/mftgpr
-# Need binutils that support --build-id
-Requires: binutils >= 2.17.50.0.17-3
-# Make sure gdb will understand DW_FORM_strp
-Conflicts: gdb < 5.1-2
-Requires: glibc-devel >= 2.2.90-12
-%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
-# Make sure glibc supports TFmode long double
-Requires: glibc >= 2.3.90-35
-%endif
-Requires: libgcc >= %{version}-%{release}
-Requires: libgomp = %{version}-%{release}
-#Obsoletes: gcc3
-#Obsoletes: egcs
-%ifarch sparc
-#Obsoletes: gcc-sparc32
-#Obsoletes: gcc-c++-sparc32
-%endif
-%ifarch ppc
-#Obsoletes: gcc-ppc32
-#Obsoletes: gcc-c++-ppc32
-%endif
-#Obsoletes: gcc-chill
-%if !%{build_ada}
-Obsoletes: gcc-gnat < %{version}-%{release}
-Obsoletes: libgnat < %{version}-%{release}
-%endif
-%ifarch sparc sparc64
-#Obsoletes: egcs64
-%endif
-#Obsoletes: gcc34
-#Obsoletes: gcc35
-#Obsoletes: gcc4
-Prereq: /sbin/install-info
-AutoReq: true
-
-Patch1: gcc43-build-id.patch
-Patch2: gcc43-c++-builtin-redecl.patch
-Patch3: gcc43-ia64-libunwind.patch
-Patch4: gcc43-java-nomulti.patch
-Patch5: gcc43-ppc32-retaddr.patch
-Patch6: gcc43-ppc64-ia64-GNU-stack.patch
-Patch7: gcc43-pr27898.patch
-Patch8: gcc43-pr32139.patch
-Patch9: gcc43-pr33763.patch
-Patch10: gcc43-rh330771.patch
-Patch11: gcc43-rh341221.patch
-Patch12: gcc43-java-debug-iface-type.patch
-Patch13: gcc43-i386-libgomp.patch
-Patch14: gcc43-rh251682.patch
-Patch15: gcc43-sparc-config-detection.patch
-Patch16: gcc43-libgomp-omp_h-multilib.patch
-Patch17: gcc43-x86_64-va_start.patch
-Patch18: gcc43-pr37189.patch
-Patch19: gcc43-altivec-tests.patch
-Patch20: gcc43-libtool-no-rpath.patch
-Patch21: gcc43-pr36741-revert.patch
-Patch22: gcc43-pr34037.patch
-Patch23: gcc43-pr37738.patch
-Patch24: gcc43-pr29609.patch
-Patch25: gcc43-aes.patch
-Patch26: gcc43-pr29609-2.patch
-Patch27: gcc43-pr29609-3.patch
-Patch28: gcc43-pr37870.patch
-Patch29: gcc43-pr37858.patch
-Patch30: gcc43-pr37879.patch
-Patch31: gcc43-pr37924.patch
-
-# On ARM EABI systems, we do want -gnueabi to be part of the
-# target triple.
-%ifnarch %{arm}
-%define _gnu %{nil}
-%endif
-%ifarch sparcv9
-%define gcc_target_platform sparc64-%{_vendor}-%{_target_os}
-%endif
-%ifarch ppc
-%define gcc_target_platform ppc64-%{_vendor}-%{_target_os}
-%endif
-%ifnarch sparcv9 ppc
-%define gcc_target_platform %{_target_platform}
-%endif
-
-%description
-The gcc package contains the GNU Compiler Collection version 4.3.
-You'll need this package in order to compile C code.
-
-%package -n libgcc
-Summary: GCC version 4.3 shared support library
-Group: System Environment/Libraries
-Autoreq: false
-
-%description -n libgcc
-This package contains GCC shared support library which is needed
-e.g. for exception handling support.
-
-%package c++
-Summary: C++ support for GCC
-Group: Development/Languages
-Requires: gcc = %{version}-%{release}
-Requires: libstdc++ = %{version}-%{release}
-Requires: libstdc++-devel = %{version}-%{release}
-#Obsoletes: gcc3-c++
-#Obsoletes: gcc34-c++
-#Obsoletes: gcc35-c++
-#Obsoletes: gcc4-c++
-Autoreq: true
-
-%description c++
-This package adds C++ support to the GNU Compiler Collection.
-It includes support for most of the current C++ specification,
-including templates and exception handling.
-
-%package -n libstdc++
-Summary: GNU Standard C++ Library
-Group: System Environment/Libraries
-#Obsoletes: libstdc++3
-#Obsoletes: libstdc++34
-Autoreq: true
-
-%description -n libstdc++
-The libstdc++ package contains a rewritten standard compliant GCC Standard
-C++ Library.
-
-%package -n libstdc++-devel
-Summary: Header files and libraries for C++ development
-Group: Development/Libraries
-Requires: libstdc++ = %{version}-%{release}, %{_prefix}/%{_lib}/libstdc++.so.6
-#Obsoletes: libstdc++3-devel
-#Obsoletes: libstdc++34-devel
-Autoreq: true
-
-%description -n libstdc++-devel
-This is the GNU implementation of the standard C++ libraries. This
-package includes the header files and libraries needed for C++
-development. This includes rewritten implementation of STL.
-
-%package objc
-Summary: Objective-C support for GCC
-Group: Development/Languages
-Requires: gcc = %{version}-%{release}
-Requires: libobjc = %{version}-%{release}
-#Obsoletes: gcc3-objc
-Autoreq: true
-
-%description objc
-gcc-objc provides Objective-C support for the GCC.
-Mainly used on systems running NeXTSTEP, Objective-C is an
-object-oriented derivative of the C language.
-
-%package objc++
-Summary: Objective-C++ support for GCC
-Group: Development/Languages
-Requires: gcc-c++ = %{version}-%{release}, gcc-objc = %{version}-%{release}
-Autoreq: true
-
-%description objc++
-gcc-objc++ package provides Objective-C++ support for the GCC.
-
-%package -n libobjc
-Summary: Objective-C runtime
-Group: System Environment/Libraries
-Autoreq: true
-
-%description -n libobjc
-This package contains Objective-C shared library which is needed to run
-Objective-C dynamically linked programs.
-
-%package gfortran
-Summary: Fortran 95 support
-Group: Development/Languages
-Requires: gcc = %{version}-%{release}
-Requires: libgfortran = %{version}-%{release}
-BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1
-Prereq: /sbin/install-info
-#Obsoletes: gcc3-g77
-#Obsoletes: gcc-g77
-#Obsoletes: gcc4-gfortran
-Autoreq: true
-
-%description gfortran
-The gcc-gfortran package provides support for compiling Fortran 95
-programs with the GNU Compiler Collection.
-
-%package -n libgfortran
-Summary: Fortran 95 runtime
-Group: System Environment/Libraries
-#Obsoletes: libf2c
-Autoreq: true
-
-%description -n libgfortran
-This package contains Fortran 95 shared library which is needed to run
-Fortran 95 dynamically linked programs.
-
-%package -n libgomp
-Summary: GCC OpenMP v3.0 shared support library
-Group: System Environment/Libraries
-Prereq: /sbin/install-info
-
-%description -n libgomp
-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 and static libraries 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 java
-Summary: Java support for GCC
-Group: Development/Languages
-Requires: gcc = %{version}-%{release}
-Requires: libgcj = %{version}-%{release}
-Requires: libgcj-devel = %{version}-%{release}
-Requires: /usr/share/java/eclipse-ecj.jar
-#Obsoletes: gcc3-java
-#Obsoletes: gcc34-java
-#Obsoletes: gcc35-java
-#Obsoletes: gcc4-java
-Prereq: /sbin/install-info
-Autoreq: true
-
-%description java
-This package adds support for compiling Java(tm) programs and
-bytecode into native code.
-
-%package -n libgcj
-Summary: Java runtime library for gcc
-Group: System Environment/Libraries
-Prereq: /sbin/install-info
-Requires: zip >= 2.1
-Requires: gtk2 >= 2.4.0
-Requires: glib2 >= 2.4.0
-Requires: libart_lgpl >= 2.1.0
-%if %{build_java}
-BuildRequires: gtk2-devel >= 2.4.0
-BuildRequires: glib2-devel >= 2.4.0
-BuildRequires: xulrunner-devel
-BuildRequires: libart_lgpl-devel >= 2.1.0
-BuildRequires: alsa-lib-devel
-BuildRequires: libXtst-devel
-BuildRequires: libXt-devel
-%endif
-#Obsoletes: gcc-libgcj
-#Obsoletes: libgcj3
-#Obsoletes: libgcj34
-#Obsoletes: libgcj4
-Autoreq: true
-
-%description -n libgcj
-The Java(tm) runtime library. You will need this package to run your Java
-programs compiled using the Java compiler from GNU Compiler Collection (gcj).
-
-%package -n libgcj-devel
-Summary: Libraries for Java development using GCC
-Group: Development/Languages
-Requires: libgcj = %{version}-%{release}, %{_prefix}/%{_lib}/libgcj.so.9
-Requires: zlib-devel, %{_prefix}/%{_lib}/libz.so
-Requires: /bin/awk
-#Obsoletes: libgcj3-devel
-#Obsoletes: libgcj34-devel
-#Obsoletes: libgcj4-devel
-Autoreq: false
-Autoprov: false
-
-%description -n libgcj-devel
-The Java(tm) static libraries and C header files. You will need this
-package to compile your Java programs using the GCC Java compiler (gcj).
-
-%package -n libgcj-src
-Summary: Java library sources from GCC4 preview
-Group: System Environment/Libraries
-Requires: libgcj = %{version}-%{release}
-#Obsoletes: libgcj4-src
-Autoreq: true
-
-%description -n libgcj-src
-The Java(tm) runtime library sources for use in Eclipse.
-
-%package -n cpp
-Summary: The C Preprocessor
-Group: Development/Languages
-Prereq: /sbin/install-info
-%ifarch ia64
-#Obsoletes: gnupro
-%endif
-Autoreq: true
-
-%description -n cpp
-Cpp is the GNU C-Compatible Compiler Preprocessor.
-Cpp is a macro processor which is used automatically
-by the C compiler to transform your program before actual
-compilation. It is called a macro processor because it allows
-you to define macros, abbreviations for longer
-constructs.
-
-The C preprocessor provides four separate functionalities: the
-inclusion of header files (files of declarations that can be
-substituted into your program); macro expansion (you can define macros,
-and the C preprocessor will replace the macros with their definitions
-throughout the program); conditional compilation (using special
-preprocessing directives, you can include or exclude parts of the
-program according to various conditions); and line control (if you use
-a program to combine or rearrange source files into an intermediate
-file which is then compiled, you can use line control to inform the
-compiler about where each source line originated).
-
-You should install this package if you are a C programmer and you use
-macros.
-
-%package gnat
-Summary: Ada 95 support for GCC
-Group: Development/Languages
-Requires: gcc = %{version}-%{release}, libgnat = %{version}-%{release}
-#Obsoletes: gnat-devel, gcc3-gnat
-Prereq: /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.
-
-%package -n libgnat
-Summary: GNU Ada 95 runtime shared libraries
-Group: System Environment/Libraries
-#Obsoletes: gnat libgnat3
-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.
-
-%prep
-%setup -q -n gcc-%{version}-%{DATE}
-%patch1 -p0 -b .build-id~
-%patch2 -p0 -b .c++-builtin-redecl~
-%patch3 -p0 -b .ia64-libunwind~
-%patch4 -p0 -b .java-nomulti~
-%patch5 -p0 -b .ppc32-retaddr~
-%patch6 -p0 -b .ppc64-ia64-GNU-stack~
-%patch7 -p0 -b .pr27898~
-%patch8 -p0 -b .pr32139~
-%patch9 -p0 -b .pr33763~
-%patch10 -p0 -b .rh330771~
-%patch11 -p0 -b .rh341221~
-%patch12 -p0 -b .java-debug-iface-type~
-%patch13 -p0 -b .i386-libgomp~
-%patch14 -p0 -b .rh251682~
-%patch15 -p0 -b .sparc-config-detection~
-%patch16 -p0 -b .libgomp-omp_h-multilib~
-%patch17 -p0 -b .x86_64-va_start~
-%patch18 -p0 -b .pr37189~
-%patch19 -p0 -b .altivec-tests~
-%patch20 -p0 -b .libtool-no-rpath~
-%patch21 -p0 -b .pr36741-revert~
-%patch22 -p0 -b .pr34037~
-%patch23 -p0 -b .pr37738~
-%patch24 -p0 -b .pr29609~
-%patch25 -p0 -b .aes~
-%patch26 -p0 -b .pr29609-2~
-%patch27 -p0 -b .pr29609-3~
-%patch28 -p0 -b .pr37870~
-%patch29 -p0 -b .pr37858~
-%patch30 -p0 -b .pr37879~
-%patch31 -p0 -b .pr37924~
-
-tar xzf %{SOURCE4}
-
-%if %{bootstrap_java}
-tar xjf %{SOURCE10}
-%endif
-
-sed -i -e 's/4\.3\.3/4.3.2/' gcc/BASE-VER
-echo 'Red Hat %{version}-%{gcc_release}' > gcc/DEV-PHASE
-
-cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
-
-# Hack to avoid building multilib libjava
-perl -pi -e 's/^all: all-redirect/ifeq (\$(MULTISUBDIR),)\nall: all-redirect\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^install: install-redirect/ifeq (\$(MULTISUBDIR),)\ninstall: install-redirect\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^check: check-redirect/ifeq (\$(MULTISUBDIR),)\ncheck: check-redirect\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^all: all-recursive/ifeq (\$(MULTISUBDIR),)\nall: all-recursive\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^install: install-recursive/ifeq (\$(MULTISUBDIR),)\ninstall: install-recursive\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: check-recursive\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in
-
-./contrib/gcc_update --touch
-
-# To make rpmlint happy (argh), fix up names in ChangeLog entries to valid UTF-8
-LC_ALL=C sed -i \
- -e 's/D\(o\|\xf6\)nmez/D\xc3\xb6nmez/' \
- -e 's/\(Av\|\x81\xc1v\|\xc1v\|\xef\xbf\xbdv\?\|\x81\xc3\x81v\|\xc3v\)ila/\xc3\x81vila/' \
- -e 's/Esp\(in\|\x81\xedn\|\xedn\|\xef\xbf\xbdn\?\|\xef\xbf\xbd\xadn\|\x81\xc3\xadn\|\xc3\xef\xbf\xbd\xadn\)dola/Esp\xc3\xadndola/' \
- -e 's/Schl\(u\|\xef\xbf\xbd\|\xfcu\?\|\x81\xfc\|\x81\xc3\xbc\|\xc3\xaf\xc2\xbf\xc2\xbd\|\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\xc2\xbc\)ter/Schl\xc3\xbcter/' \
- -e 's/Humi\(e\|\xe8\)res/Humi\xc3\xa8res/' \
- -e 's/L\(ow\|\xc3\xaf\xc2\xbf\xc2\xbd\|oew\|\xf6w\)is/L\xc3\xb6wis/' \
- -e 's/G\xfctlein/G\xc3\xbctlein/' \
- -e 's/G\xe1[b]or/G\xc3\xa1bor/' \
- -e 's/L\xf3ki/L\xc3\xb3ki/' \
- -e 's/Fautr\xc3 /Fautr\xc3\xa9 /' \
- -e 's/S\xe9[b]astian/S\xc3\xa9bastian/' \
- -e 's/Th\xef\xbf\xbd[d]ore/Th\xc3\xa9odore/' \
- -e 's/Cors\xc3\xc2\xa9pius/Cors\xc3\xa9pius/' \
- -e 's/K\xfchl/K\xc3\xbchl/' \
- -e 's/R\xf6nnerup/R\xc3\xb6nnerup/' \
- -e 's/L\xf8vset/L\xc3\xb8vset/' \
- -e 's/Ph\x81\xfb\x81\xf4ng-Th\x81\xe5o/Ph\xc3\xbb\xc3\xb4ng-Th\xc3\xa5o/' \
- -e 's/V\x81\xf5/V\xc3\xb5/' \
- -e 's/J\xf6nsson/J\xc3\xb6nsson/' \
- -e 's/V\xef\xbf\xbdis\xef\xbf\xbdnen/V\xc3\xa4is\xc3\xa4nen/' \
- -e 's/J\xef\xbf\xbdrg/J\xc3\xb6rg/' \
- -e 's/M\xef\xbf\xbdsli/M\xc3\xb6sli/' \
- -e 's/R\xe4ty/R\xc3\xa4ty/' \
- -e 's/2003\xc2\xad-/2003-/' \
- -e 's/\xc2\xa0/ /g' \
- -e 's/ \xa0/ /g' \
- -e 's/\xa0 //' \
- `find . -name \*ChangeLog\*`
-LC_ALL=C sed -i -e 's/\xa0/ /' gcc/doc/options.texi
-
-%ifarch ppc
-if [ -d libstdc++-v3/config/abi/post/powerpc64-linux-gnu ]; then
- mkdir -p libstdc++-v3/config/abi/post/powerpc64-linux-gnu/64
- mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{,64/}baseline_symbols.txt
- mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/{32/,}baseline_symbols.txt
- rm -rf libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32
-fi
-%endif
-%ifarch sparc
-if [ -d libstdc++-v3/config/abi/post/sparc64-linux-gnu ]; then
- mkdir -p libstdc++-v3/config/abi/post/sparc64-linux-gnu/64
- mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{,64/}baseline_symbols.txt
- mv libstdc++-v3/config/abi/post/sparc64-linux-gnu/{32/,}baseline_symbols.txt
- rm -rf libstdc++-v3/config/abi/post/sparc64-linux-gnu/32
-fi
-%endif
-
-%build
-
-%if %{build_java}
-# gjar isn't usable, so even when GCC source tree no longer includes
-# fastjar, build it anyway.
-mkdir fastjar-%{fastjar_ver}/obj-%{gcc_target_platform}
-cd fastjar-%{fastjar_ver}/obj-%{gcc_target_platform}
-../configure CFLAGS="$RPM_OPT_FLAGS" --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir}
-make %{?_smp_mflags}
-export PATH=`pwd`${PATH:+:$PATH}
-cd ../../
-%endif
-
-rm -fr obj-%{gcc_target_platform}
-mkdir obj-%{gcc_target_platform}
-cd obj-%{gcc_target_platform}
-
-%if %{build_java}
-%if !%{bootstrap_java}
-# If we don't have gjavah in $PATH, try to build it with the old gij
-mkdir java_hacks
-cd java_hacks
-if [ ! -x /usr/bin/gjavah ]; then
- cp -a ../../libjava/classpath/tools/external external
- mkdir -p gnu/classpath/tools
- cp -a ../../libjava/classpath/tools/gnu/classpath/tools/{common,javah,getopt} gnu/classpath/tools/
- cp -a ../../libjava/classpath/resource/gnu/classpath/tools/common/Messages.properties gnu/classpath/tools/common
- cd external/asm; for i in `find . -name \*.java`; do gcj --encoding ISO-8859-1 -C $i -I.; done; cd ../..
- for i in `find gnu -name \*.java`; do gcj -C $i -I. -Iexternal/asm/; done
- gcj -findirect-dispatch -O2 -fmain=gnu.classpath.tools.javah.Main -I. -Iexternal/asm/ `find . -name \*.class` -o gjavah.real
- cat > gjavah <<EOF
-#!/bin/sh
-export CLASSPATH=`pwd`${CLASSPATH:+:$CLASSPATH}
-exec `pwd`/gjavah.real "\$@"
-EOF
- chmod +x `pwd`/gjavah
-fi
-cat > ecj1 <<EOF
-#!/bin/sh
-exec gij -cp /usr/share/java/eclipse-ecj.jar org.eclipse.jdt.internal.compiler.batch.GCCMain "\$@"
-EOF
-chmod +x `pwd`/ecj1
-export PATH=`pwd`${PATH:+:$PATH}
-cd ..
-%endif
-%endif
-
-CC=gcc
-OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
-OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'`
-%ifarch sparc
-OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'`
-%endif
-%ifarch %{ix86}
-OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-march=i386//g'`
-%endif
-%ifarch sparc64
-cat > gcc64 <<"EOF"
-#!/bin/sh
-exec /usr/bin/gcc -m64 "$@"
-EOF
-chmod +x gcc64
-CC=`pwd`/gcc64
-%endif
-%ifarch ppc64
-if gcc -m64 -xc -S /dev/null -o - > /dev/null 2>&1; then
- cat > gcc64 <<"EOF"
-#!/bin/sh
-exec /usr/bin/gcc -m64 "$@"
-EOF
- chmod +x gcc64
- CC=`pwd`/gcc64
-fi
-%endif
-OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'`
-case "$OPT_FLAGS" in
- *-fasynchronous-unwind-tables*)
- sed -i -e 's/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables/' \
- ../gcc/Makefile.in
- ;;
-esac
-CC="$CC" CFLAGS="$OPT_FLAGS" CXXFLAGS="`echo $OPT_FLAGS | sed 's/ -Wall / /g'`" XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
- GCJFLAGS="$OPT_FLAGS" \
- ../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
- --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap \
- --enable-shared --enable-threads=posix --enable-checking=release \
- --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
-%if !%{build_ada}
- --enable-languages=c,c++,objc,obj-c++,java,fortran \
-%else
- --enable-languages=c,c++,objc,obj-c++,java,fortran,ada \
-%endif
-%if !%{build_java}
- --disable-libgcj \
-%else
- --enable-java-awt=gtk --disable-dssi --enable-plugin \
- --with-java-home=%{_prefix}/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre \
- --enable-libgcj-multifile \
-%if !%{bootstrap_java}
- --enable-java-maintainer-mode \
-%endif
- --with-ecj-jar=/usr/share/java/eclipse-ecj.jar \
- --disable-libjava-multilib \
-%endif
-%ifarch %{arm}
- --disable-sjlj-exceptions \
-%endif
-%ifarch ppc ppc64
- --enable-secureplt \
-%endif
-%ifarch sparc sparcv9 sparc64 ppc ppc64 s390 s390x alpha
- --with-long-double-128 \
-%endif
-%ifarch sparc
- --disable-linux-futex \
-%endif
-%ifarch sparc64
- --with-cpu=ultrasparc \
-%endif
-%ifarch sparc sparcv9
- --host=%{gcc_target_platform} --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=v7
-%endif
-%ifarch ppc
- --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
-%endif
-%ifarch %{ix86} x86_64
- --with-cpu=generic \
-%endif
-%ifarch s390 s390x
- --with-tune=z9-109 \
-%endif
-%ifnarch sparc sparcv9 ppc
- --build=%{gcc_target_platform}
-%endif
-
-GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
-#GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
-
-# run the tests.
-make %{?_smp_mflags} -k check RUNTESTFLAGS="ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++" || :
-cd gcc
-mv testsuite{,.normal}
-make %{?_smp_mflags} -k \
- `sed -n 's/check-ada//;s/^CHECK_TARGETS[[:blank:]]*=[[:blank:]]*//p' Makefile` \
- RUNTESTFLAGS="--target_board=unix/-fstack-protector ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++" || :
-mv testsuite{,.ssp}
-mv testsuite{.normal,}
-cd ..
-echo ====================TESTING=========================
-( ../contrib/test_summary || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}'
-echo ====================TESTING END=====================
-mkdir testlogs-%{_target_platform}-%{version}-%{release}
-for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats\|ada'`; do
- ln $i testlogs-%{_target_platform}-%{version}-%{release}/ || :
-done
-for i in `find . -name \*.log | grep -F testsuite.ssp/ | grep -v 'config.log\|acats\|ada'`; do
- ln $i testlogs-%{_target_platform}-%{version}-%{release}/ssp-`basename $i` || :
-done
-tar cf - testlogs-%{_target_platform}-%{version}-%{release} | bzip2 -9c \
- | uuencode testlogs-%{_target_platform}.tar.bz2 || :
-rm -rf testlogs-%{_target_platform}-%{version}-%{release}
-
-# Make protoize
-make -C gcc CC="./xgcc -B ./ -O2" proto
-
-# Make generated man pages even if Pod::Man is not new enough
-perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl
-for i in ../gcc/doc/*.texi; do
- cp -a $i $i.orig; sed 's/ftable/table/' $i.orig > $i
-done
-make -C gcc generated-manpages
-for i in ../gcc/doc/*.texi; do mv -f $i.orig $i; done
-
-# Copy various doc files here and there
-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/changelogs/{gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}
-sed -e 's,@VERSION@,%{gcc_version},' %{SOURCE2} > rpm.doc/README.libgcjwebplugin.so
-
-for i in {gcc,gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}/ChangeLog*; do
- cp -p $i rpm.doc/changelogs/$i
-done
-
-(cd gcc/fortran; for i in ChangeLog*; do
- cp -p $i ../../rpm.doc/gfortran/$i
-done)
-(cd libgfortran; for i in ChangeLog*; do
- cp -p $i ../rpm.doc/gfortran/$i.libgfortran
-done)
-(cd gcc/objc; for i in README*; do
- cp -p $i ../../rpm.doc/objc/$i.objc
-done)
-(cd libobjc; for i in README*; do
- cp -p $i ../rpm.doc/objc/$i.libobjc
-done)
-(cd boehm-gc; for i in ChangeLog*; do
- cp -p $i ../rpm.doc/boehm-gc/$i.gc
-done)
-(cd fastjar-%{fastjar_ver}; for i in ChangeLog* README*; do
- cp -p $i ../rpm.doc/fastjar/$i.fastjar
-done)
-(cd libffi; for i in ChangeLog* README* LICENSE; do
- cp -p $i ../rpm.doc/libffi/$i.libffi
-done)
-(cd libjava; for i in ChangeLog* README*; do
- cp -p $i ../rpm.doc/libjava/$i.libjava
-done)
-cp -p libjava/LIBGCJ_LICENSE rpm.doc/libjava/
-
-rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9]
-find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9
-
-%if %{build_java_tar}
-find libjava -name \*.h -type f | xargs grep -l '// DO NOT EDIT THIS FILE - it is machine generated' > libjava-classes.list
-find libjava -name \*.class -type f >> libjava-classes.list
-find libjava/testsuite -name \*.jar -type f >> libjava-classes.list
-tar cf - -T libjava-classes.list | bzip2 -9 > $RPM_SOURCE_DIR/libjava-classes-%{version}-%{release}.tar.bz2
-%endif
-
-%install
-rm -fr $RPM_BUILD_ROOT
-
-perl -pi -e \
- 's~href="l(ibstdc|atest)~href="http://gcc.gnu.org/onlinedocs/libstdc++/l\1~' \
- libstdc++-v3/doc/html/api.html
-
-cd obj-%{gcc_target_platform}
-
-%if %{build_java}
-export PATH=`pwd`/../fastjar-%{fastjar_ver}/obj-%{gcc_target_platform}${PATH:+:$PATH}
-%if !%{bootstrap_java}
-export PATH=`pwd`/java_hacks${PATH:+:$PATH}
-%endif
-%endif
-
-TARGET_PLATFORM=%{gcc_target_platform}
-
-# There are some MP bugs in libstdc++ Makefiles
-make -C %{gcc_target_platform}/libstdc++-v3
-
-make prefix=$RPM_BUILD_ROOT%{_prefix} mandir=$RPM_BUILD_ROOT%{_mandir} \
- infodir=$RPM_BUILD_ROOT%{_infodir} install
-%if %{build_java}
-make DESTDIR=$RPM_BUILD_ROOT -C %{gcc_target_platform}/libjava install-src.zip
-%endif
-%if %{build_ada}
-chmod 644 $RPM_BUILD_ROOT%{_infodir}/gnat*
-%endif
-
-FULLPATH=$RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-FULLEPATH=$RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-
-# fix some things
-ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/cc
-mkdir -p $RPM_BUILD_ROOT/lib
-ln -sf ..%{_prefix}/bin/cpp $RPM_BUILD_ROOT/lib/cpp
-ln -sf gfortran $RPM_BUILD_ROOT%{_prefix}/bin/f95
-rm -f $RPM_BUILD_ROOT%{_infodir}/dir
-gzip -9 $RPM_BUILD_ROOT%{_infodir}/*.info*
-ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/gnatgcc
-
-cxxconfig="`find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h`"
-for i in `find %{gcc_target_platform}/[36]*/libstdc++-v3/include -name c++config.h 2>/dev/null`; do
- if ! diff -up $cxxconfig $i; then
- cat > $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/c++config.h <<EOF
-#ifndef _CPP_CPPCONFIG_WRAPPER
-#define _CPP_CPPCONFIG_WRAPPER 1
-#include <bits/wordsize.h>
-#if __WORDSIZE == 32
-%ifarch %{multilib_64_archs}
-`cat $(find %{gcc_target_platform}/32/libstdc++-v3/include -name c++config.h)`
-%else
-`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
-%endif
-#else
-%ifarch %{multilib_64_archs}
-`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
-%else
-`cat $(find %{gcc_target_platform}/64/libstdc++-v3/include -name c++config.h)`
-%endif
-#endif
-#endif
-EOF
- break
- fi
-done
-
-# Nuke bits/stdc++.h.gch dirs
-# 1) there is no bits/stdc++.h header installed, so when gch file can't be
-# used, compilation fails
-# 2) sometimes it is hard to match the exact options used for building
-# libstdc++-v3 or they aren't desirable
-# 3) there are multilib issues, conflicts etc. with this
-# 4) it is huge
-# People can always precompile on their own whatever they want, but
-# shipping this for everybody is unnecessary.
-rm -rf $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/stdc++.h.gch
-
-%ifarch sparcv9 sparc64
-ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
- $RPM_BUILD_ROOT%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
-%endif
-%ifarch ppc ppc64
-ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
- $RPM_BUILD_ROOT%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
-%endif
-
-%ifarch sparcv9 ppc
-FULLLPATH=$FULLPATH/lib32
-%endif
-%ifarch sparc64 ppc64
-FULLLPATH=$FULLPATH/lib64
-%endif
-if [ -n "$FULLLPATH" ]; then
- mkdir -p $FULLLPATH
-else
- FULLLPATH=$FULLPATH
-fi
-
-find $RPM_BUILD_ROOT -name \*.la | xargs rm -f
-%if %{build_java}
-# gcj -static doesn't work properly anyway, unless using --whole-archive
-# and saving 35MB is not bad.
-find $RPM_BUILD_ROOT -name libgcj.a -o -name libgtkpeer.a \
- -o -name libgjsmalsa.a -o -name libgcj-tools.a -o -name libjvm.a \
- -o -name libgij.a -o -name libgcj_bc.a | xargs rm -f
-
-mv $RPM_BUILD_ROOT%{_prefix}/lib/libgcj.spec $FULLPATH/
-sed -i -e 's/lib: /&%%{static:%%eJava programs cannot be linked statically}/' \
- $FULLPATH/libgcj.spec
-%endif
-
-mkdir -p $RPM_BUILD_ROOT/%{_lib}
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcc_s.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
-chmod 755 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
-ln -sf libgcc_s-%{gcc_version}-%{DATE}.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so.1
-ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so
-%ifarch sparcv9 ppc
-ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64/libgcc_s.so
-%endif
-%ifarch %{multilib_64_archs}
-ln -sf /lib/libgcc_s.so.1 $FULLPATH/32/libgcc_s.so
-%endif
-
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/
-
-%if %{build_ada}
-mv -f $FULLPATH/adalib/libgnarl-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
-mv -f $FULLPATH/adalib/libgnat-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
-rm -f $FULLPATH/adalib/libgnarl.so* $FULLPATH/adalib/libgnat.so*
-%endif
-
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/libexec/getconf
-if gcc/xgcc -B gcc/ -E -dD -xc /dev/null | grep __LONG_MAX__.*2147483647; then
- ln -sf POSIX_V6_ILP32_OFF32 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default
-else
- ln -sf POSIX_V6_LP64_OFF64 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default
-fi
-
-%if %{build_java}
-pushd ../fastjar-%{fastjar_ver}/obj-%{gcc_target_platform}
-make install DESTDIR=$RPM_BUILD_ROOT
-popd
-
-if [ "%{_lib}" != "lib" ]; then
- mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig
- sed '/^libdir/s/lib$/%{_lib}/' $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc \
- > $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig/`basename $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc`
-fi
-%endif
-
-pushd $FULLPATH
-if [ "%{_lib}" = "lib" ]; then
-ln -sf ../../../libobjc.so.2 libobjc.so
-ln -sf ../../../libstdc++.so.6.* 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_java}
-ln -sf ../../../libgcj.so.9.* libgcj.so
-ln -sf ../../../libgcj-tools.so.9.* libgcj-tools.so
-ln -sf ../../../libgij.so.9.* libgij.so
-%endif
-%if %{build_ada}
-cd adalib
-ln -sf ../../../../libgnarl-*.so libgnarl.so
-ln -sf ../../../../libgnarl-*.so libgnarl-4.3.so
-ln -sf ../../../../libgnat-*.so libgnat.so
-ln -sf ../../../../libgnat-*.so libgnat-4.3.so
-cd ..
-%endif
-else
-ln -sf ../../../../%{_lib}/libobjc.so.2 libobjc.so
-ln -sf ../../../../%{_lib}/libstdc++.so.6.* 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_java}
-ln -sf ../../../../%{_lib}/libgcj.so.9.* libgcj.so
-ln -sf ../../../../%{_lib}/libgcj-tools.so.9.* libgcj-tools.so
-ln -sf ../../../../%{_lib}/libgij.so.9.* libgij.so
-%endif
-%if %{build_ada}
-cd adalib
-ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so
-ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-4.3.so
-ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so
-ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-4.3.so
-cd ..
-%endif
-fi
-%if %{build_java}
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcj_bc.so $FULLLPATH/
-%endif
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libsupc++.*a .
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.*a .
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.*a .
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.*a .
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.*a $FULLLPATH/
-
-%ifarch sparcv9 ppc
-ln -sf ../../../../../lib64/libobjc.so.2 64/libobjc.so
-ln -sf ../`echo ../../../../lib/libstdc++.so.6.* | 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_java}
-ln -sf ../`echo ../../../../lib/libgcj.so.9.* | sed s~/lib/~/lib64/~` 64/libgcj.so
-ln -sf ../`echo ../../../../lib/libgcj-tools.so.9.* | sed s~/lib/~/lib64/~` 64/libgcj-tools.so
-ln -sf ../`echo ../../../../lib/libgij.so.9.* | 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
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libsupc++.*a 64/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgfortran.*a 64/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libobjc.*a 64/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgomp.*a 64/
-ln -sf lib32/libstdc++.a libstdc++.a
-ln -sf ../lib64/libstdc++.a 64/libstdc++.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
-%endif
-%ifarch %{multilib_64_archs}
-mkdir -p 32
-ln -sf ../../../../libobjc.so.2 32/libobjc.so
-ln -sf ../`echo ../../../../lib64/libstdc++.so.6.* | 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_java}
-ln -sf ../`echo ../../../../lib64/libgcj.so.9.* | sed s~/../lib64/~/~` 32/libgcj.so
-ln -sf ../`echo ../../../../lib64/libgcj-tools.so.9.* | sed s~/../lib64/~/~` 32/libgcj-tools.so
-ln -sf ../`echo ../../../../lib64/libgij.so.9.* | sed s~/../lib64/~/~` 32/libgij.so
-%endif
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libsupc++.*a 32/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortran.*a 32/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libobjc.*a 32/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgomp.*a 32/
-%endif
-%ifarch sparc64 ppc64
-ln -sf ../lib32/libstdc++.a 32/libstdc++.a
-ln -sf lib64/libstdc++.a libstdc++.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_java}
-ln -sf ../lib32/libgcj_bc.so 32/libgcj_bc.so
-ln -sf lib64/libgcj_bc.so libgcj_bc.so
-%endif
-%else
-%ifarch %{multilib_64_archs}
-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}/libmudflap.a 32/libmudflap.a
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libmudflapth.a 32/libmudflapth.a
-%if %{build_java}
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgcj_bc.so 32/libgcj_bc.so
-%endif
-%endif
-%endif
-
-# 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 \) -a -type f`
-popd
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.so.3.*
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.so.1.*
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.so.0.*
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.so.2.*
-
-%if %{build_ada}
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnarl*so*
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnat*so*
-%endif
-
-mv $FULLPATH/include-fixed/syslimits.h $FULLPATH/include/syslimits.h
-mv $FULLPATH/include-fixed/limits.h $FULLPATH/include/limits.h
-for h in `find $FULLPATH/include -name \*.h`; do
- if grep -q 'It has been auto-edited by fixincludes from' $h; then
- rh=`grep -A2 'It has been auto-edited by fixincludes from' $h | tail -1 | sed 's|^.*"\(.*\)".*$|\1|'`
- diff -up $rh $h || :
- rm -f $h
- fi
-done
-
-cat > $RPM_BUILD_ROOT%{_prefix}/bin/c89 <<"EOF"
-#!/bin/sh
-fl="-std=c89"
-for opt; do
- case "$opt" in
- -ansi|-std=c89|-std=iso9899:1990) fl="";;
- -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2
- exit 1;;
- esac
-done
-exec gcc $fl ${1+"$@"}
-EOF
-cat > $RPM_BUILD_ROOT%{_prefix}/bin/c99 <<"EOF"
-#!/bin/sh
-fl="-std=c99"
-for opt; do
- case "$opt" in
- -std=c99|-std=iso9899:1999) fl="";;
- -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2
- exit 1;;
- esac
-done
-exec gcc $fl ${1+"$@"}
-EOF
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/bin/c?9
-
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/sbin
-gcc -static -Os %{SOURCE1} -o $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
-strip $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
-
-cd ..
-%find_lang %{name}
-%find_lang cpplib
-
-# Remove binaries we will not be including, so that they don't end up in
-# gcc-debuginfo
-rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/{libffi*,libiberty.a}
-rm -f $FULLEPATH/install-tools/{mkheaders,fixincl}
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib/{32,64}/libiberty.a
-rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libssp*
-rm -f $RPM_BUILD_ROOT%{_prefix}/bin/gnative2ascii
-
-%ifarch %{multilib_64_archs}
-# Remove libraries for the other arch on multilib arches
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.so*
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.a
-%else
-%ifarch sparcv9 ppc
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.so*
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.a
-%endif
-%endif
-
-%if %{build_java}
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \
- $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \
- $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version} \
- $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
-touch $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db
-%endif
-
-install -m644 %{SOURCE3} $RPM_BUILD_ROOT%{_mandir}/man1/protoize.1
-echo '.so man1/protoize.1' > $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
-chmod 644 $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post
-/sbin/install-info \
- --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
-
-%preun
-if [ $1 = 0 ]; then
- /sbin/install-info --delete \
- --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
-fi
-
-%post -n cpp
-/sbin/install-info \
- --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
-
-%preun -n cpp
-if [ $1 = 0 ]; then
- /sbin/install-info --delete \
- --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
-fi
-
-%post gfortran
-/sbin/install-info \
- --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
-
-%preun gfortran
-if [ $1 = 0 ]; then
- /sbin/install-info --delete \
- --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
-fi
-
-%post java
-/sbin/install-info \
- --info-dir=%{_infodir} %{_infodir}/gcj.info.gz || :
-
-%preun java
-if [ $1 = 0 ]; then
- /sbin/install-info --delete \
- --info-dir=%{_infodir} %{_infodir}/gcj.info.gz || :
-fi
-
-%post gnat
-/sbin/install-info \
- --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
-/sbin/install-info \
- --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || :
-/sbin/install-info \
- --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || :
-
-%preun gnat
-if [ $1 = 0 ]; then
- /sbin/install-info --delete \
- --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
- /sbin/install-info --delete \
- --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || :
- /sbin/install-info --delete \
- --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || :
-fi
-
-# Because glibc Prereq's libgcc and /sbin/ldconfig
-# comes from glibc, it might not exist yet when
-# libgcc is installed
-%post -n libgcc -p %{_prefix}/sbin/libgcc_post_upgrade
-
-%post -n libstdc++ -p /sbin/ldconfig
-
-%postun -n libstdc++ -p /sbin/ldconfig
-
-%post -n libobjc -p /sbin/ldconfig
-
-%postun -n libobjc -p /sbin/ldconfig
-
-%post -n libgcj
-/sbin/ldconfig
-/sbin/install-info \
- --info-dir=%{_infodir} %{_infodir}/cp-tools.info.gz || :
-/sbin/install-info \
- --info-dir=%{_infodir} %{_infodir}/fastjar.info.gz || :
-
-%preun -n libgcj
-if [ $1 = 0 ]; then
- /sbin/install-info --delete \
- --info-dir=%{_infodir} %{_infodir}/cp-tools.info.gz || :
- /sbin/install-info --delete \
- --info-dir=%{_infodir} %{_infodir}/fastjar.info.gz || :
-fi
-
-%postun -n libgcj -p /sbin/ldconfig
-
-%post -n libgfortran -p /sbin/ldconfig
-
-%postun -n libgfortran -p /sbin/ldconfig
-
-%post -n libgnat -p /sbin/ldconfig
-
-%postun -n libgnat -p /sbin/ldconfig
-
-%post -n libgomp
-/sbin/ldconfig
-/sbin/install-info \
- --info-dir=%{_infodir} %{_infodir}/libgomp.info.gz || :
-
-%preun -n libgomp
-if [ $1 = 0 ]; then
- /sbin/install-info --delete \
- --info-dir=%{_infodir} %{_infodir}/libgomp.info.gz || :
-fi
-
-%postun -n libgomp -p /sbin/ldconfig
-
-%post -n libmudflap -p /sbin/ldconfig
-
-%postun -n libmudflap -p /sbin/ldconfig
-
-%files -f %{name}.lang
-%defattr(-,root,root)
-%{_prefix}/bin/cc
-%{_prefix}/bin/c89
-%{_prefix}/bin/c99
-%{_prefix}/bin/gcc
-%{_prefix}/bin/gcov
-%{_prefix}/bin/protoize
-%{_prefix}/bin/unprotoize
-%ifarch ppc
-%{_prefix}/bin/%{_target_platform}-gcc
-%endif
-%ifarch sparc64 sparcv9
-%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
-%endif
-%ifarch ppc64
-%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
-%endif
-%{_prefix}/bin/%{gcc_target_platform}-gcc
-%{_mandir}/man1/gcc.1*
-%{_mandir}/man1/gcov.1*
-%{_mandir}/man1/protoize.1*
-%{_mandir}/man1/unprotoize.1*
-%{_infodir}/gcc*
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/SYSCALLS.c.X
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stddef.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdarg.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/varargs.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/float.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/limits.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdbool.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/iso646.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/syslimits.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/unwind.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/omp.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
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/emmintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/pmmintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/tmmintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ammintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/smmintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/nmmintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/bmmintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/wmmintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mmintrin-common.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
-%endif
-%ifarch ia64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ia64intrin.h
-%endif
-%ifarch ppc ppc64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ppc-asm.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/altivec.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/spe.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/paired.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ppu_intrinsics.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/si2vmx.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/spu2vmx.h
-%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
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcov.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_eh.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_s.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.spec
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.so
-%ifarch sparcv9 ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/crt*.o
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcov.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc_eh.a
-%{_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
-%endif
-%ifarch %{multilib_64_archs}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/crt*.o
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcov.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_eh.a
-%{_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
-%endif
-%ifarch sparcv9 sparc64 ppc ppc64
-%{_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
-%endif
-%dir %{_prefix}/libexec/getconf
-%{_prefix}/libexec/getconf/default
-%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING*
-
-%files -n cpp -f cpplib.lang
-%defattr(-,root,root)
-/lib/cpp
-%{_prefix}/bin/cpp
-%{_mandir}/man1/cpp.1*
-%{_infodir}/cpp*
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1
-
-%files -n libgcc
-%defattr(-,root,root)
-/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
-/%{_lib}/libgcc_s.so.1
-%{_prefix}/sbin/libgcc_post_upgrade
-%doc gcc/COPYING.LIB
-
-%files c++
-%defattr(-,root,root)
-%{_prefix}/bin/%{gcc_target_platform}-*++
-%{_prefix}/bin/g++
-%{_prefix}/bin/c++
-%{_mandir}/man1/g++.1*
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1plus
-%ifarch sparcv9 ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libsupc++.a
-%endif
-%ifarch %{multilib_64_archs}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libsupc++.a
-%endif
-%ifarch sparcv9 ppc %{multilib_64_archs}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
-%endif
-%ifarch sparcv9 sparc64 ppc ppc64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a
-%endif
-%doc rpm.doc/changelogs/gcc/cp/ChangeLog*
-
-%files -n libstdc++
-%defattr(-,root,root)
-%{_prefix}/%{_lib}/libstdc++.so.6*
-
-%files -n libstdc++-devel
-%defattr(-,root,root)
-%dir %{_prefix}/include/c++
-%dir %{_prefix}/include/c++/%{gcc_version}
-%{_prefix}/include/c++/%{gcc_version}/[^gjos]*
-%{_prefix}/include/c++/%{gcc_version}/os*
-%{_prefix}/include/c++/%{gcc_version}/s[^u]*
-%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/libstdc++.a
-%endif
-%ifarch sparc64 ppc64
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libstdc++.a
-%endif
-%ifnarch sparcv9 sparc64 ppc ppc64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a
-%endif
-%ifnarch sparcv9 ppc %{multilib_64_archs}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
-%endif
-%doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README* libstdc++-v3/doc/html/
-
-%files objc
-%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}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/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/objc
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1obj
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.so
-%ifarch sparcv9 ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.so
-%endif
-%ifarch %{multilib_64_archs}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.so
-%endif
-%doc rpm.doc/objc/*
-%doc libobjc/THREADS* rpm.doc/changelogs/libobjc/ChangeLog*
-
-%files objc++
-%defattr(-,root,root)
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1objplus
-
-%files -n libobjc
-%defattr(-,root,root)
-%{_prefix}/%{_lib}/libobjc.so.2*
-
-%files gfortran
-%defattr(-,root,root)
-%{_prefix}/bin/gfortran
-%{_prefix}/bin/f95
-%{_mandir}/man1/gfortran.1*
-%{_infodir}/gfortran*
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.f90
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.mod
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib_kinds.mod
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/f951
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortranbegin.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.so
-%ifarch sparcv9 ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortranbegin.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.so
-%endif
-%ifarch %{multilib_64_archs}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortranbegin.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.so
-%endif
-%doc rpm.doc/gfortran/*
-
-%files -n libgfortran
-%defattr(-,root,root)
-%{_prefix}/%{_lib}/libgfortran.so.3*
-
-%if %{build_java}
-%files java
-%defattr(-,root,root)
-%{_prefix}/bin/gcj
-%{_prefix}/bin/gjavah
-%{_prefix}/bin/gcjh
-%{_prefix}/bin/jcf-dump
-%{_mandir}/man1/gcj.1*
-%{_mandir}/man1/jcf-dump.1*
-%{_mandir}/man1/gjavah.1*
-%{_mandir}/man1/gcjh.1*
-%{_infodir}/gcj*
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jc1
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/ecj1
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jvgenmain
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj-tools.so
-%ifarch sparcv9 sparc64 ppc ppc64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so
-%endif
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgij.so
-%ifarch sparcv9 ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj-tools.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj_bc.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgij.so
-%endif
-%ifarch %{multilib_64_archs}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj-tools.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj_bc.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgij.so
-%endif
-%doc rpm.doc/changelogs/gcc/java/ChangeLog*
-
-%files -n libgcj
-%defattr(-,root,root)
-%{_prefix}/bin/jv-convert
-%{_prefix}/bin/gij
-%{_prefix}/bin/gjar
-%{_prefix}/bin/fastjar
-%{_prefix}/bin/grepjar
-%{_prefix}/bin/grmic
-%{_prefix}/bin/grmid
-%{_prefix}/bin/grmiregistry
-%{_prefix}/bin/gtnameserv
-%{_prefix}/bin/gkeytool
-%{_prefix}/bin/gorbd
-%{_prefix}/bin/gserialver
-%{_prefix}/bin/gcj-dbtool
-%if %{include_gappletviewer}
-%{_prefix}/bin/gappletviewer
-%{_mandir}/man1/gappletviewer.1*
-%endif
-%{_prefix}/bin/gjarsigner
-%{_mandir}/man1/fastjar.1*
-%{_mandir}/man1/grepjar.1*
-%{_mandir}/man1/gjar.1*
-%{_mandir}/man1/gjarsigner.1*
-%{_mandir}/man1/jv-convert.1*
-%{_mandir}/man1/gij.1*
-%{_mandir}/man1/grmic.1*
-%{_mandir}/man1/grmiregistry.1*
-%{_mandir}/man1/gcj-dbtool.1*
-%{_mandir}/man1/gkeytool.1*
-%{_mandir}/man1/gorbd.1*
-%{_mandir}/man1/grmid.1*
-%{_mandir}/man1/gserialver.1*
-%{_mandir}/man1/gtnameserv.1*
-%{_infodir}/fastjar.info*
-%{_infodir}/cp-tools.info*
-%{_prefix}/%{_lib}/libgcj.so.*
-%{_prefix}/%{_lib}/libgcj-tools.so.*
-%{_prefix}/%{_lib}/libgcj_bc.so.*
-%{_prefix}/%{_lib}/libgij.so.*
-%dir %{_prefix}/%{_lib}/gcj-%{version}
-%{_prefix}/%{_lib}/gcj-%{version}/libgtkpeer.so
-%{_prefix}/%{_lib}/gcj-%{version}/libgjsmalsa.so
-%{_prefix}/%{_lib}/gcj-%{version}/libjawt.so
-%if %{include_gappletviewer}
-%{_prefix}/%{_lib}/gcj-%{version}/libgcjwebplugin.so
-%endif
-%{_prefix}/%{_lib}/gcj-%{version}/libjvm.so
-%dir %{_prefix}/share/java
-%{_prefix}/share/java/[^sl]*
-%{_prefix}/share/java/libgcj-%{version}.jar
-%dir %{_prefix}/%{_lib}/security
-%config(noreplace) %{_prefix}/%{_lib}/security/classpath.security
-%{_prefix}/%{_lib}/logging.properties
-%dir %{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
-%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_prefix}/%{_lib}/gcj-%{version}/classmap.db
-%if %{include_gappletviewer}
-%doc rpm.doc/README.libgcjwebplugin.so
-%endif
-
-%files -n libgcj-devel
-%defattr(-,root,root)
-%{_prefix}/bin/addr2name.awk
-%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/gcj
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt_md.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni_md.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jvmpi.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.spec
-%ifarch sparcv9 ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libgcj_bc.so
-%endif
-%ifarch sparc64 ppc64
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libgcj_bc.so
-%endif
-%ifnarch sparcv9 sparc64 ppc ppc64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so
-%endif
-%dir %{_prefix}/include/c++
-%dir %{_prefix}/include/c++/%{gcc_version}
-%{_prefix}/include/c++/%{gcc_version}/[gj]*
-%{_prefix}/include/c++/%{gcc_version}/org
-%{_prefix}/include/c++/%{gcc_version}/sun
-%{_prefix}/%{_lib}/pkgconfig/libgcj-*.pc
-%doc rpm.doc/boehm-gc/* rpm.doc/fastjar/* rpm.doc/libffi/*
-%doc rpm.doc/libjava/*
-
-%files -n libgcj-src
-%defattr(-,root,root)
-%dir %{_prefix}/share/java
-%{_prefix}/share/java/src*.zip
-%{_prefix}/share/java/libgcj-tools-%{version}.jar
-%endif
-
-%if %{build_ada}
-%files gnat
-%defattr(-,root,root)
-%{_prefix}/bin/gnat*
-%{_infodir}/gnat*
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adainclude
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/gnat1
-%doc rpm.doc/changelogs/gcc/ada/ChangeLog*
-
-%files -n libgnat
-%defattr(-,root,root)
-%{_prefix}/%{_lib}/libgnat-*.so
-%{_prefix}/%{_lib}/libgnarl-*.so
-%endif
-
-%files -n libgomp
-%defattr(-,root,root)
-%{_prefix}/%{_lib}/libgomp.so.1*
-%{_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
-%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
-%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
-%{_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
-%endif
-%doc rpm.doc/changelogs/libmudflap/ChangeLog*
-
-%changelog
-* Wed Nov 5 2008 Jakub Jelinek <jakub@redhat.com> 4.3.2-7
-- update from gcc-4_3-branch
- - PRs c/35437, fortran/35680, fortran/37723, fortran/37749, fortran/37787,
- fortran/37794, fortran/37903, libfortran/37707, libfortran/37863,
- middle-end/37882, other/37897, rtl-optimization/37769, target/37909,
- target/37939, tree-optimization/37102
-- fix ICE in extract_bit_field_1 (PR middle-end/37870)
-- combiner fix for shifts (PR c/37924)
-- fix -fdump-ipa-all -dv (PR middle-end/37858)
-- fix ICE with wrong use of noreturn attribute (PR tree-optimization/37879)
-- fix up --with-java_bootstrap build
-
-* Thu Oct 9 2008 Jakub Jelinek <jakub@redhat.com> 4.3.2-6
-- fix fallouts from the -g -O0 debugging patch (#466169, #466198)
-
-* Wed Oct 8 2008 Jakub Jelinek <jakub@redhat.com> 4.3.2-5
-- update from gcc-4_3-branch
- - PRs c++/37555, c/35712, c/37645, fortran/35770, fortran/35945,
- fortran/36374, fortran/36454, fortran/36700, fortran/37274,
- fortran/37504, fortran/37580, fortran/37583, fortran/37626,
- fortran/37706, middle-end/36575, middle-end/37236, middle-end/37731,
- rtl-optimization/37544, target/35620, target/35713, target/37603,
- tree-opt/35737, tree-optimization/36343, tree-optimization/37539
-- ensure one can put breakpoints on break, continue and goto statements
- with -g -O0 (#465824, PRs debug/29609, debug/36690, debug/37616)
-- emit one DW_TAG_common_block for each common block in each scope, not
- one for each common block in one CU (#465974, PR debug/37738)
-- Intel -maes and -mpclmul support
-
-* Wed Sep 17 2008 Jakub Jelinek <jakub@redhat.com> 4.3.2-4
-- update from gcc-4_3-branch
- - PRs c++/37389, fortran/35837, fortran/36214, fortran/37099, fortran/37199,
- rtl-optimization/37408, target/37466, tree-optimization/36630
-- revert PR c++/36741 fix
-- fix VLA debuginfo at -O0 (PR debug/34037)
-
-* Sat Sep 6 2008 Jakub Jelinek <jakub@redhat.com> 4.3.2-3
-- don't run tests that require Altivec hw on non-Altivec powerpcs
-- make sure none of libgcj binaries/libraries contains /usr/%{lib} in
- RPATH
-- fix up BuildRoot
-
-* Fri Sep 5 2008 Jakub Jelinek <jakub@redhat.com> 4.3.2-2
-- update from gcc-4_3-branch
- - PRs c++/37348, c/37261, fortran/36371, fortran/37193, middle-end/36449,
- target/36332, target/37168
-- make ChangeLog files and gcc.info valid UTF-8, remove gnative2ascii from
- gcc-gnat, comment out most of the Obsoletes (#225778)
-- on x86_64 decrease frame size in varargs functions that don't need saving
- gpr or fpr registers
-- fix ICE on implicitly determined firstprivate where copy ctor or dtor
- needs synthetization (PR c++/37189)
-- document how to recrease the tarball
-
-* Fri Aug 29 2008 Jakub Jelinek <jakub@redhat.com> 4.3.2-1
-- update from gcc-4_3-branch
- - 4.3.2 release
- - PRs c++/36741, middle-end/36548, middle-end/36817, middle-end/37125,
- target/37184, target/37191, target/37197
-- backport further Fortran debuginfo improvements (#460378, #459375)
-- revert removal of adjacent bitfield comparison
- optimization (PR middle-end/37248)
-- on ppc/ppc64 add paired.h, ppu_instrinsics.h, si2vmx.h and spu2vmx.h
- headers (#460497)
-
-* Mon Aug 25 2008 Jakub Jelinek <jakub@redhat.com> 4.3.1-8
-- update from gcc-4_3-branch
- - PRs debug/37156, libgcj/8995, libstdc++/37100, target/37101
-- backport Fortran debuginfo improvements (PRs debug/35896, fortran/35154,
- fortran/35724, fortran/35892, fortran/29635, fortran/23057
- fortran/24790, #457792, #457793, #459374, #459376, #459378)
-
-* Thu Aug 14 2008 Jakub Jelinek <jakub@redhat.com> 4.3.1-7
-- update from gcc-4_3-branch
- - PRs bootstrap/35752, c++/36688, c++/36999, c++/37016, c/35746,
- fortran/36582, libgcj/31890, middle-end/35432, middle-end/36691,
- middle-end/37014, middle-end/37026, middle-end/37042,
- rtl-optimization/35542, rtl-optimization/36998, target/35659,
- target/36613, tree-optimization/36991
-- fix folding of widened comparisons (PR middle-end/37103)
-
-* Fri Aug 1 2008 Jakub Jelinek <jakub@redhat.com> 4.3.1-6
-- update from gcc-4_3-branch
- - PRs c++/36405, c++/36767, c++/36852, debug/36278, preprocessor/36649,
- rtl-optimization/36929
- - fix the last -Os -fasynchronous-unwind-tables known issue (#447912,
- PR rtl-optimization/36419)
-- don't loop > 230000 times in make_temp_file if /tmp is full (#203231)
-
-* Mon Jul 28 2008 Jakub Jelinek <jakub@redhat.com> 4.3.1-5
-- update from gcc-4_3-branch
- - PRs c++/36407, fortran/36132, fortran/36366, fortran/36824, fortran/36852,
- libfortran/36852, libstdc++/36552, libstdc++/36729, libstdc++/36832,
- middle-end/36369, middle-end/36811, middle-end/36877,
- rtl-optimization/35281, rtl-optimization/36419,
- rtl-optimization/36753, target/35492, target/35802, target/36780,
- target/36782, target/36784, target/36827, tree-optimization/36830
-- OpenMP 3.0 bugfixes from trunk
- - fix occassional hangs of libgomp.c/ordered-3.c
- - PR middle-end/36790
-
-* Tue Jul 8 2008 Jakub Jelinek <jakub@redhat.com> 4.3.1-4
-- update from gcc-4_3-branch
- - PRs c++/34963, c++/36662, fortran/36546, fortran/36657, fortran/36676,
- libstdc++/36612, libstdc++/36616, rtl-optimization/34744,
- target/34780, target/34856, target/36510, target/36634,
- target/36684, target/36698, target/36736, testsuite/36620,
- tree-optimization/36648
- - fix -frepo (#448390, PR c++/36364)
-- improve OpenMP debug info (PRs debug/36617, middle-end/36726)
-
-* Tue Jun 24 2008 Jakub Jelinek <jakub@redhat.com> 4.3.1-3
-- update from gcc-4_3-branch
- - PRs c++/35317, c++/35320, documentation/30739, fortran/34908,
- fortran/36276, fortran/36538, java/36247, middle-end/36584,
- rtl-optimization/35604, target/36336, target/36424,
- tree-optimization/36493, tree-optimization/36498,
- tree-optimization/36504, tree-optimization/36519
- - don't mark hard registers as reg pointers (#451068, target/36533)
- - allow more compute_antic iterations (#450889, tree-optimization/36508)
-- fix #pragma omp task copyfn registration with cgraph (c++/36523)
-
-* Thu Jun 12 2008 Jakub Jelinek <jakub@redhat.com> 4.3.1-2
-- update from gcc-4_3-branch
- - PRs c++/36408, middle-end/35336, middle-end/36506, testsuite/36443,
- tree-optimization/36474
-- OpenMP 3.0 bugfixes from trunk
- - fix a thinko in task dispatching on barriers
- - PRs libgomp/36469, libgomp/36471
-- fix nested inline functions in -std=gnu99 mode (#450967, PR c/36507)
-
-* Mon Jun 9 2008 Jakub Jelinek <jakub@redhat.com> 4.3.1-1
-- update from gcc-4_3-branch
- - 4.3.1 release
- - PRs ada/24880, ada/26635, bootstrap/35169, bootstrap/36452, c++/35578,
- c++/35986, c++/36023, c++/36237, c++/36308, fortran/35184,
- fortran/35743, fortran/35745, fortran/35756, fortran/35759,
- fortran/35780, fortran/35864, fortran/35997, fortran/36176,
- fortran/36233, libfortran/35990, libfortran/35993, libfortran/35995,
- libgcj/36252, libstdc++/35922, middle-end/34973, middle-end/36013,
- middle-end/36077, middle-end/36093, middle-end/36106,
- middle-end/36137, middle-end/36154, middle-end/36172,
- middle-end/36194, middle-end/36227, middle-end/36244,
- middle-end/36300, middle-end/PR28690, rtl-optimization/36111,
- rtl-optimization/36419, target/27386, target/30243, target/34932,
- target/35661, target/35921, target/36079, target/36090, target/36095,
- target/36182, target/36224, target/36321, target/36362,
- tree-optimization/34244, tree-optimization/34330,
- tree-optimization/34976, tree-optimization/35204,
- tree-optimization/36098, tree-optimization/36119,
- tree-optimization/36129, tree-optimization/36181,
- tree-optimization/36187, tree-optimization/36245,
- tree-optimization/36262, tree-optimization/36291,
- tree-optimization/36293, tree-optimization/36339
-- OpenMP 3.0 support
-
-* Tue May 20 2008 Tom "spot" Callaway <tcallawa@redhat.com> 4.3.0-11
-- fix missing file with sparcv9
-
-* Sun May 18 2008 Tom "spot" Callaway <tcallawa@redhat.com> 4.3.0-10
-- make sparcv9 the multilib_32_arch for sparc64
-
-* Sun May 18 2008 Tom "spot" Callaway <tcallawa@redhat.com> 4.3.0-9
-- sparcv9 support and detection
-
-* Mon Apr 28 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-8
-- update from gcc-4_3-branch
- - decrease compile time stack usage during GC (#443739, PR debug/36060)
- - fix -mregparm=X with K&R function decls (#443583, PR target/36015)
- - fix tail called sqrt and math builtins (#435297,
- PR rtl-optimization/36017)
- - PRs c++/33486, c++/35316, c++/35325, c++/35678, c++/35747, c++/35758,
- c++/35773, c/35436, c/35744, fortran/35932, fortran/35944,
- fortran/35946, fortran/35947, fortran/35959, fortran/35994,
- libgcj/35950, libstdc++/35597, libstdc++/35887, libstdc++/35954,
- middle-end/36021, target/35944, testsuite/36056,
- tree-optimization/35982, tree-optimization/36008,
- tree-optimization/36034
-- fix C++ const references to bitfields (PR c++/35909)
-- fix C++ ++var = val error recovery (PR c++/35987)
-- fix C++ reference binding to function through using-decl (PR c++/35650)
-
-* Wed Apr 16 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-7
-- update from gcc-4_3-branch
- - PRs c++/35708, c++/35734, libstdc++/35816, middle-end/35519,
- rtl-optimization/34916, target/35364, target/35695,
- tree-optimization/35821, tree-optimization/35833
- - fix libgfortran buffer overflows
-- fix restoring of Altivec registers when alloca is used (PR target/35907)
-- misc fixes (PRs tree-optimization/35899, target/35662, c/35739)
-
-* Fri Apr 4 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-6
-- update from gcc-4_3-branch
- - PRs ada/33857, c++/35245, c++/35741, c/35738, fortran/35698,
- fortran/35699, fortran/35702, fortran/35724, fortran/35740,
- fortran/35786, libfortran/35699, libstdc++/35725, middle-end/35429,
- middle-end/35705, middle-end/35818, target/31110, target/31232,
- target/35657, tree-opt/35431
-- fix OpenMP ICE on invalid extern/static VLA (PR c/35751)
-- fix PCH failure if a precompiled header is included more than
- once (#251682, PR pch/13675)
-
-* Thu Mar 27 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-5
-- fix libgomp when sync builtins aren't available
-- on i386 build libgomp and __cxa_guard_* as i486+,
- NPTL doesn't support pre-i486 anyway and atomic builtins give
- significant speedups
-
-* Wed Mar 26 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-4
-- update from gcc-4_3-branch
- - PRs c++/35332, c++/35548, debug/31510, fortran/33295, fortran/34813,
- libfortran/35617, libfortran/35627, libgomp/35625, libstdc++/35256,
- libstdc++/35637, middle-end/35593, middle-end/35609,
- middle-end/35611, middle-end/35616, target/35504, testsuite/34168,
- testsuite/35621
-- backport libgomp speedups from gomp-3_0-branch (#437268)
-- fix diagnostics with compound literals (PR c/35440)
-- fix C++ handling of late template attributes (PR c++/35546)
-- Prereq install-info in libgomp (#437523)
-
-* Fri Mar 14 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-3
-- update from gcc-4_3-branch
- - PRs c++/33887, c++/35328, c++/35337, c++/35469, c/35438, c/35439,
- fortran/35474, libstdc++/35541, libstdc++/35566, middle-end/35099,
- middle-end/35185, middle-end/35456, middle-end/35526,
- middle-end/35549, target/34000, target/35190, target/35225,
- target/35350, target/35496, target/35540, target/35553,
- tree-optimization/34989, tree-optimization/35472
- - fix eclipse build (#434356)
-- libstdc++ doc fix (#436687)
-
-* Fri Mar 7 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-2
-- fix ppc/ppc64 8/16 bit sync builtins (PR target/35498)
-
-* Fri Mar 7 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-1
-- gcc 4.3.0 release
- - PRs c++/35244, c++/35315, c++/35323, c++/35333, c++/35338, driver/35420,
- libfortran/35355, libstdc++/35480, target/33963, target/35189,
- target/35222, target/35401, target/35453
-
-* Fri Feb 29 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.13
-- update from gcc-4_3-branch
- - PRs middle-end/19984, target/25477
- - remove <system_error>, fix ppc/ppc64
- std::{,tr1::}hash<long double>::operator() ABI
-
-* Thu Feb 28 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.12
-- update from gcc-4_3-branch
- - PRs c++/34715, c++/35368, libfortran/24685, middle-end/34971,
- middle-end/35390, target/25477
-
-* Fri Feb 22 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.11
-- update from gcc-4_3-branch
- - 4.3.0 rc1
- - PRs bootstrap/35218, bootstrap/35273, c++/34950, c++/35282,
- middle-end/35265, rtl-optimization/35232, target/34526,
- target/35071, target/35239, target/35264
-
-* Mon Feb 18 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.10
-- update to trunk
- - PRs c++/11159, c++/28743, c++/34050, c++/35023, c++/35024, c++/35026,
- c++/5645, c/28368, documentation/15479, fortran/34952,
- fortran/35150, libgcj/33085, libstdc++/34797, libstdc++/35209,
- libstdc++/35221, middle-end/34621, middle-end/35149, middle-end/35196,
- middle-end/35227, preprocessor/35061, target/34930, target/35088,
- testsuite/35119, testsuite/35208, tree-optimization/35164,
- tree-optimization/35231
-- some OpenMP fixes (PRs c++/34964, c++/35028, c++/35078)
-- fix cp-tools.info* @direntry (#433222)
-
-* Thu Feb 14 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.9
-- update to trunk
- - PRs middle-end/29673, ada/35143, c++/34774, c++/34824, c++/34962, c++/34937,
- c++/34939, debug/35065, other/35148, target/34393
-- fix ia64 build (#432068)
-
-* Tue Feb 12 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.8
-- update to trunk
- - PRs bootstrap/33781, bootstrap/34922, bootstrap/35051, bootstrap/35115,
- c++/29048, c++/33553, c++/33916, c++/33964, c++/34052, c++/34094,
- c++/34314, c++/34776, c++/34862, c++/34891, c++/34935, c++/34936,
- c++/35049, c++/35056, c++/35074, c++/35077, c++/35096, c++/35097,
- c++/35113, c++/35116, c/29326, c/34993, documentation/30330,
- fortran/32315, fortran/32760, fortran/34910, fortran/34945,
- fortran/35037, fortran/35093, java/35035, libffi/34612,
- libfortran/35001, libfortran/35063, libgcj/30071, libstdc++/16251,
- middle-end/33631, middle-end/34627, middle-end/35043,
- middle-end/35136, middle-end/35163, middle_end/34150, objc++/34193,
- other/29972, other/31405, other/32754, other/35042, other/35070,
- other/35107, rtl-opt/33410, rtl-optimization/34773,
- rtl-optimization/34995, rtl-optimization/34998, target/23322,
- target/34900, target/34982, target/35045, target/35083,
- target/35084, testsuite/33946, testsuite/35047,
- tree-optimization/33992, tree-optimization/35085, tree-optimization/35171
- - inline asm optimization fix (#432146, PR inline-asm/35160)
- - SRA fix (#432090, PR c++/35144)
-- fix #pragma omp parallel body calling nested functions which store
- into shared parent variables (PR middle-end/35130)
-- ./-> after dependent expr parsing fix (PR c++/35138)
-
-* Wed Jan 30 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.7
-- update from trunk
- - fix ISO C99 6.7.4p3 diagnostics (#427634, PR c/35017)
-
-* Fri Jan 25 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.6
-- update from the trunk
-
-* Thu Jan 10 2008 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.5
-- update from the trunk
-- don't require on ppc/ppc64 libmudflap in gcc subpackage
-
-* Thu Dec 20 2007 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.4
-- update from the trunk
-- adjustments to build against xulrunner-devel
-
-* Fri Dec 14 2007 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.3
-- build fastjar, gjar is uncomparably worse
-- fix profiledbootstrap and use it
-
-* Wed Dec 12 2007 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.2
-- update from the trunk
-
-* Sun Dec 9 2007 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.1
-- initial 4.3 package, using newly created redhat/gcc-4_3-branch
diff --git a/gcc44-build-id.patch b/gcc44-build-id.patch
new file mode 100644
index 0000000..f76f939
--- /dev/null
+++ b/gcc44-build-id.patch
@@ -0,0 +1,52 @@
+2007-07-22 Roland McGrath <roland@redhat.com>
+
+ * config/rs6000/sysv4.h (LINK_EH_SPEC): Add --build-id for
+ non-relocatable link.
+ * config/linux.h (LINK_EH_SPEC): Likewise.
+ * config/alpha/elf.h (LINK_EH_SPEC): Likewise.
+ * config/ia64/linux.h (LINK_EH_SPEC): Likewise.
+
+--- gcc/config/rs6000/sysv4.h.~1~
++++ gcc/config/rs6000/sysv4.h
+@@ -906,7 +906,7 @@ extern int fixuplabelno;
+ %{!dynamic-linker:-dynamic-linker " LINUX_DYNAMIC_LINKER "}}}"
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
+ #endif
+
+ #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
+--- gcc/config/linux.h.~1~
++++ gcc/config/linux.h
+@@ -85,7 +85,7 @@ Boston, MA 02110-1301, USA. */
+ } while (0)
+
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
+ #endif
+
+ /* Define this so we can compile MS code for use with WINE. */
+--- gcc/config/alpha/elf.h.~1~
++++ gcc/config/alpha/elf.h
+@@ -421,7 +421,7 @@ extern int alpha_this_gpdisp_sequence_nu
+ I imagine that other systems will catch up. In the meantime, it
+ doesn't harm to make sure that the data exists to be used later. */
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
+ #endif
+
+ /* A C statement (sans semicolon) to output to the stdio stream STREAM
+--- gcc/config/ia64/linux.h.~1~
++++ gcc/config/ia64/linux.h
+@@ -56,7 +56,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 "%{!r:--build-id} "
+
+ #define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h"
+
diff --git a/gcc44-c++-builtin-redecl.patch b/gcc44-c++-builtin-redecl.patch
new file mode 100644
index 0000000..77655ad
--- /dev/null
+++ b/gcc44-c++-builtin-redecl.patch
@@ -0,0 +1,102 @@
+2007-10-02 Jakub Jelinek <jakub@redhat.com>
+
+ * decl.c (duplicate_decls): When redeclaring a builtin function,
+ keep the merged decl builtin whenever types match, even if new
+ decl defines a function.
+
+ * gcc.dg/builtins-65.c: New test.
+ * g++.dg/ext/builtin10.C: New test.
+
+--- gcc/cp/decl.c.jj 2007-10-01 22:11:09.000000000 +0200
++++ gcc/cp/decl.c 2007-10-02 11:39:46.000000000 +0200
+@@ -1988,23 +1988,21 @@ duplicate_decls (tree newdecl, tree oldd
+ DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl);
+ DECL_RESULT (olddecl) = DECL_RESULT (newdecl);
+ }
++ /* If redeclaring a builtin function, it stays built in. */
++ if (types_match && DECL_BUILT_IN (olddecl))
++ {
++ DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
++ DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
++ /* If we're keeping the built-in definition, keep the rtl,
++ regardless of declaration matches. */
++ COPY_DECL_RTL (olddecl, newdecl);
++ }
+ if (new_defines_function)
+ /* If defining a function declared with other language
+ linkage, use the previously declared language linkage. */
+ SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl));
+ else if (types_match)
+ {
+- /* If redeclaring a builtin function, and not a definition,
+- it stays built in. */
+- if (DECL_BUILT_IN (olddecl))
+- {
+- DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
+- DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
+- /* If we're keeping the built-in definition, keep the rtl,
+- regardless of declaration matches. */
+- COPY_DECL_RTL (olddecl, newdecl);
+- }
+-
+ DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
+ /* Don't clear out the arguments if we're redefining a function. */
+ if (DECL_ARGUMENTS (olddecl))
+--- gcc/testsuite/gcc.dg/builtins-65.c.jj 2007-10-02 11:23:51.000000000 +0200
++++ gcc/testsuite/gcc.dg/builtins-65.c 2007-10-02 11:24:12.000000000 +0200
+@@ -0,0 +1,25 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++typedef __SIZE_TYPE__ size_t;
++extern void __chk_fail (void);
++extern int snprintf (char *, size_t, const char *, ...);
++extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
++{
++ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
++ __chk_fail ();
++ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
++}
++extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
++
++char buf[10];
++
++int
++main (void)
++{
++ snprintf (buf, 10, "%d%d\n", 10, 10);
++ return 0;
++}
++
++/* { dg-final { scan-assembler "mysnprintf" } } */
++/* { dg-final { scan-assembler-not "__chk_fail" } } */
+--- gcc/testsuite/g++.dg/ext/builtin10.C.jj 2007-10-02 11:19:45.000000000 +0200
++++ gcc/testsuite/g++.dg/ext/builtin10.C 2007-10-02 11:23:26.000000000 +0200
+@@ -0,0 +1,27 @@
++// { dg-do compile }
++// { dg-options "-O2" }
++
++typedef __SIZE_TYPE__ size_t;
++extern "C" {
++extern void __chk_fail (void);
++extern int snprintf (char *, size_t, const char *, ...);
++extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
++{
++ if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
++ __chk_fail ();
++ return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
++}
++extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
++}
++
++char buf[10];
++
++int
++main (void)
++{
++ snprintf (buf, 10, "%d%d\n", 10, 10);
++ return 0;
++}
++
++// { dg-final { scan-assembler "mysnprintf" } }
++// { dg-final { scan-assembler-not "__chk_fail" } }
diff --git a/gcc44-hack.patch b/gcc44-hack.patch
new file mode 100644
index 0000000..4880b12
--- /dev/null
+++ b/gcc44-hack.patch
@@ -0,0 +1,113 @@
+--- libada/Makefile.in.jj 2009-01-14 12:07:35.000000000 +0100
++++ libada/Makefile.in 2009-01-15 14:25:33.000000000 +0100
+@@ -66,17 +66,39 @@ target_noncanonical:=@target_noncanonica
+ version := $(shell cat $(srcdir)/../gcc/BASE-VER)
+ libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(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=$(strip $(LDFLAGS) $(DEFAULTMULTIFLAGS))" \
+ "LN_S=$(LN_S)" \
+ "SHELL=$(SHELL)" \
+- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \
+- "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \
++ "GNATLIBFLAGS=$(strip $(GNATLIBFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS))" \
++ "GNATLIBCFLAGS=$(strip $(GNATLIBCFLAGS) $(MULTIFLAGS) $(DEFAULTMULTIFLAGS))" \
+ "TARGET_LIBGCC2_CFLAGS=$(TARGET_LIBGCC2_CFLAGS)" \
+ "THREAD_KIND=$(THREAD_KIND)" \
+ "TRACE=$(TRACE)" \
+@@ -87,7 +109,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) $(WARN_CFLAGS)"
++ "CFLAGS=$(strip $(CFLAGS) $(DEFAULTMULTIFLAGS) $(WARN_CFLAGS))"
+
+ # Rules to build gnatlib.
+ .PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared oscons
+--- libjava/classpath/native/plugin/gcjwebplugin.cc.jj 2009-01-14 12:08:34.000000000 +0100
++++ libjava/classpath/native/plugin/gcjwebplugin.cc 2009-01-15 21:20:17.000000000 +0100
+@@ -45,7 +45,7 @@ exception statement from your version. *
+
+ // Netscape plugin API includes.
+ #include <npapi.h>
+-#include <npupp.h>
++#include <npfunctions.h>
+
+ // GLib includes.
+ #include <glib.h>
+@@ -827,7 +827,7 @@ GCJ_URLNotify (NPP instance, const char*
+ PLUGIN_DEBUG ("GCJ_URLNotify return");
+ }
+
+-jref
++void *
+ GCJ_GetJavaClass (void)
+ {
+ PLUGIN_DEBUG ("GCJ_GetJavaClass");
+@@ -1669,17 +1669,17 @@ NP_Initialize (NPNetscapeFuncs* browserT
+ // Return to the browser the plugin functions that we implement.
+ pluginTable->version = (NP_VERSION_MAJOR << 8) + NP_VERSION_MINOR;
+ pluginTable->size = sizeof (NPPluginFuncs);
+- pluginTable->newp = NewNPP_NewProc (GCJ_New);
+- pluginTable->destroy = NewNPP_DestroyProc (GCJ_Destroy);
+- pluginTable->setwindow = NewNPP_SetWindowProc (GCJ_SetWindow);
+- pluginTable->newstream = NewNPP_NewStreamProc (GCJ_NewStream);
+- pluginTable->destroystream = NewNPP_DestroyStreamProc (GCJ_DestroyStream);
+- pluginTable->asfile = NewNPP_StreamAsFileProc (GCJ_StreamAsFile);
+- pluginTable->writeready = NewNPP_WriteReadyProc (GCJ_WriteReady);
+- pluginTable->write = NewNPP_WriteProc (GCJ_Write);
+- pluginTable->print = NewNPP_PrintProc (GCJ_Print);
+- pluginTable->urlnotify = NewNPP_URLNotifyProc (GCJ_URLNotify);
+- pluginTable->getvalue = NewNPP_GetValueProc (GCJ_GetValue);
++ pluginTable->newp = (NPP_NewProcPtr) (GCJ_New);
++ pluginTable->destroy = (NPP_DestroyProcPtr) (GCJ_Destroy);
++ pluginTable->setwindow = (NPP_SetWindowProcPtr) (GCJ_SetWindow);
++ pluginTable->newstream = (NPP_NewStreamProcPtr) (GCJ_NewStream);
++ pluginTable->destroystream = (NPP_DestroyStreamProcPtr) (GCJ_DestroyStream);
++ pluginTable->asfile = (NPP_StreamAsFileProcPtr) (GCJ_StreamAsFile);
++ pluginTable->writeready = (NPP_WriteReadyProcPtr) (GCJ_WriteReady);
++ pluginTable->write = (NPP_WriteProcPtr) (GCJ_Write);
++ pluginTable->print = (NPP_PrintProcPtr) (GCJ_Print);
++ pluginTable->urlnotify = (NPP_URLNotifyProcPtr) (GCJ_URLNotify);
++ pluginTable->getvalue = (NPP_GetValueProcPtr) (GCJ_GetValue);
+
+ initialized = true;
+
+--- gcc/ada/make.adb 2008-11-07 23:00:32.000000000 +0100
++++ gcc/ada/make.adb 2009-01-16 17:55:02.000000000 +0100
+@@ -8039,6 +8039,7 @@ package body Make is
+ or else Argv (2 .. Argv'Last) = "pg"
+ or else (Argv (2) = 'm' and then Argv'Last > 2)
+ or else (Argv (2) = 'f' and then Argv'Last > 2)
++ or else (Argv'Last >= 8 and then Argv (2 .. 8) = "-param=")
+ then
+ Add_Switch (Argv, Compiler, And_Save => And_Save);
+ Add_Switch (Argv, Linker, And_Save => And_Save);
diff --git a/gcc44-i386-libgomp.patch b/gcc44-i386-libgomp.patch
new file mode 100644
index 0000000..5d1eea8
--- /dev/null
+++ b/gcc44-i386-libgomp.patch
@@ -0,0 +1,61 @@
+Build i386.rpm libgomp and libsupc++.a(guard.o) as i486+, pre-i486
+hardware isn't supported because NPTL doesn't support it anyway.
+
+--- libgomp/configure.tgt.jj 2008-01-10 20:53:48.000000000 +0100
++++ libgomp/configure.tgt 2008-03-27 12:44:51.000000000 +0100
+@@ -44,14 +44,14 @@ if test $enable_linux_futex = yes; then
+ ;;
+
+ # Note that bare i386 is not included here. We need cmpxchg.
+- i[456]86-*-linux*)
++ i[3456]86-*-linux*)
+ config_path="linux/x86 linux posix"
+ case " ${CC} ${CFLAGS} " in
+ *" -m64 "*)
+ ;;
+ *)
+ if test -z "$with_arch"; then
+- XCFLAGS="${XCFLAGS} -march=i486 -mtune=${target_cpu}"
++ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
+ fi
+ esac
+ ;;
+@@ -63,7 +63,7 @@ if test $enable_linux_futex = yes; then
+ config_path="linux/x86 linux posix"
+ case " ${CC} ${CFLAGS} " in
+ *" -m32 "*)
+- XCFLAGS="${XCFLAGS} -march=i486 -mtune=i686"
++ XCFLAGS="${XCFLAGS} -march=i486 -mtune=generic"
+ ;;
+ esac
+ ;;
+--- libstdc++-v3/libsupc++/guard.cc.jj 2008-03-01 00:58:24.000000000 +0100
++++ libstdc++-v3/libsupc++/guard.cc 2008-03-27 14:08:44.000000000 +0100
+@@ -35,6 +35,27 @@
+ #include <new>
+ #include <ext/atomicity.h>
+ #include <ext/concurrence.h>
++#if defined __i386__ && !defined _GLIBCXX_ATOMIC_BUILTINS_4
++# define _GLIBCXX_ATOMIC_BUILTINS_4 1
++# define __sync_val_compare_and_swap(a, b, c) \
++ ({ \
++ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \
++ int sltas; \
++ __asm __volatile ("lock; cmpxchgl %3, (%1)" \
++ : "=a" (sltas) \
++ : "r" (a), "0" (b), "r" (c) : "memory"); \
++ sltas; \
++ })
++# define __sync_lock_test_and_set(a, b) \
++ ({ \
++ typedef char sltast[sizeof (*a) == sizeof (int) ? 1 : -1]; \
++ int sltas; \
++ __asm __volatile ("xchgl (%1), %0" \
++ : "=r" (sltas) \
++ : "r" (a), "0" (b) : "memory"); \
++ sltas; \
++ })
++#endif
+ #if defined(__GTHREADS) && defined(__GTHREAD_HAS_COND) \
+ && defined(_GLIBCXX_ATOMIC_BUILTINS_4) && defined(_GLIBCXX_HAVE_LINUX_FUTEX)
+ # include <climits>
diff --git a/gcc44-ia64-libunwind.patch b/gcc44-ia64-libunwind.patch
new file mode 100644
index 0000000..8e10979
--- /dev/null
+++ b/gcc44-ia64-libunwind.patch
@@ -0,0 +1,538 @@
+2004-11-27 Jakub Jelinek <jakub@redhat.com>
+
+ * config.gcc (ia64*-*-linux*): If native and libelf is installed,
+ use ia64/t-glibc-no-libunwind instead of the other t-*unwind*
+ fragments.
+ * config/ia64/t-glibc-no-libunwind: New file.
+ * config/ia64/change-symver.c: New file.
+ * config/ia64/unwind-ia64.c: If USE_SYMVER_GLOBAL and SHARED,
+ define _Unwind_* to __symverglobal_Unwind_*.
+ (alias): Undefine.
+ (symverglobal): Define. Use it on _Unwind_*.
+ * config/ia64/mkmap-symver-multi.awk: New file.
+ * config/ia64/libgcc-ia64-no-libunwind.ver: New file.
+
+--- gcc/config.gcc.jj 2004-10-04 08:55:44.000000000 -0400
++++ gcc/config.gcc 2004-11-13 05:23:50.000000000 -0500
+@@ -1185,9 +1185,16 @@ ia64*-*-freebsd*)
+ ;;
+ ia64*-*-linux*)
+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h ia64/sysv4.h ia64/linux.h"
+- tmake_file="${tmake_file} ia64/t-ia64 t-libunwind ia64/t-glibc"
+- if test x$with_system_libunwind != xyes ; then
+- tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
++ tmake_file="${tmake_file} ia64/t-ia64"
++ if test x${target} = x${host} && test x${target} = x${build} \
++ && grep gelf_getverdef /usr/include/gelf.h > /dev/null 2>&1 \
++ && test -f /usr/lib/libelf.so; then
++ tmake_file="${tmake_file} ia64/t-glibc-no-libunwind"
++ else
++ tmake_file="${tmake_file} t-libunwind ia64/t-glibc"
++ if test x$with_system_libunwind != xyes ; then
++ tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
++ fi
+ fi
+ target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
+--- gcc/config/ia64/t-glibc-no-libunwind.jj 2004-02-18 10:27:36.000000000 -0500
++++ gcc/config/ia64/t-glibc-no-libunwind 2004-11-15 09:56:33.000000000 -0500
+@@ -0,0 +1,30 @@
++# Don't use system libunwind library on IA-64 GLIBC based system,
++# but make _Unwind_* symbols unversioned, so that created programs
++# are usable even when libgcc_s uses libunwind.
++LIB2ADDEH += $(srcdir)/config/ia64/fde-glibc.c
++SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64-no-libunwind.ver
++SHLIB_MKMAP = $(srcdir)/config/ia64/mkmap-symver-multi.awk
++
++SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
++ -Wl,--soname=$(SHLIB_SONAME) \
++ -Wl,--version-script=$(SHLIB_MAP) \
++ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \
++ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
++ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
++ mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
++ $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
++ else true; fi && \
++ gcc -O2 -o $(SHLIB_DIR)/$(SHLIB_SONAME).tweak \
++ $$(gcc_srcdir)/config/ia64/change-symver.c -lelf && \
++ $(SHLIB_DIR)/$(SHLIB_SONAME).tweak $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \
++ GCC_3.4.2 _GLOBAL_ \
++ _Unwind_GetGR _Unwind_RaiseException _Unwind_GetRegionStart _Unwind_SetIP \
++ _Unwind_GetIP _Unwind_GetLanguageSpecificData _Unwind_Resume \
++ _Unwind_DeleteException _Unwind_SetGR _Unwind_ForcedUnwind \
++ _Unwind_Backtrace _Unwind_FindEnclosingFunction _Unwind_GetCFA \
++ _Unwind_Resume_or_Rethrow _Unwind_GetBSP && \
++ rm -f $(SHLIB_DIR)/$(SHLIB_SONAME).tweak && \
++ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
++ $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
++
++TARGET_LIBGCC2_CFLAGS += -DUSE_SYMVER_GLOBAL
+--- gcc/config/ia64/change-symver.c.jj 2004-02-18 10:27:36.000000000 -0500
++++ gcc/config/ia64/change-symver.c 2004-11-13 05:23:50.000000000 -0500
+@@ -0,0 +1,211 @@
++#define _GNU_SOURCE 1
++#define _FILE_OFFSET_BITS 64
++#include <endian.h>
++#include <errno.h>
++#include <error.h>
++#include <fcntl.h>
++#include <fnmatch.h>
++#include <gelf.h>
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++
++int
++compute_veridx (const char *name, Elf *elf, Elf_Data *verd, GElf_Shdr *verd_shdr)
++{
++ if (strcmp (name, "_GLOBAL_") == 0)
++ return 1;
++
++ int cnt;
++ size_t offset = 0;
++ for (cnt = verd_shdr->sh_info; --cnt >= 0; )
++ {
++ GElf_Verdef defmem;
++ GElf_Verdef *def;
++ GElf_Verdaux auxmem;
++ GElf_Verdaux *aux;
++ unsigned int auxoffset;
++
++ /* Get the data at the next offset. */
++ def = gelf_getverdef (verd, offset, &defmem);
++ if (def == NULL)
++ break;
++
++ auxoffset = offset + def->vd_aux;
++ aux = gelf_getverdaux (verd, auxoffset, &auxmem);
++ if (aux == NULL)
++ break;
++
++ if (strcmp (name, elf_strptr (elf, verd_shdr->sh_link,
++ aux->vda_name)) == 0)
++ return def->vd_ndx;
++
++ /* Find the next offset. */
++ offset += def->vd_next;
++ }
++
++ return -1;
++}
++
++int
++main (int argc, char **argv)
++{
++ if (argc < 4)
++ error (1, 0, "Usage: change_symver library from_symver to_symver symbol...\nExample: change_symver libfoo.so FOO_1.0 *global* bar baz");
++
++ const char *fname = argv[1];
++
++ /* Open the file. */
++ int fd;
++ fd = open (fname, O_RDWR);
++ if (fd == -1)
++ error (1, errno, fname);
++
++ elf_version (EV_CURRENT);
++
++ /* Now get the ELF descriptor. */
++ Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
++ if (elf == NULL || elf_kind (elf) != ELF_K_ELF)
++ error (1, 0, "Couldn't open %s: %s", fname, elf_errmsg (-1));
++
++ size_t shstrndx;
++ /* Get the section header string table index. */
++ if (elf_getshstrndx (elf, &shstrndx) < 0)
++ error (1, 0, "cannot get shstrndx from %s", fname);
++
++ GElf_Ehdr ehdr_mem;
++ GElf_Ehdr *ehdr;
++
++ /* We need the ELF header in a few places. */
++ ehdr = gelf_getehdr (elf, &ehdr_mem);
++ if (ehdr == NULL)
++ error (1, 0, "couldn't get ELF headers %s: %s", fname, elf_errmsg (-1));
++
++ Elf_Scn *scn = NULL;
++ GElf_Shdr shdr_mem, verd_shdr, ver_shdr, dynsym_shdr;
++ Elf_Data *ver = NULL, *verd = NULL, *dynsym = NULL;
++
++ while ((scn = elf_nextscn (elf, scn)) != NULL)
++ {
++ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
++
++ if (shdr == NULL)
++ error (1, 0, "couldn't get shdr from %s", fname);
++
++ if ((shdr->sh_flags & SHF_ALLOC) != 0)
++ {
++ const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
++ Elf_Data **p;
++
++ if (strcmp (name, ".gnu.version") == 0)
++ {
++ p = &ver;
++ ver_shdr = *shdr;
++ }
++ else if (strcmp (name, ".gnu.version_d") == 0)
++ {
++ p = &verd;
++ verd_shdr = *shdr;
++ }
++ else if (strcmp (name, ".dynsym") == 0)
++ {
++ p = &dynsym;
++ dynsym_shdr = *shdr;
++ }
++ else
++ continue;
++
++ if (*p != NULL)
++ error (1, 0, "Two %s sections in %s", name, fname);
++ *p = elf_getdata (scn, NULL);
++ if (*p == NULL || elf_getdata (scn, *p) != NULL)
++ error (1, 0, "No data or non-contiguous data in %s section in %s",
++ name, fname);
++ }
++ }
++
++ if (ver == NULL || verd == NULL || dynsym == NULL)
++ error (1, 0, "Couldn't find one of the needed sections in %s", fname);
++
++ int from_idx = compute_veridx (argv[2], elf, verd, &verd_shdr);
++ if (from_idx == -1)
++ error (1, 0, "Could not find symbol version %s in %s", argv[2], fname);
++
++ int to_idx = compute_veridx (argv[3], elf, verd, &verd_shdr);
++ if (to_idx == -1)
++ error (1, 0, "Could not find symbol version %s in %s", argv[3], fname);
++
++ if (dynsym_shdr.sh_entsize != gelf_fsize (elf, ELF_T_SYM, 1, ehdr->e_version)
++ || dynsym_shdr.sh_size % dynsym_shdr.sh_entsize
++ || ver_shdr.sh_entsize != 2
++ || (ver_shdr.sh_size & 1)
++ || dynsym_shdr.sh_size / dynsym_shdr.sh_entsize != ver_shdr.sh_size / 2)
++ error (1, 0, "Unexpected sh_size or sh_entsize in %s", fname);
++
++ size_t nentries = ver_shdr.sh_size / 2;
++ size_t cnt;
++ GElf_Versym array[nentries];
++ for (cnt = 0; cnt < nentries; ++cnt)
++ {
++ GElf_Versym vsymmem;
++ GElf_Versym *vsym;
++
++ vsym = gelf_getversym (ver, cnt, &vsymmem);
++ if (vsym == NULL)
++ error (1, 0, "gelt_getversym failed in %s: %s", fname, elf_errmsg (-1));
++
++ array[cnt] = *vsym;
++ if (*vsym != from_idx)
++ continue;
++
++ GElf_Sym sym_mem;
++ GElf_Sym *sym;
++ sym = gelf_getsym (dynsym, cnt, &sym_mem);
++ if (sym == NULL)
++ error (1, 0, "gelt_getsym failed in %s: %s", fname, elf_errmsg (-1));
++
++ const char *name = elf_strptr (elf, dynsym_shdr.sh_link, sym->st_name);
++
++ int argn;
++ for (argn = 4; argn < argc; ++argn)
++ if (fnmatch (argv[argn], name, 0) == 0)
++ {
++ array[cnt] = to_idx;
++ break;
++ }
++ }
++
++ if (sizeof (array[0]) != 2)
++ abort ();
++
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++ if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
++ ;
++ else if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
++#elif __BYTE_ORDER == __BIG_ENDIAN
++ if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
++ ;
++ else if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
++#else
++# error Unsupported endianity
++#endif
++ {
++ for (cnt = 0; cnt < nentries; ++cnt)
++ array[cnt] = ((array[cnt] & 0xff) << 8) | ((array[cnt] & 0xff00) >> 8);
++ }
++ else
++ error (1, 0, "Unknown EI_DATA %d in %s", ehdr->e_ident[EI_DATA], fname);
++
++ if (elf_end (elf) != 0)
++ error (1, 0, "couldn't close %s: %s", fname, elf_errmsg (-1));
++
++ if (lseek (fd, ver_shdr.sh_offset, SEEK_SET) != (off_t) ver_shdr.sh_offset)
++ error (1, 0, "failed to seek to %zd in %s", (size_t) ver_shdr.sh_offset,
++ fname);
++
++ if (write (fd, array, 2 * nentries) != (ssize_t) (2 * nentries))
++ error (1, 0, "failed to write .gnu.version section into %s", fname);
++
++ close (fd);
++ return 0;
++}
+--- gcc/config/ia64/unwind-ia64.c.jj 2004-10-04 08:55:57.000000000 -0400
++++ gcc/config/ia64/unwind-ia64.c 2004-11-15 09:07:45.000000000 -0500
+@@ -51,6 +51,51 @@
+ #define UNW_FLAG_UHANDLER(x) ((x) & 0x0000000200000000L)
+ #define UNW_LENGTH(x) ((x) & 0x00000000ffffffffL)
+
++#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
++extern _Unwind_Reason_Code __symverglobal_Unwind_Backtrace
++ (_Unwind_Trace_Fn, void *);
++extern void __symverglobal_Unwind_DeleteException
++ (struct _Unwind_Exception *);
++extern void * __symverglobal_Unwind_FindEnclosingFunction (void *);
++extern _Unwind_Reason_Code __symverglobal_Unwind_ForcedUnwind
++ (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
++extern _Unwind_Word __symverglobal_Unwind_GetCFA
++ (struct _Unwind_Context *);
++extern _Unwind_Word __symverglobal_Unwind_GetBSP
++ (struct _Unwind_Context *);
++extern _Unwind_Word __symverglobal_Unwind_GetGR
++ (struct _Unwind_Context *, int );
++extern _Unwind_Ptr __symverglobal_Unwind_GetIP (struct _Unwind_Context *);
++extern void *__symverglobal_Unwind_GetLanguageSpecificData
++ (struct _Unwind_Context *);
++extern _Unwind_Ptr __symverglobal_Unwind_GetRegionStart
++ (struct _Unwind_Context *);
++extern _Unwind_Reason_Code __symverglobal_Unwind_RaiseException
++ (struct _Unwind_Exception *);
++extern void __symverglobal_Unwind_Resume (struct _Unwind_Exception *);
++extern _Unwind_Reason_Code __symverglobal_Unwind_Resume_or_Rethrow
++ (struct _Unwind_Exception *);
++extern void __symverglobal_Unwind_SetGR
++ (struct _Unwind_Context *, int, _Unwind_Word);
++extern void __symverglobal_Unwind_SetIP
++ (struct _Unwind_Context *, _Unwind_Ptr);
++#define _Unwind_Backtrace __symverglobal_Unwind_Backtrace
++#define _Unwind_DeleteException __symverglobal_Unwind_DeleteException
++#define _Unwind_FindEnclosingFunction __symverglobal_Unwind_FindEnclosingFunction
++#define _Unwind_ForcedUnwind __symverglobal_Unwind_ForcedUnwind
++#define _Unwind_GetBSP __symverglobal_Unwind_GetBSP
++#define _Unwind_GetCFA __symverglobal_Unwind_GetCFA
++#define _Unwind_GetGR __symverglobal_Unwind_GetGR
++#define _Unwind_GetIP __symverglobal_Unwind_GetIP
++#define _Unwind_GetLanguageSpecificData __symverglobal_Unwind_GetLanguageSpecificData
++#define _Unwind_GetRegionStart __symverglobal_Unwind_GetRegionStart
++#define _Unwind_RaiseException __symverglobal_Unwind_RaiseException
++#define _Unwind_Resume __symverglobal_Unwind_Resume
++#define _Unwind_Resume_or_Rethrow __symverglobal_Unwind_Resume_or_Rethrow
++#define _Unwind_SetGR __symverglobal_Unwind_SetGR
++#define _Unwind_SetIP __symverglobal_Unwind_SetIP
++#endif
++
+ enum unw_application_register
+ {
+ UNW_AR_BSP,
+@@ -2402,4 +2447,44 @@ alias (_Unwind_SetGR);
+ alias (_Unwind_SetIP);
+ #endif
+
++#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
++#undef alias
++#define symverglobal(name, version) \
++__typeof (__symverglobal##name) __symverlocal##name \
++ __attribute__ ((alias ("__symverglobal" #name))); \
++__asm__ (".symver __symverglobal" #name"," #name "@@GCC_3.4.2");\
++__asm__ (".symver __symverlocal" #name"," #name "@" #version)
++
++#undef _Unwind_Backtrace
++#undef _Unwind_DeleteException
++#undef _Unwind_FindEnclosingFunction
++#undef _Unwind_ForcedUnwind
++#undef _Unwind_GetBSP
++#undef _Unwind_GetCFA
++#undef _Unwind_GetGR
++#undef _Unwind_GetIP
++#undef _Unwind_GetLanguageSpecificData
++#undef _Unwind_GetRegionStart
++#undef _Unwind_RaiseException
++#undef _Unwind_Resume
++#undef _Unwind_Resume_or_Rethrow
++#undef _Unwind_SetGR
++#undef _Unwind_SetIP
++symverglobal (_Unwind_Backtrace, GCC_3.3);
++symverglobal (_Unwind_DeleteException, GCC_3.0);
++symverglobal (_Unwind_FindEnclosingFunction, GCC_3.3);
++symverglobal (_Unwind_ForcedUnwind, GCC_3.0);
++symverglobal (_Unwind_GetBSP, GCC_3.3.2);
++symverglobal (_Unwind_GetCFA, GCC_3.3);
++symverglobal (_Unwind_GetGR, GCC_3.0);
++symverglobal (_Unwind_GetIP, GCC_3.0);
++symverglobal (_Unwind_GetLanguageSpecificData, GCC_3.0);
++symverglobal (_Unwind_GetRegionStart, GCC_3.0);
++symverglobal (_Unwind_RaiseException, GCC_3.0);
++symverglobal (_Unwind_Resume, GCC_3.0);
++symverglobal (_Unwind_Resume_or_Rethrow, GCC_3.3);
++symverglobal (_Unwind_SetGR, GCC_3.0);
++symverglobal (_Unwind_SetIP, GCC_3.0);
++#endif
++
+ #endif
+--- gcc/config/ia64/mkmap-symver-multi.awk.jj 2004-02-18 10:27:36.000000000 -0500
++++ gcc/config/ia64/mkmap-symver-multi.awk 2004-11-15 09:46:50.000000000 -0500
+@@ -0,0 +1,133 @@
++# Generate an ELF symbol version map a-la Solaris and GNU ld.
++# Contributed by Richard Henderson <rth@cygnus.com>
++#
++# This file is part of GCC.
++#
++# GCC is free software; you can redistribute it and/or modify it under
++# the terms of the GNU General Public License as published by the Free
++# Software Foundation; either version 2, or (at your option) any later
++# version.
++#
++# GCC is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
++# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
++# License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with GCC; see the file COPYING. If not, write to the Free
++# Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
++# 02110-1301, USA.
++
++BEGIN {
++ state = "nm";
++ sawsymbol = 0;
++}
++
++# Remove comment and blank lines.
++/^ *#/ || /^ *$/ {
++ next;
++}
++
++# We begin with nm input. Collect the set of symbols that are present
++# so that we can not emit them into the final version script -- Solaris
++# complains at us if we do.
++
++state == "nm" && /^%%/ {
++ state = "ver";
++ next;
++}
++
++state == "nm" && ($1 == "U" || $2 == "U") {
++ next;
++}
++
++state == "nm" && NF == 3 {
++ if ($3 ~ /^[^@]*@GCC_[0-9.]*$/) {
++ def[$3] = 1
++ tl=$3
++ sub(/^.*@/,"",tl)
++ ver[$3] = tl
++ } else {
++ sub(/@@?GCC_[0-9.]*$/,"",$3)
++ def[$3] = 1;
++ }
++ sawsymbol = 1;
++ next;
++}
++
++state == "nm" {
++ next;
++}
++
++# Now we process a simplified variant of the Solaris symbol version
++# script. We have one symbol per line, no semicolons, simple markers
++# for beginning and ending each section, and %inherit markers for
++# describing version inheritence. A symbol may appear in more than
++# one symbol version, and the last seen takes effect.
++
++NF == 3 && $1 == "%inherit" {
++ inherit[$2] = $3;
++ next;
++}
++
++NF == 2 && $2 == "{" {
++ libs[$1] = 1;
++ thislib = $1;
++ next;
++}
++
++$1 == "}" {
++ thislib = "";
++ next;
++}
++
++{
++ ver[$1] = thislib;
++ next;
++}
++
++END {
++ if (!sawsymbol)
++ {
++ print "No symbols seen -- broken or mis-installed nm?" | "cat 1>&2";
++ exit 1;
++ }
++ for (l in libs)
++ output(l);
++}
++
++function output(lib) {
++ if (done[lib])
++ return;
++ done[lib] = 1;
++ if (inherit[lib])
++ output(inherit[lib]);
++
++ empty=1
++ for (sym in ver)
++ if ((ver[sym] == lib) && (sym in def))
++ {
++ if (empty)
++ {
++ printf("%s {\n", lib);
++ printf(" global:\n");
++ empty = 0;
++ }
++ symp = sym;
++ sub(/@GCC_[0-9.]*$/,"",symp);
++ printf("\t%s;\n", symp);
++ if (dotsyms)
++ printf("\t.%s;\n", symp);
++ }
++
++ if (empty)
++ {
++ for (l in libs)
++ if (inherit[l] == lib)
++ inherit[l] = inherit[lib];
++ }
++ else if (inherit[lib])
++ printf("} %s;\n", inherit[lib]);
++ else
++ printf ("\n local:\n\t*;\n};\n");
++}
+--- gcc/config/ia64/libgcc-ia64-no-libunwind.ver.jj 2004-02-18 10:27:36.000000000 -0500
++++ gcc/config/ia64/libgcc-ia64-no-libunwind.ver 2004-11-15 09:19:56.000000000 -0500
+@@ -0,0 +1,17 @@
++GCC_3.4.2 {
++ _Unwind_GetGR
++ _Unwind_RaiseException
++ _Unwind_GetRegionStart
++ _Unwind_SetIP
++ _Unwind_GetIP
++ _Unwind_GetLanguageSpecificData
++ _Unwind_Resume
++ _Unwind_DeleteException
++ _Unwind_SetGR
++ _Unwind_ForcedUnwind
++ _Unwind_Backtrace
++ _Unwind_FindEnclosingFunction
++ _Unwind_GetCFA
++ _Unwind_Resume_or_Rethrow
++ _Unwind_GetBSP
++}
diff --git a/gcc44-java-debug-iface-type.patch b/gcc44-java-debug-iface-type.patch
new file mode 100644
index 0000000..63a1b50
--- /dev/null
+++ b/gcc44-java-debug-iface-type.patch
@@ -0,0 +1,17 @@
+2008-01-25 Jakub Jelinek <jakub@redhat.com>
+
+ * lang.c (java_classify_record): Revert 2007-12-20 change.
+
+--- gcc/java/lang.c 2007-12-27 09:09:49.000000000 +0100
++++ gcc/java/lang.c 2008-01-25 17:43:57.000000000 +0100
+@@ -965,9 +965,7 @@ java_classify_record (tree type)
+ if (! CLASS_P (type))
+ return RECORD_IS_STRUCT;
+
+- /* ??? GDB does not support DW_TAG_interface_type as of December,
+- 2007. Re-enable this at a later time. */
+- if (0 && CLASS_INTERFACE (TYPE_NAME (type)))
++ if (CLASS_INTERFACE (TYPE_NAME (type)))
+ return RECORD_IS_INTERFACE;
+
+ return RECORD_IS_CLASS;
diff --git a/gcc44-java-nomulti.patch b/gcc44-java-nomulti.patch
new file mode 100644
index 0000000..17334aa
--- /dev/null
+++ b/gcc44-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/gcc44-libgomp-omp_h-multilib.patch b/gcc44-libgomp-omp_h-multilib.patch
new file mode 100644
index 0000000..d0e98d1
--- /dev/null
+++ b/gcc44-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/gcc44-libtool-no-rpath.patch b/gcc44-libtool-no-rpath.patch
new file mode 100644
index 0000000..466c661
--- /dev/null
+++ b/gcc44-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/gcc44-ppc32-retaddr.patch b/gcc44-ppc32-retaddr.patch
new file mode 100644
index 0000000..e9ae1bc
--- /dev/null
+++ b/gcc44-ppc32-retaddr.patch
@@ -0,0 +1,86 @@
+2005-11-28 Jakub Jelinek <jakub@redhat.com>
+
+ * config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
+ read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
+ instead of doing an extran indirection from frame_pointer_rtx.
+
+ * gcc.dg/20051128-1.c: New test.
+
+--- gcc/config/rs6000/rs6000.c.jj 2005-11-26 14:38:01.000000000 +0100
++++ gcc/config/rs6000/rs6000.c 2005-11-28 20:32:18.000000000 +0100
+@@ -13166,17 +13166,22 @@ rs6000_return_addr (int count, rtx frame
+ don't try to be too clever here. */
+ if (count != 0 || (DEFAULT_ABI != ABI_AIX && flag_pic))
+ {
++ rtx x;
+ cfun->machine->ra_needs_full_frame = 1;
+
+- return
+- gen_rtx_MEM
+- (Pmode,
+- memory_address
+- (Pmode,
+- plus_constant (copy_to_reg
+- (gen_rtx_MEM (Pmode,
+- memory_address (Pmode, frame))),
+- RETURN_ADDRESS_OFFSET)));
++ if (count == 0)
++ {
++ gcc_assert (frame == frame_pointer_rtx);
++ x = arg_pointer_rtx;
++ }
++ else
++ {
++ x = memory_address (Pmode, frame);
++ x = copy_to_reg (gen_rtx_MEM (Pmode, x));
++ }
++
++ x = plus_constant (x, RETURN_ADDRESS_OFFSET);
++ return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
+ }
+
+ cfun->machine->ra_need_lr = 1;
+--- gcc/testsuite/gcc.dg/20051128-1.c.jj 2005-10-10 11:21:41.096999000 +0200
++++ gcc/testsuite/gcc.dg/20051128-1.c 2005-11-28 12:30:57.000000000 +0100
+@@ -0,0 +1,41 @@
++/* { dg-do run } */
++/* { dg-options "-O2 -fpic" } */
++
++extern void exit (int);
++extern void abort (void);
++
++int b;
++
++struct A
++{
++ void *pad[147];
++ void *ra, *h;
++ long o;
++};
++
++void
++__attribute__((noinline))
++foo (struct A *a, void *x)
++{
++ __builtin_memset (a, 0, sizeof (a));
++ if (!b)
++ exit (0);
++}
++
++void
++__attribute__((noinline))
++bar (void)
++{
++ struct A a;
++
++ __builtin_unwind_init ();
++ foo (&a, __builtin_return_address (0));
++}
++
++int
++main (void)
++{
++ bar ();
++ abort ();
++ return 0;
++}
diff --git a/gcc44-pr27898.patch b/gcc44-pr27898.patch
new file mode 100644
index 0000000..172bb81
--- /dev/null
+++ b/gcc44-pr27898.patch
@@ -0,0 +1,16 @@
+2006-08-18 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/27898
+ * gcc.dg/pr27898.c: New test.
+
+--- gcc/testsuite/gcc.dg/pr27898.c.jj 2006-08-18 09:19:33.000000000 +0200
++++ gcc/testsuite/gcc.dg/pr27898.c 2006-08-18 09:19:27.000000000 +0200
+@@ -0,0 +1,8 @@
++/* PR c/27898 */
++/* { dg-do compile } */
++/* { dg-options "--combine" } */
++/* { dg-additional-sources "pr27898.c" } */
++
++union u { struct { int i; }; };
++
++extern int foo (union u *);
diff --git a/gcc44-pr32139.patch b/gcc44-pr32139.patch
new file mode 100644
index 0000000..f356967
--- /dev/null
+++ b/gcc44-pr32139.patch
@@ -0,0 +1,19 @@
+2007-06-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/32139
+ * gcc.c-torture/compile/20070531-1.c: New test.
+
+--- gcc/testsuite/gcc.c-torture/compile/20070531-1.c.jj 2007-05-31 13:47:22.000000000 +0200
++++ gcc/testsuite/gcc.c-torture/compile/20070531-1.c 2007-06-01 10:57:15.000000000 +0200
+@@ -0,0 +1,11 @@
++/* PR tree-optimization/32139 */
++int foo (void);
++int bar (void) __attribute__ ((const));
++
++int
++test (int x)
++{
++ int a = (x == 10000 ? foo : bar) ();
++ int b = (x == 10000 ? foo : bar) ();
++ return a + b;
++}
diff --git a/gcc44-pr33763.patch b/gcc44-pr33763.patch
new file mode 100644
index 0000000..86c8ac7
--- /dev/null
+++ b/gcc44-pr33763.patch
@@ -0,0 +1,153 @@
+2007-11-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/33763
+ * gcc.dg/pr33763.c: New test.
+ * g++.dg/opt/inline13.C: New test.
+
+2007-11-06 Jan Hubicka <jh@suse.cz>
+
+ PR tree-optimization/33763
+ * tree-inline.c (expand_call_inline): Silently ignore always_inline
+ attribute for redefined extern inline functions.
+
+--- gcc/tree-inline.c.jj 2007-11-06 09:29:04.000000000 +0100
++++ gcc/tree-inline.c 2007-11-06 16:19:12.000000000 +0100
+@@ -3157,6 +3157,12 @@ expand_call_inline (basic_block bb, gimp
+ goto egress;
+
+ if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn))
++ /* For extern inline functions that get redefined we always
++ silently ignored alway_inline flag. Better behaviour would
++ be to be able to keep both bodies and use extern inline body
++ for inlining, but we can't do that because frontends overwrite
++ the body. */
++ && !cg_edge->callee->local.redefined_extern_inline
+ /* Avoid warnings during early inline pass. */
+ && cgraph_global_info_ready)
+ {
+--- gcc/testsuite/gcc.dg/pr33763.c.jj 2007-11-06 16:19:12.000000000 +0100
++++ gcc/testsuite/gcc.dg/pr33763.c 2007-11-06 16:19:12.000000000 +0100
+@@ -0,0 +1,60 @@
++/* PR tree-optimization/33763 */
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++typedef struct
++{
++ void *a;
++ void *b;
++} T;
++extern void *foo (const char *, const char *);
++extern void *bar (void *, const char *, T);
++extern int baz (const char *, int);
++
++extern inline __attribute__ ((always_inline, gnu_inline)) int
++baz (const char *x, int y)
++{
++ return 2;
++}
++
++int
++baz (const char *x, int y)
++{
++ return 1;
++}
++
++int xa, xb;
++
++static void *
++inl (const char *x, const char *y)
++{
++ T t = { &xa, &xb };
++ int *f = (int *) __builtin_malloc (sizeof (int));
++ const char *z;
++ int o = 0;
++ void *r = 0;
++
++ for (z = y; *z; z++)
++ {
++ if (*z == 'r')
++ o |= 1;
++ if (*z == 'w')
++ o |= 2;
++ }
++ if (o == 1)
++ *f = baz (x, 0);
++ if (o == 2)
++ *f = baz (x, 1);
++ if (o == 3)
++ *f = baz (x, 2);
++
++ if (o && *f > 0)
++ r = bar (f, "w", t);
++ return r;
++}
++
++void *
++foo (const char *x, const char *y)
++{
++ return inl (x, y);
++}
+--- gcc/testsuite/g++.dg/opt/inline13.C.jj 2007-11-06 16:20:20.000000000 +0100
++++ gcc/testsuite/g++.dg/opt/inline13.C 2007-11-06 16:21:30.000000000 +0100
+@@ -0,0 +1,60 @@
++// PR tree-optimization/33763
++// { dg-do compile }
++// { dg-options "-O2" }
++
++typedef struct
++{
++ void *a;
++ void *b;
++} T;
++extern void *foo (const char *, const char *);
++extern void *bar (void *, const char *, T);
++extern int baz (const char *, int);
++
++extern inline __attribute__ ((always_inline, gnu_inline)) int
++baz (const char *x, int y)
++{
++ return 2;
++}
++
++int
++baz (const char *x, int y)
++{
++ return 1;
++}
++
++int xa, xb;
++
++static void *
++inl (const char *x, const char *y)
++{
++ T t = { &xa, &xb };
++ int *f = (int *) __builtin_malloc (sizeof (int));
++ const char *z;
++ int o = 0;
++ void *r = 0;
++
++ for (z = y; *z; z++)
++ {
++ if (*z == 'r')
++ o |= 1;
++ if (*z == 'w')
++ o |= 2;
++ }
++ if (o == 1)
++ *f = baz (x, 0);
++ if (o == 2)
++ *f = baz (x, 1);
++ if (o == 3)
++ *f = baz (x, 2);
++
++ if (o && *f > 0)
++ r = bar (f, "w", t);
++ return r;
++}
++
++void *
++foo (const char *x, const char *y)
++{
++ return inl (x, y);
++}
diff --git a/gcc44-rh330771.patch b/gcc44-rh330771.patch
new file mode 100644
index 0000000..f52b919
--- /dev/null
+++ b/gcc44-rh330771.patch
@@ -0,0 +1,34 @@
+2007-10-16 Jakub Jelinek <jakub@redhat.com>
+
+ * Makefile.am (libgcj_tools_la_LIBADD): Add.
+ * Makefile.in: Regenerated.
+
+--- libjava/Makefile.am.jj 2007-03-17 09:20:30.000000000 +0100
++++ libjava/Makefile.am 2007-10-16 15:45:14.000000000 +0200
+@@ -277,6 +277,8 @@ EXTRA_libgcj_la_SOURCES = java/lang/Obje
+
+ libgcj_tools_la_SOURCES = classpath/tools/tools.zip
+ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes -fsource-filename=$(here)/classpath/tools/all-classes.lst
++## See jv_convert_LDADD.
++libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
+ libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
+--- libjava/Makefile.in.jj 2007-07-04 21:11:11.000000000 +0200
++++ libjava/Makefile.in 2007-10-16 15:56:07.000000000 +0200
+@@ -153,7 +153,6 @@ am__objects_1 = gnu/gcj/xlib/lib_gnu_awt
+ am_lib_gnu_awt_xlib_la_OBJECTS = $(am__objects_1)
+ lib_gnu_awt_xlib_la_OBJECTS = $(am_lib_gnu_awt_xlib_la_OBJECTS)
+ @XLIB_AWT_TRUE@am_lib_gnu_awt_xlib_la_rpath = -rpath $(toolexeclibdir)
+-libgcj_tools_la_LIBADD =
+ am_libgcj_tools_la_OBJECTS = classpath/tools/libgcj_tools_la-tools.lo
+ libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS)
+ @INTERPRETER_TRUE@am__DEPENDENCIES_1 = gnu/classpath/jdwp.lo \
+@@ -941,6 +940,7 @@ libgcj_la_LINK = $(LIBLINK)
+ EXTRA_libgcj_la_SOURCES = java/lang/Object.java
+ libgcj_tools_la_SOURCES = classpath/tools/tools.zip
+ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes -fsource-filename=$(here)/classpath/tools/all-classes.lst
++libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
+ libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
diff --git a/gcc44-rh341221.patch b/gcc44-rh341221.patch
new file mode 100644
index 0000000..1f5ff91
--- /dev/null
+++ b/gcc44-rh341221.patch
@@ -0,0 +1,28 @@
+2007-10-21 Jakub Jelinek <jakub@redhat.com>
+
+ * doc/Makefile.am (POD2MAN): Set date from cp-tools.texinfo
+ timestamp rather than from current date.
+ * doc/Makefile.in: Regenerated.
+
+--- libjava/classpath/doc/Makefile.am.jj 2007-12-07 17:55:00.000000000 +0100
++++ libjava/classpath/doc/Makefile.am 2007-12-07 18:55:28.000000000 +0100
+@@ -31,7 +31,7 @@ TOOLS_MANFILES = \
+ gtnameserv.1 \
+ gjdoc.1
+
+-POD2MAN = pod2man --center="GNU" --release="$(VERSION)"
++POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
+ TEXI2POD = perl $(srcdir)/texi2pod.pl
+ STAMP = echo timestamp >
+
+--- libjava/classpath/doc/Makefile.in.jj 2007-12-07 17:55:00.000000000 +0100
++++ libjava/classpath/doc/Makefile.in 2007-12-07 18:55:43.000000000 +0100
+@@ -382,7 +382,7 @@ TOOLS_MANFILES = \
+ gtnameserv.1 \
+ gjdoc.1
+
+-POD2MAN = pod2man --center="GNU" --release="$(VERSION)"
++POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
+ TEXI2POD = perl $(srcdir)/texi2pod.pl
+ STAMP = echo timestamp >
+ @GENINSRC_FALSE@STAMP_GENINSRC =
diff --git a/gcc44-sparc-config-detection.patch b/gcc44-sparc-config-detection.patch
new file mode 100644
index 0000000..cc3cb41
--- /dev/null
+++ b/gcc44-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
+@@ -2175,7 +2175,7 @@ sparc-*-elf*)
+ tmake_file="sparc/t-elf sparc/t-crtfm"
+ extra_parts="crti.o crtn.o crtbegin.o crtend.o"
+ ;;
+-sparc-*-linux*) # SPARC's running GNU/Linux, libc6
++sparc-*-linux* | sparcv9*-*-linux*) # SPARC's running GNU/Linux, libc6
+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h"
+ extra_options="${extra_options} sparc/long-double-switch.opt"
+ tmake_file="${tmake_file} sparc/t-linux"
+@@ -2287,7 +2287,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
+ *) echo "$with_cpu not supported for freebsd target"; exit 1 ;;
+ esac
+ ;;
+-sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
++sparc64*-*-linux*) # 64-bit SPARC's running GNU/Linux
+ tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h linux.h sparc/linux64.h"
+ extra_options="${extra_options} sparc/long-double-switch.opt"
+ tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
+--- libgcc/config.host.jj 2008-04-24 15:46:19.000000000 -0500
++++ libgcc/config.host 2008-04-24 15:46:49.000000000 -0500
+@@ -572,7 +572,7 @@ sparc64-*-openbsd*)
+ ;;
+ sparc-*-elf*)
+ ;;
+-sparc-*-linux*) # SPARC's running GNU/Linux, libc6
++sparc-*-linux* | sparcv9*-*-linux*) # SPARC's running GNU/Linux, libc6
+ extra_parts="$extra_parts crtfastmath.o"
+ tmake_file="${tmake_file} sparc/t-crtfm"
+ ;;
+@@ -590,7 +590,7 @@ sparc-wrs-vxworks)
+ ;;
+ sparc64-*-freebsd*|ultrasparc-*-freebsd*)
+ ;;
+-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} sparc/t-crtfm"
+ ;;
diff --git a/import.log b/import.log
new file mode 100644
index 0000000..c2040a3
--- /dev/null
+++ b/import.log
@@ -0,0 +1 @@
+gcc-4_4_0-0_3:HEAD:gcc-4.4.0-0.3.src.rpm:1232130841
diff --git a/sources b/sources
index 042742f..27264af 100644
--- a/sources
+++ b/sources
@@ -1,2 +1,2 @@
-eb9ce8c6f929283bc91c93a6087e8ced gcc-4.3.2-20081105.tar.bz2
-92a70f9e56223b653bce0f58f90cf950 fastjar-0.95.tar.gz
+2659f09c2e43ef8b7d4406321753f1b2 fastjar-0.97.tar.gz
+0fafcb0d23d420c978ab253702094ada gcc-4.4.0-20090115.tar.bz2
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-06-29 12:23 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-29 12:23 [rpms/gcc] rhel-f41-base: 4.4.0-0.3 Jakub Jelinek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox