From 7864f220dae6dbaee2a59c1aa0349f08a026096e498d7d482457a6c134aa156e Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Wed, 26 Jul 2017 15:08:57 +0000 Subject: [PATCH] Accepting request 512670 from home:Andreas_Schwab:Factory - Update to glibc-2.25.90.20170720.gc771b59a24c0 * A per-thread cache has been added to malloc * Unicode 10.0.0 Support * Improvements to the DNS stub resolver * New function reallocarray, which resizes an allocated block (like realloc) to the product of two sizes, with a guaranteed clean failure upon integer overflow in the multiplication * New wrappers for the Linux-specific system calls preadv2 and pwritev2 * posix_spawnattr_setflags now supports the flag POSIX_SPAWN_SETSID, to create a new session ID for the spawned process * errno.h is now safe to use from C-preprocessed assembly language on all supported operating systems * On ia64, powerpc64le, x86-32, and x86-64, the math library now implements 128-bit floating point as defined by ISO/IEC/IEEE 60559:2011 (IEEE 754-2008) and ISO/IEC TS 18661-3:2015 * The synchronization that pthread_spin_unlock performs has been changed to now be equivalent to a C11 atomic store with release memory order to the spin lock's memory location * The DNS stub resolver no longer performs EDNS fallback * res_mkquery and res_nmkquery no longer support the IQUERY opcode * The _res_opcodes variable has been removed from libresolv * no longer includes inline versions of any string functions, as this kind of optimization is better done by the compiler * The nonstandard header has been removed * The obsolete header has been removed * The obsolete signal constant SIGUNUSED is no longer defined by * The obsolete function cfree has been removed * The stack_t type no longer has the name struct sigaltstack * The ucontext_t type no longer has the name struct ucontext * On S/390 GNU/Linux, the constants defined by have been OBS-URL: https://build.opensuse.org/request/show/512670 OBS-URL: https://build.opensuse.org/package/show/Base:System/glibc?expand=0&rev=467 --- abort-no-flush.patch | 2 +- fnmatch-collating-elements.patch | 6 +- fts-symbol-redirect.patch | 18 --- glibc-2.2-sunrpc.diff | 82 ---------- glibc-2.25.90.20170720.gc771b59a24c0.tar.xz | 3 + glibc-2.25.tar.xz | 3 - glibc-2.25.tar.xz.sig | 10 -- glibc-resolv-reload.diff | 121 --------------- glibc-testsuite.changes | 44 ++++++ glibc-testsuite.spec | 50 ++----- glibc-utils.changes | 44 ++++++ glibc-utils.spec | 50 ++----- glibc.changes | 44 ++++++ glibc.spec | 50 ++----- i686-memchr-sse.patch | 45 ------ ld-hwcap-mask-suid.patch | 33 ---- ld-library-path-suid.patch | 158 -------------------- sunrpc-use-after-free.patch | 111 -------------- test-math-vector-sincos-aliasing.patch | 69 --------- tunables-bigendian.patch | 73 --------- 20 files changed, 187 insertions(+), 829 deletions(-) delete mode 100644 fts-symbol-redirect.patch delete mode 100644 glibc-2.2-sunrpc.diff create mode 100644 glibc-2.25.90.20170720.gc771b59a24c0.tar.xz delete mode 100644 glibc-2.25.tar.xz delete mode 100644 glibc-2.25.tar.xz.sig delete mode 100644 glibc-resolv-reload.diff delete mode 100644 i686-memchr-sse.patch delete mode 100644 ld-hwcap-mask-suid.patch delete mode 100644 ld-library-path-suid.patch delete mode 100644 sunrpc-use-after-free.patch delete mode 100644 test-math-vector-sincos-aliasing.patch delete mode 100644 tunables-bigendian.patch diff --git a/abort-no-flush.patch b/abort-no-flush.patch index e7bc31a..a32b6fe 100644 --- a/abort-no-flush.patch +++ b/abort-no-flush.patch @@ -18,7 +18,7 @@ Index: glibc-2.19/stdlib/abort.c struct abort_msg_s *__abort_msg __attribute__ ((nocommon)); libc_hidden_def (__abort_msg) @@ -66,16 +63,8 @@ abort (void) - __sigprocmask (SIG_UNBLOCK, &sigs, (sigset_t *) NULL); + __sigprocmask (SIG_UNBLOCK, &sigs, 0); } - /* Flush all streams. We cannot close them now because the user diff --git a/fnmatch-collating-elements.patch b/fnmatch-collating-elements.patch index 801c381..f660b31 100644 --- a/fnmatch-collating-elements.patch +++ b/fnmatch-collating-elements.patch @@ -19,9 +19,9 @@ Index: glibc-2.22/posix/Makefile tst-pathconf tst-getaddrinfo4 tst-rxspencer-no-utf8 \ tst-fnmatch3 bug-regex36 tst-getaddrinfo5 \ + tst-fnmatch4 tst-fnmatch5 \ - tst-posix_spawn-fd \ - tst-posix_fadvise tst-posix_fadvise64 - xtests := bug-ga2 + tst-posix_spawn-fd tst-posix_spawn-setsid \ + tst-posix_fadvise tst-posix_fadvise64 \ + tst-sysconf-empty-chroot Index: glibc-2.22/posix/fnmatch.c =================================================================== --- glibc-2.22.orig/posix/fnmatch.c diff --git a/fts-symbol-redirect.patch b/fts-symbol-redirect.patch deleted file mode 100644 index fd07005..0000000 --- a/fts-symbol-redirect.patch +++ /dev/null @@ -1,18 +0,0 @@ -2017-03-31 Slava Barinov - - [BZ #21289] - * io/fts.h (fts_set): Replace __REDIRECT with __REDIRECT_NTH. - -Index: glibc-2.25/io/fts.h -=================================================================== ---- glibc-2.25.orig/io/fts.h -+++ glibc-2.25/io/fts.h -@@ -193,7 +193,7 @@ FTS *__REDIRECT (fts_open, (char * const - int (*)(const FTSENT **, const FTSENT **)), - fts64_open); - FTSENT *__REDIRECT (fts_read, (FTS *), fts64_read); --int __REDIRECT (fts_set, (FTS *, FTSENT *, int), fts64_set) __THROW; -+int __REDIRECT_NTH (fts_set, (FTS *, FTSENT *, int), fts64_set); - # else - # define fts_children fts64_children - # define fts_close fts64_close diff --git a/glibc-2.2-sunrpc.diff b/glibc-2.2-sunrpc.diff deleted file mode 100644 index 2efdd81..0000000 --- a/glibc-2.2-sunrpc.diff +++ /dev/null @@ -1,82 +0,0 @@ -For details see: -http://sourceware.org/bugzilla/show_bug.cgi?id=5379 - - -Index: glibc-2.20/sunrpc/clnt_udp.c -=================================================================== ---- glibc-2.20.orig/sunrpc/clnt_udp.c -+++ glibc-2.20/sunrpc/clnt_udp.c -@@ -308,6 +308,7 @@ clntudp_call (cl, proc, xargs, argsp, xr - XDR *xdrs; - int outlen = 0; - int inlen; -+ int pollresult; - socklen_t fromlen; - struct pollfd fd; - int milliseconds = (cu->cu_wait.tv_sec * 1000) + -@@ -378,37 +379,39 @@ send_again: - anyup = 0; - for (;;) - { -- switch (__poll (&fd, 1, milliseconds)) -+ switch (pollresult = __poll (&fd, 1, milliseconds)) - { -- - case 0: -- if (anyup == 0) -+ case -1: -+ if (pollresult == 0 || errno == EINTR) - { -- anyup = is_network_up (cu->cu_sock); -- if (!anyup) -- return (cu->cu_error.re_status = RPC_CANTRECV); -+ if (anyup == 0) -+ { -+ anyup = is_network_up (cu->cu_sock); -+ if (!anyup) -+ return (cu->cu_error.re_status = RPC_CANTRECV); -+ } -+ -+ time_waited.tv_sec += cu->cu_wait.tv_sec; -+ time_waited.tv_usec += cu->cu_wait.tv_usec; -+ while (time_waited.tv_usec >= 1000000) -+ { -+ time_waited.tv_sec++; -+ time_waited.tv_usec -= 1000000; -+ } -+ if ((time_waited.tv_sec < timeout.tv_sec) || -+ ((time_waited.tv_sec == timeout.tv_sec) && -+ (time_waited.tv_usec < timeout.tv_usec))) -+ { -+ if (pollresult == 0) -+ goto send_again; -+ else -+ continue; -+ } -+ return (cu->cu_error.re_status = RPC_TIMEDOUT); - } - -- time_waited.tv_sec += cu->cu_wait.tv_sec; -- time_waited.tv_usec += cu->cu_wait.tv_usec; -- while (time_waited.tv_usec >= 1000000) -- { -- time_waited.tv_sec++; -- time_waited.tv_usec -= 1000000; -- } -- if ((time_waited.tv_sec < timeout.tv_sec) || -- ((time_waited.tv_sec == timeout.tv_sec) && -- (time_waited.tv_usec < timeout.tv_usec))) -- goto send_again; -- return (cu->cu_error.re_status = RPC_TIMEDOUT); -- -- /* -- * buggy in other cases because time_waited is not being -- * updated. -- */ -- case -1: -- if (errno == EINTR) -- continue; -+ /* errno != EINTR */ - cu->cu_error.re_errno = errno; - return (cu->cu_error.re_status = RPC_CANTRECV); - } diff --git a/glibc-2.25.90.20170720.gc771b59a24c0.tar.xz b/glibc-2.25.90.20170720.gc771b59a24c0.tar.xz new file mode 100644 index 0000000..04a9b4c --- /dev/null +++ b/glibc-2.25.90.20170720.gc771b59a24c0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47b52b2267230b78e1718d700db2541e7cddc8a5367e49c8d00f132cb36063b6 +size 15648656 diff --git a/glibc-2.25.tar.xz b/glibc-2.25.tar.xz deleted file mode 100644 index 714c058..0000000 --- a/glibc-2.25.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:067bd9bb3390e79aa45911537d13c3721f1d9d3769931a30c2681bfee66f23a0 -size 13873900 diff --git a/glibc-2.25.tar.xz.sig b/glibc-2.25.tar.xz.sig deleted file mode 100644 index 25a8824..0000000 --- a/glibc-2.25.tar.xz.sig +++ /dev/null @@ -1,10 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQEcBAABAgAGBQJYl08CAAoJEHnEPfvxzyGHhWcH/2eIspxugXwMnM0YZm3fkzji -yJpu19zpYvfap+tTXJGiY/P6UrJSqHUCSssxWyWJQAbOov40IT/ySSg3DyWhyxra -6HTTOwjIGz/9KQwVdzm79LA+YhsOauowvdiYCS6XnTQbPMc7zBDsOIEAzp+vXNdl -KIzIe7XzUJnK9kl6oqBzXuzdA4jjjzZ2jqyMOwRypipkAXu7OgXO7TiEdN149eSs -2Owodmw9epP1omEK1KLo0N9QsG/+ioaHNfldtWzWNvxuRigAnwaaJTy5zVG7xJ45 -xVfsXaZQKFt4KPep1GF5jaZ30TWTvt5gyjOBiZa/+UfvEOXOt0ox/BB8ydlV/eg= -=HMRX ------END PGP SIGNATURE----- diff --git a/glibc-resolv-reload.diff b/glibc-resolv-reload.diff deleted file mode 100644 index 86a36bf..0000000 --- a/glibc-resolv-reload.diff +++ /dev/null @@ -1,121 +0,0 @@ -From libc-alpha-return-22754-pasky=ucw.cz@sourceware.org Tue Mar 16 00:47:00 2010 -Return-Path: -X-Original-To: pasky@pasky.or.cz -Delivered-To: pasky@pasky.or.cz -Received: from nikam.ms.mff.cuni.cz (nikam-dmz.ms.mff.cuni.cz [195.113.20.16]) - by machine.or.cz (Postfix) with ESMTPS id C1B8586202A - for ; Tue, 16 Mar 2010 00:47:00 +0100 (CET) -Received: by nikam.ms.mff.cuni.cz (Postfix) - id 9CDEC9AC7A4; Tue, 16 Mar 2010 00:47:00 +0100 (CET) -Delivered-To: pasky@kam.mff.cuni.cz -Received: from jabberwock.ucw.cz (jabberwock.ucw.cz [89.250.246.4]) - by nikam.ms.mff.cuni.cz (Postfix) with ESMTP id 99F0E9AC77B - for ; Tue, 16 Mar 2010 00:47:00 +0100 (CET) -Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) - by jabberwock.ucw.cz (Postfix) with SMTP id 14E1ACF040 - for ; Tue, 16 Mar 2010 00:46:59 +0100 (CET) -Received: (qmail 18956 invoked by alias); 15 Mar 2010 23:46:58 -0000 -Delivered-To: moderator for libc-alpha@sourceware.org -Received: (qmail 15843 invoked by uid 22791); 15 Mar 2010 17:23:15 -0000 -X-SWARE-Spam-Status: No, hits=-2.6 required=5.0 - tests=BAYES_00 -X-Spam-Check-By: sourceware.org -Message-ID: <4B9E6CFA.7020002@riot.org> -Date: Mon, 15 Mar 2010 18:23:06 +0100 -From: Sebastian Kienzl -User-Agent: Thunderbird 2.0.0.23 (Windows/20090812) -MIME-Version: 1.0 -To: libc-alpha@sourceware.org -Subject: Reloading of /etc/resolv.conf -Content-Type: multipart/mixed; - boundary="------------060407080409020101000002" -Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm -Precedence: bulk -List-Id: -List-Unsubscribe: -List-Subscribe: -List-Archive: -List-Post: -List-Help: , -Sender: libc-alpha-owner@sourceware.org -Delivered-To: mailing list libc-alpha@sourceware.org - -This is a multi-part message in MIME format. ---------------060407080409020101000002 -Content-Type: text/plain; charset=ISO-8859-15; format=flowed -Content-Transfer-Encoding: 7bit - -Hello! - -There's a patch in the wild against the resolver which makes it reload -/etc/resolv.conf on change, see -http://sources.redhat.com/ml/libc-alpha/2004-09/msg00130.html - -However, this patch actually doesn't work properly for multi-threaded -programs, as only one thread will notice the change and refresh its -resolver state. I've attached a proper patch. It's for 2.5 but it should -work with current versions, too. - -Even though the patch may not be interesting for upstream, I decided to -let you know about this problem, since the mentioned patch seems to be -used by at least Debian and Ubuntu. - -Regards, -Seb. - - - ---------------060407080409020101000002 -Content-Type: text/plain; - name="glibc-2.5-resolvconf.patch" -Content-Transfer-Encoding: 7bit -Content-Disposition: inline; - filename="glibc-2.5-resolvconf.patch" - -Index: glibc-2.17.90/resolv/res_libc.c -=================================================================== ---- glibc-2.17.90.orig/resolv/res_libc.c -+++ glibc-2.17.90/resolv/res_libc.c -@@ -22,6 +22,7 @@ - #include - #include - #include -+#include - - extern unsigned long long int __res_initstamp attribute_hidden; - /* We have atomic increment operations on 64-bit platforms. */ -@@ -89,12 +89,34 @@ res_init(void) { - return (__res_vinit(&_res, 1)); - } - -+static time_t resconf_mtime; -+__libc_lock_define_initialized (static, resconf_mtime_lock); -+ -+/* Check if the modification time of resolv.conf has changed. -+ If so, have all threads re-initialize their resolver states */ -+static void -+__res_check_resconf (void) -+{ -+ struct stat statbuf; -+ if (stat (_PATH_RESCONF, &statbuf) == 0) { -+ __libc_lock_lock (resconf_mtime_lock); -+ if (statbuf.st_mtime != resconf_mtime) { -+ resconf_mtime = statbuf.st_mtime; -+ atomicinclock (lock); -+ atomicinc (__res_initstamp); -+ atomicincunlock (lock); -+ } -+ __libc_lock_unlock (resconf_mtime_lock); -+ } -+} -+ - /* Initialize resp if RES_INIT is not yet set or if res_init in some other - thread requested re-initializing. */ - int - __res_maybe_init (res_state resp, int preinit) - { - if (resp->options & RES_INIT) { -+ __res_check_resconf (); - if (__res_initstamp != resp->_u._ext.initstamp) { - if (resp->nscount > 0) - __res_iclose (resp, true); diff --git a/glibc-testsuite.changes b/glibc-testsuite.changes index d4b0737..6f640db 100644 --- a/glibc-testsuite.changes +++ b/glibc-testsuite.changes @@ -1,3 +1,47 @@ +------------------------------------------------------------------- +Wed Jul 26 09:54:26 UTC 2017 - schwab@suse.de + +- Update to glibc-2.25.90.20170720.gc771b59a24c0 + * A per-thread cache has been added to malloc + * Unicode 10.0.0 Support + * Improvements to the DNS stub resolver + * New function reallocarray, which resizes an allocated block (like + realloc) to the product of two sizes, with a guaranteed clean failure + upon integer overflow in the multiplication + * New wrappers for the Linux-specific system calls preadv2 and pwritev2 + * posix_spawnattr_setflags now supports the flag POSIX_SPAWN_SETSID, to + create a new session ID for the spawned process + * errno.h is now safe to use from C-preprocessed assembly language on all + supported operating systems + * On ia64, powerpc64le, x86-32, and x86-64, the math library now implements + 128-bit floating point as defined by ISO/IEC/IEEE 60559:2011 (IEEE + 754-2008) and ISO/IEC TS 18661-3:2015 + * The synchronization that pthread_spin_unlock performs has been changed to + now be equivalent to a C11 atomic store with release memory order to the + spin lock's memory location + * The DNS stub resolver no longer performs EDNS fallback + * res_mkquery and res_nmkquery no longer support the IQUERY opcode + * The _res_opcodes variable has been removed from libresolv + * no longer includes inline versions of any string functions, + as this kind of optimization is better done by the compiler + * The nonstandard header has been removed + * The obsolete header has been removed + * The obsolete signal constant SIGUNUSED is no longer defined by + * The obsolete function cfree has been removed + * The stack_t type no longer has the name struct sigaltstack + * The ucontext_t type no longer has the name struct ucontext + * On S/390 GNU/Linux, the constants defined by have been + synced with the kernel + * Linux kernel 3.2 or later is required at runtime, on all architectures + supported by that kernel + * The DNS stub resolver limits the advertised UDP buffer size to 1200 bytes, + to avoid fragmentation-based spoofing attacks + * fate#322258, fate#321513, fate#322453 +- fts-symbol-redirect.patch, glibc-resolv-reload.diff, i686-memchr-sse.patch, + ld-hwcap-mask-suid.patch, ld-library-path-suid.patch, + sunrpc-use-after-free.patch, test-math-vector-sincos-aliasing.patch, + tunables-bigendian.patch: Removed + ------------------------------------------------------------------- Tue Jul 25 07:32:25 UTC 2017 - schwab@suse.de diff --git a/glibc-testsuite.spec b/glibc-testsuite.spec index d198dce..bf123f3 100644 --- a/glibc-testsuite.spec +++ b/glibc-testsuite.spec @@ -21,7 +21,7 @@ %bcond_with fast_build %define crypt_bf_version 1.3 -%define build_snapshot 0 +%define build_snapshot 1 %define flavor testsuite @@ -116,11 +116,20 @@ BuildArch: i686 %define powerpc_optimize_cpu_power7 0 %define powerpc_optimize_cpu_cell 0 %endif # ppc, ppc64 -# 3.0 is the SLES 11 SP3 kernel -# 3.1 is the openSUSE 12.1 kernel -%define enablekernel 3.0 +# glibc requires at least kernel 3.2 +%define enablekernel 3.2 +# some architectures need a newer kernel +%ifarch ppc64le +%define enablekernel 3.10 +%endif +%ifarch aarch64 +%define enablekernel 3.7 +%endif +%ifarch ia64 +%define enablekernel 3.2.18 +%endif -Version: 2.25 +Version: 2.25.90.20170720.gc771b59a24c0 Release: 0 %if !%{build_snapshot} %define git_id db0242e30234 @@ -245,10 +254,6 @@ Patch105: glibc-disable-gettext-for-c-utf8.patch ### Broken patches in glibc that we revert for now: ### Network related patches -# PATCH-FIX-OPENSUSE reload /etc/resolv.conf on change -Patch300: glibc-resolv-reload.diff -# PATCH-FIX-OPENSUSE Fix hangs in UDP RPC calls bso#5379 bnc#257745 aj@suse.de -Patch301: glibc-2.2-sunrpc.diff # PATCH-FIX-OPENSUSE Warn about usage of mdns in resolv.conv Patch304: glibc-resolv-mdnshint.diff # PATCH-FIX-OPENSUSE disable rewriting ::1 to 127.0.0.1 for /etc/hosts bnc#684534, bnc#706719 @@ -257,20 +262,6 @@ Patch306: glibc-fix-double-loopback.diff ### # Patches from upstream ### -# PATCH-FIX-UPSTREAM Fix getting tunable values on big-endian (BZ #21109) -Patch1000: tunables-bigendian.patch -# PATCH-FIX-UPSTREAM Fix i686 memchr overflow calculation (BZ #21182) -Patch1001: i686-memchr-sse.patch -# PATCH-FIX-UPSTREAM Avoid use-after-free read access in clntudp_call (BZ #21115) -Patch1002: sunrpc-use-after-free.patch -# PATCH-FIX-UPSTREAM Fix test-math-vector-sincos.h aliasing -Patch1003: test-math-vector-sincos-aliasing.patch -# PATCH-FIX-UPSTREAM Fix symbol redirect for fts_set (BZ #21289) -Patch1004: fts-symbol-redirect.patch -# PATCH-FIX-UPSTREAM Ignore and remove LD_HWCAP_MASK for AT_SECURE programs (BZ #21209) -Patch1005: ld-hwcap-mask-suid.patch -# PATCH-FIX-UPSTREAM rtld: Completely ignore LD_LIBRARY_PATH for AT_SECURE=1 programs (CVE-2017-1000366, BZ #21624) -Patch1006: ld-library-path-suid.patch ### # Patches awaiting upstream approval @@ -497,19 +488,9 @@ rm nscd/s-stamp %patch104 -p1 %patch105 -p1 -%patch300 -p1 -%patch301 -p1 %patch304 -p1 %patch306 -p1 -%patch1000 -p1 -%patch1001 -p1 -%patch1002 -p1 -%patch1003 -p1 -%patch1004 -p1 -%patch1005 -p1 -%patch1006 -p1 - %patch2000 -p1 %patch2001 -p1 %patch2002 -p1 @@ -681,7 +662,8 @@ configure_and_build_glibc() { --enable-tunables \ --enable-kernel=%{enablekernel} \ --with-bugurl=http://bugs.opensuse.org \ - --enable-bind-now --enable-obsolete-rpc \ + --enable-bind-now \ + --enable-obsolete-rpc --enable-obsolete-nsl \ --disable-timezone-tools # Should we enable --enable-systemtap? # Should we enable --enable-nss-crypt to build use freebl3 hash functions? diff --git a/glibc-utils.changes b/glibc-utils.changes index d4b0737..6f640db 100644 --- a/glibc-utils.changes +++ b/glibc-utils.changes @@ -1,3 +1,47 @@ +------------------------------------------------------------------- +Wed Jul 26 09:54:26 UTC 2017 - schwab@suse.de + +- Update to glibc-2.25.90.20170720.gc771b59a24c0 + * A per-thread cache has been added to malloc + * Unicode 10.0.0 Support + * Improvements to the DNS stub resolver + * New function reallocarray, which resizes an allocated block (like + realloc) to the product of two sizes, with a guaranteed clean failure + upon integer overflow in the multiplication + * New wrappers for the Linux-specific system calls preadv2 and pwritev2 + * posix_spawnattr_setflags now supports the flag POSIX_SPAWN_SETSID, to + create a new session ID for the spawned process + * errno.h is now safe to use from C-preprocessed assembly language on all + supported operating systems + * On ia64, powerpc64le, x86-32, and x86-64, the math library now implements + 128-bit floating point as defined by ISO/IEC/IEEE 60559:2011 (IEEE + 754-2008) and ISO/IEC TS 18661-3:2015 + * The synchronization that pthread_spin_unlock performs has been changed to + now be equivalent to a C11 atomic store with release memory order to the + spin lock's memory location + * The DNS stub resolver no longer performs EDNS fallback + * res_mkquery and res_nmkquery no longer support the IQUERY opcode + * The _res_opcodes variable has been removed from libresolv + * no longer includes inline versions of any string functions, + as this kind of optimization is better done by the compiler + * The nonstandard header has been removed + * The obsolete header has been removed + * The obsolete signal constant SIGUNUSED is no longer defined by + * The obsolete function cfree has been removed + * The stack_t type no longer has the name struct sigaltstack + * The ucontext_t type no longer has the name struct ucontext + * On S/390 GNU/Linux, the constants defined by have been + synced with the kernel + * Linux kernel 3.2 or later is required at runtime, on all architectures + supported by that kernel + * The DNS stub resolver limits the advertised UDP buffer size to 1200 bytes, + to avoid fragmentation-based spoofing attacks + * fate#322258, fate#321513, fate#322453 +- fts-symbol-redirect.patch, glibc-resolv-reload.diff, i686-memchr-sse.patch, + ld-hwcap-mask-suid.patch, ld-library-path-suid.patch, + sunrpc-use-after-free.patch, test-math-vector-sincos-aliasing.patch, + tunables-bigendian.patch: Removed + ------------------------------------------------------------------- Tue Jul 25 07:32:25 UTC 2017 - schwab@suse.de diff --git a/glibc-utils.spec b/glibc-utils.spec index 6ed312a..c0275b5 100644 --- a/glibc-utils.spec +++ b/glibc-utils.spec @@ -21,7 +21,7 @@ %bcond_with fast_build %define crypt_bf_version 1.3 -%define build_snapshot 0 +%define build_snapshot 1 %define flavor utils @@ -117,11 +117,20 @@ BuildArch: i686 %define powerpc_optimize_cpu_power7 0 %define powerpc_optimize_cpu_cell 0 %endif # ppc, ppc64 -# 3.0 is the SLES 11 SP3 kernel -# 3.1 is the openSUSE 12.1 kernel -%define enablekernel 3.0 +# glibc requires at least kernel 3.2 +%define enablekernel 3.2 +# some architectures need a newer kernel +%ifarch ppc64le +%define enablekernel 3.10 +%endif +%ifarch aarch64 +%define enablekernel 3.7 +%endif +%ifarch ia64 +%define enablekernel 3.2.18 +%endif -Version: 2.25 +Version: 2.25.90.20170720.gc771b59a24c0 Release: 0 %if !%{build_snapshot} %define git_id db0242e30234 @@ -246,10 +255,6 @@ Patch105: glibc-disable-gettext-for-c-utf8.patch ### Broken patches in glibc that we revert for now: ### Network related patches -# PATCH-FIX-OPENSUSE reload /etc/resolv.conf on change -Patch300: glibc-resolv-reload.diff -# PATCH-FIX-OPENSUSE Fix hangs in UDP RPC calls bso#5379 bnc#257745 aj@suse.de -Patch301: glibc-2.2-sunrpc.diff # PATCH-FIX-OPENSUSE Warn about usage of mdns in resolv.conv Patch304: glibc-resolv-mdnshint.diff # PATCH-FIX-OPENSUSE disable rewriting ::1 to 127.0.0.1 for /etc/hosts bnc#684534, bnc#706719 @@ -258,20 +263,6 @@ Patch306: glibc-fix-double-loopback.diff ### # Patches from upstream ### -# PATCH-FIX-UPSTREAM Fix getting tunable values on big-endian (BZ #21109) -Patch1000: tunables-bigendian.patch -# PATCH-FIX-UPSTREAM Fix i686 memchr overflow calculation (BZ #21182) -Patch1001: i686-memchr-sse.patch -# PATCH-FIX-UPSTREAM Avoid use-after-free read access in clntudp_call (BZ #21115) -Patch1002: sunrpc-use-after-free.patch -# PATCH-FIX-UPSTREAM Fix test-math-vector-sincos.h aliasing -Patch1003: test-math-vector-sincos-aliasing.patch -# PATCH-FIX-UPSTREAM Fix symbol redirect for fts_set (BZ #21289) -Patch1004: fts-symbol-redirect.patch -# PATCH-FIX-UPSTREAM Ignore and remove LD_HWCAP_MASK for AT_SECURE programs (BZ #21209) -Patch1005: ld-hwcap-mask-suid.patch -# PATCH-FIX-UPSTREAM rtld: Completely ignore LD_LIBRARY_PATH for AT_SECURE=1 programs (CVE-2017-1000366, BZ #21624) -Patch1006: ld-library-path-suid.patch ### # Patches awaiting upstream approval @@ -498,19 +489,9 @@ rm nscd/s-stamp %patch104 -p1 %patch105 -p1 -%patch300 -p1 -%patch301 -p1 %patch304 -p1 %patch306 -p1 -%patch1000 -p1 -%patch1001 -p1 -%patch1002 -p1 -%patch1003 -p1 -%patch1004 -p1 -%patch1005 -p1 -%patch1006 -p1 - %patch2000 -p1 %patch2001 -p1 %patch2002 -p1 @@ -682,7 +663,8 @@ configure_and_build_glibc() { --enable-tunables \ --enable-kernel=%{enablekernel} \ --with-bugurl=http://bugs.opensuse.org \ - --enable-bind-now --enable-obsolete-rpc \ + --enable-bind-now \ + --enable-obsolete-rpc --enable-obsolete-nsl \ --disable-timezone-tools # Should we enable --enable-systemtap? # Should we enable --enable-nss-crypt to build use freebl3 hash functions? diff --git a/glibc.changes b/glibc.changes index d4b0737..6f640db 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,47 @@ +------------------------------------------------------------------- +Wed Jul 26 09:54:26 UTC 2017 - schwab@suse.de + +- Update to glibc-2.25.90.20170720.gc771b59a24c0 + * A per-thread cache has been added to malloc + * Unicode 10.0.0 Support + * Improvements to the DNS stub resolver + * New function reallocarray, which resizes an allocated block (like + realloc) to the product of two sizes, with a guaranteed clean failure + upon integer overflow in the multiplication + * New wrappers for the Linux-specific system calls preadv2 and pwritev2 + * posix_spawnattr_setflags now supports the flag POSIX_SPAWN_SETSID, to + create a new session ID for the spawned process + * errno.h is now safe to use from C-preprocessed assembly language on all + supported operating systems + * On ia64, powerpc64le, x86-32, and x86-64, the math library now implements + 128-bit floating point as defined by ISO/IEC/IEEE 60559:2011 (IEEE + 754-2008) and ISO/IEC TS 18661-3:2015 + * The synchronization that pthread_spin_unlock performs has been changed to + now be equivalent to a C11 atomic store with release memory order to the + spin lock's memory location + * The DNS stub resolver no longer performs EDNS fallback + * res_mkquery and res_nmkquery no longer support the IQUERY opcode + * The _res_opcodes variable has been removed from libresolv + * no longer includes inline versions of any string functions, + as this kind of optimization is better done by the compiler + * The nonstandard header has been removed + * The obsolete header has been removed + * The obsolete signal constant SIGUNUSED is no longer defined by + * The obsolete function cfree has been removed + * The stack_t type no longer has the name struct sigaltstack + * The ucontext_t type no longer has the name struct ucontext + * On S/390 GNU/Linux, the constants defined by have been + synced with the kernel + * Linux kernel 3.2 or later is required at runtime, on all architectures + supported by that kernel + * The DNS stub resolver limits the advertised UDP buffer size to 1200 bytes, + to avoid fragmentation-based spoofing attacks + * fate#322258, fate#321513, fate#322453 +- fts-symbol-redirect.patch, glibc-resolv-reload.diff, i686-memchr-sse.patch, + ld-hwcap-mask-suid.patch, ld-library-path-suid.patch, + sunrpc-use-after-free.patch, test-math-vector-sincos-aliasing.patch, + tunables-bigendian.patch: Removed + ------------------------------------------------------------------- Tue Jul 25 07:32:25 UTC 2017 - schwab@suse.de diff --git a/glibc.spec b/glibc.spec index 2154e92..3d85bdf 100644 --- a/glibc.spec +++ b/glibc.spec @@ -21,7 +21,7 @@ %bcond_with fast_build %define crypt_bf_version 1.3 -%define build_snapshot 0 +%define build_snapshot 1 # INCLUDE glibc$flavor.spec.in %ifarch i686 @@ -122,11 +122,20 @@ BuildArch: i686 %define powerpc_optimize_cpu_power7 0 %define powerpc_optimize_cpu_cell 0 %endif # ppc, ppc64 -# 3.0 is the SLES 11 SP3 kernel -# 3.1 is the openSUSE 12.1 kernel -%define enablekernel 3.0 +# glibc requires at least kernel 3.2 +%define enablekernel 3.2 +# some architectures need a newer kernel +%ifarch ppc64le +%define enablekernel 3.10 +%endif +%ifarch aarch64 +%define enablekernel 3.7 +%endif +%ifarch ia64 +%define enablekernel 3.2.18 +%endif -Version: 2.25 +Version: 2.25.90.20170720.gc771b59a24c0 Release: 0 %if !%{build_snapshot} %define git_id db0242e30234 @@ -251,10 +260,6 @@ Patch105: glibc-disable-gettext-for-c-utf8.patch ### Broken patches in glibc that we revert for now: ### Network related patches -# PATCH-FIX-OPENSUSE reload /etc/resolv.conf on change -Patch300: glibc-resolv-reload.diff -# PATCH-FIX-OPENSUSE Fix hangs in UDP RPC calls bso#5379 bnc#257745 aj@suse.de -Patch301: glibc-2.2-sunrpc.diff # PATCH-FIX-OPENSUSE Warn about usage of mdns in resolv.conv Patch304: glibc-resolv-mdnshint.diff # PATCH-FIX-OPENSUSE disable rewriting ::1 to 127.0.0.1 for /etc/hosts bnc#684534, bnc#706719 @@ -263,20 +268,6 @@ Patch306: glibc-fix-double-loopback.diff ### # Patches from upstream ### -# PATCH-FIX-UPSTREAM Fix getting tunable values on big-endian (BZ #21109) -Patch1000: tunables-bigendian.patch -# PATCH-FIX-UPSTREAM Fix i686 memchr overflow calculation (BZ #21182) -Patch1001: i686-memchr-sse.patch -# PATCH-FIX-UPSTREAM Avoid use-after-free read access in clntudp_call (BZ #21115) -Patch1002: sunrpc-use-after-free.patch -# PATCH-FIX-UPSTREAM Fix test-math-vector-sincos.h aliasing -Patch1003: test-math-vector-sincos-aliasing.patch -# PATCH-FIX-UPSTREAM Fix symbol redirect for fts_set (BZ #21289) -Patch1004: fts-symbol-redirect.patch -# PATCH-FIX-UPSTREAM Ignore and remove LD_HWCAP_MASK for AT_SECURE programs (BZ #21209) -Patch1005: ld-hwcap-mask-suid.patch -# PATCH-FIX-UPSTREAM rtld: Completely ignore LD_LIBRARY_PATH for AT_SECURE=1 programs (CVE-2017-1000366, BZ #21624) -Patch1006: ld-library-path-suid.patch ### # Patches awaiting upstream approval @@ -503,19 +494,9 @@ rm nscd/s-stamp %patch104 -p1 %patch105 -p1 -%patch300 -p1 -%patch301 -p1 %patch304 -p1 %patch306 -p1 -%patch1000 -p1 -%patch1001 -p1 -%patch1002 -p1 -%patch1003 -p1 -%patch1004 -p1 -%patch1005 -p1 -%patch1006 -p1 - %patch2000 -p1 %patch2001 -p1 %patch2002 -p1 @@ -687,7 +668,8 @@ configure_and_build_glibc() { --enable-tunables \ --enable-kernel=%{enablekernel} \ --with-bugurl=http://bugs.opensuse.org \ - --enable-bind-now --enable-obsolete-rpc \ + --enable-bind-now \ + --enable-obsolete-rpc --enable-obsolete-nsl \ --disable-timezone-tools # Should we enable --enable-systemtap? # Should we enable --enable-nss-crypt to build use freebl3 hash functions? diff --git a/i686-memchr-sse.patch b/i686-memchr-sse.patch deleted file mode 100644 index a201f51..0000000 --- a/i686-memchr-sse.patch +++ /dev/null @@ -1,45 +0,0 @@ -2017-03-29 Adhemerval Zanella - - [BZ# 21182] - * string/test-memchr.c (do_test): Add BZ#21182 checks for address - near end of a page. - * sysdeps/i386/i686/multiarch/memchr-sse2.S (__memchr): Fix - overflow calculation. - -Index: glibc-2.25/string/test-memchr.c -=================================================================== ---- glibc-2.25.orig/string/test-memchr.c -+++ glibc-2.25/string/test-memchr.c -@@ -208,6 +208,12 @@ test_main (void) - do_test (0, i, i + 1, i + 1, 0); - } - -+ /* BZ#21182 - wrong overflow calculation for i686 implementation -+ with address near end of the page. */ -+ for (i = 2; i < 16; ++i) -+ /* page_size is in fact getpagesize() * 2. */ -+ do_test (page_size / 2 - i, i, i, 1, 0x9B); -+ - do_random_tests (); - return ret; - } -Index: glibc-2.25/sysdeps/i386/i686/multiarch/memchr-sse2.S -=================================================================== ---- glibc-2.25.orig/sysdeps/i386/i686/multiarch/memchr-sse2.S -+++ glibc-2.25/sysdeps/i386/i686/multiarch/memchr-sse2.S -@@ -117,7 +117,6 @@ L(crosscache): - - # ifndef USE_AS_RAWMEMCHR - jnz L(match_case2_prolog1) -- lea -16(%edx), %edx - /* Calculate the last acceptable address and check for possible - addition overflow by using satured math: - edx = ecx + edx -@@ -125,6 +124,7 @@ L(crosscache): - add %ecx, %edx - sbb %eax, %eax - or %eax, %edx -+ sub $16, %edx - jbe L(return_null) - lea 16(%edi), %edi - # else diff --git a/ld-hwcap-mask-suid.patch b/ld-hwcap-mask-suid.patch deleted file mode 100644 index f992c9a..0000000 --- a/ld-hwcap-mask-suid.patch +++ /dev/null @@ -1,33 +0,0 @@ -2017-03-07 Siddhesh Poyarekar - - [BZ #21209] - * elf/rtld.c (process_envvars): Ignore LD_HWCAP_MASK for - AT_SECURE processes. - * sysdeps/generic/unsecvars.h: Add LD_HWCAP_MASK. - -Index: glibc-2.25/elf/rtld.c -=================================================================== ---- glibc-2.25.orig/elf/rtld.c -+++ glibc-2.25/elf/rtld.c -@@ -2450,7 +2450,8 @@ process_envvars (enum mode *modep) - - case 10: - /* Mask for the important hardware capabilities. */ -- if (memcmp (envline, "HWCAP_MASK", 10) == 0) -+ if (!__libc_enable_secure -+ && memcmp (envline, "HWCAP_MASK", 10) == 0) - GLRO(dl_hwcap_mask) = __strtoul_internal (&envline[11], NULL, - 0, 0); - break; -Index: glibc-2.25/sysdeps/generic/unsecvars.h -=================================================================== ---- glibc-2.25.orig/sysdeps/generic/unsecvars.h -+++ glibc-2.25/sysdeps/generic/unsecvars.h -@@ -16,6 +16,7 @@ - "LD_DEBUG\0" \ - "LD_DEBUG_OUTPUT\0" \ - "LD_DYNAMIC_WEAK\0" \ -+ "LD_HWCAP_MASK\0" \ - "LD_LIBRARY_PATH\0" \ - "LD_ORIGIN_PATH\0" \ - "LD_PRELOAD\0" \ diff --git a/ld-library-path-suid.patch b/ld-library-path-suid.patch deleted file mode 100644 index adb9199..0000000 --- a/ld-library-path-suid.patch +++ /dev/null @@ -1,158 +0,0 @@ -Index: glibc-2.25/elf/rtld.c -=================================================================== ---- glibc-2.25.orig/elf/rtld.c -+++ glibc-2.25/elf/rtld.c -@@ -716,6 +716,57 @@ static const char *preloadlist attribute - /* Nonzero if information about versions has to be printed. */ - static int version_info attribute_relro; - -+/* Check that AT_SECURE=0, or that the passed name does not contain -+ directories and is not overly long. */ -+static bool -+dso_name_valid_for_suid (const char *p) -+{ -+ if (__builtin_expect (__libc_enable_secure, 0)) -+ { -+ /* Ignore pathnames with directories for AT_SECURE=1 -+ programs, and also skip overlong names. */ -+ size_t len = strlen (p); -+ if (len >= NAME_MAX || memchr (p, '/', len) != NULL) -+ return false; -+ } -+ return true; -+} -+ -+/* The LD_PRELOAD environment variable gives list of libraries -+ separated by white space or colons that are loaded before the -+ executable's dependencies and prepended to the global scope list. -+ (If the binary is running setuid all elements containing a '/' are -+ ignored since it is insecure.) Return the number of preloads -+ performed. */ -+static unsigned int -+handle_ld_preload (const char *preloadlist, struct link_map *main_map) -+{ -+ unsigned int npreloads = 0; -+ const char *p = preloadlist; -+ char fname[PATH_MAX]; -+ -+ while (*p != '\0') -+ { -+ /* Split preload list at space/colon. */ -+ size_t len = strcspn (p, " :"); -+ if (len > 0 && len < PATH_MAX) -+ { -+ memcpy (fname, p, len); -+ fname[len] = '\0'; -+ if (dso_name_valid_for_suid (fname)) -+ npreloads += do_preload (fname, main_map, "LD_PRELOAD"); -+ } -+ -+ /* Skip over the substring and the following delimiter. */ -+ p += len; -+ if (*p != '\0') -+ ++p; -+ } -+ return npreloads; -+} -+ -+ -+ - static void - dl_main (const ElfW(Phdr) *phdr, - ElfW(Word) phnum, -@@ -1462,23 +1513,8 @@ ERROR: ld.so: object '%s' cannot be load - - if (__glibc_unlikely (preloadlist != NULL)) - { -- /* The LD_PRELOAD environment variable gives list of libraries -- separated by white space or colons that are loaded before the -- executable's dependencies and prepended to the global scope -- list. If the binary is running setuid all elements -- containing a '/' are ignored since it is insecure. */ -- char *list = strdupa (preloadlist); -- char *p; -- - HP_TIMING_NOW (start); -- -- /* Prevent optimizing strsep. Speed is not important here. */ -- while ((p = (strsep) (&list, " :")) != NULL) -- if (p[0] != '\0' -- && (__builtin_expect (! __libc_enable_secure, 1) -- || strchr (p, '/') == NULL)) -- npreloads += do_preload (p, main_map, "LD_PRELOAD"); -- -+ npreloads += handle_ld_preload (preloadlist, main_map); - HP_TIMING_NOW (stop); - HP_TIMING_DIFF (diff, start, stop); - HP_TIMING_ACCUM_NT (load_time, diff); -@@ -2340,9 +2376,7 @@ process_dl_audit (char *str) - char *p; - - while ((p = (strsep) (&str, ":")) != NULL) -- if (p[0] != '\0' -- && (__builtin_expect (! __libc_enable_secure, 1) -- || strchr (p, '/') == NULL)) -+ if (p[0] != '\0' && dso_name_valid_for_suid (p)) - { - /* This is using the local malloc, not the system malloc. The - memory can never be freed. */ -@@ -2372,6 +2406,7 @@ process_envvars (enum mode *modep) - char *envline; - enum mode mode = normal; - char *debug_output = NULL; -+ char *ld_audit = NULL; - - /* This is the default place for profiling data file. */ - GLRO(dl_profile_output) -@@ -2406,7 +2441,7 @@ process_envvars (enum mode *modep) - break; - } - if (memcmp (envline, "AUDIT", 5) == 0) -- process_dl_audit (&envline[6]); -+ ld_audit = &envline[6]; - break; - - case 7: -@@ -2465,7 +2500,8 @@ process_envvars (enum mode *modep) - - case 12: - /* The library search path. */ -- if (memcmp (envline, "LIBRARY_PATH", 12) == 0) -+ if (!__libc_enable_secure -+ && memcmp (envline, "LIBRARY_PATH", 12) == 0) - { - library_path = &envline[13]; - break; -@@ -2532,6 +2568,12 @@ process_envvars (enum mode *modep) - } - } - -+ /* Even if LD_AUDIT occurs multiple times in the environment -+ process_dl_audit should only be called once to avoid polluting the -+ heap with unused copies of the value. */ -+ if (ld_audit != NULL) -+ process_dl_audit (ld_audit); -+ - /* The caller wants this information. */ - *modep = mode; - -Index: glibc-2.25/sysdeps/i386/i686/multiarch/strcspn-c.c -=================================================================== ---- glibc-2.25.orig/sysdeps/i386/i686/multiarch/strcspn-c.c -+++ glibc-2.25/sysdeps/i386/i686/multiarch/strcspn-c.c -@@ -1,2 +1,4 @@ --#define __strcspn_sse2 __strcspn_ia32 --#include -+#if IS_IN (libc) -+# define __strcspn_sse2 __strcspn_ia32 -+# include -+#endif -Index: glibc-2.25/sysdeps/i386/i686/multiarch/varshift.c -=================================================================== ---- glibc-2.25.orig/sysdeps/i386/i686/multiarch/varshift.c -+++ glibc-2.25/sysdeps/i386/i686/multiarch/varshift.c -@@ -1 +1,3 @@ --#include -+#if IS_IN (libc) -+# include -+#endif diff --git a/sunrpc-use-after-free.patch b/sunrpc-use-after-free.patch deleted file mode 100644 index b1ddd22..0000000 --- a/sunrpc-use-after-free.patch +++ /dev/null @@ -1,111 +0,0 @@ -2017-02-27 Florian Weimer - - [BZ #21115] - * sunrpc/clnt_udp.c (clntudp_call): Free ancillary data later. - * sunrpc/Makefile (tests): Add tst-udp-error. - (tst-udp-error): Link against libc.so explicitly. - * sunrpc/tst-udp-error: New file. - -Index: glibc-2.25/sunrpc/Makefile -=================================================================== ---- glibc-2.25.orig/sunrpc/Makefile -+++ glibc-2.25/sunrpc/Makefile -@@ -93,7 +93,7 @@ rpcgen-objs = rpc_main.o rpc_hout.o rpc_ - extra-objs = $(rpcgen-objs) $(addprefix cross-,$(rpcgen-objs)) - others += rpcgen - --tests = tst-xdrmem tst-xdrmem2 test-rpcent -+tests = tst-xdrmem tst-xdrmem2 test-rpcent tst-udp-error - xtests := tst-getmyaddr - - ifeq ($(have-thread-library),yes) -@@ -155,6 +155,7 @@ BUILD_CPPFLAGS += $(sunrpc-CPPFLAGS) - $(objpfx)tst-getmyaddr: $(common-objpfx)linkobj/libc.so - $(objpfx)tst-xdrmem: $(common-objpfx)linkobj/libc.so - $(objpfx)tst-xdrmem2: $(common-objpfx)linkobj/libc.so -+$(objpfx)tst-udp-error: $(common-objpfx)linkobj/libc.so - - $(objpfx)rpcgen: $(addprefix $(objpfx),$(rpcgen-objs)) - -Index: glibc-2.25/sunrpc/clnt_udp.c -=================================================================== ---- glibc-2.25.orig/sunrpc/clnt_udp.c -+++ glibc-2.25/sunrpc/clnt_udp.c -@@ -424,9 +424,9 @@ send_again: - cmsg = CMSG_NXTHDR (&msg, cmsg)) - if (cmsg->cmsg_level == SOL_IP && cmsg->cmsg_type == IP_RECVERR) - { -- free (cbuf); - e = (struct sock_extended_err *) CMSG_DATA(cmsg); - cu->cu_error.re_errno = e->ee_errno; -+ free (cbuf); - return (cu->cu_error.re_status = RPC_CANTRECV); - } - free (cbuf); -Index: glibc-2.25/sunrpc/tst-udp-error.c -=================================================================== ---- /dev/null -+++ glibc-2.25/sunrpc/tst-udp-error.c -@@ -0,0 +1,62 @@ -+/* Check for use-after-free in clntudp_call (bug 21115). -+ Copyright (C) 2017 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 -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, see -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static int -+do_test (void) -+{ -+ support_become_root (); -+ support_enter_network_namespace (); -+ -+ /* Obtain a likely-unused port number. */ -+ struct sockaddr_in sin = -+ { -+ .sin_family = AF_INET, -+ .sin_addr.s_addr = htonl (INADDR_LOOPBACK), -+ }; -+ { -+ int fd = xsocket (AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0); -+ xbind (fd, (struct sockaddr *) &sin, sizeof (sin)); -+ socklen_t sinlen = sizeof (sin); -+ xgetsockname (fd, (struct sockaddr *) &sin, &sinlen); -+ /* Close the socket, so that we will receive an error below. */ -+ close (fd); -+ } -+ -+ int sock = RPC_ANYSOCK; -+ CLIENT *clnt = clntudp_create -+ (&sin, 1, 2, (struct timeval) { 1, 0 }, &sock); -+ TEST_VERIFY_EXIT (clnt != NULL); -+ TEST_VERIFY (clnt_call (clnt, 3, -+ (xdrproc_t) xdr_void, NULL, -+ (xdrproc_t) xdr_void, NULL, -+ ((struct timeval) { 3, 0 })) -+ == RPC_CANTRECV); -+ clnt_destroy (clnt); -+ -+ return 0; -+} -+ -+#include diff --git a/test-math-vector-sincos-aliasing.patch b/test-math-vector-sincos-aliasing.patch deleted file mode 100644 index 3d69ab1..0000000 --- a/test-math-vector-sincos-aliasing.patch +++ /dev/null @@ -1,69 +0,0 @@ -2017-03-15 Joseph Myers - - * sysdeps/x86/fpu/test-math-vector-sincos.h (INIT_VEC_PTRS_LOOP): - Use a union when storing pointers. - (VECTOR_WRAPPER_fFF_2): Do not take address of integer vector and - cast result when passing to INIT_VEC_PTRS_LOOP. - (VECTOR_WRAPPER_fFF_3): Likewise. - (VECTOR_WRAPPER_fFF_4): Likewise. - -Index: glibc-2.25/sysdeps/x86/fpu/test-math-vector-sincos.h -=================================================================== ---- glibc-2.25.orig/sysdeps/x86/fpu/test-math-vector-sincos.h -+++ glibc-2.25/sysdeps/x86/fpu/test-math-vector-sincos.h -@@ -17,14 +17,14 @@ - License along with the GNU C Library; if not, see - . */ - --#define INIT_VEC_PTRS_LOOP(vec, val, len) \ -- do \ -- { \ -- for (i = 0; i < len; i++) \ -- { \ -- vec[i] = &val[i]; \ -- } \ -- } \ -+#define INIT_VEC_PTRS_LOOP(vec, val, len) \ -+ do \ -+ { \ -+ union { VEC_INT_TYPE v; __typeof__ ((val)[0]) *a[(len)]; } u; \ -+ for (i = 0; i < len; i++) \ -+ u.a[i] = &(val)[i]; \ -+ (vec) = u.v; \ -+ } \ - while (0) - - /* Wrapper for vector sincos/sincosf compatible with x86_64 and x32 variants -@@ -40,8 +40,8 @@ void scalar_func (FLOAT x, FLOAT * r, FL - VEC_TYPE mx; \ - VEC_INT_TYPE mr, mr1; \ - INIT_VEC_LOOP (mx, x, VEC_LEN); \ -- INIT_VEC_PTRS_LOOP (((FLOAT **) &mr), r_loc, VEC_LEN); \ -- INIT_VEC_PTRS_LOOP (((FLOAT **) &mr1), r1_loc, VEC_LEN); \ -+ INIT_VEC_PTRS_LOOP (mr, r_loc, VEC_LEN); \ -+ INIT_VEC_PTRS_LOOP (mr1, r1_loc, VEC_LEN); \ - vector_func (mx, mr, mr1); \ - TEST_VEC_LOOP (r_loc, VEC_LEN); \ - TEST_VEC_LOOP (r1_loc, VEC_LEN); \ -@@ -63,8 +63,8 @@ void scalar_func (FLOAT x, FLOAT * r, FL - VEC_TYPE mx; \ - VEC_INT_TYPE mr, mr1; \ - INIT_VEC_LOOP (mx, x, VEC_LEN); \ -- INIT_VEC_PTRS_LOOP (((FLOAT **) &mr), r_loc, VEC_LEN/2); \ -- INIT_VEC_PTRS_LOOP (((FLOAT **) &mr1), r1_loc, VEC_LEN/2); \ -+ INIT_VEC_PTRS_LOOP (mr, r_loc, VEC_LEN/2); \ -+ INIT_VEC_PTRS_LOOP (mr1, r1_loc, VEC_LEN/2); \ - vector_func (mx, mr, mr, mr1, mr1); \ - TEST_VEC_LOOP (r_loc, VEC_LEN/2); \ - TEST_VEC_LOOP (r1_loc, VEC_LEN/2); \ -@@ -87,8 +87,8 @@ void scalar_func (FLOAT x, FLOAT * r, FL - VEC_TYPE mx; \ - VEC_INT_TYPE mr, mr1; \ - INIT_VEC_LOOP (mx, x, VEC_LEN); \ -- INIT_VEC_PTRS_LOOP (((FLOAT **) &mr), r_loc, VEC_LEN/4); \ -- INIT_VEC_PTRS_LOOP (((FLOAT **) &mr1), r1_loc, VEC_LEN/4); \ -+ INIT_VEC_PTRS_LOOP (mr, r_loc, VEC_LEN/4); \ -+ INIT_VEC_PTRS_LOOP (mr1, r1_loc, VEC_LEN/4); \ - vector_func (mx, mr, mr, mr, mr, mr1, mr1, mr1, mr1); \ - TEST_VEC_LOOP (r_loc, VEC_LEN/4); \ - TEST_VEC_LOOP (r1_loc, VEC_LEN/4); \ diff --git a/tunables-bigendian.patch b/tunables-bigendian.patch deleted file mode 100644 index f679c20..0000000 --- a/tunables-bigendian.patch +++ /dev/null @@ -1,73 +0,0 @@ -2017-02-08 Siddhesh Poyarekar - - [BZ #21109] - * elf/dl-tunable-types.h (tunable_callback_t): Accept - tunable_val_t as argument. - * elf/dl-tunables.c (__tunable_set_val): Add comment. - * malloc/arena.c (set_mallopt_check): Take tunable_val_t as - argument. - (DL_TUNABLE_CALLBACK_FNDECL): Likewise. - -Index: glibc-2.25/elf/dl-tunable-types.h -=================================================================== ---- glibc-2.25.orig/elf/dl-tunable-types.h -+++ glibc-2.25/elf/dl-tunable-types.h -@@ -21,8 +21,6 @@ - # define _TUNABLE_TYPES_H_ - #include - --typedef void (*tunable_callback_t) (void *); -- - typedef enum - { - TUNABLE_TYPE_INT_32, -@@ -43,6 +41,8 @@ typedef union - const char *strval; - } tunable_val_t; - -+typedef void (*tunable_callback_t) (tunable_val_t *); -+ - /* Security level for tunables. This decides what to do with individual - tunables for AT_SECURE binaries. */ - typedef enum -Index: glibc-2.25/elf/dl-tunables.c -=================================================================== ---- glibc-2.25.orig/elf/dl-tunables.c -+++ glibc-2.25/elf/dl-tunables.c -@@ -455,6 +455,8 @@ __tunable_set_val (tunable_id_t id, void - if (cur->strval == NULL) - return; - -+ /* Caller does not need the value, just call the callback with our tunable -+ value. */ - if (valp == NULL) - goto cb; - -Index: glibc-2.25/malloc/arena.c -=================================================================== ---- glibc-2.25.orig/malloc/arena.c -+++ glibc-2.25/malloc/arena.c -@@ -212,9 +212,9 @@ __malloc_fork_unlock_child (void) - #if HAVE_TUNABLES - static inline int do_set_mallopt_check (int32_t value); - void --DL_TUNABLE_CALLBACK (set_mallopt_check) (void *valp) -+DL_TUNABLE_CALLBACK (set_mallopt_check) (tunable_val_t *valp) - { -- int32_t value = *(int32_t *) valp; -+ int32_t value = (int32_t) valp->numval; - do_set_mallopt_check (value); - if (check_action != 0) - __malloc_check_init (); -@@ -223,9 +223,9 @@ DL_TUNABLE_CALLBACK (set_mallopt_check) - # define DL_TUNABLE_CALLBACK_FNDECL(__name, __type) \ - static inline int do_ ## __name (__type value); \ - void \ --DL_TUNABLE_CALLBACK (__name) (void *valp) \ -+DL_TUNABLE_CALLBACK (__name) (tunable_val_t *valp) \ - { \ -- __type value = *(__type *) valp; \ -+ __type value = (__type) (valp)->numval; \ - do_ ## __name (value); \ - } -