Compare commits

..

6 Commits

2 changed files with 211 additions and 105 deletions

View File

@ -0,0 +1,24 @@
diff -ru gcc-10.1.0/libstdc++-v3/include/bits/atomic_futex.h gcc-10.1.0.patched/libstdc++-v3/include/bits/atomic_futex.h
--- gcc-10.1.0/libstdc++-v3/include/bits/atomic_futex.h 2020-05-07 12:50:02.000000000 +0200
+++ gcc-10.1.0.patched/libstdc++-v3/include/bits/atomic_futex.h 2020-06-08 18:18:38.544259479 +0200
@@ -49,7 +49,7 @@
_GLIBCXX_BEGIN_NAMESPACE_VERSION
#ifdef _GLIBCXX_HAS_GTHREADS
-#if defined(_GLIBCXX_HAVE_LINUX_FUTEX) && ATOMIC_INT_LOCK_FREE > 1
+#if defined(_GLIBCXX_HAVE_LINUX_FUTEX)
struct __atomic_futex_unsigned_base
{
// Returns false iff a timeout occurred.
diff -ru gcc-10.1.0/libstdc++-v3/src/c++11/futex.cc gcc-10.1.0.patched/libstdc++-v3/src/c++11/futex.cc
--- gcc-10.1.0/libstdc++-v3/src/c++11/futex.cc 2020-05-07 12:50:02.000000000 +0200
+++ gcc-10.1.0.patched/libstdc++-v3/src/c++11/futex.cc 2020-06-08 18:19:20.413501894 +0200
@@ -24,7 +24,7 @@
#include <bits/atomic_futex.h>
#ifdef _GLIBCXX_HAS_GTHREADS
-#if defined(_GLIBCXX_HAVE_LINUX_FUTEX) && ATOMIC_INT_LOCK_FREE > 1
+#if defined(_GLIBCXX_HAVE_LINUX_FUTEX)
#include <chrono>
#include <climits>
#include <syscall.h>

292
gcc.spec
View File

@ -39,8 +39,8 @@
%define majver %(echo %version | cut -d. -f 1-2)
Name: gcc
Version: 9.2.0
Release: 2mamba
Version: 10.2.0
Release: 1mamba
Summary: GNU Compiler Collection (C, C++, Fortran, Go, Ada)
Group: Applications/Development
Vendor: openmamba
@ -67,6 +67,7 @@ Patch14: gcc-4.8.0-libffi-texinfo.patch
Patch15: gcc-4.9.0-upstream-fixes-1.patch
Patch16: gcc-4.9.2-arm-lra-bootstrap.patch
Patch19: gcc-7.1.0-cross-ftbfs-ucontet_t.patch
Patch20: gcc-10.1.0-arm-provide-futex-atomic-functions.patch
License: GPL
## AUTOBUILDREQ-BEGIN
## AUTOBUILDREQ-END
@ -98,26 +99,19 @@ BuildRequires: libmpc-devel
BuildRequires: libmpfr-devel >= 2.1.2
%if "%{_target_platform}" == "%{_build}"
BuildRequires: glibc-devel >= 2.5
%ifarch x86_64
BuildRequires: glibc-multilib-devel
%endif
#%ifarch x86_64
#BuildRequires: glibc-multilib-devel
#%endif
#% if "%{?stage2}" != "1"
BuildRequires: tetex >= 3.0
BuildRequires: libgtk2-devel >= 2.8.17
BuildRequires: libalsa-devel >= 1.0.11
%if "%{?disable_jack}" != "1"
BuildRequires: dssi-devel >= 0.9
BuildRequires: libjack-devel >= 0.101.1
%endif
%if "%{?disable_gjdoc}" != "1"
BuildRequires: antlr
%endif
BuildRequires: libcairo-devel >= 1.4.10
BuildRequires: libxcb-util-devel >= 0.2
BuildRequires: libisl-devel >= 0.14
#% endif
#% else
# BuildRequires: cross-%{target_cpu}-glibc%{?glibc_require_append} >= 2.5
%else
BuildRequires: cross-%{target_cpu}-glibc%{?glibc_require_append} >= 2.5
%endif
Requires(post):%{__install_info}
@ -288,6 +282,24 @@ Requires: libcc1 = %{version}-%{release}
%description -n libcc1-devel
GCC cc1 plugin for GDB development files.
#
# D compiler
#
%package d
Summary: The GNU compiler for the D programming language
Group: System/Libraries
Requires: libgdruntime = %{version}-%{release}
%description d
The GNU compiler for the Go programming language.
%package -n libgdruntime
Summary: GCC D language runtime library
Group: System/Libraries
%description -n libgdruntime
This package contains the GCC D language runtime library.
#
# Fortran 95 Compiler
#
@ -561,34 +573,28 @@ AutoReqProv: no
%description -n cross-%{_target_platform}-%{name}%{?bootstrap_append}
Cross Platform gcc for %{_target_platform}.
%if "%{_target_platform}" == "%{_host}"
%debug_package
%endif
%prep
%setup -q -n gcc-%{version}%{?gcc_extraver}
#-D -T
#:<< ___EOF
#%patch2 -p0
#%patch0 -p1
#%patch1 -p1
#%patch3 -p1
#%patch4 -p1
#%patch5 -p1
#%patch6 -p1
#%patch7 -p1
#%patch8 -p0
%if "%{_target_platform}" != "%{_host}"
%define _build_id_links none
%endif
%if "%{_target_platform}" != "%{_build}"
%patch9 -p1
%endif
# psignal_fix_bootstrap_build
%patch11 -p1
#%patch12 -p1
#%patch13 -p1
#%patch14 -p1
#%patch15 -p1
#%patch16 -p1
#%patch19 -p1
%ifarch arm
%patch20 -p1
# workaround for gcc-go
cp libgo/go/internal/syscall/unix/{getrandom_linux_arm.go,dummy.go}
%endif
@ -604,9 +610,9 @@ cd ../%{name}-build-%{_target_platform}
slibdir=%{_libdir}
# BUILD_LANGUAGES is only used in final (not staged) build
BUILD_LANGUAGES=c,objc,lto
BUILD_LANGUAGES=c,objc,lto,d
# FIXME: other languages: lto, obj-c++
# TODO: ada: configure: error: GNAT is required to build ada
%if "%{disable_cpp}" != "1"
# Fortran won't build cross platform (?)
@ -648,6 +654,13 @@ case %{_target_platform} in
ADDITIONAL_OPTS="--with-slibdir=$slibdir --enable-multilib"
%endif
;;
aarch64-*)
%if "%{_target_platform}" != "%{_host}"
ADDITIONAL_OPTS="--with-slibdir=/usr/%{_target_platform}/lib64"
%else
ADDITIONAL_OPTS="--with-slibdir=$slibdir"
%endif
;;
*)
echo "Error: target not supported."
exit 1
@ -690,13 +703,25 @@ CROSS_SYSTEM_HEADER_DIR=/usr/%{_target_platform}/include \
--libdir=%{_libdir} \
--infodir=%{_infodir} \
--mandir=%{_mandir} \
--with-bugurl="https://bugs.openmamba.org/" \
--host=%{_host} \
--build=%{_build} \
--target=%{_target_platform} \
--enable-shared \
--enable-lto \
--enable-gnu-unique-object \
--enable-linker-build-id \
--with-linker-hash-style=gnu \
--enable-gnu-indirect-function \
--enable-plugin \
--disable-libunwind-exceptions \
--enable-clocale=gnu \
--disable-libstdcxx-pch \
--disable-werror \
--enable-checking=release \
--enable-default-pie \
--enable-default-ssp \
--enable-cet=auto \
--enable-languages=$BUILD_LANGUAGES \
%if "%{target_cpu}" != "avr"
--enable-threads=posix \
@ -705,9 +730,7 @@ CROSS_SYSTEM_HEADER_DIR=/usr/%{_target_platform}/include \
--x-includes=%{_includedir} \
--x-libraries=%{_libdir} \
--with-system-zlib \
%if "%{?disable_jack}" == "1"
--disable-dssi \
%endif
--with-isl \
%if "%{_target_platform}" != "%{_host}"
--enable-symvers=gnu \
--disable-libsanitizer \
@ -757,6 +780,8 @@ cd ../%{name}-build-%{_target_platform}
make DESTDIR=%{buildroot} install
%if "%{_target_platform}" == "%{_host}"
install -m644 libiberty/pic/libiberty.a %{buildroot}%{_libdir}/libiberty.a
# make target platform binaries symlinks to avoid binary duplicates
for p in gcc-%{version} gcc gcc-ar gcc-nm gcc-ranlib c++ g++ gfortran; do
rm -f %{buildroot}%{_bindir}/%{_target_platform}-$p
@ -768,6 +793,9 @@ for p in gcc gcc-ar gcc-nm gcc-ranlib cc gcov c++ g++ gfortran; do
ln -s $p %{buildroot}%{_bindir}/%{_target_platform}-$p
done
# Allow go command to come from go package
mv %{buildroot}%{_bindir}/go %{buildroot}%{_bindir}/gcc-go
install -d -m755 %{buildroot}%{_libdir}/bfd-plugins
ln -sf ../../libexec/gcc/%{_target_platform}/%{version}/liblto_plugin.so %{buildroot}%{_libdir}/bfd-plugins/
@ -798,8 +826,8 @@ mkdir -p %{buildroot}%{_datadir}/gdb/auto-load/%{_libdir}
mv %{buildroot}%{_libdir}/libstdc++.so.*-gdb.py %{buildroot}%{_datadir}/gdb/auto-load/%{_libdir}/
%ifarch x86_64
# fix for 32bit multilib build
mkdir -p %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/lib
mv %{buildroot}%{_prefix}/lib/libstdc++.so.*-gdb.py %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/lib/
mkdir -p %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/lib32
mv %{buildroot}%{_prefix}/lib32/libstdc++.so.*-gdb.py %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/lib32/
%endif
(cd ../gcc-%{version}%{?gcc_extraver}
@ -814,7 +842,7 @@ mv %{buildroot}%{_prefix}/lib/libstdc++.so.*-gdb.py %{buildroot}%{_datadir}/gdb/
#done)
# fix permissions
#chmod 755 %{buildroot}/%{_lib}/libgcc_s.so.1
chmod 755 %{buildroot}/%{_libdir}/libgcc_s.so.1
#cp gcc/doc/*.pdf ../gcc-%{version}%{?gcc_extraver}/gcc/doc/
%else # target_platform != host
@ -845,6 +873,9 @@ rm -f %{buildroot}%{_infodir}/libffi.info*
%post -n %{libstdcxx_name} -p /sbin/ldconfig
%postun -n %{libstdcxx_name} -p /sbin/ldconfig
%post -n libgdruntime -p /sbin/ldconfig
%postun -n libgdruntime -p /sbin/ldconfig
%post -n libgfortran -p /sbin/ldconfig
%postun -n libgfortran -p /sbin/ldconfig
@ -894,6 +925,7 @@ rm -f %{buildroot}%{_infodir}/libffi.info*
%{_bindir}/gcov
%{_bindir}/gcov-dump
%{_bindir}/gcov-tool
%{_bindir}/lto-dump
%{_bindir}/%{_target_platform}-cc
%{_bindir}/%{_target_platform}-gcc-%{version}
%{_bindir}/%{_target_platform}-gcc
@ -903,7 +935,7 @@ rm -f %{buildroot}%{_infodir}/libffi.info*
%{_bindir}/%{_target_platform}-gcov
%dir %{_libdir}/gcc
%{_libdir}/gcc/*
%ifarch x86_64
%ifarch x86_64 aarch64
%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/32/*
%endif
%dir %{_prefix}/libexec/gcc/%{_target_platform}/%{version}
@ -916,6 +948,7 @@ rm -f %{buildroot}%{_infodir}/libffi.info*
%{_mandir}/man1/gcov.1.*
%{_mandir}/man1/gcov-dump.1.*
%{_mandir}/man1/gcov-tool.1.*
%{_mandir}/man1/lto-dump.1*
%{_mandir}/man7/fsf-funding.7.*
%{_mandir}/man7/gfdl.7.*
%{_mandir}/man7/gpl.7.*
@ -1040,7 +1073,7 @@ rm -f %{buildroot}%{_infodir}/libffi.info*
%files -n libasan
%defattr(-,root,root)
%{_libdir}/libasan.so.*
%ifarch x86_64
%ifarch x86_64 aarch64
%{_libdir}/libtsan.so.*
%endif
@ -1050,14 +1083,14 @@ rm -f %{buildroot}%{_infodir}/libffi.info*
%{_libdir}/libasan.la
%{_libdir}/libasan.so
%{_libdir}/libasan_preinit.o
%ifarch x86_64
%ifarch x86_64 aarch64
%{_libdir}/libtsan.a
%{_libdir}/libtsan.la
%{_libdir}/libtsan.so
%{_libdir}/libtsan_preinit.o
%endif
%ifarch x86_64
%ifarch x86_64 aarch64
%files -n liblsan
%defattr(-,root,root)
%{_libdir}/liblsan.so.*
@ -1170,6 +1203,28 @@ rm -f %{buildroot}%{_infodir}/libffi.info*
#%doc libstdc++-v3/{ChangeLog*,README*,doc/html/}
%endif "%{disable_cpp}
#
# D language
#
%files d
%defattr(-,root,root)
%{_bindir}/gdc
%{_bindir}/%{_target_platform}-gdc
%{_libdir}/libgdruntime.a
%{_libdir}/libgdruntime.la
%{_libdir}/libgdruntime.so
%{_libdir}/libgphobos.a
%{_libdir}/libgphobos.la
%{_libdir}/libgphobos.so
%{_libdir}/libgphobos.spec
%{_infodir}/gdc.info*
%{_mandir}/man1/gdc.1*
%files -n libgdruntime
%defattr(-,root,root)
%{_libdir}/libgdruntime.so.*
%{_libdir}/libgphobos.so.*
%if "%{disable_fortran}" != "1"
#
# Fortran language
@ -1198,7 +1253,7 @@ rm -f %{buildroot}%{_infodir}/libffi.info*
%endif
%endif # disable_fortran != 1
%ifnarch arm
%ifnarch arm aarch64
%files -n libquadmath
%defattr(-,root,root)
%{_libdir}/libquadmath.so.*
@ -1217,7 +1272,7 @@ rm -f %{buildroot}%{_infodir}/libffi.info*
%files go
%defattr(-,root,root)
%{_bindir}/gccgo
%{_bindir}/go
%{_bindir}/gcc-go
%{_bindir}/gofmt
%{_bindir}/%{_target_platform}-gccgo
%{_infodir}/gccgo.info*
@ -1271,97 +1326,106 @@ rm -f %{buildroot}%{_infodir}/libffi.info*
%defattr(-,root,root)
%dir %{_libdir}/gcc/%{_target_platform}/%{version}/32
%{_libdir}/gcc/%{_target_platform}/%{version}/32/*
%{_prefix}/lib/libgcc_s.so
%{_prefix}/lib/libgcc_s.so.1
%{_prefix}/lib32/libgcc_s.so
%{_prefix}/lib32/libgcc_s.so.1
#
%{_prefix}/lib/libstdc++.*a
%{_prefix}/lib/libstdc++.so
%{_prefix}/lib/libstdc++.so.*
%{_prefix}/lib/libstdc++fs.*a
%{_prefix}/lib32/libstdc++.*a
%{_prefix}/lib32/libstdc++.so
%{_prefix}/lib32/libstdc++.so.*
%{_prefix}/lib32/libstdc++fs.*a
#
%{_prefix}/lib/libasan.a
%{_prefix}/lib/libasan.la
%{_prefix}/lib/libasan.so
%{_prefix}/lib/libasan.so.*
%{_prefix}/lib/libasan_preinit.o
%{_prefix}/lib/libatomic.a
%{_prefix}/lib/libatomic.la
%{_prefix}/lib/libatomic.so
%{_prefix}/lib/libatomic.so.*
%{_prefix}/lib32/libasan.a
%{_prefix}/lib32/libasan.la
%{_prefix}/lib32/libasan.so
%{_prefix}/lib32/libasan.so.*
%{_prefix}/lib32/libasan_preinit.o
%{_prefix}/lib32/libatomic.a
%{_prefix}/lib32/libatomic.la
%{_prefix}/lib32/libatomic.so
%{_prefix}/lib32/libatomic.so.*
#
# gfortran
#
%{_prefix}/lib/libgfortran.a
%{_prefix}/lib/libgfortran.la
%{_prefix}/lib/libgfortran.so
%{_prefix}/lib/libgfortran.so.*
%{_prefix}/lib/libgfortran.spec
%{_prefix}/lib32/libgfortran.a
%{_prefix}/lib32/libgfortran.la
%{_prefix}/lib32/libgfortran.so
%{_prefix}/lib32/libgfortran.so.*
%{_prefix}/lib32/libgfortran.spec
#
# go
#
%dir %{_prefix}/lib/go
%dir %{_prefix}/lib/go/%{version}
%dir %{_prefix}/lib/go/%{version}/%{_target_platform}
%{_prefix}/lib/go/%{version}/%{_target_platform}/*
%{_prefix}/lib/libgo.a
%{_prefix}/lib/libgo.la
%{_prefix}/lib/libgo.so
%{_prefix}/lib/libgo.so.*
%{_prefix}/lib/libgobegin.a
%{_prefix}/lib/libgolibbegin.a
%dir %{_prefix}/lib32/go
%dir %{_prefix}/lib32/go/%{version}
%dir %{_prefix}/lib32/go/%{version}/%{_target_platform}
%{_prefix}/lib32/go/%{version}/%{_target_platform}/*
%{_prefix}/lib32/libgo.a
%{_prefix}/lib32/libgo.la
%{_prefix}/lib32/libgo.so
%{_prefix}/lib32/libgo.so.*
%{_prefix}/lib32/libgobegin.a
%{_prefix}/lib32/libgolibbegin.a
#%{_prefix}/lib/libnetgo.a
#
#
#
%{_prefix}/lib/libgomp.a
%{_prefix}/lib/libgomp.la
%{_prefix}/lib/libgomp.so
%{_prefix}/lib/libgomp.so.*
%{_prefix}/lib/libgomp.spec
%{_prefix}/lib32/libgomp.a
%{_prefix}/lib32/libgomp.la
%{_prefix}/lib32/libgomp.so
%{_prefix}/lib32/libgomp.so.*
%{_prefix}/lib32/libgomp.spec
#%{_prefix}/lib/libgomp-plugin-host_nonshm.la
#%{_prefix}/lib/libgomp-plugin-host_nonshm.so
#%{_prefix}/lib/libgomp-plugin-host_nonshm.so.*
/usr/lib/libitm.a
/usr/lib/libitm.la
/usr/lib/libitm.so
/usr/lib/libitm.so.*
/usr/lib/libitm.spec
/usr/lib32/libitm.a
/usr/lib32/libitm.la
/usr/lib32/libitm.so
/usr/lib32/libitm.so.*
/usr/lib32/libitm.spec
#/usr/lib/libmpx*.a
#/usr/lib/libmpx*.la
#/usr/lib/libmpx*.so
#/usr/lib/libmpx*.so.*
#/usr/lib/libmpx.spec
/usr/lib/libobjc.a
/usr/lib/libobjc.la
/usr/lib/libobjc.so
/usr/lib/libobjc.so.*
/usr/lib/libssp.a
/usr/lib/libssp.la
/usr/lib/libssp.so
/usr/lib/libssp.so.*
/usr/lib/libssp_nonshared.a
/usr/lib/libssp_nonshared.la
/usr/lib/libsupc++.a
/usr/lib/libsupc++.la
/usr/lib32/libobjc.a
/usr/lib32/libobjc.la
/usr/lib32/libobjc.so
/usr/lib32/libobjc.so.*
/usr/lib32/libssp.a
/usr/lib32/libssp.la
/usr/lib32/libssp.so
/usr/lib32/libssp.so.*
/usr/lib32/libssp_nonshared.a
/usr/lib32/libssp_nonshared.la
/usr/lib32/libsupc++.a
/usr/lib32/libsupc++.la
#/usr/lib/libcilkrts.a
#/usr/lib/libcilkrts.la
#/usr/lib/libcilkrts.so
#/usr/lib/libcilkrts.so.*
#/usr/lib/libcilkrts.spec
/usr/lib/libquadmath.a
/usr/lib/libquadmath.la
/usr/lib/libquadmath.so
/usr/lib/libquadmath.so.*
/usr/lib/libsanitizer.spec
/usr/lib/libubsan.a
/usr/lib/libubsan.la
/usr/lib/libubsan.so
/usr/lib/libubsan.so.*
/usr/lib32/libquadmath.a
/usr/lib32/libquadmath.la
/usr/lib32/libquadmath.so
/usr/lib32/libquadmath.so.*
/usr/lib32/libsanitizer.spec
/usr/lib32/libubsan.a
/usr/lib32/libubsan.la
/usr/lib32/libubsan.so
/usr/lib32/libubsan.so.*
#/usr/lib/libvtv.a
#/usr/lib/libvtv.la
#/usr/lib/libvtv.so
#/usr/lib/libvtv.so.*
%{_datadir}/gdb/auto-load/usr/lib/libstdc++.so.*-gdb.py
%{_prefix}/lib32/libgdruntime.a
%{_prefix}/lib32/libgdruntime.la
%{_prefix}/lib32/libgdruntime.so
%{_prefix}/lib32/libgdruntime.so.*
%{_prefix}/lib32/libgphobos.a
%{_prefix}/lib32/libgphobos.la
%{_prefix}/lib32/libgphobos.so
%{_prefix}/lib32/libgphobos.so.*
%{_prefix}/lib32/libgphobos.spec
%{_datadir}/gdb/auto-load/usr/lib32/libstdc++.so.*-gdb.py
%endif
%else
@ -1401,6 +1465,24 @@ rm -f %{buildroot}%{_infodir}/libffi.info*
%endif # cross-platform
%changelog
* Fri Jul 24 2020 Automatic Build System <autodist@mambasoft.it> 10.2.0-1mamba
- automatic version update by autodist
* Mon Jun 08 2020 Silvan Calarco <silvan.calarco@mambasoft.it> 10.1.0-2mamba
- arm: added patch to provide futex atomic functions _M_futex_notify_all and _M_futex_wait_until (armv7)
* Mon May 11 2020 Automatic Build System <autodist@mambasoft.it> 10.1.0-1mamba
- automatic version update by autodist
* Fri Mar 13 2020 Automatic Build System <autodist@mambasoft.it> 9.3.0-1mamba
- automatic version update by autodist
* Sat Feb 29 2020 Silvan Calarco <silvan.calarco@mambasoft.it> 9.2.0-4mamba
- install libiberty.a with pic support
* Thu Dec 05 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 9.2.0-3mamba
- added add and d languages; added --enable-cet=auto and more options
* Wed Aug 28 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 9.2.0-2mamba
- add legacy provides to libgcc_s.so.1