Merge "Backport exception scalability fix from gcc-7" from Gleb

"This patch series backports scalability fix for _Unwind_Find_FDE and modifies
out CentOS package to use our libgcc and libstdc++ which are needed to make
use of the fix instead of locally installed ones."

Ref #2646 (fixes on RHEL 7 and related only)

* 'gleb/exception-gcc-fix-v2' of github.com:cloudius-systems/seastar-dev:
  dist/redhat: Make scylla rpm depend on scylla-libgcc and scylla-libstdc++ and use it instead of locally installed one
  dist/redhat: Backport scalability fix of _Unwind_Find_FDE to out gcc
This commit is contained in:
Avi Kivity
2017-07-30 19:31:03 +03:00
3 changed files with 72 additions and 52 deletions

View File

@@ -85,18 +85,19 @@ if [ ! -f build/rpms/scylla-isl-0.14-4.el7*.x86_64.rpm ]; then
sudo mock --root=$TARGET --rebuild --resultdir=`pwd`/build/rpms build/srpms/scylla-isl-0.14-4.el7*.src.rpm
fi
if [ ! -f build/srpms/scylla-gcc-5.3.1-2.el7*.src.rpm ]; then
if [ ! -f build/srpms/scylla-gcc-5.3.1-2.1.el7*.src.rpm ]; then
rpm --define "_topdir $RPMBUILD" -ivh build/downloads/gcc-5.3.1-2.fc23.src.rpm
patch $RPMBUILD/SPECS/gcc.spec < dist/redhat/centos_dep/gcc.diff
cp dist/redhat/centos_dep/unwind_dw2_fde_nolock.patch $RPMBUILD/SOURCES/
sudo mock --buildsrpm --root=$TARGET --resultdir=`pwd`/build/srpms --spec=$RPMBUILD/SPECS/gcc.spec --sources=$RPMBUILD/SOURCES
fi
if [ ! -f build/rpms/scylla-gcc-5.3.1-2.el7*.x86_64.rpm ]; then
if [ ! -f build/rpms/scylla-gcc-5.3.1-2.1.el7*.x86_64.rpm ]; then
sudo mock --root=$TARGET --init
sudo mock --root=$TARGET --install build/rpms/scylla-env-1.0-1.el7*.noarch.rpm
sudo mock --root=$TARGET --install build/rpms/scylla-binutils-2.25-15.el7*.x86_64.rpm
sudo mock --root=$TARGET --install build/rpms/scylla-isl-0.14-4.el7*.x86_64.rpm
sudo mock --root=$TARGET --install build/rpms/scylla-isl-devel-0.14-4.el7*.x86_64.rpm
sudo mock --root=$TARGET --rebuild --resultdir=`pwd`/build/rpms --no-clean build/srpms/scylla-gcc-5.3.1-2.el7*.src.rpm
sudo mock --root=$TARGET --rebuild --resultdir=`pwd`/build/rpms --no-clean build/srpms/scylla-gcc-5.3.1-2.1.el7*.src.rpm
fi
if [ ! -f build/srpms/scylla-boost-1.58.0-11.el7*.src.rpm ]; then

View File

@@ -1,5 +1,5 @@
--- gcc.spec.orig 2015-12-08 16:03:46.000000000 +0000
+++ gcc.spec 2016-07-10 06:07:27.612453480 +0000
--- gcc.spec.orig 2017-07-27 08:58:05.141433315 +0000
+++ gcc.spec 2017-07-30 10:12:32.154791594 +0000
@@ -1,6 +1,7 @@
%global DATE 20151207
%global SVNREV 231358
@@ -25,7 +25,7 @@
%ifarch %{ix86} x86_64 ia64
%global build_libquadmath 1
%else
@@ -84,7 +77,8 @@
@@ -84,9 +77,10 @@
%global multilib_32_arch i686
%endif
Summary: Various compilers (C, C++, Objective-C, Java, ...)
@@ -33,8 +33,11 @@
+Name: scylla-gcc
+%define orig_name gcc
Version: %{gcc_version}
Release: %{gcc_release}%{?dist}
-Release: %{gcc_release}%{?dist}
+Release: %{gcc_release}.1%{?dist}
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
# GCC Runtime Exception.
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
@@ -99,6 +93,7 @@
%global isl_version 0.14
URL: http://gcc.gnu.org
@@ -103,7 +106,15 @@
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
AutoReq: true
@@ -228,12 +221,12 @@
@@ -208,6 +201,7 @@
Patch14: gcc5-libsanitize-aarch64-va42.patch
Patch15: gcc5-pr65689.patch
Patch16: gcc5-rh1279639.patch
+Patch17: unwind_dw2_fde_nolock.patch
# On ARM EABI systems, we do want -gnueabi to be part of the
# target triple.
@@ -228,12 +222,12 @@
The gcc package contains the GNU Compiler Collection version 5.
You'll need this package in order to compile C code.
@@ -118,7 +129,7 @@
%endif
Obsoletes: libmudflap
Obsoletes: libmudflap-devel
@@ -241,17 +234,19 @@
@@ -241,17 +235,19 @@
Obsoletes: libgcj < %{version}-%{release}
Obsoletes: libgcj-devel < %{version}-%{release}
Obsoletes: libgcj-src < %{version}-%{release}
@@ -142,7 +153,7 @@
Autoreq: true
%description c++
@@ -259,50 +254,55 @@
@@ -259,50 +255,55 @@
It includes support for most of the current C++ specification,
including templates and exception handling.
@@ -210,7 +221,7 @@
Autoreq: true
%description objc
@@ -313,29 +313,32 @@
@@ -313,29 +314,32 @@
%package objc++
Summary: Objective-C++ support for GCC
Group: Development/Languages
@@ -250,7 +261,7 @@
%endif
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
@@ -345,260 +348,286 @@
@@ -345,260 +349,286 @@
The gcc-gfortran package provides support for compiling Fortran
programs with the GNU Compiler Collection.
@@ -609,7 +620,7 @@
Cpp is the GNU C-Compatible Compiler Preprocessor.
Cpp is a macro processor which is used automatically
by the C compiler to transform your program before actual
@@ -623,8 +652,9 @@
@@ -623,8 +653,9 @@
%package gnat
Summary: Ada 83, 95, 2005 and 2012 support for GCC
Group: Development/Languages
@@ -621,7 +632,7 @@
Requires(post): /sbin/install-info
Requires(preun): /sbin/install-info
Autoreq: true
@@ -633,82 +663,90 @@
@@ -633,82 +664,90 @@
GNAT is a GNU Ada 83, 95, 2005 and 2012 front-end to GCC. This package includes
development tools, the documents and Ada compiler.
@@ -734,7 +745,7 @@
Requires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1, libmpc-devel >= 0.8.1
%description plugin-devel
@@ -728,7 +766,8 @@
@@ -728,7 +767,8 @@
Summary: Debug information for package %{name}
Group: Development/Debug
AutoReqProv: 0
@@ -744,7 +755,15 @@
%description debuginfo
This package provides debug information for package %{name}.
@@ -958,11 +997,11 @@
@@ -776,6 +816,7 @@
%patch14 -p0 -b .libsanitize-aarch64-va42~
%patch15 -p0 -b .pr65689~
%patch16 -p0 -b .rh1279639~
+%patch17 -p1 -b .unwind_dw2_fde_nolock~
sed -i -e 's/ -Wl,-z,nodlopen//g' gcc/ada/gcc-interface/Makefile.in
%if 0%{?_enable_debug_packages}
@@ -958,11 +999,11 @@
--enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu \
--enable-plugin --enable-initfini-array \
--disable-libgcj \
@@ -758,7 +777,7 @@
%else
--without-isl \
%endif
@@ -971,11 +1010,9 @@
@@ -971,11 +1012,9 @@
%else
--disable-libmpx \
%endif
@@ -770,7 +789,7 @@
%ifarch %{arm}
--disable-sjlj-exceptions \
%endif
@@ -1006,9 +1043,6 @@
@@ -1006,9 +1045,6 @@
%if 0%{?rhel} >= 7
--with-cpu-32=power8 --with-tune-32=power8 --with-cpu-64=power8 --with-tune-64=power8 \
%endif
@@ -780,7 +799,7 @@
%endif
%ifarch ppc
--build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
@@ -1270,16 +1304,15 @@
@@ -1270,16 +1306,15 @@
mv %{buildroot}%{_prefix}/%{_lib}/libmpx.spec $FULLPATH/
%endif
@@ -803,7 +822,7 @@
%endif
%ifarch ppc
rm -f $FULLPATH/libgcc_s.so
@@ -1819,7 +1852,7 @@
@@ -1819,7 +1854,7 @@
chmod 755 %{buildroot}%{_prefix}/bin/c?9
cd ..
@@ -812,7 +831,7 @@
%find_lang cpplib
# Remove binaries we will not be including, so that they don't end up in
@@ -1869,11 +1902,7 @@
@@ -1869,11 +1904,7 @@
# run the tests.
make %{?_smp_mflags} -k check ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++ \
@@ -824,7 +843,7 @@
echo ====================TESTING=========================
( LC_ALL=C ../contrib/test_summary || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}'
echo ====================TESTING END=====================
@@ -1900,13 +1929,13 @@
@@ -1900,13 +1931,13 @@
--info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
fi
@@ -840,7 +859,7 @@
if [ $1 = 0 -a -f %{_infodir}/cpp.info.gz ]; then
/sbin/install-info --delete \
--info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
@@ -1945,19 +1974,19 @@
@@ -1945,19 +1976,19 @@
fi
%post go
@@ -863,7 +882,7 @@
if posix.access ("/sbin/ldconfig", "x") then
local pid = posix.fork ()
if pid == 0 then
@@ -1967,7 +1996,7 @@
@@ -1967,7 +1998,7 @@
end
end
@@ -872,7 +891,7 @@
if posix.access ("/sbin/ldconfig", "x") then
local pid = posix.fork ()
if pid == 0 then
@@ -1977,120 +2006,120 @@
@@ -1977,120 +2008,120 @@
end
end
@@ -1031,7 +1050,7 @@
%defattr(-,root,root,-)
%{_prefix}/bin/cc
%{_prefix}/bin/c89
@@ -2414,7 +2443,7 @@
@@ -2414,7 +2445,7 @@
%{!?_licensedir:%global license %%doc}
%license gcc/COPYING* COPYING.RUNTIME
@@ -1040,7 +1059,7 @@
%defattr(-,root,root,-)
%{_prefix}/lib/cpp
%{_prefix}/bin/cpp
@@ -2425,10 +2454,10 @@
@@ -2425,10 +2456,10 @@
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1
@@ -1054,7 +1073,7 @@
%{!?_licensedir:%global license %%doc}
%license gcc/COPYING* COPYING.RUNTIME
@@ -2469,7 +2498,7 @@
@@ -2469,7 +2500,7 @@
%endif
%doc rpm.doc/changelogs/gcc/cp/ChangeLog*
@@ -1063,7 +1082,7 @@
%defattr(-,root,root,-)
%{_prefix}/%{_lib}/libstdc++.so.6*
%dir %{_datadir}/gdb
@@ -2481,7 +2510,7 @@
@@ -2481,7 +2512,7 @@
%dir %{_prefix}/share/gcc-%{gcc_version}/python
%{_prefix}/share/gcc-%{gcc_version}/python/libstdcxx
@@ -1072,7 +1091,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/include/c++
%dir %{_prefix}/include/c++/%{gcc_version}
@@ -2507,7 +2536,7 @@
@@ -2507,7 +2538,7 @@
%endif
%doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README*
@@ -1081,7 +1100,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2528,7 +2557,7 @@
@@ -2528,7 +2559,7 @@
%endif
%if %{build_libstdcxx_docs}
@@ -1090,7 +1109,7 @@
%defattr(-,root,root)
%{_mandir}/man3/*
%doc rpm.doc/libstdc++-v3/html
@@ -2567,7 +2596,7 @@
@@ -2567,7 +2598,7 @@
%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1objplus
@@ -1099,7 +1118,7 @@
%defattr(-,root,root,-)
%{_prefix}/%{_lib}/libobjc.so.4*
@@ -2621,11 +2650,11 @@
@@ -2621,11 +2652,11 @@
%endif
%doc rpm.doc/gfortran/*
@@ -1113,7 +1132,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2671,12 +2700,12 @@
@@ -2671,12 +2702,12 @@
%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/gnat1
%doc rpm.doc/changelogs/gcc/ada/ChangeLog*
@@ -1128,7 +1147,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2702,7 +2731,7 @@
@@ -2702,7 +2733,7 @@
%exclude %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib/libgnarl.a
%endif
@@ -1137,7 +1156,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2726,7 +2755,7 @@
@@ -2726,7 +2757,7 @@
%endif
%endif
@@ -1146,7 +1165,7 @@
%defattr(-,root,root,-)
%{_prefix}/%{_lib}/libgomp.so.1*
%{_prefix}/%{_lib}/libgomp-plugin-host_nonshm.so.1*
@@ -2734,14 +2763,14 @@
@@ -2734,14 +2765,14 @@
%doc rpm.doc/changelogs/libgomp/ChangeLog*
%if %{build_libquadmath}
@@ -1163,7 +1182,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2754,7 +2783,7 @@
@@ -2754,7 +2785,7 @@
%endif
%doc rpm.doc/libquadmath/ChangeLog*
@@ -1172,7 +1191,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2773,12 +2802,12 @@
@@ -2773,12 +2804,12 @@
%endif
%if %{build_libitm}
@@ -1187,7 +1206,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2791,7 +2820,7 @@
@@ -2791,7 +2822,7 @@
%endif
%doc rpm.doc/libitm/ChangeLog*
@@ -1196,7 +1215,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2810,11 +2839,11 @@
@@ -2810,11 +2841,11 @@
%endif
%if %{build_libatomic}
@@ -1210,7 +1229,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2834,11 +2863,11 @@
@@ -2834,11 +2865,11 @@
%endif
%if %{build_libasan}
@@ -1224,7 +1243,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2860,11 +2889,11 @@
@@ -2860,11 +2891,11 @@
%endif
%if %{build_libubsan}
@@ -1238,7 +1257,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2886,11 +2915,11 @@
@@ -2886,11 +2917,11 @@
%endif
%if %{build_libtsan}
@@ -1252,7 +1271,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2902,11 +2931,11 @@
@@ -2902,11 +2933,11 @@
%endif
%if %{build_liblsan}
@@ -1266,7 +1285,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2918,11 +2947,11 @@
@@ -2918,11 +2949,11 @@
%endif
%if %{build_libcilkrts}
@@ -1280,7 +1299,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -2942,12 +2971,12 @@
@@ -2942,12 +2973,12 @@
%endif
%if %{build_libmpx}
@@ -1295,7 +1314,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -3009,12 +3038,12 @@
@@ -3009,12 +3040,12 @@
%endif
%doc rpm.doc/go/*
@@ -1310,7 +1329,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -3042,7 +3071,7 @@
@@ -3042,7 +3073,7 @@
%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgo.so
%endif
@@ -1319,7 +1338,7 @@
%defattr(-,root,root,-)
%dir %{_prefix}/lib/gcc
%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
@@ -3060,12 +3089,12 @@
@@ -3060,12 +3091,12 @@
%endif
%endif

View File

@@ -7,7 +7,7 @@ Group: Applications/Databases
License: AGPLv3
URL: http://www.scylladb.com/
Source0: %{name}-@@VERSION@@-@@RELEASE@@.tar
Requires: scylla-server = @@VERSION@@ scylla-jmx = @@VERSION@@ scylla-tools = @@VERSION@@ scylla-kernel-conf = @@VERSION@@
Requires: scylla-server = @@VERSION@@ scylla-jmx = @@VERSION@@ scylla-tools = @@VERSION@@ scylla-kernel-conf = @@VERSION@@ scylla-libgcc scylla-libstdc++
Obsoletes: scylla-server < 1.1
%description
@@ -73,7 +73,7 @@ This package contains ScyllaDB server.
%endif
%if 0%{?rhel}
. /etc/profile.d/scylla.sh
python3.4 ./configure.py --enable-dpdk --mode=release --static-stdc++ --static-boost --compiler=/opt/scylladb/bin/g++ --python python3.4
python3.4 ./configure.py --enable-dpdk --mode=release --static-boost --compiler=/opt/scylladb/bin/g++ --python python3.4 --ldflag=-Wl,-rpath=/opt/scylladb/lib64
%endif
ninja-build %{?_smp_mflags} build/release/scylla build/release/iotune
cp dist/common/systemd/scylla-server.service.in build/scylla-server.service