-# NOTE: despite lower soname, libffi is newer than standalone 3.0.10
+# TODO: finish D (needs bootstrap from non-PLD gdc binaries)
#
# NOTE
# - when adding new subpackages with external libraries (like libffi)
# or having own Version, do not use epoch 6 there, reset them to 0!
#
-# TODO:
-# - package Modula-2 frontend
-#
# Conditional build:
# - languages:
-%bcond_without ada # build without ADA support
-%bcond_without cxx # build without C++ support
-%bcond_without fortran # build without Fortran support
-%bcond_without go # build without Go support
-%bcond_without objc # build without Objective-C support
-%bcond_without objcxx # build without Objective-C++ support
+%bcond_without ada # ADA language support
+%bcond_without cxx # C++ language support
+%bcond_with d # D language support [NFY, buildrequires gdc]
+%bcond_without fortran # Fortran language support
+%bcond_without go # Go language support
+%bcond_without modula2 # Modula2 language support
+%bcond_without objc # Objective-C language support
+%bcond_without objcxx # Objective-C++ language support
# - features:
-%bcond_without gomp # build without OpenMP support
-%bcond_without multilib # build without multilib support (which needs glibc[32&64]-devel)
-%bcond_without multilibx32 # build with x32 multilib support on x86_64 (needs x32 glibc-devel)
-%bcond_without profiling # build without profiling
-%bcond_without python # build without libstdc++ printers for gdb
+%bcond_without gomp # OpenMP support
+%bcond_without multilib # 32-bit/64-bit multilib support (which needs glibc[32&64]-devel)
+%bcond_without multilibx32 # x32 multilib support on x86_64 (needs x32 glibc-devel)
+%bcond_without profiling # profiling support
+%bcond_without python # libstdc++ printers for gdb
%bcond_with gcc_libffi # packaging gcc libffi for system usage
# - other:
-%bcond_without apidocs # do not package API docs
+%bcond_without apidocs # API documentation
%bcond_without bootstrap # omit 3-stage bootstrap
%bcond_with tests # torture gcc
-%bcond_with symvers # enable versioned symbols in libstdc++ (WARNING: changes soname from .so.6 to so.7)
+%bcond_with symvers # versioned symbols in libstdc++ (WARNING: changes soname from .so.6 to so.7)
%if %{with symvers}
%define cxx_sover 7
%define with_tsan_m0 1
%endif
%ifarch x32
-# lsan and tsan exist only for x86_64 ABI (i.e. our multilib2)
+# hwasan, lsan and tsan exist only for x86_64 ABI (i.e. our multilib2)
+%define with_hwasan_m2 1
%define with_lsan_m2 1
%define with_tsan_m2 1
%endif
-%ifarch aarch64
+%ifarch %{x8664} aarch64
%define with_hwasan 1
%endif
%ifarch %{ix86} %{x8664} x32
Summary(pt_BR.UTF-8): Coleção dos compiladores GNU: o compilador C e arquivos compartilhados
Name: gcc
Version: %{major_ver}.%{minor_ver}
-Release: 0.1
+Release: 2
Epoch: 6
License: GPL v3+
Group: Development/Languages
Source4: branch.sh
# use branch.sh to update gcc-branch.diff
Patch100: %{name}-branch.diff
-# Patch100-md5: 40315733777031b2fc4351230ccba55b
+# Patch100-md5: 90081950e00c0e52b91a7f7e2125cc6f
Patch0: %{name}-info.patch
Patch1: all-library-paths.patch
Patch2: %{name}-nodebug.patch
BuildRequires: gcc-ada
BuildRequires: libgnat-static
%endif
+%if %{with d}
+BuildRequires: gcc-d
+%endif
BuildRequires: gdb
BuildRequires: gettext-tools >= 0.14.5
BuildRequires: glibc-devel >= 6:2.4-1
# receiving non constant format strings
%define Werror_cflags %{nil}
-%define skip_post_check_so '.*(libasan|libcc1plugin|libcp1plugin|libgnat-%{major_ver}|libgo|libitm|libxmlj|libubsan|lib-gnu-awt-xlib)\.so.*'
+%define skip_post_check_so '.*(libasan|libcc1plugin|libcp1plugin|libgnat-%{major_ver}|libgo|libitm|libxmlj|libubsan|lib-gnu-awt-xlib|libm2cor|libm2iso|libm2log|libm2pim)\.so.*'
# private symbols
%define _noautoreq .*\(GLIBC_PRIVATE\)
Summary(pt_BR.UTF-8): Suporte C++ para o GCC
Group: Development/Languages
Requires: %{name} = %{epoch}:%{version}-%{release}
-Obsoletes: egcc-c++
+Obsoletes: egcc-c++ < 1.2
Obsoletes: egcs-c++ < 1.2
Obsoletes: gcc4-c++ < 5:4.2
# >= instead of = to allow keeping older libstdc++ (with different soname)
Requires: libgcc >= %{epoch}:%{version}-%{release}
Obsoletes: libg++
-Obsoletes: libstdc++3
-Obsoletes: libstdc++4
+Obsoletes: libstdc++3 < 5:3.1
+Obsoletes: libstdc++4 < 5:3.2
%description -n libstdc++
This is the GNU implementation of the standard C++ library, along with
Requires: glibc-devel
Requires: libstdc++ = %{epoch}:%{version}-%{release}
Obsoletes: libg++-devel
-Obsoletes: libstdc++3-devel
-Obsoletes: libstdc++4-devel
+Obsoletes: libstdc++3-devel < 5:3.1
+Obsoletes: libstdc++4-devel < 5:3.2
%description -n libstdc++-devel
This is the GNU implementation of the standard C++ libraries. This
License: GPL v3+ with GCC Runtime Library Exception v3.1
Group: Development/Libraries
Requires: libstdc++-devel = %{epoch}:%{version}-%{release}
-Obsoletes: libstdc++4-static
+Obsoletes: libstdc++4-static < 5:3.2
%description -n libstdc++-static
Static C++ standard library.
%{?with_quadmath:Requires: libquadmath-devel = %{epoch}:%{version}-%{release}}
Provides: gcc-g77 = %{epoch}:%{version}-%{release}
Obsoletes: egcs-g77 < 1.2
-Obsoletes: gcc-g77
+Obsoletes: gcc-g77 < 5:4
%description fortran
This package adds support for compiling Fortran 95 programs with the
%description -n libffi-multilib-%{multilib2}-static -l pl.UTF-8
Statyczna biblioteka libffi - wersja %{m2_desc}.
+%package m2
+Summary: Modula-2 language support for GCC
+Summary(pl.UTF-8): Obsługa języka Module-2 dla kompilatora GCC
+License: GPL v3+
+Group: Development/Languages
+Requires: %{name} = %{epoch}:%{version}-%{release}
+Requires: libgm2 = %{epoch}:%{version}-%{release}
+
+%description m2
+Modula-2 language support for GCC.
+
+%description m2 -l pl.UTF-8
+Obsługa języka Module-2 dla kompilatora GCC.
+
+%package -n libgm2
+Summary: GNU Modula-2 shared libraries
+Summary(pl.UTF-8): Biblioteki współdzielone GNU Modula-2
+License: GPL v3+ with GCC Runtime Library Exception v3.1
+Group: Libraries
+
+%description -n libgm2
+GNU Modula-2 shared libraries.
+
+%description -n libgm2 -l pl.UTF-8
+Biblioteki współdzielone GNU Modula-2.
+
+%package -n libgm2-static
+Summary: GNU Modula-2 static libraries
+Summary(pl.UTF-8): Biblioteki statyczne GNU Modula-2
+License: GPL v3+ with GCC Runtime Library Exception v3.1
+Group: Development/Libraries
+Requires: %{name}-m2 = %{epoch}:%{version}-%{release}
+
+%description -n libgm2-static
+GNU Modula-2 static libraries.
+
+%description -n libgm2-static -l pl.UTF-8
+Biblioteki statyczne GNU Modula-2.
+
%package objc
Summary: Objective C language support for GCC
Summary(de.UTF-8): Objektive C-Unterstützung für GCC
Group: Development/Languages
Requires: %{name} = %{epoch}:%{version}-%{release}
Requires: libobjc = %{epoch}:%{version}-%{release}
-Obsoletes: egcc-objc
+Obsoletes: egcc-objc < 1.2
Obsoletes: egcs-objc < 1.2
%description objc
License: GPL v3+ with GCC Runtime Library Exception v3.1
Group: Libraries
Requires: libgcc = %{epoch}:%{version}-%{release}
-Obsoletes: libobjc1
+Obsoletes: libobjc1 < 5:4
%description -n libobjc
Objective C Library.
Ten pakiet zawiera statyczną bibliotekę Hardware-Assisted Address
Sanitizer.
+%package -n libhwasan-multilib-%{multilib2}
+Summary: The Hardware-Assisted Address Sanitizer library - %{m2_desc} version
+Summary(pl.UTF-8): Biblioteka Hardware-Assisted Address Sanitizer do kontroli adresów - wersja %{m2_desc}
+License: BSD-like or MIT
+Group: Libraries
+Requires: libstdc++-multilib-%{multilib2} = %{epoch}:%{version}-%{release}
+
+%description -n libhwasan-multilib-%{multilib2}
+This package contains %{m2_desc} version of the Hardware-Assisted
+Address Sanitizer library which is used for -fsanitize=hwaddress
+instrumented programs.
+
+%description -n libhwasan-multilib-%{multilib2} -l pl.UTF-8
+Ten pakiet zawiera wersję %{m2_desc} biblioteki Hardware-Assisted
+Address Sanitizer, służącej do kontroli adresów w programach
+kompilowanych z opcją -fsanitize=hwaddress.
+
+%package -n libhwasan-multilib-%{multilib2}-devel
+Summary: Development files for the Hardware-Assisted Address Sanitizer library - %{m2_desc} version
+Summary(pl.UTF-8): Pliki programistyczne biblioteki Hardware-Assisted Address Sanitizer - wersja %{m2_desc}
+License: BSD-like or MIT
+Group: Development/Libraries
+Requires: libhwasan-multilib-%{multilib2} = %{epoch}:%{version}-%{release}
+
+%description -n libhwasan-multilib-%{multilib2}-devel
+This package contains development files for %{m2_desc} version of the
+Hardware-Assisted Address Sanitizer library.
+
+%description -n libhwasan-multilib-%{multilib2}-devel -l pl.UTF-8
+Ten pakiet zawiera pliki programistyczne wersji %{m2_desc} biblioteki
+Hardware-Assisted Address Sanitizer.
+
+%package -n libhwasan-multilib-%{multilib2}-static
+Summary: The Hardware-Assisted Address Sanitizer static library - %{m2_desc} version
+Summary(pl.UTF-8): Statyczna biblioteka Hardware-Assisted Address Sanitizer - wersja %{m2_desc}
+License: BSD-like or MIT
+Group: Development/Libraries
+Requires: libhwasan-multilib-%{multilib2}-devel = %{epoch}:%{version}-%{release}
+
+%description -n libhwasan-multilib-%{multilib2}-static
+This package contains %{m2_desc} version of Hardware-Assisted Address
+Sanitizer static library.
+
+%description -n libhwasan-multilib-%{multilib2}-static -l pl.UTF-8
+Ten pakiet zawiera wersję %{m2_desc} biblioteki statycznej
+Hardware-Assisted Address Sanitizer.
+
%package -n liblsan
Summary: The Leak Sanitizer library
Summary(pl.UTF-8): Biblioteka Leak Sanitizer do kontroli wycieków
%description -n libatomic-static
This package contains GNU Atomic static library.
-%description -n libatomic-static
+%description -n libatomic-static -l pl.UTF-8
Ten pakiet zawiera statyczną bibliotekę GNU Atomic.
%package -n libatomic-multilib-32
--infodir=%{_infodir} \
--mandir=%{_mandir} \
--x-libraries=%{_libdir} \
- --%{?with_bootstrap:en}%{!?with_bootstrap:dis}able-bootstrap \
+ --enable-bootstrap%{!?with_bootstrap:=no} \
--disable-build-with-cxx \
--disable-build-poststage1-with-cxx \
--enable-c99 \
--enable-gnu-unique-object \
--enable-initfini-array \
--disable-isl-version-check \
- --enable-languages="c%{?with_cxx:,c++}%{?with_fortran:,fortran}%{?with_objc:,objc}%{?with_objcxx:,obj-c++}%{?with_ada:,ada}%{?with_go:,go}" \
- --%{?with_gomp:en}%{!?with_gomp:dis}able-libgomp \
+ --enable-languages="c%{?with_cxx:,c++}%{?with_d:,d}%{?with_fortran:,fortran}%{?with_modula2:,m2}%{?with_objc:,objc}%{?with_objcxx:,obj-c++}%{?with_ada:,ada}%{?with_go:,go}" \
+ --enable-libgomp%{!?with_gomp:=no} \
--enable-libitm \
--enable-linker-build-id \
--enable-linux-futex \
# avoid -L poisoning in *.la - there should be only -L%{_libdir}/gcc/%{_target_platform}/%{version}
# normalize libdir, to avoid propagation of unnecessary RPATHs by libtool
for f in libitm.la libssp.la libssp_nonshared.la \
- %{?with_cxx:libstdc++.la libstdc++fs.la libsupc++.la} \
+ %{?with_cxx:libstdc++.la libstdc++exp.la libstdc++fs.la libsupc++.la} \
%{?with_fortran:libgfortran.la %{?with_quadmath:libquadmath.la}} \
%{?with_gomp:libgomp.la} \
%{?with_Xsan:libasan.la libubsan.la} \
%{?with_lsan_m0:liblsan.la} \
%{?with_tsan_m0:libtsan.la} \
%{?with_atomic:libatomic.la} \
+ %{?with_modula2:libm2cor.la libm2iso.la libm2log.la libm2min.la libm2pim.la} \
%{?with_objc:libobjc.la};
do
file="$RPM_BUILD_ROOT%{_libdir}/$f"
done
%if %{with multilib}
for f in libitm.la libssp.la libssp_nonshared.la \
- %{?with_cxx:libstdc++.la libstdc++fs.la libsupc++.la} \
+ %{?with_cxx:libstdc++.la libstdc++exp.la libstdc++fs.la libsupc++.la} \
%{?with_fortran:libgfortran.la %{?with_quadmath:libquadmath.la}} \
%{?with_gomp:libgomp.la} \
%{?with_Xsan:libasan.la libubsan.la} \
done
%if %{with multilib2}
for f in libitm.la libssp.la libssp_nonshared.la \
- %{?with_cxx:libstdc++.la libstdc++fs.la libsupc++.la} \
+ %{?with_cxx:libstdc++.la libstdc++exp.la libstdc++fs.la libsupc++.la} \
%{?with_fortran:libgfortran.la %{?with_quadmath:libquadmath.la}} \
%{?with_gomp:libgomp.la} \
%{?with_Xsan:libasan.la libubsan.la} \
+ %{?with_hwasan_m2:libhwasan.la} \
%{?with_lsan_m2:liblsan.la} \
%{?with_tsan_m2:libtsan.la} \
%{?with_atomic:libatomic.la} \
%postun -p /sbin/ldconfig -n libffi-multilib-32
%post -p /sbin/ldconfig -n libffi-multilib-%{multilib2}
%postun -p /sbin/ldconfig -n libffi-multilib-%{multilib2}
+%post -p /sbin/ldconfig -n libgm2
+%postun -p /sbin/ldconfig -n libgm2
%post -p /sbin/ldconfig -n libobjc
%postun -p /sbin/ldconfig -n libobjc
%post -p /sbin/ldconfig -n libobjc-multilib-32
%{gcclibdir}/include/adxintrin.h
%{gcclibdir}/include/ammintrin.h
%{gcclibdir}/include/amxbf16intrin.h
+%{gcclibdir}/include/amxcomplexintrin.h
+%{gcclibdir}/include/amxfp16intrin.h
%{gcclibdir}/include/amxint8intrin.h
%{gcclibdir}/include/amxtileintrin.h
%{gcclibdir}/include/avx2intrin.h
%{gcclibdir}/include/avx512vp2intersectvlintrin.h
%{gcclibdir}/include/avx512vpopcntdqintrin.h
%{gcclibdir}/include/avx512vpopcntdqvlintrin.h
+%{gcclibdir}/include/avxifmaintrin.h
%{gcclibdir}/include/avxintrin.h
+%{gcclibdir}/include/avxneconvertintrin.h
+%{gcclibdir}/include/avxvnniint8intrin.h
%{gcclibdir}/include/avxvnniintrin.h
%{gcclibdir}/include/bmi2intrin.h
%{gcclibdir}/include/bmiintrin.h
%{gcclibdir}/include/clflushoptintrin.h
%{gcclibdir}/include/clwbintrin.h
%{gcclibdir}/include/clzerointrin.h
+%{gcclibdir}/include/cmpccxaddintrin.h
%{gcclibdir}/include/cpuid.h
%{gcclibdir}/include/cross-stdarg.h
%{gcclibdir}/include/emmintrin.h
%{gcclibdir}/include/pkuintrin.h
%{gcclibdir}/include/pmmintrin.h
%{gcclibdir}/include/popcntintrin.h
+%{gcclibdir}/include/prfchiintrin.h
%{gcclibdir}/include/prfchwintrin.h
+%{gcclibdir}/include/raointintrin.h
%{gcclibdir}/include/rdseedintrin.h
%{gcclibdir}/include/rtmintrin.h
%{gcclibdir}/include/serializeintrin.h
%{gcclibdir}/include/ISO_Fortran_binding.h
%{gcclibdir}/libcaf_single.a
%{gcclibdir}/libcaf_single.la
-#%{gcclibdir}/libgfortranbegin.la
-#%{gcclibdir}/libgfortranbegin.a
%{_infodir}/gfortran.info*
%{_mandir}/man1/g95.1*
%{_mandir}/man1/gfortran.1*
%{_libdir32}/libgfortran.la
%{gcclibdir}/32/libcaf_single.a
%{gcclibdir}/32/libcaf_single.la
-#%{gcclibdir}/32/libgfortranbegin.la
-#%{gcclibdir}/32/libgfortranbegin.a
%endif
%if %{with multilib2}
%{_libdirm2}/libgfortran.la
%{gcclibdir}/%{multilib2}/libcaf_single.a
%{gcclibdir}/%{multilib2}/libcaf_single.la
-#%{gcclibdir}/%{multilib2}/libgfortranbegin.la
-#%{gcclibdir}/%{multilib2}/libgfortranbegin.a
%endif
%files -n libgfortran
%endif
%endif
+%if %{with modula2}
+%files m2
+%defattr(644,root,root,755)
+%doc gcc/m2/{COPYING.RUNTIME,ChangeLog,NEWS,README}
+%attr(755,root,root) %{_bindir}/gm2
+%attr(755,root,root) %{_bindir}/*-gm2
+%attr(755,root,root) %{gcclibdir}/cc1gm2
+%attr(755,root,root) %{gcclibdir}/plugin/m2rte.so
+%attr(755,root,root) %{_libdir}/libm2cor.so
+%attr(755,root,root) %{_libdir}/libm2iso.so
+%attr(755,root,root) %{_libdir}/libm2log.so
+%attr(755,root,root) %{_libdir}/libm2min.so
+%attr(755,root,root) %{_libdir}/libm2pim.so
+%{_libdir}/libm2cor.la
+%{_libdir}/libm2iso.la
+%{_libdir}/libm2log.la
+%{_libdir}/libm2min.la
+%{_libdir}/libm2pim.la
+%{gcclibdir}/m2
+%{_mandir}/man1/gm2.1*
+
+%files -n libgm2
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libm2cor.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libm2cor.so.18
+%attr(755,root,root) %{_libdir}/libm2iso.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libm2iso.so.18
+%attr(755,root,root) %{_libdir}/libm2log.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libm2log.so.18
+%attr(755,root,root) %{_libdir}/libm2min.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libm2min.so.18
+%attr(755,root,root) %{_libdir}/libm2pim.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libm2pim.so.18
+
+%files -n libgm2-static
+%defattr(644,root,root,755)
+%{_libdir}/libm2cor.a
+%{_libdir}/libm2iso.a
+%{_libdir}/libm2log.a
+%{_libdir}/libm2min.a
+%{_libdir}/libm2pim.a
+%endif
+
%if %{with objc}
%files objc
%defattr(644,root,root,755)
%{_libdir}/libhwasan.a
%endif
+%if %{with multilib2} && %{with hwasan_m2}
+%files -n libhwasan-multilib-%{multilib2}
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdirm2}/libhwasan.so.*.*.*
+%attr(755,root,root) %ghost %{_libdirm2}/libhwasan.so.0
+
+%files -n libhwasan-multilib-%{multilib2}-devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdirm2}/libhwasan.so
+%{_libdirm2}/libhwasan_preinit.o
+%{_libdirm2}/libhwasan.la
+%{gcclibdir}/include/sanitizer/hwasan_interface.h
+
+%files -n libhwasan-multilib-%{multilib2}-static
+%defattr(644,root,root,755)
+%{_libdirm2}/libhwasan.a
+%endif
+
%if %{with lsan_m0}
%files -n liblsan
%defattr(644,root,root,755)