%bcond_with cross # make a cross build, skip native programs
%bcond_without nss_crypt # disable crypt features based on Mozilla NSS library
%bcond_with bash_nls # use bash NLS in shell scripts (ldd, sotruss); restores /bin/bash dep
+%bcond_without cet # Intel Control-flow Enforcement Technology (CET)
#
%ifarch %{ix86} %{x8664}
%{!?min_kernel:%global min_kernel 3.2.0}
%ifarch sparc64
%undefine with_memusage
%endif
+%ifnarch i686 %{x8664} x32
+%undefine with_cet
+%endif
-%define core_version 2.26
+%define core_version 2.28
%define llh_version 7:2.6.32.1-1
Summary: GNU libc
Summary(uk.UTF-8): GNU libc версії
Name: glibc
Version: %{core_version}
-Release: 8
+Release: 6
Epoch: 6
License: LGPL v2.1+
Group: Libraries
Source0: http://ftp.gnu.org/gnu/glibc/%{name}-%{version}.tar.xz
-# Source0-md5: 102f637c3812f81111f48f2427611be1
+# Source0-md5: c81d2388896379997bc359d4f2084239
Source2: nscd.init
Source3: nscd.sysconfig
Source4: nscd.logrotate
Source9: nscd.tmpfiles
# use branch.sh to update glibc-git.patch
Patch0: glibc-git.patch
-# Patch0-md5: b0df22b866ccfc0573d1adf56e270057
+# Patch0-md5: 58ef96284acee989798495055657acde
# against GNU TP (libc domain)
#Patch1: %{name}-pl.po-update.patch
Patch2: %{name}-pld.patch
Patch3: %{name}-crypt-blowfish.patch
Patch4: %{name}-no-bash-nls.patch
-Patch5: %{name}-sparc-softfp-gcc.patch
+
Patch6: %{name}-paths.patch
Patch8: %{name}-missing-nls.patch
Patch29: %{name}-arm-alignment-fix.patch
Patch30: glibc-rh1124987.patch
+# electron is broken but we have no way to fix it so for now lets break glibc again
+Patch31: 0001-Revert-elf-Correct-absolute-SHN_ABS-symbol-run-time-.patch
URL: http://www.gnu.org/software/libc/
%{?with_selinux:BuildRequires: audit-libs-devel}
BuildRequires: autoconf >= 2.69
BuildRequires: automake
-%ifarch alpha
-BuildRequires: binutils >= 2:2.17.50.0.7
-%else
-BuildRequires: binutils >= 2:2.15.90.0.3
-%endif
+BuildRequires: binutils >= 2:2.29
+BuildRequires: bison >= 2.7
%{!?with_cross:BuildRequires: dietlibc-static}
BuildRequires: gawk
+%if %{with cet}
+BuildRequires: gcc >= 6:8.0
+%else
BuildRequires: gcc >= 6:4.7
+%endif
%{?with_memusage:BuildRequires: gd-devel >= 2.0.1}
BuildRequires: gettext-tools >= 0.10.36
%{?with_selinux:BuildRequires: libselinux-devel >= 1.18}
Provides: glibc64
Obsoletes: glibc64
%endif
+Suggests: libidn2 >= 2.0.5
Suggests: localedb
Suggests: tzdata
Conflicts: %{name}-misc < %{epoch}:%{version}-%{release}
%define _noautoprov .*\(GLIBC_PRIVATE\)
%define _noautoreq .*\(GLIBC_PRIVATE\)
+# to avoid multi-arch conflicts on getconf/* files
+%define _libexecdir %{_libdir}
+
%description
Contains the standard libraries that are used by multiple programs on
the system. In order to save disk space and memory, as well as to ease
%patch2 -p1
%patch3 -p0
%{!?with_bash_nls:%patch4 -p1}
-%patch5 -p1
+
%patch6 -p1
%patch8 -p1
-%patch9 -p0
+%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch29 -p1
%patch30 -p1
+%patch31 -p1
# cleanup backups after patching
find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
AWK="gawk" \
../%configure \
- --enable-add-ons=libidn \
+%if %{with cet}
+ --enable-cet \
+%endif
--enable-bind-now \
--enable-experimental-malloc \
--enable-hidden-plt \
--enable-profile \
--enable-stack-protector=strong \
--enable-stackguard-randomization \
+ --enable-static-pie \
--enable-tunables \
--with-binutils=$(pwd)/alt-tools \
--with-bugurl=http://bugs.pld-linux.org/ \
mv -f $RPM_BUILD_ROOT/%{_lib}/libpcprofile.so $RPM_BUILD_ROOT%{_libdir}
# make symlinks across top-level directories absolute
-for l in BrokenLocale anl cidn crypt dl \
+for l in BrokenLocale anl crypt dl \
%ifarch %{x8664} x32
mvec \
%endif
rm -rf documentation
install -d documentation
-for f in ChangeLog.old DESIGN-systemtap-probes.txt TODO{,-kernel,-testing}; do
+for f in DESIGN-systemtap-probes.txt TODO{,-kernel,-testing}; do
cp -af nptl/$f documentation/$f.nptl
done
cp -af crypt/README.ufc-crypt ChangeLog* documentation
%files -f %{name}.lang
%defattr(644,root,root,755)
-%doc README NEWS BUGS CONFORMANCE
+%doc README NEWS
%if %{without cross}
%attr(755,root,root) /sbin/glibc-postinst
%endif
%else
%attr(755,root,root) /%{_lib}/libc.so.6
%endif
-%attr(755,root,root) /%{_lib}/libcidn-%{core_version}.so
-%attr(755,root,root) /%{_lib}/libcidn.so.1
%attr(755,root,root) /%{_lib}/libdl-%{core_version}.so
%ifarch alpha
%attr(755,root,root) /%{_lib}/libdl.so.2.1
%attr(755,root,root) %{_libdir}/libBrokenLocale.so
%attr(755,root,root) %{_libdir}/libanl.so
%attr(755,root,root) %{_libdir}/libcrypt.so
-%attr(755,root,root) %{_libdir}/libcidn.so
%attr(755,root,root) %{_libdir}/libdl.so
%attr(755,root,root) %{_libdir}/libm.so
%ifarch %{x8664} x32
%attr(755,root,root) %{_libdir}/libthread_db.so
%attr(755,root,root) %{_libdir}/libutil.so
%{_libdir}/crt[1in].o
-%{_libdir}/[MSg]crt1.o
+%{_libdir}/[MSgr]crt1.o
+%{_libdir}/grcrt1.o
# ld scripts
%{_libdir}/libc.so
%{_libdir}/libpthread.so
%endif
%{_libdir}/libc_nonshared.a
%{_libdir}/libg.a
-%{_libdir}/libieee.a
%ifarch alpha ppc sparc
%{_libdir}/libnldbl_nonshared.a
%endif
-%{_libdir}/libpthread_nonshared.a
%{_libdir}/librpcsvc.a
%ifarch %{ix86} %{x8664} x32 ppc ppc64 s390 s390x sparc sparcv9 sparc64
# ABI-dependent headers