Hello community, here is the log from the commit of package glibc for openSUSE:Factory checked in at 2019-02-08 12:03:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/glibc (Old) and /work/SRC/openSUSE:Factory/.glibc.new.28833 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "glibc" Fri Feb 8 12:03:36 2019 rev:225 rq:670586 version:2.29 Changes: -------- --- /work/SRC/openSUSE:Factory/glibc/glibc.changes 2018-07-02 23:26:47.461743577 +0200 +++ /work/SRC/openSUSE:Factory/.glibc.new.28833/glibc.changes 2019-02-08 12:04:11.621676704 +0100 @@ -1,0 +2,152 @@ +Fri Feb 1 10:34:39 UTC 2019 - sch...@suse.de + +- Update to glibc 2.29 + * The getcpu wrapper function has been added, which returns the currently + used CPU and NUMA node + * Optimized generic exp, exp2, log, log2, pow, sinf, cosf, sincosf and tanf + * The reallocarray function is now declared under _DEFAULT_SOURCE, not just + for _GNU_SOURCE, to match BSD environments + * For powercp64le ABI, Transactional Lock Elision is now enabled iff kernel + indicates that it will abort the transaction prior to entering the kernel + (PPC_FEATURE2_HTM_NOSC on hwcap2) + * The functions posix_spawn_file_actions_addchdir_np and + posix_spawn_file_actions_addfchdir_np have been added, enabling + posix_spawn and posix_spawnp to run the new process in a different + directory + * The popen and system do not run atfork handlers anymore (BZ#17490) + * strftime's default formatting of a locale's alternative year (%Ey) + has been changed to zero-pad the year to a minimum of two digits, + like "%y" + * As a GNU extension, the '_' and '-' flags can now be applied to + "%EY" to control how the year number is formatted + * The glibc.tune tunable namespace has been renamed to glibc.cpu and the + tunable glibc.tune.cpu has been renamed to glibc.cpu.name + * The type of the pr_uid and pr_gid members of struct elf_prpsinfo, defined + in <sys/procfs.h>, has been corrected to match the type actually used by + the Linux kernel + * An archaic GNU extension to scanf, under which '%as', '%aS', and '%a[...]' + meant to scan a string and allocate space for it with malloc, is now + restricted to programs compiled in C89 or C++98 mode with _GNU_SOURCE + defined +- unwind-ctor.patch, old-getdents64.patch, nss-files-leak.patch, + riscv-feholdexcept-setround.patch, + pthread-cond-broadcast-waiters-after-spinning.patch, + regex-uninit-memory-access.patch, spawni-maybe-script-execute.patch, + gethostid-gethostbyname-failure.patch, strstr-huge-needle.patch, + pthread-mutex-lock-elision-race.patch, x86-haswell-string-flags.patch, + if-nametoindex-descr-leak.patch, riscv-flush-icache.patch: Removed + +------------------------------------------------------------------- +Wed Jan 9 14:21:04 UTC 2019 - sch...@suse.de + +- fnmatch-collating-elements.patch: update +- riscv-flush-icache.patch: fix for compiling against 4.20 headers + +------------------------------------------------------------------- +Wed Nov 28 09:52:49 UTC 2018 - sch...@suse.de + +- if-nametoindex-descr-leak.patch: if_nametoindex: Fix descriptor leak for + overlong name (CVE-2018-19591, BZ #23927, bsc#1117603) + +------------------------------------------------------------------- +Wed Nov 7 17:24:35 UTC 2018 - Jan Engelhardt <jeng...@inai.de> + +- Fix typography for glibc-locale-base. + +------------------------------------------------------------------- +Wed Nov 7 11:09:05 UTC 2018 - sch...@suse.de + +- pthread-mutex-lock-elision-race.patch: Fix race in pthread_mutex_lock + while promoting to PTHREAD_MUTEX_ELISION_NP (BZ #23275) +- x86-haswell-string-flags.patch: x86: Fix Haswell CPU string flags (BZ + #23709) + +------------------------------------------------------------------- +Wed Sep 26 09:41:59 UTC 2018 - sch...@suse.de + +- unwind-ctor.patch: Add missing unwind information to ld.so on powerpc32 + (BZ #23707) +- old-getdents64.patch: Rewrite __old_getdents64 (BZ #23497) +- nss-files-leak.patch: Fix file stream leak in aliases lookup (BZ #23521) +- riscv-feholdexcept-setround.patch: Fix rounding save/restore bug +- pthread-cond-broadcast-waiters-after-spinning.patch: Fix + waiters-after-spinning case (BZ #23538) +- regex-uninit-memory-access.patch: fix uninitialized memory access (BZ + #23578) +- spawni-maybe-script-execute.patch: Fix segfault in maybe_script_execute +- gethostid-gethostbyname-failure.patch: Check for NULL value from + gethostbyname_r (BZ #23679) +- strstr-huge-needle.patch: Fix strstr bug with huge needles (BZ #23637) + +------------------------------------------------------------------- +Wed Sep 12 06:47:33 UTC 2018 - sch...@suse.de + +- Add libpng-devel and zlib-devel for utils build + +------------------------------------------------------------------- +Wed Aug 15 13:53:41 UTC 2018 - sch...@suse.de + +- Add glibc-locale-base subpackage containing only C, C.UTF-8 and + en_US.UTF-8 locales (fate#326551) + +------------------------------------------------------------------- +Thu Aug 2 07:48:07 UTC 2018 - sch...@suse.de + +- Update to glibc 2.28 + * The localization data for ISO 14651 is updated to match the 2016 + Edition 4 release of the standard, this matches data provided by + Unicode 9.0.0 + * Unicode 11.0.0 Support: Character encoding, character type info, and + transliteration tables are all updated to Unicode 11.0.0, using + generator scripts contributed by Mike FABIAN (Red Hat) + * <math.h> functions that round their results to a narrower type are added + from TS 18661-1:2014 and TS 18661-3:2015 + * Two grammatical forms of month names are now supported + * The renameat2 function has been added, a variant of the renameat function + which has a flags argument + * The statx function has been added, a variant of the fstatat64 + function with an additional flags argument + * IDN domain names in getaddrinfo and getnameinfo now use the system libidn2 + library if installed + * Parsing of dynamic string tokens in DT_RPATH, DT_RUNPATH, DT_NEEDED, + DT_AUXILIARY, and DT_FILTER has been expanded to support the full + range of ELF gABI expressions including such constructs as + '$ORIGIN$ORIGIN' (if valid) + * Support for ISO C threads (ISO/IEC 9899:2011) has been added. + * The nonstandard header files <libio.h> and <_G_config.h> are no longer + installed + * The stdio functions 'getc' and 'putc' are no longer defined as macros + * All stdio functions now treat end-of-file as a sticky condition + * The macros 'major', 'minor', and 'makedev' are now only available from + the header <sys/sysmacros.h> + * The obsolete function ustat is no longer available to newly linked + binaries; the headers <ustat.h> and <sys/ustat.h> have been removed + * The obsolete function nfsservctl is no longer available to newly linked + binaries + * The obsolete function name llseek is no longer available to newly linked + binaries + * The AI_IDN_ALLOW_UNASSIGNED and NI_IDN_ALLOW_UNASSIGNED flags for the + getaddrinfo and getnameinfo functions have been deprecated + * The AI_IDN_USE_STD3_ASCII_RULES and NI_IDN_USE_STD3_ASCII_RULES flags for + the getaddrinfo and getnameinfo functions have been deprecated + * The fcntl function now have a Long File Support variant named fcntl64 + * CVE-2016-6261, CVE-2016-6263, CVE-2017-14062: Various vulnerabilities have + been fixed by removing the glibc-internal IDNA implementation and using + the system-provided libidn2 library instead +- Split off all libcrypt related functions into package libxcrypt +- fix-locking-in-_IO_cleanup.patch, fnmatch-collating-elements.patch: + Rediff +- aarch64-sys-ptrace-update.patch, + crypt_blowfish-1.2-hack_around_arm.diff, crypt_blowfish-1.2-sha.diff, + crypt_blowfish-const.patch, crypt_blowfish-gensalt.patch, + glibc-2.14-crypt.diff, i386-memmove-sse2-unaligned.patch, + i386-sigaction-sa-restorer.patch, mempcpy-avx512.patch, + netgroup-cache-keys.patch, nss-database-multiple-dfn.patch, + pkey-get-reserved-name.patch, powerpc-sys-ptrace-undefine-macros.patch, + powerpc-sys-ptrace-update.patch, realpath-ssize-max-overflow.patch, + res-send-enomem.patch, riscv-fmax-fmin-nan.patch, + riscv-kernel-sigaction.patch, riscv-readelflib.patch, + riscv-tls-init.patch: Removed +- glibc_post_upgrade.c: Don't reload init (bsc#1103124) + +------------------------------------------------------------------- Old: ---- aarch64-sys-ptrace-update.patch crypt_blowfish-1.2-hack_around_arm.diff crypt_blowfish-1.2-sha.diff crypt_blowfish-1.3.tar.gz crypt_blowfish-const.patch crypt_blowfish-gensalt.patch glibc-2.14-crypt.diff glibc-2.27.tar.xz glibc-2.27.tar.xz.sig i386-memmove-sse2-unaligned.patch i386-sigaction-sa-restorer.patch mempcpy-avx512.patch netgroup-cache-keys.patch nss-database-multiple-dfn.patch pkey-get-reserved-name.patch powerpc-sys-ptrace-undefine-macros.patch powerpc-sys-ptrace-update.patch realpath-ssize-max-overflow.patch res-send-enomem.patch riscv-fmax-fmin-nan.patch riscv-kernel-sigaction.patch riscv-readelflib.patch riscv-tls-init.patch New: ---- glibc-2.29.tar.xz glibc-2.29.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ glibc.spec ++++++ --- /var/tmp/diff_new_pack.NdGneO/_old 2019-02-08 12:04:15.001675432 +0100 +++ /var/tmp/diff_new_pack.NdGneO/_new 2019-02-08 12:04:15.009675429 +0100 @@ -1,7 +1,7 @@ # # spec file for package glibc # -# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -20,7 +20,6 @@ # It will avoid building some parts of glibc %bcond_with fast_build -%define crypt_bf_version 1.3 %define build_snapshot 0 %bcond_with ringdisabled @@ -64,6 +63,7 @@ BuildRequires: libselinux-devel BuildRequires: makeinfo BuildRequires: pwdutils +BuildRequires: python3-base BuildRequires: systemd-rpm-macros BuildRequires: systemtap-headers BuildRequires: xz @@ -71,11 +71,15 @@ BuildRequires: gcc-c++ BuildRequires: gdb BuildRequires: glibc-devel-static +# BZ #24113 +#BuildRequires: libidn2-0 BuildRequires: libstdc++-devel BuildRequires: python3-pexpect %endif %if %{build_utils} BuildRequires: gd-devel +BuildRequires: libpng-devel +BuildRequires: zlib-devel %endif %if "%flavor" == "i686" ExclusiveArch: i586 i686 @@ -146,10 +150,10 @@ %define enablekernel 4.15 %endif -Version: 2.27 +Version: 2.29 Release: 0 %if !%{build_snapshot} -%define git_id 3260f6ce87b7 +%define git_id 56c86f5dd516 %define libversion %version %else %define git_id %(echo %version | sed 's/.*\.g//') @@ -173,10 +177,6 @@ # For systemd Source20: nscd.conf Source21: nscd.service -# crypt_blowfish -Source50: http://www.openwall.com/crypt/crypt_blowfish-%{crypt_bf_version}.tar.gz -# The sign key uses MD5 which is no longer accepted by gpg -#Source51: http://www.openwall.com/crypt/crypt_blowfish-%{crypt_bf_version}.tar.gz.sign %if %{build_main} # ngpt was used in 8.1 and SLES8 @@ -230,16 +230,6 @@ # openSUSE specific patches - won't go upstream ### ### openSUSE extensions, configuration -# PATCH-FEATURE-OPENSUSE -- add crypt_blowfish support - bnc#700876 -Patch1: glibc-2.14-crypt.diff -# PATCH-FEATURE-OPENSUSE constify crypt_blowfish -Patch2: crypt_blowfish-const.patch -# PATCH-FEATURE-OPENSUSE -- add sha support to crypt_blowfish lnus...@suse.de -Patch3: crypt_blowfish-1.2-sha.diff -# PATCH-FEATURE-OPENSUSE Move crypt_gensalt_rn to separate library -Patch4: crypt_blowfish-gensalt.patch -# PATCH-FEATURE-OPENSUSE Avoid build failure on noexecstack marker on ARM dmuel...@suse.de -Patch5: crypt_blowfish-1.2-hack_around_arm.diff # PATCH-FIX-OPENSUSE Fix path for nscd databases Patch6: glibc-2.3.3-nscd-db-path.diff # PATCH-FIX-OPENSUSE Fix path for nss_db (bnc#753657) - a...@suse.de @@ -280,36 +270,6 @@ ### # Patches from upstream ### -# PATCH-FIX-UPSTREAM Fix parsing flags in ELF64 files (BZ #22827) -Patch1000: riscv-readelflib.patch -# PATCH-FIX-UPSTREAM Fix multiple definitions of __nss_*_database (BZ #22918) -Patch1001: nss-database-multiple-dfn.patch -# PATCH-FIX-UPSTREAM Linux: use reserved name __key in pkey_get (BZ #22797) -Patch1002: pkey-get-reserved-name.patch -# PATCH-FIX-UPSTREAM linux/aarch64: sync sys/ptrace.h with Linux 4.15 (BZ #22433) -Patch1003: aarch64-sys-ptrace-update.patch -# PATCH-FIX-UPSTREAM powerpc: Undefine Linux ptrace macros that conflict with __ptrace_request -Patch1004: powerpc-sys-ptrace-undefine-macros.patch -# PATCH-FIX-UPSTREAM linux/powerpc: sync sys/ptrace.h with Linux 4.15 (BZ #22433, BZ #22807) -Patch1005: powerpc-sys-ptrace-update.patch -# PATCH-FIX-UPSTREAM Fix netgroup cache keys (BZ #22342) -Patch1006: netgroup-cache-keys.patch -# PATCH-FIX-UPSTREAM i386: Fix i386 sigaction sa_restorer initialization (BZ #21269) -Patch1007: i386-sigaction-sa-restorer.patch -# PATCH-FIX-UPSTREAM RISC-V: Do not initialize $gp in TLS macros -Patch1008: riscv-tls-init.patch -# PATCH-FIX-UPSTREAM RISC-V: fmax/fmin: Handle signalling NaNs correctly (BZ #22884) -Patch1009: riscv-fmax-fmin-nan.patch -# PATCH-FIX-UPSTREAM Fix crash in resolver on memory allocation failure (BZ #23005) -Patch1010: res-send-enomem.patch -# PATCH-FIX-UPSTREAM memmove-sse2-unaligned on 32bit x86 produces garbage when crossing 2GB threshold (CVE-2017-18269, BZ #22644) -Patch1011: i386-memmove-sse2-unaligned.patch -# PATCH-FIX-UPSTREAM __mempcpy_avx512_no_vzeroupper mishandles large copies (CVE-2018-11237, BZ #23196) -Patch1012: mempcpy-avx512.patch -# PATCH-FIX-UPSTREAM realpath-ssize-max-overflow.patch: Fix overflow in path length computation (CVE-2018-11236, BZ #22786) -Patch1013: realpath-ssize-max-overflow.patch -# PATCH-FIX-UPSTREAM RISC-V: fix struct kernel_sigaction to match the kernel version (BZ #23069) -Patch1014: riscv-kernel-sigaction.patch ### # Patches awaiting upstream approval @@ -391,12 +351,22 @@ not necessary to install this packages, the data files are already created. -%package locale -Summary: Locale Data for Localized Programs +%package locale-base +Summary: en_US Locale Data for Localized Programs License: GPL-2.0-or-later AND MIT AND LGPL-2.1-or-later Group: System/Libraries Requires(post): /bin/cat Requires: glibc = %{version} + +%description locale-base +Locale data for the internationalisation features of the GNU C library. +This package contains only the U.S. English locale. + +%package locale +Summary: Locale Data for Localized Programs +License: GPL-2.0-or-later AND MIT AND LGPL-2.1-or-later +Group: System/Libraries +Requires: glibc-locale-base = %{version} # bug437293 %ifarch ppc64 Obsoletes: glibc-locale-64bit @@ -453,6 +423,7 @@ Obsoletes: glibc-devel-32bit %endif Requires: glibc = %{version} +Requires: libxcrypt-devel Requires: linux-kernel-headers %description devel @@ -464,6 +435,7 @@ License: BSD-3-Clause AND LGPL-2.1-or-later AND LGPL-2.1-or-later WITH GCC-exception-2.0 AND GPL-2.0-or-later Group: Development/Libraries/C and C++ Requires: %{name}-devel = %{version} +Requires: libxcrypt-devel-static # Provide Fedora name for package to make packaging easier Provides: %{name}-static = %{version} @@ -489,18 +461,6 @@ %prep %setup -n glibc-%{version} -q -a 4 -# Owl crypt_blowfish -tar -xzf %SOURCE50 -pushd crypt_blowfish-%{crypt_bf_version} -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -popd -mv crypt/{crypt.h,gnu-crypt.h} -mv crypt_blowfish-%crypt_bf_version/*.[chS] crypt/ -# -%patch1 -p1 %patch6 -p1 %patch7 -p1 %patch8 -p1 @@ -519,22 +479,6 @@ %patch304 -p1 %patch306 -p1 -%patch1000 -p1 -%patch1001 -p1 -%patch1002 -p1 -%patch1003 -p1 -%patch1004 -p1 -%patch1005 -p1 -%patch1006 -p1 -%patch1007 -p1 -%patch1008 -p1 -%patch1009 -p1 -%patch1010 -p1 -%patch1011 -p1 -%patch1012 -p1 -%patch1013 -p1 -%patch1014 -p1 - %patch2000 -p1 %patch2004 -p1 %patch2005 -p1 @@ -601,7 +545,6 @@ BuildFlags=$(echo $BuildFlags | sed -e 's#-fstack-protector[^ ]*##' -e 's#-ffortify=[0-9]*##') BuildCC="%__cc" BuildCCplus="%__cxx" -add_ons=libidn # #now overwrite for some architectures # @@ -670,7 +613,6 @@ CC="$BuildCC" CXX="$BuildCCplus" \ --prefix=%{_prefix} \ --libexecdir=%{_libexecdir} --infodir=%{_infodir} \ - --enable-add-ons=$add_ons \ $profile \ "$@" \ --build=%{target} --host=%{target} \ @@ -692,8 +634,8 @@ --with-bugurl=http://bugs.opensuse.org \ --enable-bind-now \ --enable-systemtap \ - --disable-timezone-tools -# Should we enable --enable-nss-crypt to build use freebl3 hash functions? + --disable-timezone-tools \ + --disable-crypt # explicitly set CFLAGS to use the full CFLAGS (not the reduced one for configure) make %{?_smp_mflags} CFLAGS="$cflags" BUILD_CFLAGS="$cflags" cd .. @@ -752,29 +694,35 @@ # # Build glibc_post_upgrade binary # -$BuildCC -static %{optflags} -Os $RPM_SOURCE_DIR/glibc_post_upgrade.c -o glibc_post_upgrade \ - -Lcc-base -Bcc-base/csu \ - '-DREMOVE_TLS_DIRS' '-DREMOVE_PPC_OPTIMIZE_POWER5' \ +mkdir glibc-post-upgrade +cat > glibc-post-upgrade/Makefile <<\EOF +subdir := glibc-post-upgrade +include ../Makeconfig +vpath %.c $(dir %{SOURCE8}) +others = glibc_post_upgrade +others-static = glibc_post_upgrade +libof-glibc_post_upgrade = glibc_post_upgrade +$(objpfx)glibc_post_upgrade: $(common-objpfx)elf/static-stubs.o +CFLAGS-glibc_post_upgrade.o = \ + -Os -Wno-write-strings -DREMOVE_TLS_DIRS -DREMOVE_PPC_OPTIMIZE_POWER5 \ %ifarch ppc ppc64 %if !%{powerpc_optimize_cpu_power4} - '-DREMOVE_PPC_OPTIMIZE_POWER4' \ + -DREMOVE_PPC_OPTIMIZE_POWER4 \ %endif %if !%{powerpc_optimize_cpu_power6} - '-DREMOVE_PPC_OPTIMIZE_POWER6' \ + -DREMOVE_PPC_OPTIMIZE_POWER6 \ %endif %if !%{powerpc_optimize_cpu_power7} - '-DREMOVE_PPC_OPTIMIZE_POWER7' \ + -DREMOVE_PPC_OPTIMIZE_POWER7 \ %endif %if !%{powerpc_optimize_cpu_cell} - '-DREMOVE_PPC_OPTIMIZE_CELL' \ + -DREMOVE_PPC_OPTIMIZE_CELL \ %endif %endif - '-DLIBDIR="/%{_lib}"' '-DGCONV_MODULES_DIR="%{_libdir}/gconv"' - -# crypt_blowfish man pages -pushd crypt_blowfish-%{crypt_bf_version} -make man -popd + -DLIBDIR='"/%{_lib}"' -DGCONV_MODULES_DIR='"%{_libdir}/gconv"' +include ../Rules +EOF +make -C cc-base subdirs=glibc-post-upgrade glibc-post-upgrade/others %check %if %{build_testsuite} @@ -902,10 +850,13 @@ # this will not work if we generate them in parallel. # thus we need to run fdupes on /usr/lib/locale/ # Still, on my system this is a speed advantage: - # non-parallel build for install-locales: 9:34mins + # non-parallel build for install-locale-files: 9:34mins # parallel build with fdupes: 7:08mins - make %{?_smp_mflags} install_root=%{buildroot} localedata/install-locales + make %{?_smp_mflags} install_root=%{buildroot} localedata/install-locale-files + # Avoid hardlinks across subpackages + mv %{buildroot}/usr/lib/locale/{en_US,C}.utf8 . %fdupes %{buildroot}/usr/lib/locale + mv {en_US,C}.utf8 %{buildroot}/usr/lib/locale/ cd .. %endif # Create file list for glibc-locale package @@ -913,7 +864,7 @@ # Miscelanna: -install -m 0700 glibc_post_upgrade %{buildroot}%{_sbindir} +install -m 0700 cc-base/glibc-post-upgrade/glibc_post_upgrade %{buildroot}%{_sbindir} install -m 644 %{SOURCE7} %{buildroot}/etc install -m 644 %{SOURCE5} %{buildroot}/etc @@ -933,12 +884,6 @@ cd manpages; make install_root=%{buildroot} install; cd .. -# crypt_blowfish man pages -pushd crypt_blowfish-%{crypt_bf_version} -install -m755 -d %{buildroot}%{_mandir}/man3 -install -m644 *.3 %{buildroot}%{_mandir}/man3 -popd - # nscd tools: %ifnarch i686 @@ -1064,7 +1009,7 @@ %post -p %{_sbindir}/glibc_post_upgrade %postun -p /sbin/ldconfig -%post locale +%post locale-base for l in /usr/share/locale/locale.alias %{_libdir}/gconv/gconv-modules; do [ -d "$l.d" ] || continue echo "###X# The following is autogenerated from extra files in the .d directory:" >>"$l" @@ -1170,12 +1115,6 @@ /%{_lib}/libanl.so.1 /%{_lib}/libc-%{libversion}.so /%{_lib}/libc.so.6* -/%{_lib}/libcidn-%{libversion}.so -/%{_lib}/libcidn.so.1 -/%{_lib}/libcrypt-%{libversion}.so -/%{_lib}/libcrypt.so.1 -/%{_lib}/libowcrypt-%{libversion}.so -/%{_lib}/libowcrypt.so.1 /%{_lib}/libdl-%{libversion}.so /%{_lib}/libdl.so.2* /%{_lib}/libm-%{libversion}.so @@ -1251,14 +1190,24 @@ %{_sbindir}/glibc_post_upgrade %{_sbindir}/iconvconfig -%files locale -f libc.lang +%files locale-base -f libc.lang %defattr(-,root,root) %{_datadir}/locale/locale.alias %if %{build_locales} - /usr/lib/locale +%dir %{_prefix}/lib/locale +%{_prefix}/lib/locale/C.utf8 +%{_prefix}/lib/locale/en_US.utf8 %endif %{_libdir}/gconv +%files locale +%defattr(-,root,root) +%if %{build_locales} +%{_prefix}/lib/locale +%exclude %{_prefix}/lib/locale/C.utf8 +%exclude %{_prefix}/lib/locale/en_US.utf8 +%endif + %files devel %defattr(-,root,root) %license COPYING COPYING.LIB @@ -1281,15 +1230,12 @@ %ifarch x86_64 %{_libdir}/libmvec_nonshared.a %endif -%{_libdir}/libpthread_nonshared.a %files devel-static %defattr(-,root,root) %{_libdir}/libBrokenLocale.a %{_libdir}/libanl.a %{_libdir}/libc.a -%{_libdir}/libcrypt.a -%{_libdir}/libowcrypt.a %{_libdir}/libdl.a %{_libdir}/libm.a %ifarch x86_64 @@ -1347,8 +1293,6 @@ %ifarch x86_64 %{_libdir}/libmvec_p.a %endif -%{_libdir}/libcrypt_p.a -%{_libdir}/libowcrypt_p.a %{_libdir}/libpthread_p.a %{_libdir}/libresolv_p.a %{_libdir}/librt_p.a ++++++ baselibs.conf ++++++ --- /var/tmp/diff_new_pack.NdGneO/_old 2019-02-08 12:04:15.073675405 +0100 +++ /var/tmp/diff_new_pack.NdGneO/_new 2019-02-08 12:04:15.077675404 +0100 @@ -8,10 +8,11 @@ prereq -glibc-x86 +/usr/lib/getconf/[^g] +/usr/sbin/iconvconfig -> /usr/sbin/iconvconfig-<extension> -glibc-locale +glibc-locale-base arch i586 block! +/usr/lib(64)?/gconv/gconv-modules targettype x86 -/usr/lib(64)?/gconv/gconv-modules + obsoletes "glibc-locale-<targettype>" glibc-devel requires "glibc-<targettype> = %version" arch i586 block! ++++++ fix-locking-in-_IO_cleanup.patch ++++++ --- /var/tmp/diff_new_pack.NdGneO/_old 2019-02-08 12:04:15.109675392 +0100 +++ /var/tmp/diff_new_pack.NdGneO/_new 2019-02-08 12:04:15.109675392 +0100 @@ -3,7 +3,7 @@ During exit, skip files that are currently locked to avoid deadlock. [BZ #15142] - * include/bits/libio.h (_IO_ftrylockfile) [_IO_MTSAVE_IO]: Define. + * libio/libio.h (_IO_ftrylockfile) [_IO_MTSAVE_IO]: Define. * libio/genops.c (_IO_flush_all_lockp): Make static. Rename argument to skip_locked, callers changed. Skip files that are locked if skip_locked. @@ -11,10 +11,10 @@ files. * libio/libioP.h (_IO_flush_all_lockp): Don't declare. -Index: glibc-2.27/include/bits/libio.h +Index: glibc-2.27/libio/libio.h =================================================================== ---- glibc-2.27.orig/include/bits/libio.h -+++ glibc-2.27/include/bits/libio.h +--- glibc-2.27.orig/libio/libio.h ++++ glibc-2.27/libio/libio.h @@ -33,11 +33,15 @@ libc_hidden_proto (_IO_vfscanf) if (((_fp)->_flags & _IO_USER_LOCK) == 0) _IO_lock_lock (*(_fp)->_lock) # define _IO_funlockfile(_fp) \ @@ -35,9 +35,9 @@ =================================================================== --- glibc-2.27.orig/libio/genops.c +++ glibc-2.27/libio/genops.c -@@ -744,8 +744,8 @@ _IO_get_column (_IO_FILE *fp) - #endif - +@@ -744,8 +744,8 @@ _IO_adjust_column (unsigned start, const + } + libc_hidden_def (_IO_adjust_column) -int -_IO_flush_all_lockp (int do_lock) @@ -45,9 +45,9 @@ +_IO_flush_all_lockp (bool skip_locked) { int result = 0; - struct _IO_FILE *fp; + FILE *fp; @@ -758,7 +758,16 @@ _IO_flush_all_lockp (int do_lock) - for (fp = (_IO_FILE *) _IO_list_all; fp != NULL; fp = fp->_chain) + for (fp = (FILE *) _IO_list_all; fp != NULL; fp = fp->_chain) { run_fp = fp; - if (do_lock) @@ -85,7 +85,7 @@ @@ -852,22 +860,18 @@ _IO_unbuffer_all (void) - for (fp = (_IO_FILE *) _IO_list_all; fp; fp = fp->_chain) + for (fp = (FILE *) _IO_list_all; fp; fp = fp->_chain) { + run_fp = fp; + /* Skip files that are currently locked. */ @@ -151,9 +151,9 @@ =================================================================== --- glibc-2.27.orig/libio/libioP.h +++ glibc-2.27/libio/libioP.h -@@ -486,7 +486,6 @@ extern int _IO_new_do_write (_IO_FILE *, - extern int _IO_old_do_write (_IO_FILE *, const char *, _IO_size_t); - extern int _IO_wdo_write (_IO_FILE *, const wchar_t *, _IO_size_t); +@@ -486,7 +486,6 @@ extern int _IO_new_do_write (FILE *, con + extern int _IO_old_do_write (FILE *, const char *, size_t); + extern int _IO_wdo_write (FILE *, const wchar_t *, size_t); libc_hidden_proto (_IO_wdo_write) -extern int _IO_flush_all_lockp (int); extern int _IO_flush_all (void); ++++++ fnmatch-collating-elements.patch ++++++ --- /var/tmp/diff_new_pack.NdGneO/_old 2019-02-08 12:04:15.121675387 +0100 +++ /var/tmp/diff_new_pack.NdGneO/_new 2019-02-08 12:04:15.121675387 +0100 @@ -1,4 +1,8 @@ -Fix fnmatch handling of collating elements (BZ #17396, BZ #16976) +Fix handling of collating elements in fnmatch (bug 17396, bug 16976) + +This fixes the same bug in fnmatch that was fixed by commit 7e2f0d2d77 for +regexp matching. As a side effect it also removes the use of an unbound +VLA. [BZ #16976] [BZ #17396] @@ -6,14 +10,34 @@ looking up collating elements match against (wide) character sequence instead of name. Correct alignment adjustment. * posix/fnmatch.c: Don't include "../locale/elem-hash.h". + (WMEMCMP) [HANDLE_MULTIBYTE]: Define. * posix/Makefile (tests): Add tst-fnmatch4 and tst-fnmatch5. + (LOCALES): Add cs_CZ.ISO-8859-2. * posix/tst-fnmatch4.c: New file. * posix/tst-fnmatch5.c: New file. + * include/wchar.h (__wmemcmp): Declare. + * wcsmbs/wmemcmp.c: Define __wmemcmp and add wmemcmp as weak alias. + * sysdeps/i386/i686/multiarch/wmemcmp.c: Likewise. + * sysdeps/x86_64/multiarch/wmemcmp.c: Likewise. + * sysdeps/s390/wmemcmp.c: Likewise. -Index: glibc-2.27/posix/Makefile +Index: glibc-2.28/include/wchar.h +=================================================================== +--- glibc-2.28.orig/include/wchar.h ++++ glibc-2.28/include/wchar.h +@@ -143,6 +143,8 @@ libc_hidden_proto (wmemchr) + libc_hidden_proto (__wmemchr) + libc_hidden_proto (wmemset) + libc_hidden_proto (__wmemset) ++extern int __wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) ++ __THROW __attribute_pure__; + + /* Now define the internal interfaces. */ + extern int __wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) +Index: glibc-2.28/posix/Makefile =================================================================== ---- glibc-2.27.orig/posix/Makefile -+++ glibc-2.27/posix/Makefile +--- glibc-2.28.orig/posix/Makefile ++++ glibc-2.28/posix/Makefile @@ -92,6 +92,7 @@ tests := test-errno tstgetopt testfnm r bug-getopt5 tst-getopt_long1 bug-regex34 bug-regex35 \ tst-pathconf tst-rxspencer-no-utf8 \ @@ -22,10 +46,20 @@ tst-posix_spawn-fd tst-posix_spawn-setsid \ tst-posix_fadvise tst-posix_fadvise64 \ tst-sysconf-empty-chroot tst-glob_symlinks tst-fexecve \ -Index: glibc-2.27/posix/fnmatch.c +@@ -166,7 +167,8 @@ $(objpfx)wordexp-tst.out: wordexp-tst.sh + endif + + LOCALES := cs_CZ.UTF-8 da_DK.ISO-8859-1 de_DE.ISO-8859-1 de_DE.UTF-8 \ +- en_US.UTF-8 es_US.ISO-8859-1 es_US.UTF-8 ja_JP.EUC-JP tr_TR.UTF-8 ++ en_US.UTF-8 es_US.ISO-8859-1 es_US.UTF-8 ja_JP.EUC-JP tr_TR.UTF-8 \ ++ cs_CZ.ISO-8859-2 + include ../gen-locales.mk + + $(objpfx)bug-regex1.out: $(gen-locales) +Index: glibc-2.28/posix/fnmatch.c =================================================================== ---- glibc-2.27.orig/posix/fnmatch.c -+++ glibc-2.27/posix/fnmatch.c +--- glibc-2.28.orig/posix/fnmatch.c ++++ glibc-2.28/posix/fnmatch.c @@ -53,7 +53,6 @@ we support a correct implementation only in glibc. */ #ifdef _LIBC @@ -34,10 +68,22 @@ # include "../locale/coll-lookup.h" # include <shlib-compat.h> -Index: glibc-2.27/posix/fnmatch_loop.c +@@ -237,6 +236,11 @@ __wcschrnul (const wchar_t *s, wint_t c) + # define MEMPCPY(D, S, N) __wmempcpy (D, S, N) + # define MEMCHR(S, C, N) __wmemchr (S, C, N) + # define STRCOLL(S1, S2) wcscoll (S1, S2) ++# ifdef _LIBC ++# define WMEMCMP(S1, S2, N) __wmemcmp (S1, S2, N) ++# else ++# define WMEMCMP(S1, S2, N) wmemcmp (S1, S2, N) ++# endif + # define WIDE_CHAR_VERSION 1 + /* Change the name the header defines so it doesn't conflict with + the <locale/weight.h> version included above. */ +Index: glibc-2.28/posix/fnmatch_loop.c =================================================================== ---- glibc-2.27.orig/posix/fnmatch_loop.c -+++ glibc-2.27/posix/fnmatch_loop.c +--- glibc-2.28.orig/posix/fnmatch_loop.c ++++ glibc-2.28/posix/fnmatch_loop.c @@ -494,26 +494,12 @@ FCT (const CHAR *pattern, const CHAR *st { int32_t table_size; @@ -62,12 +108,12 @@ - for (strcnt = 0; strcnt < c1; ++strcnt) - str[strcnt] = startp[1 + strcnt]; -#endif -+ int32_t *wextra; ++ CHAR *wextra; +# endif table_size = _NL_CURRENT_WORD (LC_COLLATE, -@@ -525,71 +511,55 @@ FCT (const CHAR *pattern, const CHAR *st +@@ -525,71 +511,54 @@ FCT (const CHAR *pattern, const CHAR *st _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB); @@ -115,13 +161,13 @@ + /* Adjust for the alignment. */ + idx = (idx + 3) & ~3; + -+ wextra = (int32_t *) &extra[idx + 4]; ++ wextra = (CHAR *) &extra[idx + 4]; + + if (/* Compare the length of the sequence. */ + c1 == wextra[0] + /* Compare the wide char sequence. */ -+ && memcmp (startp + 1, &wextra[1], -+ c1 * sizeof (UCHAR)) == 0) ++ && WMEMCMP (startp + 1, &wextra[1], ++ c1) == 0) + /* Yep, this is the entry. */ + break; +# else @@ -142,12 +188,12 @@ this is not part of a range. */ -# if WIDE_CHAR_VERSION - int32_t *wextra; -+ if (! is_range - +- - idx += 1 + extra[idx]; - /* Adjust for the alignment. */ - idx = (idx + 3) & ~3; -- ++ if (! is_range + - wextra = (int32_t *) &extra[idx + 4]; -# endif - @@ -162,8 +208,7 @@ - - if ((int32_t) c1 == wextra[idx]) - goto matched; -+ && memcmp (n, &wextra[1], -+ c1 * sizeof (UCHAR)) == 0 ++ && WMEMCMP (n, &wextra[1], c1) == 0 # else - for (c1 = 0; c1 < extra[idx]; ++c1) - if (n[c1] != extra[1 + c1]) @@ -180,7 +225,7 @@ } /* Get the collation sequence value. */ -@@ -597,9 +567,9 @@ FCT (const CHAR *pattern, const CHAR *st +@@ -597,9 +566,9 @@ FCT (const CHAR *pattern, const CHAR *st # if WIDE_CHAR_VERSION cold = wextra[1 + wextra[idx]]; # else @@ -192,7 +237,7 @@ cold = *((int32_t *) &extra[idx]); # endif -@@ -609,10 +579,10 @@ FCT (const CHAR *pattern, const CHAR *st +@@ -609,10 +578,10 @@ FCT (const CHAR *pattern, const CHAR *st { /* No valid character. Match it as a single byte. */ @@ -205,7 +250,7 @@ c = *p++; } else -@@ -620,7 +590,6 @@ FCT (const CHAR *pattern, const CHAR *st +@@ -620,7 +589,6 @@ FCT (const CHAR *pattern, const CHAR *st } } else @@ -213,7 +258,7 @@ #endif { c = FOLD (c); -@@ -712,25 +681,11 @@ FCT (const CHAR *pattern, const CHAR *st +@@ -712,25 +680,11 @@ FCT (const CHAR *pattern, const CHAR *st { int32_t table_size; const int32_t *symb_table; @@ -236,11 +281,11 @@ - representation is UCS4. */ - for (strcnt = 0; strcnt < c1; ++strcnt) - str[strcnt] = startp[1 + strcnt]; -+ int32_t *wextra; ++ CHAR *wextra; # endif table_size = -@@ -743,51 +698,44 @@ FCT (const CHAR *pattern, const CHAR *st +@@ -743,71 +697,63 @@ FCT (const CHAR *pattern, const CHAR *st _NL_CURRENT (LC_COLLATE, _NL_COLLATE_SYMB_EXTRAMB); @@ -301,14 +346,14 @@ + /* Adjust for the alignment. */ + idx = (idx + 3) & ~3; + -+ wextra = (int32_t *) &extra[idx + 4]; ++ wextra = (CHAR *) &extra[idx + 4]; + + if (/* Compare the length of the + sequence. */ + c1 == wextra[0] + /* Compare the wide char sequence. */ -+ && memcmp (startp + 1, &wextra[1], -+ c1 * sizeof (int32_t)) == 0) ++ && WMEMCMP (startp + 1, &wextra[1], ++ c1) == 0) + /* Yep, this is the entry. */ + break; +# else @@ -328,11 +373,12 @@ /* Get the collation sequence value. */ is_seqval = 1; # if WIDE_CHAR_VERSION -@@ -795,19 +743,18 @@ FCT (const CHAR *pattern, const CHAR *st + cend = wextra[1 + wextra[idx]]; # else - /* Adjust for the alignment. */ +- /* Adjust for the alignment. */ idx += 1 + extra[idx]; - idx = (idx + 3) & ~4; ++ /* Adjust for the alignment. */ + idx = (idx + 3) & ~3; cend = *((int32_t *) &extra[idx]); # endif @@ -351,13 +397,13 @@ } else { -Index: glibc-2.27/posix/tst-fnmatch4.c +Index: glibc-2.28/posix/tst-fnmatch4.c =================================================================== --- /dev/null -+++ glibc-2.27/posix/tst-fnmatch4.c -@@ -0,0 +1,51 @@ ++++ glibc-2.28/posix/tst-fnmatch4.c +@@ -0,0 +1,41 @@ +/* Test for fnmatch handling of collating elements -+ Copyright (C) 2015 Free Software Foundation, Inc. ++ Copyright (C) 2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or @@ -377,43 +423,33 @@ +#include <stdio.h> +#include <locale.h> +#include <fnmatch.h> ++#include <support/check.h> + -+static int ++static void +do_test_locale (const char *locale) +{ -+ const char *pattern = "[[.ll.]]"; ++ TEST_VERIFY_EXIT (setlocale (LC_ALL, locale) != NULL); + -+ if (setlocale (LC_ALL, locale) == NULL) -+ { -+ printf ("could not set locale %s\n", locale); -+ return 1; -+ } -+ -+ if (fnmatch (pattern, "ll", 0) != 0) -+ { -+ printf ("%s didn't match in locale %s\n", pattern, locale); -+ return 1; -+ } -+ -+ return 0; ++ TEST_VERIFY (fnmatch ("[[.ch.]]", "ch", 0) == 0); +} + +static int +do_test (void) +{ -+ return (do_test_locale ("es_US.ISO-8859-1") -+ || do_test_locale ("es_US.UTF-8")); ++ do_test_locale ("cs_CZ.ISO-8859-2"); ++ do_test_locale ("cs_CZ.UTF-8"); ++ ++ return 0; +} + -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" -Index: glibc-2.27/posix/tst-fnmatch5.c ++#include <support/test-driver.c> +Index: glibc-2.28/posix/tst-fnmatch5.c =================================================================== --- /dev/null -+++ glibc-2.27/posix/tst-fnmatch5.c -@@ -0,0 +1,53 @@ ++++ glibc-2.28/posix/tst-fnmatch5.c +@@ -0,0 +1,46 @@ +/* Test for fnmatch handling of collating elements -+ Copyright (C) 2015 Free Software Foundation, Inc. ++ Copyright (C) 2019 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or @@ -434,19 +470,17 @@ +#include <locale.h> +#include <stdio.h> +#include <string.h> ++#include <support/check.h> + +#define LENGTH 20000000 + -+char pattern[LENGTH + 7]; ++static char pattern[LENGTH + 7]; + +static int +do_test (void) +{ -+ if (setlocale (LC_ALL, "en_US.UTF-8") == NULL) -+ { -+ puts ("could not set locale"); -+ return 1; -+ } ++ TEST_VERIFY_EXIT (setlocale (LC_ALL, "en_US.UTF-8") != NULL); ++ + pattern[0] = '['; + pattern[1] = '['; + pattern[2] = '.'; @@ -454,14 +488,85 @@ + pattern[LENGTH + 3] = '.'; + pattern[LENGTH + 4] = ']'; + pattern[LENGTH + 5] = ']'; -+ int ret = fnmatch (pattern, "a", 0); -+ if (ret == 0) -+ { -+ puts ("fnmatch returned 0 for invalid pattern"); -+ return 1; -+ } ++ TEST_VERIFY (fnmatch (pattern, "a", 0) != 0); ++ + return 0; +} + -+#define TEST_FUNCTION do_test () -+#include "../test-skeleton.c" ++#include <support/test-driver.c> +Index: glibc-2.28/sysdeps/i386/i686/multiarch/wmemcmp.c +=================================================================== +--- glibc-2.28.orig/sysdeps/i386/i686/multiarch/wmemcmp.c ++++ glibc-2.28/sysdeps/i386/i686/multiarch/wmemcmp.c +@@ -26,5 +26,6 @@ + # define SYMBOL_NAME wmemcmp + # include "ifunc-ssse3-sse4_2.h" + +-libc_ifunc_redirected (__redirect_wmemcmp, wmemcmp, IFUNC_SELECTOR ()); ++libc_ifunc_redirected (__redirect_wmemcmp, __wmemcmp, IFUNC_SELECTOR ()); ++weak_alias (__wmemcmp, wmemcmp) + #endif +Index: glibc-2.28/sysdeps/s390/wmemcmp.c +=================================================================== +--- glibc-2.28.orig/sysdeps/s390/wmemcmp.c ++++ glibc-2.28/sysdeps/s390/wmemcmp.c +@@ -23,16 +23,17 @@ + # include <ifunc-resolve.h> + + # if HAVE_WMEMCMP_C +-extern __typeof (wmemcmp) WMEMCMP_C attribute_hidden; ++extern __typeof (__wmemcmp) WMEMCMP_C attribute_hidden; + # endif + + # if HAVE_WMEMCMP_Z13 +-extern __typeof (wmemcmp) WMEMCMP_Z13 attribute_hidden; ++extern __typeof (__wmemcmp) WMEMCMP_Z13 attribute_hidden; + # endif + +-s390_libc_ifunc_expr (wmemcmp, wmemcmp, ++s390_libc_ifunc_expr (__wmemcmp, __wmemcmp, + (HAVE_WMEMCMP_Z13 && (hwcap & HWCAP_S390_VX)) + ? WMEMCMP_Z13 + : WMEMCMP_DEFAULT + ) ++weak_alias (__wmemcmp, wmemcmp) + #endif +Index: glibc-2.28/sysdeps/x86_64/multiarch/wmemcmp.c +=================================================================== +--- glibc-2.28.orig/sysdeps/x86_64/multiarch/wmemcmp.c ++++ glibc-2.28/sysdeps/x86_64/multiarch/wmemcmp.c +@@ -26,5 +26,6 @@ + # define SYMBOL_NAME wmemcmp + # include "ifunc-memcmp.h" + +-libc_ifunc_redirected (__redirect_wmemcmp, wmemcmp, IFUNC_SELECTOR ()); ++libc_ifunc_redirected (__redirect_wmemcmp, __wmemcmp, IFUNC_SELECTOR ()); ++weak_alias (__wmemcmp, wmemcmp) + #endif +Index: glibc-2.28/wcsmbs/wmemcmp.c +=================================================================== +--- glibc-2.28.orig/wcsmbs/wmemcmp.c ++++ glibc-2.28/wcsmbs/wmemcmp.c +@@ -18,12 +18,12 @@ + + #include <wchar.h> + +-#ifndef WMEMCMP +-# define WMEMCMP wmemcmp ++#ifdef WMEMCMP ++# define __wmemcmp WMEMCMP + #endif + + int +-WMEMCMP (const wchar_t *s1, const wchar_t *s2, size_t n) ++__wmemcmp (const wchar_t *s1, const wchar_t *s2, size_t n) + { + wchar_t c1; + wchar_t c2; +@@ -81,3 +81,6 @@ WMEMCMP (const wchar_t *s1, const wchar_ + + return 0; + } ++#ifndef WMEMCMP ++weak_alias (__wmemcmp, wmemcmp) ++#endif ++++++ glibc-2.27.tar.xz -> glibc-2.29.tar.xz ++++++ /work/SRC/openSUSE:Factory/glibc/glibc-2.27.tar.xz /work/SRC/openSUSE:Factory/.glibc.new.28833/glibc-2.29.tar.xz differ: char 25, line 1 ++++++ glibc-version.diff ++++++ --- /var/tmp/diff_new_pack.NdGneO/_old 2019-02-08 12:04:15.189675362 +0100 +++ /var/tmp/diff_new_pack.NdGneO/_new 2019-02-08 12:04:15.189675362 +0100 @@ -8,7 +8,7 @@ static const char banner[] = -"GNU C Library "PKGVERSION RELEASE" release version "VERSION".\n\ +"GNU C Library "PKGVERSION RELEASE" release version "VERSION" (git "GITID").\n\ - Copyright (C) 2018 Free Software Foundation, Inc.\n\ + Copyright (C) 2019 Free Software Foundation, Inc.\n\ This is free software; see the source for copying conditions.\n\ There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A\n\ PARTICULAR PURPOSE.\n\ ++++++ glibc_post_upgrade.c ++++++ --- /var/tmp/diff_new_pack.NdGneO/_old 2019-02-08 12:04:15.237675343 +0100 +++ /var/tmp/diff_new_pack.NdGneO/_new 2019-02-08 12:04:15.241675342 +0100 @@ -1,6 +1,8 @@ /* skeleton based on version from Fedora Core 3 */ -#define _GNU_SOURCE +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif #include <sys/types.h> #include <sys/wait.h> @@ -26,14 +28,10 @@ __attribute__((noinline)) void says (const char *str); __attribute__((noinline)) void sayn (long num); __attribute__((noinline)) void message (char *const path[]); -__attribute__((noinline)) int check_elf (const char *name); int main (void) { - char initpath[256]; - struct stat root, init_root; - /* First, get rid of platform-optimized libraries. We remove any we have ever built, since otherwise we might end up using some old leftover libraries when new ones aren't installed in their place anymore. */ @@ -128,33 +126,6 @@ "--nostdlib", GCONV_MODULES_DIR); } - /* Check if telinit is available and the init fifo as well. */ - if (access ("/sbin/telinit", X_OK) || access ("/dev/initctl", F_OK)) - _exit (0); - /* Check if we are not inside of some chroot, because we'd just - timeout and leave /etc/initrunlvl. */ - if (readlink ("/proc/1/exe", initpath, 256) <= 0 || - readlink ("/proc/1/root", initpath, 256) <= 0 || - access ("/.buildenv", F_OK) == 0 || /* XEN build */ - stat ("/proc/1/root", &init_root) < 0 || - stat ("/", &root) < 0 || - init_root.st_dev != root.st_dev || init_root.st_ino != root.st_ino) - _exit (0); - - if (check_elf ("/proc/1/exe")) - verbose_exec (116, "/sbin/telinit", "/sbin/telinit", "u"); - -#if 0 - /* Check if we can safely condrestart sshd. */ - if (access ("/sbin/service", X_OK) == 0 - && access ("/usr/sbin/sshd", X_OK) == 0 - && access ("/bin/bash", X_OK) == 0) - { - if (check_elf ("/usr/sbin/sshd")) - verbose_exec (121, "/sbin/service", "/sbin/service", "sshd", "condrestart"); - } -#endif - _exit(0); } @@ -231,106 +202,3 @@ says ("/usr/sbin/glibc_post_upgrade: While trying to execute "); says (path[0]); } - -int -check_elf (const char *name) -{ - /* Play safe, if we can't open or read, assume it might be - ELF for the current arch. */ - int ret = 1; - int fd = open (name, O_RDONLY); - if (fd >= 0) - { - Elf32_Ehdr ehdr; - if (read (fd, &ehdr, offsetof (Elf32_Ehdr, e_version)) - == offsetof (Elf32_Ehdr, e_version)) - { - ret = 0; - if (ehdr.e_ident[EI_CLASS] - == (sizeof (long) == 8 ? ELFCLASS64 : ELFCLASS32)) - { -#if defined __i386__ - ret = ehdr.e_machine == EM_386; -#elif defined __x86_64__ - ret = ehdr.e_machine == EM_X86_64; -#elif defined __ia64__ - ret = ehdr.e_machine == EM_IA_64; -#elif defined __powerpc64__ - ret = ehdr.e_machine == EM_PPC64; -#elif defined __powerpc__ - ret = ehdr.e_machine == EM_PPC; -#elif defined __s390__ || defined __s390x__ - ret = ehdr.e_machine == EM_S390; -#elif defined __x86_64__ - ret = ehdr.e_machine == EM_X86_64; -#elif defined __sparc__ - if (sizeof (long) == 8) - ret = ehdr.e_machine == EM_SPARCV9; - else - ret = (ehdr.e_machine == EM_SPARC - || ehdr.e_machine == EM_SPARC32PLUS); -#else - ret = 1; -#endif - } - } - close (fd); - } - return ret; -} - -#ifdef SMALL_BINARY - -int __libc_multiple_threads __attribute__((nocommon)); -int __libc_enable_asynccancel (void) { return 0; } -void __libc_disable_asynccancel (int x) { } -void __libc_csu_init (void) { } -void __libc_csu_fini (void) { } -pid_t __fork (void) { return -1; } -char thr_buf[65536]; - -#ifndef __powerpc__ -int -__libc_start_main (int (*main) (void), int argc, char **argv, - void (*init) (void), void (*fini) (void), - void (*rtld_fini) (void), void * stack_end) -#else -struct startup_info -{ - void *sda_base; - int (*main) (int, char **, char **, void *); - int (*init) (int, char **, char **, void *); - void (*fini) (void); -}; - -int -__libc_start_main (int argc, char **ubp_av, char **ubp_ev, - void *auxvec, void (*rtld_fini) (void), - struct startup_info *stinfo, - char **stack_on_entry) -#endif -{ -#if defined __ia64__ || defined __powerpc64__ - register void *r13 __asm ("r13") = thr_buf + 32768; - __asm ("" : : "r" (r13)); -#elif defined __sparc__ - register void *g6 __asm ("g6") = thr_buf + 32768; -# ifdef __arch64__ - __thread_self = thr_buf + 32768; -# else - register void *__thread_self __asm ("g7") = thr_buf + 32768; -# endif - __asm ("" : : "r" (g6), "r" (__thread_self)); -#elif defined __s390__ && !defined __s390x__ - __asm ("sar %%a0,%0" : : "d" (thr_buf + 32768)); -#elif defined __s390x__ - __asm ("sar %%a1,%0; srlg 0,%0,32; sar %%a0,0" : : "d" (thr_buf + 32768) : "0"); -#elif defined __powerpc__ && !defined __powerpc64__ - register void *r2 __asm ("r2") = thr_buf + 32768; - __asm ("" : : "r" (r2)); -#endif - main(); - return 0; -} - -#endif ++++++ iconv-reset-input-buffer.patch ++++++ --- /var/tmp/diff_new_pack.NdGneO/_old 2019-02-08 12:04:15.257675336 +0100 +++ /var/tmp/diff_new_pack.NdGneO/_new 2019-02-08 12:04:15.257675336 +0100 @@ -17,13 +17,12 @@ =================================================================== --- glibc-2.27.orig/iconv/Makefile +++ glibc-2.27/iconv/Makefile -@@ -43,7 +43,8 @@ CFLAGS-charmap.c += -DCHARMAP_PATH='"$(i - CFLAGS-linereader.c += -DNO_TRANSLITERATION +@@ -44,7 +44,7 @@ CFLAGS-charmap.c += -DCHARMAP_PATH='"$(i CFLAGS-simple-hash.c += -I../locale --tests = tst-iconv1 tst-iconv2 tst-iconv3 tst-iconv4 tst-iconv5 tst-iconv6 -+tests = tst-iconv1 tst-iconv2 tst-iconv3 tst-iconv4 tst-iconv5 tst-iconv6 \ -+ tst-iconv7 + tests = tst-iconv1 tst-iconv2 tst-iconv3 tst-iconv4 tst-iconv5 tst-iconv6 \ +- tst-iconv-mt ++ tst-iconv7 tst-iconv-mt others = iconv_prog iconvconfig install-others-programs = $(inst_bindir)/iconv