set thumb as as default option for armv7l-gcc because thumb becomes default since...
[platform/upstream/gcc48.git] / packaging / gcc.spec.in
index a79796b..d9025f6 100644 (file)
@@ -1,28 +1,39 @@
-%define fast_build 1
+#
+# spec file for package gcc48
+#
+# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via http://bugs.opensuse.org/
+#
+
+# norootforbuild
+# icecream 0
+
 
-# Ada currently fails to build on a few platforms, enable it only
-# on those that work
-# Note that AdaCore only supports %ix86, x86_64 and ia64
-%ifarch %ix86 x86_64
-%define build_ada !0%{?building_libjava:1}%{?building_libffi:1}
-%else
 %define build_ada 0
-%endif
 
 %define quadmath_arch %ix86 x86_64 ia64
+%define tsan_arch x86_64
+%define asan_arch x86_64 %ix86 ppc ppc64
+%define itm_arch x86_64 %ix86 %arm ppc ppc64
+%define atomic_arch x86_64 %ix86 %arm ppc ppc64 s390 s390x
 
 # We don't want to build java
-%ifarch mips
 %define build_java 0
 %define build_libjava 0
-%else
-%define build_java 1
-%define build_libjava 0%{?building_libjava:1}%{?building_libffi:1}%{?building_testsuite:1}
-%endif
 
 %define build_cp 1
-%define build_fortran 1
-%define build_objc 1
+%define build_fortran !0%{?building_libjava:1}%{?building_libffi:1}
+%define build_objc !0%{?building_libjava:1}%{?building_libffi:1}
 %define build_objcp !0%{?building_libjava:1}%{?building_libffi:1}
 %define build_with_mudflap 0
 
 %endif
 
 # For optional compilers only build C, C++ and Fortran
-##%if 0%{?build_optional_compiler:1}%{?build_optional_compiler_languages:1}
-%if 0%{!?building_libffi:1}
+%if 0%{?build_optional_compiler_languages:1}
 %define build_ada 0
 %define build_java 0
 %define build_libjava 0
-%define build_objc 1
-%define build_objcp 1
+%define build_objc 0
+%define build_objcp 0
 %endif
 
+# Shared library SONAME versions
+%define libgcc_s 1
+%define libgcj_sover %{nil}
+%define libgcj_bc_sover %{nil}
+%define libffi_sover %{nil}
+%define libmudflap_sover %{nil}
+%define libgomp_sover %{nil}
+%define libstdcxx_sover %{nil}
+%define libobjc_sover %{nil}
+%define libgfortran_sover %{nil}
+%define libquadmath_sover %{nil}
+%define libasan_sover %{nil}
+%define libtsan_sover %{nil}
+%define libatomic_sover %{nil}
+%define libitm_sover %{nil}
+
+# Shared library package suffix
+# This is used for the "non-standard" set of libraries, the standard
+# being defined by %product_libs_gcc_ver, the GCC version that should
+# provide un-suffixed shared library packages following the shared-library
+# policy.  Even suffixed variants should provide the shared-library policy
+# mandated names and ensure they conflict with each other.
+# Note that on SONAME changes of any library the %product_libs_gcc_ver
+# define needs to be either split or the newest GCC version still providing
+# the old SONAME needs to unconditionally produce an un-suffixed library
+# if %product_libs_gcc_ver is newer than it.  Similar the _oldest_ GCC
+# version first providing a new SONAME needs to unconditionally produce
+# an un-suffixed library if %product_libs_gcc_ver is lower that it.
+%if %{!?product_libs_gcc_ver:@base_ver@}%{?product_libs_gcc_ver} != @base_ver@
+%define pne 1
+%endif
+%define libgcc_s_suffix %{?pne:-gcc@base_ver@}
+# libgcj SONAME changes with every GCC version
+%define libgcj_suffix %nil
+%define libgcj_bc_suffix %{?pne:-gcc@base_ver@}
+%define libffi_suffix %{?pne:-gcc@base_ver@}
+%define libmudflap_suffix %{?pne:-gcc@base_ver@}
+%define libgomp_suffix %{?pne:-gcc@base_ver@}
+%define libstdcxx_suffix %{?pne:-gcc@base_ver@}
+%define libobjc_suffix %{?pne:-gcc@base_ver@}
+%define libgfortran_suffix %{?pne:-gcc@base_ver@}
+%define libquadmath_suffix %{?pne:-gcc@base_ver@}
+%define libasan_suffix %{?pne:-gcc@base_ver@}
+%define libtsan_suffix %{?pne:-gcc@base_ver@}
+%define libatomic_suffix %{?pne:-gcc@base_ver@}
+%define libitm_suffix %{?pne:-gcc@base_ver@}
+
+
+
 
 Name:         gcc@base_ver@
+BuildRequires: gcc-c++
 BuildRequires: bison
 BuildRequires: flex
-BuildRequires: gettext-tools
-BuildRequires: makeinfo
 BuildRequires: glibc-devel-32bit
 BuildRequires: mpc-devel
 BuildRequires: mpfr-devel
 BuildRequires: perl
-BuildRequires: texinfo
+BuildRequires: makeinfo
 BuildRequires: zlib-devel
-%ifarch %ix86 x86_64 %arm
-BuildRequires: cloog-devel
-BuildRequires: ppl-devel
+%ifarch %ix86 x86_64 ppc ppc64 s390 s390x ia64 %sparc hppa %arm
+BuildRequires: cloog-isl-devel
+BuildRequires: isl-devel
 %endif
 %if %{build_ada}
 %define hostsuffix -4.7
@@ -67,7 +125,6 @@ BuildRequires: gcc47-ada
 %endif
 %if 0%{?building_libjava:1}%{?building_testsuite:1}
 BuildRequires: fastjar
-BuildRequires: unzip
 %endif
 %if 0%{?building_libffi:1}
 BuildRequires: pkg-config
@@ -81,23 +138,14 @@ BuildRequires: expect
 BuildRequires: gdb
 %endif
 
-# Define version number of libgcc_s
-%ifarch hppa
-%define libgcc_s 4
-%else
-%define libgcc_s 1
-%endif
-%ifarch ppc
-# We support building the nof libraries, but don't want this in the
-# regular rpms
-%define build_nof 0
-%else
-%define build_nof 0
-%endif
-
 %define separate_bi32 0
 %define separate_bi64 0
-%ifarch x86_64 
+%ifarch ppc sparcv9
+# Beware, this does _not_ separate libgcj, as for that one multilibing
+# is inactive for the time being
+%define separate_bi64 1
+%endif
+%ifarch x86_64 s390x ppc64 sparc64
 %define separate_bi32 1
 %endif
 
@@ -112,7 +160,7 @@ BuildRequires: gdb
 %define separate_biarch_suffix -64bit
 %endif
 
-%ifarch x86_64
+%ifarch x86_64 ia64 s390x alpha ppc64 sparc64
 # 64-bit is primary build target
 %define build_primary_64bit 1
 %else
@@ -122,47 +170,51 @@ BuildRequires: gdb
 %define biarch_libjava 0
 
 # COMMON-BEGIN
-%define biarch_targets x86_64 
+%define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64
 
 URL:          http://gcc.gnu.org/
-Version: 4.7.2
+Version: 4.8.1
 Release:      1
-%define gcc_version %(echo %version | sed 's/_.*//')
-%define gcc_dir_version %(echo %gcc_version | cut -d '.' -f 1-2)
-%define snapshot_date %(echo %version | sed 's/[34]\.[0-9]\.[0-6]//' | sed 's/_/-/')
-%define binsuffix -4.7
+%define gcc_dir_version 4.8
+%define binsuffix -4.8
 # COMMON-END
 
 %if !0%{?building_libjava:1}%{?building_libffi:1}%{?building_testsuite:1}
 Requires: binutils glibc-devel
 Requires: cpp@base_ver@ = %{version}-%{release}
-%if 0%{!?build_optional_compiler:1}
-Requires: libgcc%{libgcc_s} >= %{version}-%{release}
-Requires: libgomp1 >= %{version}-%{release}
+Requires: libgcc_s%{libgcc_s} >= %{version}-%{release}
+Requires: libgomp%{libgomp_sover} >= %{version}-%{release}
 %if %{build_with_mudflap}
-Requires: libmudflap0 >= %{version}-%{release}
-Requires: libmudflapth0 >= %{version}-%{release}
+Requires: libmudflap%{libmudflap_sover} >= %{version}-%{release}
+Requires: libmudflapth%{libmudflap_sover} >= %{version}-%{release}
 %endif
-%else
-Requires: libgcc@base_ver@ = %{version}-%{release}
-Requires: libgomp@base_ver@ = %{version}-%{release}
+%ifarch %asan_arch
+Requires: libasan%{libasan_sover} >= %{version}-%{release}
+%endif
+%ifarch %tsan_arch
+Requires: libtsan%{libtsan_sover} >= %{version}-%{release}
+%endif
+%ifarch %atomic_arch
+Requires: libatomic%{libatomic_sover} >= %{version}-%{release}
 %endif
+%ifarch %itm_arch
+Requires: libitm%{libitm_sover} >= %{version}-%{release}
+%endif
+Suggests: gcc@base_ver@-info gcc@base_ver@-locale
 %endif
 
 # COMMON-BEGIN
 BuildRoot:     %{_tmppath}/%{name}-%{version}-build
-Source:                gcc-%{gcc_version}%{snapshot_date}.tar.bz2
+Source:                gcc-%{version}.tar.bz2
 Source1:       change_spec
-Source2:       libgcj47-rpmlintrc
-Source3:       gcc47-rpmlintrc
+Source3:       gcc48-rpmlintrc
 Source4:       ecj.jar
-Source5:       README.First-for.SuSE.packagers
 Source6:       baselibs.conf
 
+
 # GCC-TESTSUITE-DELETE-BEGIN
-# LIBFFI-DELETE-BEGIN
 # LIBJAVA-DELETE-BEGIN
-Group:         Development/Languages/C and C++
+Group:         Development/Toolchain
 Summary:       The GNU C Compiler and Support Files
 License:        GPL-3.0+
 
@@ -173,24 +225,19 @@ frontend.
 Language frontends other than C are split to different sub-packages,
 namely gcc-ada, gcc-c++, gcc-fortran, gcc-java, gcc-objc and
 gcc-obj-c++.
+# LIBFFI-DELETE-BEGIN
 
 
 
 # COMMON-END
 %package -n gcc@base_ver@-32bit
 Summary:      The GNU C Compiler 32bit support
-Group:        Development/Languages/C and C++
 Requires: gcc@base_ver@ = %{version}-%{release}
-%if 0%{!?build_optional_compiler:1}
-Requires: libgcc%{libgcc_s}-32bit >= %{version}-%{release}
-Requires: libgomp1-32bit >= %{version}-%{release}
+Requires: libgcc_s%{libgcc_s}-32bit >= %{version}-%{release}
+Requires: libgomp%{libgomp_sover}-32bit >= %{version}-%{release}
 %if %{build_with_mudflap}
-Requires: libmudflap0-32bit >= %{version}-%{release}
-Requires: libmudflapth0-32bit >= %{version}-%{release}
-%endif
-%else
-Requires: libgcc@base_ver@-32bit = %{version}-%{release}
-Requires: libgomp@base_ver@-32bit = %{version}-%{release}
+Requires: libmudflap%{libmudflap_sover}-32bit >= %{version}-%{release}
+Requires: libmudflapth%{libmudflap_sover}-32bit >= %{version}-%{release}
 %endif
 Requires: glibc-devel-32bit
 
@@ -199,18 +246,12 @@ This package contains 32bit support for the GNU Compiler Collection.
 
 %package -n gcc@base_ver@-64bit
 Summary:      The GNU C Compiler 64bit support
-Group:        Development/Languages/C and C++
 Requires: gcc@base_ver@ = %{version}-%{release}
-%if 0%{!?build_optional_compiler:1}
-Requires: libgcc%{libgcc_s}-64bit >= %{version}-%{release}
-Requires: libgomp1-64bit >= %{version}-%{release}
+Requires: libgcc_s%{libgcc_s}-64bit >= %{version}-%{release}
+Requires: libgomp%{libgomp_sover}-64bit >= %{version}-%{release}
 %if %{build_with_mudflap}
-Requires: libmudflap0-64bit >= %{version}-%{release}
-Requires: libmudflapth0-64bit >= %{version}-%{release}
-%endif
-%else
-Requires: libgcc@base_ver@-64bit = %{version}-%{release}
-Requires: libgomp@base_ver@-64bit = %{version}-%{release}
+Requires: libmudflap%{libmudflap_sover}-64bit >= %{version}-%{release}
+Requires: libmudflapth%{libmudflap_sover}-64bit >= %{version}-%{release}
 %endif
 Requires: glibc-devel-64bit
 
@@ -221,7 +262,6 @@ This package contains 64bit support for the GNU Compiler Collection.
 %package locale
 Summary:      Locale Data for the GNU Compiler Collection
 License:        GPL-3.0+
-Group:        Development/Languages/C and C++
 Requires: gcc@base_ver@ = %{version}-%{release}
 
 %description locale
@@ -232,7 +272,6 @@ in the current locale.
 %package c++
 Summary:      The GNU C++ Compiler
 License:        GPL-3.0+
-Group:        Development/Languages/C and C++
 Requires: gcc@base_ver@ = %{version}-%{release}
 Requires: libstdc++@base_ver@-devel = %{version}-%{release}
 
@@ -243,12 +282,7 @@ This package contains the GNU compiler for C++.
 %package -n libstdc++@base_ver@-devel@variant@
 Summary:      Include Files and Libraries mandatory for Development
 License:        GPL-3.0-with-GCC-exception
-Group:        Development/Languages/C and C++
-%if 0%{!?build_optional_compiler:1}
-Requires: libstdc++6@variant@ >= %{version}-%{release}
-%else
-Requires: libstdc++@base_ver@@variant@ = %{version}-%{release}
-%endif
+Requires: libstdc++%{libstdcxx_sover}@variant@ >= %{version}-%{release}
 Requires: glibc-devel@variant@
 %ifarch ia64
 Requires: libunwind-devel
@@ -262,7 +296,6 @@ library. It is needed for compiling C++ code.
 %package -n libstdc++@base_ver@-doc
 Summary:      Documentation for the GNU C++ standard library
 License:        GPL-3.0+
-Group:        Documentation/HTML
 BuildArch:    noarch
 
 %description -n libstdc++@base_ver@-doc
@@ -270,81 +303,75 @@ Extensive HTML documentation for the GNU C++ standard library.
 
 
 # PACKAGE-BEGIN
-%package -n libgcc@base_ver@@variant@
+%package -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}@variant@
 Summary:      C compiler runtime library
 License:        GPL-3.0-with-GCC-exception
-Group:        System/Base
-%if 0%{!?build_optional_compiler:1}
-Provides: libgcc%{libgcc_s}@variant@ = %{version}-%{release}
-Conflicts: libgcc%{libgcc_s}@variant@ < %{version}-%{release}
-%else
-Autoprov: no
-%endif
+Group:        System/Libraries
+Provides:      libgcc_s%{libgcc_s}@variant@ = %{version}-%{release}
 
-%description -n libgcc@base_ver@@variant@
+%description -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}@variant@
 Libgcc is needed for dynamically linked C programs.
 
-%post -n libgcc@base_ver@@variant@
+%post -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}@variant@
 /sbin/ldconfig
 
-%postun -n libgcc@base_ver@@variant@
+%postun -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}@variant@
 /sbin/ldconfig
 # PACKAGE-END
 
 # PACKAGE-BEGIN
-%package -n libgomp@base_ver@@variant@
+%package -n libgomp%{libgomp_sover}%{libgomp_suffix}@variant@
 Summary:      The GNU compiler collection OpenMP runtime library
 License:        GPL-3.0-with-GCC-exception
-Group:        System/Base
-%if 0%{!?build_optional_compiler:1}
-Provides: libgomp1@variant@ = %{version}-%{release}
-Conflicts: libgomp1@variant@ < %{version}-%{release}
-%else
-Autoprov: no
-%endif
+Group:        System/Libraries
+Provides:      libgomp%{libgomp_sover}@variant@ = %{version}-%{release}
 
-%description -n libgomp@base_ver@@variant@
+%description -n libgomp%{libgomp_sover}%{libgomp_suffix}@variant@
 This is the OpenMP runtime library needed by OpenMP enabled programs
 that were built with the -fopenmp compiler option and by programs that
 were auto-parallelized via the -ftree-parallelize-loops compiler
 option.
 
 
-%post -n libgomp@base_ver@@variant@
+%post -n libgomp%{libgomp_sover}%{libgomp_suffix}@variant@
 /sbin/ldconfig
 
-%postun -n libgomp@base_ver@@variant@
+%postun -n libgomp%{libgomp_sover}%{libgomp_suffix}@variant@
 /sbin/ldconfig
 # PACKAGE-END
 
 # PACKAGE-BEGIN
-%package -n libstdc++@base_ver@@variant@
+%package -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}@variant@
 Summary:      The standard C++ shared library
 License:        GPL-3.0-with-GCC-exception
 Group:        System/Libraries
-%if 0%{!?build_optional_compiler:1}
-Provides: libstdc++6@variant@ = %{version}-%{release}
-Conflicts: libstdc++6@variant@ < %{version}-%{release}
-%else
-Autoprov: no
-%endif
+Suggests:      libstdc++%{libstdcxx_sover}-locale
+Provides:      libstdc++%{libstdcxx_sover}@variant@ = %{version}-%{release}
 
-%description -n libstdc++@base_ver@@variant@
+%description -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}@variant@
 The standard C++ library, needed for dynamically linked C++ programs.
 
 
-%post -n libstdc++@base_ver@@variant@
+%post -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}@variant@
 /sbin/ldconfig
 
-%postun -n libstdc++@base_ver@@variant@
+%postun -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}@variant@
 /sbin/ldconfig
 # PACKAGE-END
 
+%package -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}-locale
+Summary:       Locale Data for the standard C++ shared library
+License:       GPL-3.0-with-GCC-exception
+Group:         System/Libraries
+Provides:      libstdc++%{libstdcxx_sover}-locale = %{version}-%{release}
+
+%description -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}-locale
+The standard C++ library locale data.
+
 
 %package info
 Summary:      Documentation for the GNU compiler collection
 License:      GFDL-1.2
-Group:        Documentation/Other
 BuildArch:    noarch
 
 %description info
@@ -356,9 +383,8 @@ and internals documentation.
 %package objc@variant@
 Summary:      GNU Objective C Compiler
 License:        GPL-3.0+
-Group:        Development/Languages/Other
 Requires: gcc@base_ver@ = %{version}-%{release}
-Requires: libobjc2@variant@ >= %{version}-%{release}
+Requires: libobjc%{libobjc_sover}@variant@ >= %{version}-%{release}
 
 %description objc@variant@
 This package contains the GNU Objective C compiler. Objective C is an
@@ -367,27 +393,24 @@ Nextstep OS. The source code is available in the gcc package.
 # PACKAGE-END
 
 # PACKAGE-BEGIN
-%package -n libobjc@base_ver@@variant@
+%package -n libobjc%{libobjc_sover}%{libobjc_suffix}@variant@
 Summary:      Library for the GNU Objective C Compiler
 License:        GPL-3.0-with-GCC-exception
-Group:        Development/Libraries/Other
-Provides: libobjc2@variant@ = %{version}-%{release}
-Conflicts: libobjc2@variant@ < %{version}-%{release}
+Provides:      libobjc%{libobjc_sover}@variant@ = %{version}-%{release}
 
-%description -n libobjc@base_ver@@variant@
+%description -n libobjc%{libobjc_sover}%{libobjc_suffix}@variant@
 The library for the GNU Objective C compiler.
 
-%post -n libobjc@base_ver@@variant@
+%post -n libobjc%{libobjc_sover}%{libobjc_suffix}@variant@
 /sbin/ldconfig
 
-%postun -n libobjc@base_ver@@variant@
+%postun -n libobjc%{libobjc_sover}%{libobjc_suffix}@variant@
 /sbin/ldconfig
 # PACKAGE-END
 
 %package obj-c++
 Summary:      GNU Objective C++ Compiler
 License:        GPL-3.0+
-Group:        Development/Languages/Other
 Requires: gcc@base_ver@-objc = %{version}-%{release}
 Requires: gcc@base_ver@-c++ = %{version}-%{release}
 
@@ -400,7 +423,6 @@ Nextstep OS. The source code is available in the gcc package.
 %package -n cpp@base_ver@
 Summary:      The GCC Preprocessor
 License:        GPL-3.0+
-Group:        Development/Languages/C and C++
 
 %description -n cpp@base_ver@
 This Package contains just the preprocessor that is used by the X11
@@ -411,7 +433,6 @@ packages.
 %package ada@variant@
 Summary:      GNU Ada95 Compiler Based on GCC (GNAT)
 License:        GPL-3.0+
-Group:        Development/Languages/Other
 Requires: gcc@base_ver@@variant@ = %{version}-%{release}
 Requires: libada@base_ver@@variant@ = %{version}-%{release}
 
@@ -426,12 +447,6 @@ must have installed a binary version to bootstrap the compiler.
 %package -n libada@base_ver@@variant@
 Summary:      GNU Ada Runtime Libraries
 License:      GPL-3.0-with-GCC-exception
-Group:        System/Libraries
-Provides: libgnarl-4_7@variant@ = %{version}-%{release}
-Conflicts: libgnarl-4_7@variant@ < %{version}-%{release}
-Provides: libgnat-4_7@variant@ = %{version}-%{release}
-Conflicts: libgnat-4_7@variant@ < %{version}-%{release}
-
 %description -n libada@base_ver@@variant@
 This package contains the shared libraries required to run programs
 compiled with the GNU Ada compiler (GNAT) if they are compiled to use
@@ -451,18 +466,10 @@ implementation of Distributed Systems Programming (GLADE) and the Posix
 %package fortran@variant@
 Summary:      The GNU Fortran Compiler and Support Files
 License:        GPL-3.0+
-Group:        Development/Languages/Fortran
 Requires: gcc@base_ver@ = %{version}-%{release}
-%if 0%{!?build_optional_compiler:1}
-Requires: libgfortran3@variant@ >= %{version}-%{release}
-%ifarch %quadmath_arch
-Requires: libquadmath0@variant@ >= %{version}-%{release}
-%endif
-%else
-Requires: libgfortran@base_ver@@variant@ = %{version}-%{release}
+Requires: libgfortran%{libgfortran_sover}@variant@ >= %{version}-%{release}
 %ifarch %quadmath_arch
-Requires: libquadmath@base_ver@@variant@ = %{version}-%{release}
-%endif
+Requires: libquadmath%{libquadmath_sover}@variant@ >= %{version}-%{release}
 %endif
 
 %description fortran@variant@
@@ -470,55 +477,40 @@ This is the Fortran compiler of the GNU Compiler Collection (GCC).
 # PACKAGE-END
 
 # PACKAGE-BEGIN
-%package -n libgfortran@base_ver@@variant@
+%package -n libgfortran%{libgfortran_sover}%{libgfortran_suffix}@variant@
 Summary:      The GNU Fortran Compiler Runtime Library
 License:        GPL-3.0-with-GCC-exception
-Group:        Development/Languages/Fortran
-%if 0%{!?build_optional_compiler:1}
-Provides: libgfortran3@variant@ = %{version}-%{release}
-Conflicts: libgfortran3@variant@ < %{version}-%{release}
-%ifarch %quadmath_arch
-Requires: libquadmath0@variant@ >= %{version}-%{release}
-%endif
-%else
 %ifarch %quadmath_arch
-Requires: libquadmath@base_ver@@variant@ = %{version}-%{release}
-%endif
-Autoprov: no
+Requires: libquadmath%{libquadmath_sover}@variant@ >= %{version}-%{release}
 %endif
+Provides:      libgfortran%{libgfortran_sover}@variant@ = %{version}-%{release}
 
-%description -n libgfortran@base_ver@@variant@
+%description -n libgfortran%{libgfortran_sover}%{libgfortran_suffix}@variant@
 The runtime library needed to run programs compiled with the Fortran compiler
 of the GNU Compiler Collection (GCC).
 
-%post -n libgfortran@base_ver@@variant@
+%post -n libgfortran%{libgfortran_sover}%{libgfortran_suffix}@variant@
 /sbin/ldconfig
 
-%postun -n libgfortran@base_ver@@variant@
+%postun -n libgfortran%{libgfortran_sover}%{libgfortran_suffix}@variant@
 /sbin/ldconfig
 # PACKAGE-END
 
 # PACKAGE-BEGIN
-%package -n libquadmath@base_ver@@variant@
+%package -n libquadmath%{libquadmath_sover}%{libquadmath_suffix}@variant@
 Summary:      The GNU Fortran Compiler Quadmath Runtime Library
 License:        LGPL-2.1
-Group:        Development/Languages/Fortran
-%if 0%{!?build_optional_compiler:1}
-Provides: libquadmath0@variant@ = %{version}-%{release}
-Conflicts: libquadmath0@variant@ < %{version}-%{release}
-%else
-Autoprov: no
-%endif
+Provides:      libquadmath%{libquadmath_sover}@variant@ = %{version}-%{release}
 
-%description -n libquadmath@base_ver@@variant@
+%description -n libquadmath%{libquadmath_sover}%{libquadmath_suffix}@variant@
 The runtime library needed to run programs compiled with the Fortran compiler
 of the GNU Compiler Collection (GCC) and quadruple precision floating point
 operations.
 
-%post -n libquadmath@base_ver@@variant@
+%post -n libquadmath%{libquadmath_sover}%{libquadmath_suffix}@variant@
 /sbin/ldconfig
 
-%postun -n libquadmath@base_ver@@variant@
+%postun -n libquadmath%{libquadmath_sover}%{libquadmath_suffix}@variant@
 /sbin/ldconfig
 # PACKAGE-END
 
@@ -526,11 +518,6 @@ operations.
 %package -n libmudflap@base_ver@@variant@
 Summary:      The Mudflap Extension Runtime Library
 License:        GPL-3.0-with-GCC-exception
-Group:        Development/Languages/C and C++
-Provides: libmudflap0@variant@ = %{version}-%{release}
-Conflicts: libmudflap0@variant@ < %{version}-%{release}
-Provides: libmudflapth0@variant@ = %{version}-%{release}
-Conflicts: libmudflapth0@variant@ < %{version}-%{release}
 
 %description -n libmudflap@base_ver@@variant@
 This is the Mudflap Extension Runtime Library.
@@ -542,19 +529,75 @@ This is the Mudflap Extension Runtime Library.
 /sbin/ldconfig
 # PACKAGE-END
 
+# PACKAGE-BEGIN
+%package -n libitm%{libitm_sover}%{libitm_suffix}@variant@
+Summary:      The GNU Compiler Transactional Memory Runtime Library
+License:        MIT
+
+%description -n libitm%{libitm_sover}%{libitm_suffix}@variant@
+The runtime library needed to run programs compiled with the
+-fgnu-tm option of the GNU Compiler Collection (GCC).
+
+%post -n libitm%{libitm_sover}%{libitm_suffix}@variant@
+/sbin/ldconfig
+
+%postun -n libitm%{libitm_sover}%{libitm_suffix}@variant@
+/sbin/ldconfig
+# PACKAGE-END
+
+# PACKAGE-BEGIN
+%package -n libasan%{libasan_sover}%{libasan_suffix}@variant@
+Summary:      The GNU Compiler Address Sanitizer Runtime Library
+License:        MIT
+
+%description -n libasan%{libasan_sover}%{libasan_suffix}@variant@
+The runtime library needed to run programs compiled with the
+-fsanitize=address option of the GNU Compiler Collection (GCC).
+
+%post -n libasan%{libasan_sover}%{libasan_suffix}@variant@
+/sbin/ldconfig
+
+%postun -n libasan%{libasan_sover}%{libasan_suffix}@variant@
+/sbin/ldconfig
+# PACKAGE-END
+
+# PACKAGE-BEGIN
+%package -n libtsan%{libtsan_sover}%{libtsan_suffix}@variant@
+Summary:      The GNU Compiler Thread Sanitizer Runtime Library
+License:        MIT
+
+%description -n libtsan%{libtsan_sover}%{libtsan_suffix}@variant@
+The runtime library needed to run programs compiled with the
+-fsanitize=thread option of the GNU Compiler Collection (GCC).
+
+%post -n libtsan%{libtsan_sover}%{libtsan_suffix}@variant@
+/sbin/ldconfig
+
+%postun -n libtsan%{libtsan_sover}%{libtsan_suffix}@variant@
+/sbin/ldconfig
+# PACKAGE-END
+
+# PACKAGE-BEGIN
+%package -n libatomic%{libatomic_sover}%{libatomic_suffix}@variant@
+Summary:      The GNU Compiler Atomic Operations Runtime Library
+License:      GPL-3.0-with-GCC-exception
+
+%description -n libatomic%{libatomic_sover}%{libatomic_suffix}@variant@
+The runtime library for atomic operations of the GNU Compiler Collection (GCC).
+
+%post -n libatomic%{libatomic_sover}%{libatomic_suffix}@variant@
+/sbin/ldconfig
+
+%postun -n libatomic%{libatomic_sover}%{libatomic_suffix}@variant@
+/sbin/ldconfig
+# PACKAGE-END
+
 
 %package -n libgcj@base_ver@
 # LIBJAVA-DELETE-END
 Summary:      Java Runtime Library for gcc
 License:      GPL-2.0-with-classpath-exception
 Group:        System/Libraries
-%define gcj_sover 13
-Provides: libgcj%{gcj_sover} = %{version}-%{release}
-Conflicts: libgcj%{gcj_sover} < %{version}-%{release}
-Provides: libgij%{gcj_sover} = %{version}-%{release}
-Conflicts: libgij%{gcj_sover} < %{version}-%{release}
-Provides: libgcj-tools%{gcj_sover} = %{version}-%{release}
-Conflicts: libgcj-tools%{gcj_sover} < %{version}-%{release}
 
 %description -n libgcj@base_ver@
 This library is needed if you want to use the GNU Java compiler, gcj.
@@ -570,7 +613,6 @@ Source code for this package is in gcc.
 %package -n gcc@base_ver@-java
 Summary:      The GNU Java Compiler
 License:        GPL-3.0+
-Group:        Development/Languages/Java
 Requires: gcc@base_ver@ = %{version}
 Requires: libgcj@base_ver@-devel = %{version}-%{release}
 
@@ -578,24 +620,20 @@ Requires: libgcj@base_ver@-devel = %{version}-%{release}
 The Java compiler from the GCC-tools-suite.
 
 
-%package -n libgcj_bc@base_ver@
+%package -n libgcj_bc%{libgcj_bc_sover}%{libgcj_bc_suffix}
 Summary:      Fake library for BC-ABI compatibility.
 License:        GPL-2.0-with-classpath-exception
-Group:        Development/Libraries/Java
-Provides: libgcj_bc1 = %{version}-%{release}
-Conflicts: libgcj_bc1 < %{version}-%{release}
 # libgcj_bc is special in that it just contains a symlink to
 # a proper libgcj version.  So require that library and add
 # provides for the shlib version as created at link time
-Requires: libgcj%{gcj_sover}
-%ifarch x86_64 
-Provides: libgcj_bc.so.1()(64bit)
+Requires: libgcj%{libgcj_sover} >= %{version}-%{release}
+%ifarch x86_64 ia64 ppc64 s390x sparc64 aarch64
+Provides: libgcj_bc.so.%{libgcj_bc_sover}()(64bit)
 %else
-Provides: libgcj_bc.so.1
+Provides: libgcj_bc.so.%{libgcj_bc_sover}
 %endif
 
-
-%description -n libgcj_bc@base_ver@
+%description -n libgcj_bc%{libgcj_bc_sover}%{libgcj_bc_suffix}
 A fake library that is used at link time only. It ensures that
 binaries built with the BC-ABI link against a constant SONAME.
 This way, BC-ABI binaries continue to work if the SONAME underlying
@@ -605,7 +643,6 @@ libgcj.so changes.
 %package -n libgcj@base_ver@-jar
 Summary:      Java runtime library (jar files).
 License:        GPL-2.0-with-classpath-exception
-Group:        Development/Libraries/Java
 
 %description -n libgcj@base_ver@-jar
 These are the jar files that go along with the gcj front end to gcc.
@@ -614,10 +651,9 @@ These are the jar files that go along with the gcj front end to gcc.
 %package -n libgcj@base_ver@-devel
 Summary:      Include Files and Libraries mandatory for Development.
 License:        GPL-2.0-with-classpath-exception
-Group:        Development/Libraries/Java
 Requires: libstdc++@base_ver@-devel = %{version}
-Requires: libgcj%{gcj_sover} >= %{version}-%{release}
-Requires: libgcj_bc1 >= %{version}-%{release}
+Requires: libgcj%{libgcj_sover} >= %{version}-%{release}
+Requires: libgcj_bc%{libgcj_bc_sover} >= %{version}-%{release}
 Requires: libgcj@base_ver@-jar = %{version}-%{release}
 Requires: gtk2-devel
 Requires: libart_lgpl-devel
@@ -635,29 +671,24 @@ to develop applications that require these.
 %package -n gcc@base_ver@-gij
 Summary:      Java Bytecode Interpreter for gcc
 License:      GPL-2.0-with-classpath-exception
-Group:        Development/Libraries/Java
-Requires: libgcj%{gcj_sover} >= %{version}-%{release}
+Requires: libgcj%{libgcj_sover} >= %{version}-%{release}
 
 %description -n gcc@base_ver@-gij
 This package contains the java bytecode interpreter gij and related tools.
 
 # LIBFFI-DELETE-END
 # PACKAGE-BEGIN
-%package -n libffi@base_ver@@variant@
+%package -n libffi%{libffi_sover}%{libffi_suffix}@variant@
 Summary:      Foreign Function Interface library
 License:        BSD-3-Clause
-Group:        Development/Languages/C and C++
-Provides: g-wrap:/usr/lib/libffi.so.4
-Provides: libffi4@variant@ = %{version}-%{release}
-Conflicts: libffi4@variant@ < %{version}-%{release}
 
-%description -n libffi@base_ver@@variant@
+%description -n libffi%{libffi_sover}%{libffi_suffix}@variant@
 A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
 
-%post -n libffi@base_ver@@variant@
+%post -n libffi%{libffi_sover}%{libffi_suffix}@variant@
 /sbin/ldconfig
 
-%postun -n libffi@base_ver@@variant@
+%postun -n libffi%{libffi_sover}%{libffi_suffix}@variant@
 /sbin/ldconfig
 # PACKAGE-END
 
@@ -665,10 +696,7 @@ A foreign function interface is the popular name for the interface that allows c
 %package -n libffi@base_ver@-devel@variant@
 Summary:      Foreign Function Interface library development files
 License:        BSD 3-Clause
-Group:        Development/Languages/C and C++
-Requires: libffi4@variant@ >= %{version}-%{release}
-Provides: libffi-devel@variant@ = %{version}-%{release}
-Conflicts: libffi-devel@variant@ < %{version}-%{release}
+Requires: libffi%{libffi_sover}@variant@ >= %{version}-%{release}
 
 %description -n libffi@base_ver@-devel@variant@
 A foreign function interface is the popular name for the interface that allows code written in one language to call code written in another language.
@@ -678,7 +706,6 @@ A foreign function interface is the popular name for the interface that allows c
 # GCC-TESTSUITE-DELETE-END
 Summary:      Testsuite results
 License:       SUSE-Public-Domain
-Group:        Development/Languages/C and C++
 
 %description -n gcc@base_ver@-testresults
 Results from running the gcc and target library testsuites.
@@ -693,6 +720,12 @@ Results from running the gcc and target library testsuites.
 %if 0%{?gcc_target_arch:1}
 %define CONFIGURE_TARGET %{gcc_target_arch}
 %define TARGET_ARCH %(echo %{gcc_target_arch} | cut -d - -f 1 | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
+%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "powerpc"
+%define CONFIGURE_TARGET powerpc64-tizen-linux
+%endif
+%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "powerpc64"
+%define CONFIGURE_TARGET powerpc64-tizen-linux
+%endif
 %if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "i586"
 %define CONFIGURE_TARGET i586-tizen-linux
 %endif
@@ -702,11 +735,8 @@ Results from running the gcc and target library testsuites.
 %if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "armv7hl"
 %define CONFIGURE_TARGET armv7hl-tizen-linux-gnueabi
 %endif
-%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "armv7el"
-%define CONFIGURE_TARGET armv7el-tizen-linux-gnueabi
-%endif
-%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "armv5el"
-%define CONFIGURE_TARGET armv5el-tizen-linux-gnueabi
+%if 0%{?gcc_icecream:1} && %{TARGET_ARCH} == "armv5tel"
+%define CONFIGURE_TARGET armv5tel-tizen-linux-gnueabi
 %endif
 %else
 %define TARGET_ARCH %(echo %{_target_cpu} | sed -e "s/i.86/i586/;s/ppc/powerpc/;s/sparc64.*/sparc64/;s/sparcv.*/sparc/;")
@@ -715,11 +745,19 @@ Results from running the gcc and target library testsuites.
 
 %define biarch %(case " %{biarch_targets} " in (*" %{TARGET_ARCH} "*) echo 1;; (*) echo 0;; esac)
 
+%ifarch ppc
+%define GCCDIST powerpc64-tizen-linux
+%else
+%ifarch %sparc
+%define GCCDIST sparc64-tizen-linux
+%else
 %ifarch %arm
 %define GCCDIST %{HOST_ARCH}-tizen-linux-gnueabi
 %else
 %define GCCDIST %{HOST_ARCH}-tizen-linux
 %endif
+%endif
+%endif
 
 %define libsubdir %{_libdir}/gcc/%{GCCDIST}/%{gcc_dir_version}
 %define gxxinclude %{_prefix}/include/c++/%{gcc_dir_version}
@@ -730,29 +768,24 @@ Results from running the gcc and target library testsuites.
 %define versmainlibdir %{libsubdir}
 %define versmainlibdirbi32 %{libsubdir}/32
 %define versmainlibdirbi64 %{libsubdir}/64
+%ifarch ppc
+%define versmainlibdirbi32 %{libsubdir}
+%define versmainlibdirbi64 %{libsubdir}/64
+%endif
 %if %{build_primary_64bit}
 %define versmainlibdirbi %{versmainlibdirbi32}
 %else
 %define versmainlibdirbi %{versmainlibdirbi64}
 %endif
 
-%if 0%{?build_optional_compiler:1}
-%define mainlibdir %{versmainlibdir}
-%define mainlibdirbi32 %{versmainlibdirbi32}
-%define mainlibdirbi64 %{versmainlibdirbi64}
-%define noflibdir %{versnoflibdir}
-%define mainlibdirbi %{versmainlibdirbi}
-%else
 %define mainlibdir %{_libdir}
 %define mainlibdirbi32 %{_prefix}/lib
 %define mainlibdirbi64 %{_prefix}/lib64
-%define noflibdir %{_prefix}/lib/nof
 %if %{build_primary_64bit}
 %define mainlibdirbi %{mainlibdirbi32}
 %else
 %define mainlibdirbi %{mainlibdirbi64}
 %endif
-%endif
 
 
 # Now define a few macros that make it easy to package libs and
@@ -760,82 +793,52 @@ Results from running the gcc and target library testsuites.
 # exact path the files are in.
 #   %mainlib  package X from all dirs that belong to the main package
 #   %biarchlib   package X from all dirs that belong to the -32/64bit package
-# by default, nof libs go where the 32bit libs go.
-%if %{build_nof}
-%define mainlib() %{mainlibdir}/%1\
-%{noflibdir}/%1\
-%{nil}
-%else
 %define mainlib() %{mainlibdir}/%1\
 %{nil}
-%endif
 %define biarchlib() %{nil}
 %if %{biarch}
 %if !%{separate_biarch}
-%if %{build_nof}
-%define mainlib() %{mainlibdir}/%1\
-%{mainlibdirbi}/%1\
-%{noflibdir}/%1\
-%{nil}
-%else
 %define mainlib() %{mainlibdir}/%1\
 %{mainlibdirbi}/%1\
 %{nil}
-%endif
-%else
-%if %{build_nof}
-%define biarchlib() %{mainlibdirbi}/%1\
-%{noflibdir}/%1\
-%{nil}
-%define mainlib() %{mainlibdir}/%1\
-%{nil}
 %else
 %define biarchlib() %{mainlibdirbi}/%1\
 %{nil}
 %endif
 %endif
-%endif
 
-%if %{build_nof}
 %define versmainlib() %{versmainlibdir}/%1\
-%{versnoflibdir}/%1\
 %{nil}
-%else
-%define versmainlib() %{versmainlibdir}/%1\
-%{nil}
-%endif
 %define versbiarchlib() %{nil}
 %if %{biarch}
 %if !%{separate_biarch}
-%if %{build_nof}
 %define versmainlib() %{versmainlibdir}/%1\
 %{versmainlibdirbi}/%1\
-%{versnoflibdir}/%1\
-%{nil}
-%else
-%define versmainlib() %{versmainlibdir}/%1\
-%{versmainlibdirbi}/%1\
-%{nil}
-%endif
-%else
-%if %{build_nof}
-%define versbiarchlib() %{versmainlibdirbi}/%1\
-%{versnoflibdir}/%1\
-%{nil}
-%define versmainlib() %{versmainlibdir}/%1\
 %{nil}
 %else
 %define versbiarchlib() %{versmainlibdirbi}/%1\
 %{nil}
 %endif
 %endif
-%endif
 
 
 # COMMON-BEGIN
 
 %prep
-%setup -q -n gcc-%{gcc_version}%{snapshot_date}
+%setup -q -n gcc-%{version}
+
+
+# We are configuring ppc as ppc64 but with switched multilibs.  Adjust
+# the libstdc++ abi testsuite baseline files accordingly
+%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/baseline_symbols.txt \
+       libstdc++-v3/config/abi/post/powerpc64-linux-gnu/64/
+  mv libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt \
+       libstdc++-v3/config/abi/post/powerpc64-linux-gnu/
+fi
+%endif
 
 %build
 # Avoid rebuilding of generated files
@@ -866,6 +869,10 @@ RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fno-rtti//g' -e 's/-fno-exceptions
 # default compiler settings now.
 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-mcpu=i.86//g' -e 's/-march=i.86//g' -e 's/-mtune=i.86//g'`
 %endif
+%ifarch s390 s390x
+RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fsigned-char//g'`
+RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-O1/-O2/g'`
+%endif
 %if 0%{?gcc_target_arch:1} && 0%{!?gcc_icecream:1}
 # Kill all -march/tune/cpu because that screws building the target libs
 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-m\(arch\|tune\|cpu\)=[^ ]*//g'`
@@ -928,7 +935,7 @@ export _POSIX2_VERSION=199209
 # if glibc supports SSP.  When cross compiling we would need
 # to install a cross glibc, which we don't, or make the whole
 # thing point to the native glibc, which is in /, hence the
-# --with-sysroot=/
+# --with-build-sysroot=/
 
 %if %{build_ada}
 # Using the host gnatmake like
@@ -949,26 +956,27 @@ export PATH="`pwd`/host-tools/bin:$PATH"
 #      --enable-threads=posix \
 #%endif
 #      --enable-shared \
+%if "%{TARGET_ARCH}" == "armv7l" || "%{TARGET_ARCH}" == "armv7hl"
+# temporary workaround for a miscompilation of hash functions in java code
+GCJ_EXTRA_FLAGS="-marm"
+%endif
 CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" XCFLAGS="$RPM_OPT_FLAGS" \
-TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
+TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS $GCJ_EXTRA_FLAGS" \
 ../configure \
        --prefix=%{_prefix} \
        --infodir=%{_infodir} \
        --mandir=%{_mandir} \
        --libdir=%{_libdir} \
        --libexecdir=%{_libdir} \
+    --disable-bootstrap \
        --enable-languages=$languages \
        $ENABLE_CHECKING \
        --with-gxx-include-dir=%{_prefix}/include/c++/%{gcc_dir_version} \
        --enable-ssp \
        --disable-libssp \
-       --disable-libitm \
-%if 0%{?fast_build}
-       --disable-bootstrap \
-%endif
        --disable-plugin \
        --with-bugurl="http://bugs.tizen.org/" \
-       --with-pkgversion="Tizen Linux" \
+       --with-pkgversion="Tizen" \
 %if !%{build_libjava}
         --disable-libgcj \
 %else
@@ -999,12 +1007,14 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
 %if 0%{?canonical_target:1}
        --with-build-time-tools=/usr/%{canonical_target}-tizen-linux%{?canonical_target_abi:%canonical_target_abi}/bin \
 %endif
+%if 0%{?sysroot:1}
+       --with-sysroot=%sysroot \
+%endif
 %if 0%{?build_static:1}
        --disable-shared \
 %endif
 %if "%{TARGET_ARCH}" == "spu"
-       --with-sysroot=/usr/spu \
-       --with-gxx-include-dir=%{_prefix}/spu/include/c++/%{gcc_dir_version} \
+       --with-gxx-include-dir=%sysroot/include/c++/%{gcc_dir_version} \
        --with-newlib \
 %endif
        --disable-nls \
@@ -1025,15 +1035,15 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
        --with-abi=aapcs-linux \
        --disable-sjlj-exceptions \
 %endif
-%if "%{TARGET_ARCH}" == "armv7el" 
+%if "%{TARGET_ARCH}" == "armv7l" 
        --with-arch=armv7-a \
-       --with-tune=cortex-a9 \
-       --with-float=soft \
-       --with-abi=softfp \
+       --with-tune=cortex-a8 \
+       --with-float=softfp \
        --with-fpu=vfpv3 \
+       --with-mode=thumb \
        --disable-sjlj-exceptions \
 %endif
-%if "%{TARGET_ARCH}" == "armv7l" || "%{TARGET_ARCH}" == "armv7hl"
+%if  "%{TARGET_ARCH}" == "armv7hl"
        --with-arch=armv7-a \
        --with-tune=cortex-a9 \
        --with-float=hard \
@@ -1041,6 +1051,22 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
        --with-fpu=vfpv3-d16 \
        --disable-sjlj-exceptions \
 %endif
+%if "%{TARGET_ARCH}" == "powerpc" || "%{TARGET_ARCH}" == "powerpc64"
+%if "%{TARGET_ARCH}" == "powerpc"
+       --with-cpu=default32 \
+%endif
+       --with-cpu-64=power4 \
+       --enable-secureplt \
+       --with-long-double-128 \
+%endif
+%if "%{TARGET_ARCH}" == "sparc64"
+       --with-cpu=ultrasparc \
+       --with-long-double-128 \
+%endif
+%if "%{TARGET_ARCH}" == "sparc"
+       --with-cpu=v8 \
+       --with-long-double-128 \
+%endif
 %if "%{TARGET_ARCH}" == "i586"
        --with-arch-32=i586 \
        --with-tune=generic \
@@ -1049,6 +1075,16 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
        --with-arch-32=i586 \
        --with-tune=generic \
 %endif
+%if "%{TARGET_ARCH}" == "s390"
+        --with-tune=z196 --with-arch=z10 \
+       --with-long-double-128 \
+       --enable-decimal-float \
+%endif
+%if "%{TARGET_ARCH}" == "s390x"
+        --with-tune=z196 --with-arch=z10 \
+       --with-long-double-128 \
+       --enable-decimal-float \
+%endif
        --build=%{GCCDIST}
 
 # COMMON-END
@@ -1057,15 +1093,11 @@ TCFLAGS="$RPM_OPT_FLAGS" GCJFLAGS="$RPM_OPT_FLAGS" \
 make stage1-bubble $PARALLEL
 make all-target-libffi $PARALLEL
 %else
+STAGE1_FLAGS="-g"
 # Only run profiled bootstrap on archs where it works
 #%ifarch %ix86 x86_64 ppc ppc64 ia64
-#make profiledbootstrap-lean STAGE1_CFLAGS="-O -g" BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
+#make profiledbootstrap-lean STAGE1_CFLAGS="$STAGE1_FLAGS" BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
 #%else
-%ifarch %arm
-STAGE1_FLAGS="-O0"
-%else
-STAGE1_FLAGS="-O -g"
-%endif
 #make bootstrap-lean STAGE1_CFLAGS="$STAGE1_FLAGS" BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
 make STAGE1_CFLAGS="$STAGE1_FLAGS" BOOT_CFLAGS="$RPM_OPT_FLAGS" $PARALLEL
 #%endif
@@ -1076,6 +1108,8 @@ echo "Run testsuite"
 (make -C %{GCCDIST}/libstdc++-v3 check-abi || true)
 mv %{GCCDIST}/libstdc++-v3/testsuite/libstdc++.log %{GCCDIST}/libstdc++-v3/testsuite/libstdc++-abi.log
 mv %{GCCDIST}/libstdc++-v3/testsuite/libstdc++.sum %{GCCDIST}/libstdc++-v3/testsuite/libstdc++-abi.sum
+# asan needs a whole shadow address space
+ulimit -v unlimited || true
 make -k check $PARALLEL || true
 mkdir ../testresults
 ../contrib/test_summary | tee ../testresults/test_summary.txt
@@ -1130,11 +1164,13 @@ rm -f $RPM_BUILD_ROOT%{libsubdir}/include/ffitarget.h
 rm -f $RPM_BUILD_ROOT%{_mandir}/man3/ffi%{binsuffix}.3*
 rm -f $RPM_BUILD_ROOT%{_mandir}/man3/ffi_call%{binsuffix}.3*
 rm -f $RPM_BUILD_ROOT%{_mandir}/man3/ffi_prep_cif%{binsuffix}.3*
+rm -f $RPM_BUILD_ROOT%{_mandir}/man3/ffi_prep_cif_var%{binsuffix}.3*
 %endif
 
 # Remove some useless .la files
 for lib in libobjc libgfortran libgfortranbegin libquadmath libcaf_single \
-    libmudflap libmudflapth libgomp libstdc++ libsupc++ libgcj-tools libgij; do
+    libmudflap libmudflapth libgomp libstdc++ libsupc++ libgcj-tools libgij \
+    libasan libatomic libitm libtsan; do
   rm -f $RPM_BUILD_ROOT%{versmainlibdir}/$lib.la
 %if %{biarch}
   rm -f $RPM_BUILD_ROOT%{versmainlibdirbi}/$lib.la
@@ -1199,7 +1235,6 @@ fi
 %endif
 # LIBJAVA-DELETE-END
 
-%if 0%{!?build_optional_compiler:1}
 # move shared libs from versionspecific dir to main libdir
 for libname in \
 %if 0%{?building_libjava:1}
@@ -1218,6 +1253,18 @@ for libname in \
   libstdc++ \
 %endif
   libgomp \
+%ifarch %atomic_arch
+  libatomic \
+%endif
+%ifarch %itm_arch
+  libitm \
+%endif
+%ifarch %asan_arch
+  libasan \
+%endif
+%ifarch %tsan_arch
+  libtsan \
+%endif
 %if %{build_with_mudflap}
   libmudflap libmudflapth \
 %endif
@@ -1238,6 +1285,12 @@ for libname in \
   fi
 %endif
 done
+# FIXME, tsan is not multilib
+%ifarch %tsan_arch
+%if %{biarch}
+rm -f $RPM_BUILD_ROOT%{versmainlibdirbi}/libtsan.so
+%endif
+%endif
 %if %{build_cp}
 %if !0%{?building_libjava:1}
 # And we want to move the shlib gdb pretty printers to a more sane
@@ -1261,18 +1314,16 @@ sed -i -e '/^libdir/s/\/gcc\/%{GCCDIST}\/%{gcc_dir_version}//g' $RPM_BUILD_ROOT%
 for lib in `find $RPM_BUILD_ROOT%{versmainlibdir} -maxdepth 1 -name libgcj_bc.so.*`; do
   rm $lib
 done
-ln -s libgcj.so.%{gcj_sover} $RPM_BUILD_ROOT%{mainlibdir}/libgcj_bc.so.1
+ln -s libgcj.so.%{libgcj_sover} $RPM_BUILD_ROOT%{mainlibdir}/libgcj_bc.so.%{libgcj_bc_sover}
 %if %{biarch_libjava}
 for lib in `find $RPM_BUILD_ROOT%{versmainlibdirbi} -maxdepth 1 -name libgcj_bc.so.*`; do
   rm $lib
 done
-ln -s libgcj.so.%{gcj_sover} $RPM_BUILD_ROOT%{mainlibdirbi}/libgcj_bc.so.1
-%endif
+ln -s libgcj.so.%{libgcj_sover} $RPM_BUILD_ROOT%{mainlibdirbi}/libgcj_bc.so.%{libgcj_bc_sover}
 %endif
 %endif
 
 # LIBJAVA-DELETE-BEGIN
-%if 0%{!?build_optional_compiler:1}
 # Move libgcc_s around
 if test -L $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so; then
   rm -f $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so
@@ -1303,49 +1354,7 @@ ln -sf %{versmainlibdirbi64}/libgcc_s.so $RPM_BUILD_ROOT%{versmainlibdirbi64}/li
 chmod a+x $RPM_BUILD_ROOT/lib64/libgcc_s.so.%{libgcc_s}
 %endif
 %endif
-%else
-# Move libgcc_s around
-mv $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so.%{libgcc_s} $RPM_BUILD_ROOT%{versmainlibdir}/
-if test -L $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so; then
-  rm -f $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so
-  ln -sf %{versmainlibdir}/libgcc_s.so.%{libgcc_s} $RPM_BUILD_ROOT%{versmainlibdir}/libgcc_s.so
-else
-  mv $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so $RPM_BUILD_ROOT%{versmainlibdir}/
-fi
-chmod a+x $RPM_BUILD_ROOT%{versmainlibdir}/libgcc_s.so.%{libgcc_s}
-%if %{biarch}
-%if %{build_primary_64bit}
-mv $RPM_BUILD_ROOT/lib/libgcc_s.so.%{libgcc_s} $RPM_BUILD_ROOT%{versmainlibdirbi32}/
-if test -L $RPM_BUILD_ROOT/lib/libgcc_s.so; then
-  rm -f $RPM_BUILD_ROOT/lib/libgcc_s.so
-  ln -sf %{versmainlibdirbi32}/libgcc_s.so.%{libgcc_s} $RPM_BUILD_ROOT%{versmainlibdirbi32}/libgcc_s.so
-else
-  mv $RPM_BUILD_ROOT/lib/libgcc_s.so $RPM_BUILD_ROOT%{versmainlibdirbi32}/
-fi
-ln -sf %{versmainlibdirbi32}/libgcc_s.so $RPM_BUILD_ROOT%{versmainlibdirbi32}/libgcc_s_32.so
-chmod a+x $RPM_BUILD_ROOT%{versmainlibdirbi32}/libgcc_s.so.%{libgcc_s}
-%else
-# 32-bit biarch systems
-mv $RPM_BUILD_ROOT/lib64/libgcc_s.so.%{libgcc_s} $RPM_BUILD_ROOT%{versmainlibdirbi64}/
-if test -L $RPM_BUILD_ROOT/lib64/libgcc_s.so; then
-  rm -f $RPM_BUILD_ROOT/lib64/libgcc_s.so
-  ln -sf %{versmainlibdirbi64}/libgcc_s.so.%{libgcc_s} $RPM_BUILD_ROOT%{versmainlibdirbi64}/libgcc_s.so
-else
-  mv $RPM_BUILD_ROOT/lib64/libgcc_s.so $RPM_BUILD_ROOT%{versmainlibdirbi64}/
-fi
-ln -sf %{versmainlibdirbi64}/libgcc_s.so $RPM_BUILD_ROOT%{versmainlibdirbi64}/libgcc_s_64.so
-chmod a+x $RPM_BUILD_ROOT%{versmainlibdirbi64}/libgcc_s.so.%{libgcc_s}
-%endif
-%endif
-%endif
 
-# Provide a defaults.spec file which adds a proper rpath
-%if 0%{?build_optional_compiler:1}
-cat > $RPM_BUILD_ROOT%{libsubdir}/defaults.spec << EOF
-*link:
-+ %%{!m32:%%{!m64:-rpath=%{libsubdir}}} %%{m32:-rpath=%{libsubdir}/32} %%{m64:-rpath=%{libsubdir}/64}
-EOF
-%endif
 # LIBJAVA-DELETE-END
 # LIBFFI-DELETE-END
 
@@ -1491,9 +1500,6 @@ rm -f $RPM_BUILD_ROOT%{_mandir}/man7/fsf-funding.7
 rm -f $RPM_BUILD_ROOT%{_mandir}/man7/gfdl.7
 rm -f $RPM_BUILD_ROOT%{_mandir}/man7/gpl.7
 rm -f $RPM_BUILD_ROOT%{_libdir}/libiberty.a
-%if %{build_nof}
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib/nof/libiberty.a
-%endif
 %if %{biarch}
 %if %{build_primary_64bit}
 rm -f $RPM_BUILD_ROOT%{_prefix}/lib/libiberty.a
@@ -1517,6 +1523,9 @@ cp $RPM_SOURCE_DIR/ecj.jar $RPM_BUILD_ROOT%{libsubdir}
 # For regular build, some info files do not get renamed properly.
 # Do so here.
 mv $RPM_BUILD_ROOT%{_infodir}/libgomp.info $RPM_BUILD_ROOT%{_infodir}/libgomp%{binsuffix}.info
+%ifarch %itm_arch
+mv $RPM_BUILD_ROOT%{_infodir}/libitm.info $RPM_BUILD_ROOT%{_infodir}/libitm%{binsuffix}.info
+%endif
 %if %{build_fortran} 
 %ifarch %quadmath_arch
 mv $RPM_BUILD_ROOT%{_infodir}/libquadmath.info $RPM_BUILD_ROOT%{_infodir}/libquadmath%{binsuffix}.info
@@ -1531,7 +1540,10 @@ mv $RPM_BUILD_ROOT%{_infodir}/gnat_ugn.info $RPM_BUILD_ROOT%{_infodir}/gnat_ugn%
 
 # LIBJAVA-DELETE-BEGIN
 cd ..
-%find_lang gcc@base_ver@-locale --all-name
+%find_lang cpplib%{binsuffix}
+%find_lang gcc%{binsuffix}
+cat cpplib%{binsuffix}.lang gcc%{binsuffix}.lang > gcc@base_ver@-locale.lang
+
 
 %post info
 %install_info --info-dir=%{_infodir} %{_infodir}/cpp%{binsuffix}.info.gz
@@ -1552,7 +1564,7 @@ cd ..
 %if %{build_ada}
 %install_info --info-dir=%{_infodir} %{_infodir}/gnat-style%{binsuffix}.info.gz
 %install_info --info-dir=%{_infodir} %{_infodir}/gnat_rm%{binsuffix}.info.gz
-%install_info --info-dir=%{_infodir} --section="GNU Ada tools" --entry="* GNAT User's Guide: (gnat_ugn). GNAT User's Guide for Unix Platforms" %{_infodir}/gnat_ugn%{binsuffix}.info.gz
+%install_info --info-dir=%{_infodir} %{_infodir}/gnat_ugn%{binsuffix}.info.gz
 %endif
 
 %postun info
@@ -1577,7 +1589,6 @@ cd ..
 %install_info_delete --info-dir=%{_infodir} %{_infodir}/gnat_ugn%{binsuffix}.info.gz
 %endif
 
-
 %files
 %defattr(-,root,root)
 %dir %{_libdir}/gcc
@@ -1592,9 +1603,6 @@ cd ..
 %dir %{libsubdir}/64
 %endif
 %endif
-%if %{build_nof}
-%dir %{libsubdir}/nof
-%endif
 %{_prefix}/bin/gcc%{binsuffix}
 %{_prefix}/bin/gcov%{binsuffix}
 %{_prefix}/bin/gcc-ar%{binsuffix}
@@ -1614,13 +1622,31 @@ cd ..
 %{libsubdir}/include/stdbool.h
 %{libsubdir}/include/stdfix.h
 %{libsubdir}/include/stddef.h
-%{libsubdir}/include/uchar.h
 %{libsubdir}/include/unwind.h
 %{libsubdir}/include/varargs.h
 %{libsubdir}/include/stdint.h
 %{libsubdir}/include/stdint-gcc.h
 %{libsubdir}/include/stdnoreturn.h
 %{libsubdir}/include/stdalign.h
+%ifarch %sparc
+%{libsubdir}/include/visintrin.h
+%endif
+%ifarch ppc ppc64
+%{libsubdir}/include/altivec.h
+%{libsubdir}/include/ppc-asm.h
+%{libsubdir}/include/paired.h
+%{libsubdir}/include/ppu_intrinsics.h
+%{libsubdir}/include/si2vmx.h
+%{libsubdir}/include/spe.h
+%{libsubdir}/include/spu2vmx.h
+%{libsubdir}/include/vec_types.h
+%endif
+%ifarch ia64
+%{libsubdir}/include/ia64intrin.h
+%endif
+%ifarch aarch64
+%{libsubdir}/include/arm_neon.h
+%endif
 %ifarch %arm
 %{libsubdir}/include/mmintrin.h
 %{libsubdir}/include/arm_neon.h
@@ -1656,6 +1682,14 @@ cd ..
 %{libsubdir}/include/fmaintrin.h
 %{libsubdir}/include/lzcntintrin.h
 %{libsubdir}/include/f16cintrin.h
+%{libsubdir}/include/adxintrin.h
+%{libsubdir}/include/fxsrintrin.h
+%{libsubdir}/include/prfchwintrin.h
+%{libsubdir}/include/rdseedintrin.h
+%{libsubdir}/include/rtmintrin.h
+%{libsubdir}/include/xsaveintrin.h
+%{libsubdir}/include/xsaveoptintrin.h
+%{libsubdir}/include/xtestintrin.h
 %endif
 %if %{build_with_mudflap}
 %{libsubdir}/include/mf-runtime.h
@@ -1673,11 +1707,26 @@ cd ..
 %versmainlib libgomp.so
 %versmainlib libgomp.a
 %versmainlib libgomp.spec
+%ifarch %itm_arch
+%versmainlib libitm.so
+%versmainlib libitm.a
+%versmainlib libitm.spec
+%endif
+%ifarch %atomic_arch
+%versmainlib libatomic.so
+%versmainlib libatomic.a
+%endif
+%ifarch %asan_arch
+%versmainlib libasan.so
+%versmainlib libasan.a
+%versmainlib libasan_preinit.o
+%endif
+%ifarch %tsan_arch
+%versmainlib libtsan.so
+%versmainlib libtsan.a
+%endif
 %doc %{_mandir}/man1/gcc%{binsuffix}.1.gz
 %doc %{_mandir}/man1/gcov%{binsuffix}.1.gz
-%if 0%{?build_optional_compiler:1}
-%{libsubdir}/defaults.spec
-%endif
 
 %if %{separate_biarch}
 %files -n gcc@base_ver@%{separate_biarch_suffix}
@@ -1695,10 +1744,32 @@ cd ..
 %versbiarchlib libgomp.so
 %versbiarchlib libgomp.a
 %versbiarchlib libgomp.spec
+%ifarch %itm_arch
+%versbiarchlib libitm.so
+%versbiarchlib libitm.a
+%versbiarchlib libitm.spec
+%endif
+%ifarch %atomic_arch
+%versbiarchlib libatomic.a
+%versbiarchlib libatomic.so
+%endif
+%ifarch %asan_arch
+%versbiarchlib libasan.a
+%versbiarchlib libasan.so
+%versbiarchlib libasan_preinit.o
+%endif
+%if 0
+%ifarch %tsan_arch
+%versbiarchlib libtsan.a
+%versbiarchlib libtsan.so
+%endif
+%endif
 %endif
 
 %files locale -f gcc@base_ver@-locale.lang
 
+%files -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}-locale
+
 %if %{build_cp}
 %files c++
 %defattr(-,root,root)
@@ -1709,17 +1780,14 @@ cd ..
 %doc %{_mandir}/man1/g++%{binsuffix}.1.gz
 %{libsubdir}/cc1plus
 
-%files -n libstdc++@base_ver@
+%files -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}
 %defattr(-,root,root)
-%if %{build_nof}
-%dir %{noflibdir}
-%endif
-%mainlib libstdc++.so.*
+%mainlib libstdc++.so.%{libstdcxx_sover}*
 
 %if %{separate_biarch}
-%files -n libstdc++@base_ver@%{separate_biarch_suffix}
+%files -n libstdc++%{libstdcxx_sover}%{libstdcxx_suffix}%{separate_biarch_suffix}
 %defattr(-,root,root)
-%biarchlib libstdc++.so.*
+%biarchlib libstdc++.so.%{libstdcxx_sover}*
 %endif
 
 %files -n libstdc++@base_ver@-devel -f c++-headers
@@ -1749,14 +1817,9 @@ cd ..
 %doc libstdc++-v3/doc/html
 %endif
 
-%files -n libgcc@base_ver@
+%files -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}
 %defattr(-,root,root)
-%if 0%{!?build_optional_compiler:1}
 /%{_lib}/libgcc_s.so.%{libgcc_s}
-%if %{build_nof}
-%dir /lib/nof
-/lib/nof/libgcc_s.so.%{libgcc_s}
-%endif
 %if %{biarch}
 %if %{build_primary_64bit}
 %if !%{separate_bi32}
@@ -1768,40 +1831,84 @@ cd ..
 %endif
 %endif
 %endif
-%else
-%versmainlib libgcc_s.so.%{libgcc_s}
-%endif
 
 %if %{separate_bi64}
-%files -n libgcc@base_ver@-64bit
+%files -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}-64bit
 %defattr(-,root,root)
-%if 0%{!?build_optional_compiler:1}
 /lib64/libgcc_s.so.%{libgcc_s}
-%else
-%versbiarchlib libgcc_s.so.%{libgcc_s}
-%endif
 %endif
 
 %if %{separate_bi32}
-%files -n libgcc@base_ver@-32bit
+%files -n libgcc_s%{libgcc_s}%{libgcc_s_suffix}-32bit
 %defattr(-,root,root)
-%if 0%{!?build_optional_compiler:1}
 /lib/libgcc_s.so.%{libgcc_s}
-%else
-%versbiarchlib libgcc_s.so.%{libgcc_s}
 %endif
+
+
+%files -n libgomp%{libgomp_sover}%{libgomp_suffix}
+%defattr(-,root,root)
+%mainlib libgomp.so.%{libgomp_sover}*
+
+%if %{separate_biarch}
+%files -n libgomp%{libgomp_sover}%{libgomp_suffix}%{separate_biarch_suffix}
+%defattr(-,root,root)
+%biarchlib libgomp.so.%{libgomp_sover}*
 %endif
 
 
-%files -n libgomp@base_ver@
+%ifarch %asan_arch
+%files -n libasan%{libasan_sover}%{libasan_suffix}
 %defattr(-,root,root)
-%mainlib libgomp.so.1*
+%mainlib libasan.so.%{libasan_sover}*
 
 %if %{separate_biarch}
-%files -n libgomp@base_ver@%{separate_biarch_suffix}
+%files -n libasan%{libasan_sover}%{libasan_suffix}%{separate_biarch_suffix}
 %defattr(-,root,root)
-%biarchlib libgomp.so.1*
+%biarchlib libasan.so.%{libasan_sover}*
 %endif
+%endif
+
+
+%ifarch %tsan_arch
+%files -n libtsan%{libtsan_sover}%{libtsan_suffix}
+%defattr(-,root,root)
+%mainlib libtsan.so.%{libtsan_sover}*
+
+%if 0
+%if %{separate_biarch}
+%files -n libtsan%{libtsan_sover}%{libtsan_suffix}%{separate_biarch_suffix}
+%defattr(-,root,root)
+%biarchlib libtsan.so.%{libtsan_sover}*
+%endif
+%endif
+%endif
+
+
+%ifarch %atomic_arch
+%files -n libatomic%{libatomic_sover}%{libatomic_suffix}
+%defattr(-,root,root)
+%mainlib libatomic.so.%{libatomic_sover}*
+
+%if %{separate_biarch}
+%files -n libatomic%{libatomic_sover}%{libatomic_suffix}%{separate_biarch_suffix}
+%defattr(-,root,root)
+%biarchlib libatomic.so.%{libatomic_sover}*
+%endif
+%endif
+
+
+%ifarch %itm_arch
+%files -n libitm%{libitm_sover}%{libitm_suffix}
+%defattr(-,root,root)
+%mainlib libitm.so.%{libitm_sover}*
+
+%if %{separate_biarch}
+%files -n libitm%{libitm_sover}%{libitm_suffix}%{separate_biarch_suffix}
+%defattr(-,root,root)
+%biarchlib libitm.so.%{libitm_sover}*
+%endif
+%endif
+
 
 
 %if %{build_fortran}
@@ -1838,25 +1945,25 @@ cd ..
 %endif
 %endif
 
-%files -n libgfortran@base_ver@
+%files -n libgfortran%{libgfortran_sover}%{libgfortran_suffix}
 %defattr(-,root,root)
-%mainlib libgfortran.so.*
+%mainlib libgfortran.so.%{libgfortran_sover}*
 
 %if %{separate_biarch}
-%files -n libgfortran@base_ver@%{separate_biarch_suffix}
+%files -n libgfortran%{libgfortran_sover}%{libgfortran_suffix}%{separate_biarch_suffix}
 %defattr(-,root,root)
-%biarchlib libgfortran.so.*
+%biarchlib libgfortran.so.%{libgfortran_sover}*
 %endif
 
 %ifarch %quadmath_arch
-%files -n libquadmath@base_ver@
+%files -n libquadmath%{libquadmath_sover}%{libquadmath_suffix}
 %defattr(-,root,root)
-%mainlib libquadmath.so.*
+%mainlib libquadmath.so.%{libquadmath_sover}*
 
 %if %{separate_biarch}
-%files -n libquadmath@base_ver@%{separate_biarch_suffix}
+%files -n libquadmath%{libquadmath_sover}%{libquadmath_suffix}%{separate_biarch_suffix}
 %defattr(-,root,root)
-%biarchlib libquadmath.so.*
+%biarchlib libquadmath.so.%{libquadmath_sover}*
 %endif
 %endif
 %endif
@@ -1864,39 +1971,20 @@ cd ..
 %if %{build_with_mudflap}
 %files -n libmudflap@base_ver@
 %defattr(-,root,root)
-%mainlib libmudflap.so.0*
-%mainlib libmudflapth.so.0*
+%mainlib libmudflap.so.%{libmudflap_sover}*
+%mainlib libmudflapth.so.%{libmudflap_sover}*
 
 %if %{separate_biarch}
 %files -n libmudflap@base_ver@%{separate_biarch_suffix}
 %defattr(-,root,root)
-%biarchlib libmudflap.so.0*
-%biarchlib libmudflapth.so.0*
+%biarchlib libmudflap.so.%{libmudflap_sover}*
+%biarchlib libmudflapth.so.%{libmudflap_sover}*
 %endif
 %endif
 
 %files info
 %defattr(-,root,root)
-%doc %{_infodir}/cpp%{binsuffix}.info*.gz
-%doc %{_infodir}/cppinternals%{binsuffix}.info*.gz
-%doc %{_infodir}/gcc%{binsuffix}.info*.gz
-%doc %{_infodir}/gccint%{binsuffix}.info*.gz
-%doc %{_infodir}/gccinstall%{binsuffix}.info*.gz
-%doc %{_infodir}/libgomp%{binsuffix}.info*.gz
-%if %{build_fortran}
-%doc %{_infodir}/gfortran%{binsuffix}.info*.gz
-%ifarch %quadmath_arch
-%doc %{_infodir}/libquadmath%{binsuffix}.info*.gz
-%endif
-%endif
-%if %{build_java}
-%doc %{_infodir}/gcj%{binsuffix}.info*.gz
-%endif
-%if %{build_ada}
-%doc %{_infodir}/gnat-style%{binsuffix}.info*gz
-%doc %{_infodir}/gnat_rm%{binsuffix}.info*gz
-%doc %{_infodir}/gnat_ugn%{binsuffix}.info*gz
-%endif
+%doc %{_infodir}/*.gz
 
 %files -n cpp@base_ver@
 %defattr(-,root,root)
@@ -1923,14 +2011,14 @@ cd ..
 %versbiarchlib libobjc.so
 %endif
 
-%files -n libobjc@base_ver@
+%files -n libobjc%{libobjc_sover}%{libobjc_suffix}
 %defattr(-,root,root)
-%mainlib libobjc.so.*
+%mainlib libobjc.so.%{libobjc_sover}*
 
 %if %{separate_biarch}
-%files -n libobjc@base_ver@%{separate_biarch_suffix}
+%files -n libobjc%{libobjc_sover}%{libobjc_suffix}%{separate_biarch_suffix}
 %defattr(-,root,root)
-%biarchlib libobjc.so.*
+%biarchlib libobjc.so.%{libobjc_sover}*
 %endif
 %endif
 
@@ -2016,11 +2104,11 @@ cd ..
 %if %{build_libjava}
 %files -n libgcj@base_ver@
 %defattr(-,root,root)
-%dir %{_libdir}/gcj-%{gcc_dir_version}-%{gcj_sover}
+%dir %{_libdir}/gcj-%{gcc_dir_version}-%{libgcj_sover}
 %dir %{_libdir}/gcc
 %dir %{_libdir}/gcc/%{GCCDIST}
 %dir %{libsubdir}
-%{_libdir}/gcj-%{gcc_dir_version}-%{gcj_sover}/classmap.db
+%{_libdir}/gcj-%{gcc_dir_version}-%{libgcj_sover}/classmap.db
 # We usually do not multilib libjava
 %if %{biarch_libjava}
 %versbiarchlib libgcj.la
@@ -2033,17 +2121,17 @@ cd ..
 %mainlib libgij.so.*
 %mainlib libgcj-tools.so.*
 %endif
-%{_libdir}/gcj-%{gcc_dir_version}-%{gcj_sover}/libjvm.la
-%{_libdir}/gcj-%{gcc_dir_version}-%{gcj_sover}/libjvm.so
-%{_libdir}/gcj-%{gcc_dir_version}-%{gcj_sover}/libjavamath.la
-%{_libdir}/gcj-%{gcc_dir_version}-%{gcj_sover}/libjavamath.so
+%{_libdir}/gcj-%{gcc_dir_version}-%{libgcj_sover}/libjvm.la
+%{_libdir}/gcj-%{gcc_dir_version}-%{libgcj_sover}/libjvm.so
+%{_libdir}/gcj-%{gcc_dir_version}-%{libgcj_sover}/libjavamath.la
+%{_libdir}/gcj-%{gcc_dir_version}-%{libgcj_sover}/libjavamath.so
 
-%files -n libgcj_bc@base_ver@
+%files -n libgcj_bc%{libgcj_bc_sover}%{libgcj_bc_suffix}
 %defattr(-,root,root)
 %if %{biarch_libjava}
-%biarchlib libgcj_bc.so.*
+%biarchlib libgcj_bc.so.%{libgcj_bc_sover}*
 %else
-%mainlib libgcj_bc.so.*
+%mainlib libgcj_bc.so.%{libgcj_bc_sover}*
 %endif
 
 %files -n libgcj@base_ver@-jar
@@ -2118,16 +2206,21 @@ cd ..
 
 %if %{build_java}
 %if 0%{?building_libffi:1}
-%files -n libffi@base_ver@
+%files -n libffi%{libffi_sover}%{libffi_suffix}
 %defattr(-,root,root)
-%mainlib libffi.so.*
+%mainlib libffi.so.%{libffi_sover}*
 
 %if %{separate_biarch}
-%files -n libffi@base_ver@%{separate_biarch_suffix}
+%files -n libffi%{libffi_sover}%{libffi_suffix}%{separate_biarch_suffix}
 %defattr(-,root,root)
-%biarchlib libffi.so.*
+%biarchlib libffi.so.%{libffi_sover}*
 %endif
 
+%post -n libffi@base_ver@-devel
+%install_info --info-dir=%{_infodir} %{_infodir}/libffi%{binsuffix}.info.gz
+%postun -n libffi@base_ver@-devel
+%install_info_delete --info-dir=%{_infodir} %{_infodir}/libffi%{binsuffix}.info.gz
+
 %files -n libffi@base_ver@-devel
 %defattr(-,root,root)
 %{_prefix}/include/ffi.h
@@ -2135,9 +2228,11 @@ cd ..
 %mainlib libffi.so
 %mainlib libffi.a
 %{_libdir}/pkgconfig/libffi.pc
+%doc %{_infodir}/libffi%{binsuffix}.info.gz
 %doc %{_mandir}/man3/ffi%{binsuffix}.3.gz
 %doc %{_mandir}/man3/ffi_call%{binsuffix}.3.gz
 %doc %{_mandir}/man3/ffi_prep_cif%{binsuffix}.3.gz
+%doc %{_mandir}/man3/ffi_prep_cif_var%{binsuffix}.3.gz
 
 %if %{separate_biarch}
 %files -n libffi@base_ver@-devel%{separate_biarch_suffix}