%bcond_without gomp # build without OpenMP support
%bcond_without mudflap # build without Mudflap pointer debugging support
%bcond_without multilib # build without multilib support (it needs glibc[32&64]-devel)
-%bcond_with profiling # build with profiling
+%bcond_without profiling # build without profiling
%bcond_without python # build without libstdc++ printers for gdb and aot-compile for java
+%bcond_without asan # build without Address Sanitizer library
+%bcond_without tsan # build without Thread Sanitizer library
+%bcond_without atomic # build without library for atomic operations not supported by hardware
# - libgcj options:
%bcond_without alsa # don't build libgcj ALSA MIDI interface
%bcond_without dssi # don't build libgcj DSSI MIDI interface
%bcond_without x # don't build libgcj Xlib-dependent AWTs (incl. GTK/Qt)
# - other:
%bcond_without bootstrap # omit 3-stage bootstrap
-%bcond_with ppc64_nof # "nof" multilib target in ppc64 compiler
%bcond_with tests # torture gcc
%bcond_with symvers # enable versioned symbols in libstdc++ (WARNING: changes soname from .so.6 to so.7)
%undefine with_multilib
%endif
+%ifnarch %{x8664}
+%undefine with_tsan
+%endif
+
%ifarch sparc64
%undefine with_ada
%endif
%endif
%endif
-%define major_ver 4.7
+%define major_ver 4.8
%define minor_ver 2
%define major_ecj_ver 4.5
# class data version seen with file(1) that this jvm is able to load
%define _classdataversion 50.0
-%define gcj_soname_ver 13
+%define gcj_soname_ver 14
Summary: GNU Compiler Collection: the C compiler and shared files
Summary(es.UTF-8): Colección de compiladores GNU: el compilador C y ficheros compartidos
Summary(pt_BR.UTF-8): Coleção dos compiladores GNU: o compilador C e arquivos compartilhados
Name: gcc
Version: %{major_ver}.%{minor_ver}
-Release: 6
+Release: 5
Epoch: 6
License: GPL v3+
Group: Development/Languages
Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{version}/%{name}-%{version}.tar.bz2
-# Source0-md5: cc308a0891e778cfda7a151ab8a6e762
+# Source0-md5: a3d7d63b9cb6b6ea049469a0c4a43c9d
Source1: %{name}-optimize-la.pl
Source2: ftp://sourceware.org/pub/java/ecj-%{major_ecj_ver}.jar
# Source2-md5: d7cd6a27c8801e66cbaa964a039ecfdb
# check libffi version with libffi/configure.ac
Source3: libffi.pc.in
-# svn diff -x --ignore-eol-style --force svn://gcc.gnu.org/svn/gcc/tags/gcc_4_7_2_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch > gcc-branch.diff
+# svn diff -x --ignore-eol-style --force svn://gcc.gnu.org/svn/gcc/tags/gcc_4_8_2_release svn://gcc.gnu.org/svn/gcc/branches/gcc-4_8-branch > gcc-branch.diff
Patch100: %{name}-branch.diff
-# Patch100-md5: 34d2f91a58f942cf98a15e73614625c9
+# Patch100-md5: 58c22bad027d35adbe84c9c19f9dd738
Patch0: %{name}-info.patch
Patch1: %{name}-cloog.patch
Patch2: %{name}-nodebug.patch
Patch3: %{name}-ada-link.patch
Patch4: %{name}-sparc64-ada_fix.patch
-Patch6: %{name}-ppc64-m32-m64-multilib-only.patch
Patch7: %{name}-libjava-multilib.patch
Patch8: %{name}-enable-java-awt-qt.patch
Patch10: %{name}-moresparcs.patch
-Patch11: libgo-werror.patch
-Patch13: issue4664051.patch
+Patch11: %{name}-install-libffi.patch
URL: http://gcc.gnu.org/
BuildRequires: autoconf >= 2.64
%{?with_tests:BuildRequires: autogen}
%if %{with multilib}
BuildRequires: gcc(multilib)
%ifarch %{x8664}
-BuildRequires: glibc-devel(i686)
+BuildRequires: glibc-devel(ix86)
%endif
%ifarch ppc64
BuildRequires: glibc-devel(ppc)
%{?with_mozilla:BuildRequires: xulrunner-devel >= 1.8.1.3-1.20070321.5}
%endif
BuildConflicts: pdksh < 5.2.14-50
-Requires: binutils >= 3:2.20.51.0.2
+Requires: binutils >= 3:2.23
Requires: libgcc = %{epoch}:%{version}-%{release}
Provides: cpp = %{epoch}:%{version}-%{release}
%{?with_ada:Provides: gcc(ada)}
%{?with_multilib:Provides: gcc(multilib)}
Obsoletes: libgcc32
%ifarch %{x8664}
-Requires: glibc-devel(i686)
+Requires: glibc-devel(ix86)
%endif
%ifarch ppc64
Requires: glibc-devel(ppc)
%package fortran-multilib
Summary: Fortran 95 32-bit support for gcc
-Summary(pl.UTF-8): Obsługa binariów 32-bitowych Fortrana 95 dla gcc
+Summary(pl.UTF-8): Obsługa binariów 32-bitowych Fortranu 95 dla gcc
Group: Development/Languages/Fortran
Requires: %{name}-fortran = %{epoch}:%{version}-%{release}
Requires: libgfortran-multilib = %{epoch}:%{version}-%{release}
%package -n libgfortran
Summary: Fortran 95 Library
Summary(es.UTF-8): Biblioteca de Fortran 95
-Summary(pl.UTF-8): Biblioteka Fortrana 95
+Summary(pl.UTF-8): Biblioteka Fortranu 95
License: GPL v2+ with unlimited link permission
Group: Libraries
Requires: libquadmath = %{epoch}:%{version}-%{release}
Biblioteca de Fortran 95.
%description -n libgfortran -l pl.UTF-8
-Biblioteka Fortrana 95.
+Biblioteka Fortranu 95.
%package -n libgfortran-multilib
Summary: Fortran 95 Library - 32-bit version
-Summary(pl.UTF-8): Biblioteka Fortrana 95 - wersja 32-bitowa
+Summary(pl.UTF-8): Biblioteka Fortranu 95 - wersja 32-bitowa
License: GPL v2+ with unlimited link permission
Group: Libraries
Requires: libquadmath-multilib = %{epoch}:%{version}-%{release}
Fortran 95 Library - 32-bit version.
%description -n libgfortran-multilib -l pl.UTF-8
-Biblioteka Fortrana 95 - wersja 32-bitowa.
+Biblioteka Fortranu 95 - wersja 32-bitowa.
%package -n libgfortran-static
Summary: Static Fortran 95 Library
Summary(es.UTF-8): Bibliotecas estáticas de Fortran 95
-Summary(pl.UTF-8): Statyczna Biblioteka Fortrana 95
+Summary(pl.UTF-8): Statyczna Biblioteka Fortranu 95
License: GPL v2+ with unlimited link permission
Group: Development/Libraries
Requires: libgfortran = %{epoch}:%{version}-%{release}
Bibliotecas estáticas de Fortran 95.
%description -n libgfortran-static -l pl.UTF-8
-Statyczna biblioteka Fortrana 95.
+Statyczna biblioteka Fortranu 95.
%package -n libgfortran-multilib-static
Summary: Static Fortran 95 Library - 32-bit version
-Summary(pl.UTF-8): Statyczna Biblioteka Fortrana 95 - wersja 32-bitowa
+Summary(pl.UTF-8): Statyczna Biblioteka Fortranu 95 - wersja 32-bitowa
License: GPL v2+ with unlimited link permission
Group: Development/Libraries
Requires: libgfortran-multilib = %{epoch}:%{version}-%{release}
Static Fortran 95 Library - 32-bit version.
%description -n libgfortran-multilib-static -l pl.UTF-8
-Statyczna biblioteka Fortrana 95 - wersja 32-bitowa.
+Statyczna biblioteka Fortranu 95 - wersja 32-bitowa.
%package -n libquadmath
Summary: GCC __float128 shared support library
%description -n libgo-multilib-static -l pl.UTF-8
Statyczna biblioteka języka Go - wersja 32-bitowa.
+%package -n libasan
+Summary: The Address Sanitizer library
+Group: Libraries
+
+%description -n libasan
+This package contains the Address Sanitizer library
+which is used for -fsanitize=address instrumented programs.
+
+%package -n libasan-multilib
+Summary: The Address Sanitizer library - 32-bit version
+Group: Libraries
+
+%description -n libasan-multilib
+This package contains 32-bit version of the Address Sanitizer library
+which is used for -fsanitize=address instrumented programs.
+
+%package -n libasan-devel
+Summary: Development files for the Address Sanitizer library
+Group: Development/Libraries
+Requires: libasan = %{epoch}:%{version}-%{release}
+
+%description -n libasan-devel
+This package contains development files for the Address Sanitizer
+library.
+
+%package -n libasan-multilib-devel
+Summary: Development files for the Address Sanitizer library - 32-bit version
+Group: Development/Libraries
+Requires: libasan-multilib = %{epoch}:%{version}-%{release}
+
+%description -n libasan-multilib-devel
+This package contains 32-bit version of the development files for the
+Address Sanitizer static library.
+
+%package -n libasan-static
+Summary: The Address Sanitizer static library
+Group: Development/Libraries
+Requires: libasan-devel = %{epoch}:%{version}-%{release}
+
+%description -n libasan-static
+This package contains Address Sanitizer static library.
+
+%package -n libasan-multilib-static
+Summary: The Address Sanitizer static library - 32-bit version
+Group: Development/Libraries
+Requires: libasan-multilib-devel = %{epoch}:%{version}-%{release}
+
+%description -n libasan-multilib-static
+This package contains 32-bit version of the Address Sanitizer static
+library.
+
+%package -n libtsan
+Summary: The Thread Sanitizer library
+Group: Libraries
+
+%description -n libtsan
+This package contains the Thread Sanitizer library
+which is used for -fsanitize=thread instrumented programs.
+
+%package -n libtsan-devel
+Summary: Development files for the Thread Sanitizer library
+Group: Development/Libraries
+Requires: libtsan = %{epoch}:%{version}-%{release}
+
+%description -n libtsan-devel
+This package contains development files for Thread Sanitizer library.
+
+%package -n libtsan-static
+Summary: The Thread Sanitizer static library
+Group: Development/Libraries
+Requires: libtsan-devel = %{epoch}:%{version}-%{release}
+
+%description -n libtsan-static
+This package contains Thread Sanitizer static library.
+
+%package -n libatomic
+Summary: The GNU Atomic library
+Group: Libraries
+
+%description -n libatomic
+This package contains the GNU Atomic library
+which is a GCC support library for atomic operations
+not supported by hardware.
+
+%package -n libatomic-multilib
+Summary: The GNU Atomic library - 32-bit version
+Group: Libraries
+
+%description -n libatomic-multilib
+This package contains 32-bit version of the GNU Atomic library
+which is a GCC support library for atomic operations
+not supported by hardware.
+
+%package -n libatomic-devel
+Summary: Development files for the GNU Atomic library
+Group: Development/Libraries
+Requires: libatomic = %{epoch}:%{version}-%{release}
+
+%description -n libatomic-devel
+This package contains development files for the GNU Atomic libraries.
+
+%package -n libatomic-multilib-devel
+Summary: Development files for the GNU Atomic static library - 32-bit version
+Group: Development/Libraries
+Requires: libatomic-multilib = %{epoch}:%{version}-%{release}
+
+%description -n libatomic-multilib-devel
+This package contains 32-bit version of the Development files for the
+GNU Atomic libraries.
+
+%package -n libatomic-static
+Summary: The GNU Atomic static library
+Group: Development/Libraries
+Requires: libatomic-devel = %{epoch}:%{version}-%{release}
+
+%description -n libatomic-static
+This package contains GNU Atomic static libraries.
+
+%package -n libatomic-multilib-static
+Summary: The GNU Atomic static library - 32-bit version
+Group: Development/Libraries
+Requires: libatomic-multilib-devel = %{epoch}:%{version}-%{release}
+
+%description -n libatomic-multilib-static
+This package contains 32-bit version of the GNU Atomic static
+libraries.
+
%prep
%setup -q
%patch100 -p0
%patch3 -p1
%patch4 -p1
-%{!?with_ppc64_nof:%patch6 -p1}
%patch7 -p0
%if %{with qt}
%patch8 -p1
%endif
%patch10 -p1
-%patch11 -p1
-
-%patch13 -p0
+%patch11 -p0
mv ChangeLog ChangeLog.general
--with-linker-hash-style=gnu \
--with-long-double-128 \
--with-ppl \
+ --disable-ppl-version-check \
--with-slibdir=%{_slibdir} \
%ifnarch ia64
--without-system-libunwind \
%{?with_bootstrap:%{?with_profiling:profiledbootstrap}} \
GCJFLAGS="%{rpmcflags}" \
BOOT_CFLAGS="%{rpmcflags}" \
- STAGE1_CFLAGS="%{rpmcflags} -O0" \
+ STAGE1_CFLAGS="%{rpmcflags} -O1 -g0" \
GNATLIBCFLAGS="%{rpmcflags}" \
LDFLAGS_FOR_TARGET="%{rpmldflags}" \
mandir=%{_mandir} \
ln -sf %{_bindir}/cpp $RPM_BUILD_ROOT/lib/cpp
ln -sf gcc $RPM_BUILD_ROOT%{_bindir}/cc
-echo ".so gcc.1" > $RPM_BUILD_ROOT%{_mandir}/man1/cc.1
+echo ".so man1/gcc.1" > $RPM_BUILD_ROOT%{_mandir}/man1/cc.1
libssp=$(cd $RPM_BUILD_ROOT%{_libdir}; echo libssp.so.*.*.*)
mv $RPM_BUILD_ROOT%{_libdir}/libssp.so.* $RPM_BUILD_ROOT%{_slibdir}
%if %{with fortran}
ln -sf gfortran $RPM_BUILD_ROOT%{_bindir}/g95
-echo ".so gfortran.1" > $RPM_BUILD_ROOT%{_mandir}/man1/g95.1
+echo ".so man1/gfortran.1" > $RPM_BUILD_ROOT%{_mandir}/man1/g95.1
%endif
%if %{with ada}
install -d java-doc
cp -f libjava/READ* java-doc
ln -sf libgcj-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/libgcj.jar
+%endif
# still not installed by gcc?
[ ! -f $RPM_BUILD_ROOT%{_pkgconfigdir}/libffi.pc ] || exit 1
+install -d $RPM_BUILD_ROOT%{_pkgconfigdir}
sed -e 's,@prefix@,%{_prefix},
s,@exec_prefix@,%{_exec_prefix},
s,@libdir@,%{_libdir},
s,@libdir@,%{_libdir32},
s,@gcclibdir@,%{gcclibdir},' %{SOURCE3} >$RPM_BUILD_ROOT%{_pkgconfigdir32}/libffi.pc
%endif
-%endif
%if %{with objc}
cp -f libobjc/README gcc/objc/README.libobjc
%{?with_cxx:libstdc++.la libsupc++.la} \
%{?with_fortran:libgfortran.la libquadmath.la} \
%{?with_gomp:libgomp.la} \
+ %{?with_asan:libasan.la} \
+ %{?with_tsan:libtsan.la} \
+ %{?with_atomic:libatomic.la} \
%{?with_mudflap:libmudflap.la libmudflapth.la} \
%if %{with java}
libffi.la libgcj.la libgcj-tools.la libgij.la \
%{?with_cxx:libstdc++.la libsupc++.la} \
%{?with_fortran:libgfortran.la libquadmath.la} \
%{?with_gomp:libgomp.la} \
+ %{?with_asan:libasan.la} \
+ %{?with_atomic:libatomic.la} \
%{?with_mudflap:libmudflap.la libmudflapth.la} \
%{?with_java:libffi.la} \
%{?with_objc:libobjc.la};
%postun -p /sbin/ldconfig -n libgcj
%post -p /sbin/ldconfig -n libffi
%postun -p /sbin/ldconfig -n libffi
+%post -n libffi-devel -p /sbin/postshell
+-/usr/sbin/fix-info-dir -c %{_infodir}
%post -p /sbin/ldconfig -n libffi-multilib
%postun -p /sbin/ldconfig -n libffi-multilib
%post -p /sbin/ldconfig -n libobjc
%postun -p /sbin/ldconfig -n libgo
%post -p /sbin/ldconfig -n libgo-multilib
%postun -p /sbin/ldconfig -n libgo-multilib
+%post -p /sbin/ldconfig -n libasan
+%postun -p /sbin/ldconfig -n libasan
+%post -p /sbin/ldconfig -n libasan-multilib
+%postun -p /sbin/ldconfig -n libasan-multilib
+%post -p /sbin/ldconfig -n libtsan
+%postun -p /sbin/ldconfig -n libtsan
+%post -p /sbin/ldconfig -n libatomic
+%postun -p /sbin/ldconfig -n libatomic
+%post -p /sbin/ldconfig -n libatomic-multilib
+%postun -p /sbin/ldconfig -n libatomic-multilib
%files -f gcc.lang
%defattr(644,root,root,755)
%{gcclibdir}/include/x86intrin.h
%{gcclibdir}/include/xmmintrin.h
%{gcclibdir}/include/xopintrin.h
+%{gcclibdir}/include/adxintrin.h
+%{gcclibdir}/include/fxsrintrin.h
+%{gcclibdir}/include/prfchwintrin.h
+%{gcclibdir}/include/rdseedintrin.h
+%{gcclibdir}/include/rtmintrin.h
+%{gcclibdir}/include/xsaveintrin.h
+%{gcclibdir}/include/xsaveoptintrin.h
+%{gcclibdir}/include/xtestintrin.h
%endif
%ifarch arm
%{gcclibdir}/include/arm_neon.h
%{_libdir}/libgij.a
%{?with_x:%{_libdir}/lib-gnu-awt-xlib.a}
%{_libdir}/%{gcjdbexecdir}/libjvm.a
+%endif
%files -n libffi
%defattr(644,root,root,755)
%{gcclibdir}/include/ffitarget.h
%{_pkgconfigdir}/libffi.pc
%{_mandir}/man3/ffi*.3*
+%{_infodir}/libffi.info*
%if %{with multilib}
%files -n libffi-multilib-devel
%defattr(644,root,root,755)
%{_libdir32}/libffi.a
%endif
-%endif
%if %{with objc}
%files objc
%defattr(644,root,root,755)
%doc libgo/{LICENSE,PATENTS,README}
%attr(755,root,root) %{_libdir}/libgo.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libgo.so.0
+%attr(755,root,root) %ghost %{_libdir}/libgo.so.4
%if %{with multilib}
%files -n libgo-multilib
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir32}/libgo.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir32}/libgo.so.0
+%attr(755,root,root) %ghost %{_libdir32}/libgo.so.4
%endif
%files -n libgo-devel
%{_libdir32}/libgo.a
%endif
%endif
+
+%if %{with asan}
+%files -n libasan
+%defattr(644,root,root,755)
+%doc libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
+%attr(755,root,root) %{_libdir}/libasan.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libasan.so.0
+
+%if %{with multilib}
+%files -n libasan-multilib
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir32}/libasan.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir32}/libasan.so.0
+%endif
+
+%files -n libasan-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libasan.so
+%{_libdir}/libasan_preinit.o
+%{_libdir}/libasan.la
+
+%if %{with multilib}
+%files -n libasan-multilib-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir32}/libasan.so
+%{_libdir32}/libasan_preinit.o
+%{_libdir32}/libasan.la
+%endif
+
+%files -n libasan-static
+%defattr(644,root,root,755)
+%{_libdir}/libasan.a
+
+%if %{with multilib}
+%files -n libasan-multilib-static
+%defattr(644,root,root,755)
+%{_libdir32}/libasan.a
+%endif
+%endif
+
+%if %{with tsan}
+%files -n libtsan
+%defattr(644,root,root,755)
+%doc libsanitizer/ChangeLog* libsanitizer/LICENSE.TXT
+%attr(755,root,root) %{_libdir}/libtsan.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libtsan.so.0
+
+%files -n libtsan-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libtsan.so
+%{_libdir}/libtsan.la
+
+%files -n libtsan-static
+%defattr(644,root,root,755)
+%{_libdir}/libtsan.a
+%endif
+
+%if %{with atomic}
+%files -n libatomic
+%defattr(644,root,root,755)
+%doc libatomic/ChangeLog*
+%attr(755,root,root) %{_libdir}/libatomic.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libatomic.so.1
+
+%if %{with multilib}
+%files -n libatomic-multilib
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir32}/libatomic.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir32}/libatomic.so.1
+%endif
+
+%files -n libatomic-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libatomic.so
+%{_libdir}/libatomic.la
+
+%if %{with multilib}
+%files -n libatomic-multilib-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir32}/libatomic.so
+%{_libdir32}/libatomic.la
+%endif
+
+%files -n libatomic-static
+%defattr(644,root,root,755)
+%{_libdir}/libatomic.a
+
+%if %{with multilib}
+%files -n libatomic-multilib-static
+%defattr(644,root,root,755)
+%{_libdir32}/libatomic.a
+%endif
+%endif