From d1929c8ddbd9ac1c734f71623d84e398ba33f346 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Thu, 21 Jul 2016 16:16:25 +0200 Subject: [PATCH] Resolves: #1344830 Drop sendmsg/recvmsg compatibility patch --- glibc-rh1344830.patch | 866 ------------------------------------------ glibc.spec | 7 +- 2 files changed, 4 insertions(+), 869 deletions(-) delete mode 100644 glibc-rh1344830.patch diff --git a/glibc-rh1344830.patch b/glibc-rh1344830.patch deleted file mode 100644 index 7cd0755..0000000 --- a/glibc-rh1344830.patch +++ /dev/null @@ -1,866 +0,0 @@ -commit 2efbd3ae03af46d2888321322320513dd08cb5c9 -Author: Florian Weimer -Date: Sun Jun 12 20:58:50 2016 +0200 - - recvmsg, sendmsg, recvmmsg, sendmmsg: 2.24 ABI revert compatibility - - GLIBC_2.24 compatibility versions are added to be able to run old - binaries, so that use of the GLIBC_2.24 symbol versions can be phased - out gradually. - - It uses an endian-agnostic, word-size approach to sanitize the upper - bits of the affected struct members, using the old struct definitions - without padding. - -diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile -index 35e1ed4..7c3b452 100644 ---- a/sysdeps/unix/sysv/linux/Makefile -+++ b/sysdeps/unix/sysv/linux/Makefile -@@ -124,9 +124,10 @@ ifeq ($(subdir),socket) - sysdep_headers += net/if_ppp.h net/ppp-comp.h \ - net/ppp_defs.h net/if_arp.h net/route.h net/ethernet.h \ - net/if_slip.h net/if_packet.h net/if_shaper.h --sysdep_routines += cmsg_nxthdr -+sysdep_routines += cmsg_nxthdr msgcompat - CFLAGS-recvmmsg.c = -fexceptions -fasynchronous-unwind-tables - CFLAGS-sendmmsg.c = -fexceptions -fasynchronous-unwind-tables -+CFLAGS-msgcompat.c = -fexceptions -fasynchronous-unwind-tables - endif - - ifeq ($(subdir),sunrpc) -diff --git a/sysdeps/unix/sysv/linux/aarch64/Versions b/sysdeps/unix/sysv/linux/aarch64/Versions -index 9bd87fe..ae3742c 100644 ---- a/sysdeps/unix/sysv/linux/aarch64/Versions -+++ b/sysdeps/unix/sysv/linux/aarch64/Versions -@@ -5,6 +5,10 @@ ld { - } - } - libc { -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } -+ - GLIBC_PRIVATE { - __vdso_clock_gettime; - __vdso_clock_getres; -diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist -index 9cdb623..3878891 100644 ---- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist -+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist -@@ -2089,3 +2089,7 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmmsg F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmmsg F -+GLIBC_2.24 sendmsg F -diff --git a/sysdeps/unix/sysv/linux/alpha/Versions b/sysdeps/unix/sysv/linux/alpha/Versions -index 29b82f9..31abb22 100644 ---- a/sysdeps/unix/sysv/linux/alpha/Versions -+++ b/sysdeps/unix/sysv/linux/alpha/Versions -@@ -85,6 +85,9 @@ libc { - #errlist-compat 140 - _sys_errlist; sys_errlist; _sys_nerr; sys_nerr; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - GLIBC_PRIVATE { - __libc_alpha_cache_shape; - } -diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist -index f3f3c70..5ce7e10 100644 ---- a/sysdeps/unix/sysv/linux/alpha/libc.abilist -+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist -@@ -2000,6 +2000,10 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmmsg F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/arm/libc.abilist b/sysdeps/unix/sysv/linux/arm/libc.abilist -index a93803d..9f8eecc 100644 ---- a/sysdeps/unix/sysv/linux/arm/libc.abilist -+++ b/sysdeps/unix/sysv/linux/arm/libc.abilist -@@ -90,6 +90,8 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.4 GLIBC_2.4 A - GLIBC_2.4 _Exit F - GLIBC_2.4 _IO_2_1_stderr_ D 0xa0 -diff --git a/sysdeps/unix/sysv/linux/hppa/Versions b/sysdeps/unix/sysv/linux/hppa/Versions -index b5098b2..f0af95e 100644 ---- a/sysdeps/unix/sysv/linux/hppa/Versions -+++ b/sysdeps/unix/sysv/linux/hppa/Versions -@@ -35,4 +35,7 @@ libc { - GLIBC_2.19 { - fanotify_mark; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - } -diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist -index 58ed133..421b6fe 100644 ---- a/sysdeps/unix/sysv/linux/hppa/libc.abilist -+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist -@@ -1854,6 +1854,8 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/i386/Versions b/sysdeps/unix/sysv/linux/i386/Versions -index f3544ac..64d503b 100644 ---- a/sysdeps/unix/sysv/linux/i386/Versions -+++ b/sysdeps/unix/sysv/linux/i386/Versions -@@ -45,6 +45,9 @@ libc { - # f* - fallocate64; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - GLIBC_PRIVATE { - __modify_ldt; - } -diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist -index 61cbae0..b7fc26c 100644 ---- a/sysdeps/unix/sysv/linux/i386/libc.abilist -+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist -@@ -2012,6 +2012,8 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist -index d40d264..e0df2e3 100644 ---- a/sysdeps/unix/sysv/linux/ia64/libc.abilist -+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist -@@ -1876,6 +1876,10 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmmsg F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/m68k/Versions b/sysdeps/unix/sysv/linux/m68k/Versions -index 7ecc96e..2dc2e83 100644 ---- a/sysdeps/unix/sysv/linux/m68k/Versions -+++ b/sysdeps/unix/sysv/linux/m68k/Versions -@@ -40,6 +40,9 @@ libc { - GLIBC_2.12 { - __m68k_read_tp; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - GLIBC_PRIVATE { - __vdso_atomic_cmpxchg_32; __vdso_atomic_barrier; - } -diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist -index 64432ae..f80cdfe 100644 ---- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist -+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist -@@ -91,6 +91,8 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.4 GLIBC_2.4 A - GLIBC_2.4 _Exit F - GLIBC_2.4 _IO_2_1_stderr_ D 0x98 -diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist -index 8086c38..9132c26 100644 ---- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist -+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist -@@ -1968,6 +1968,8 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/microblaze/Versions b/sysdeps/unix/sysv/linux/microblaze/Versions -index aa48a3c..2e93b8a 100644 ---- a/sysdeps/unix/sysv/linux/microblaze/Versions -+++ b/sysdeps/unix/sysv/linux/microblaze/Versions -@@ -2,4 +2,7 @@ libc { - GLIBC_2.18 { - fallocate64; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - } -diff --git a/sysdeps/unix/sysv/linux/microblaze/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/libc.abilist -index 8c4c3bb..9443927 100644 ---- a/sysdeps/unix/sysv/linux/microblaze/libc.abilist -+++ b/sysdeps/unix/sysv/linux/microblaze/libc.abilist -@@ -2089,3 +2089,5 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F -diff --git a/sysdeps/unix/sysv/linux/mips/mips32/Versions b/sysdeps/unix/sysv/linux/mips/mips32/Versions -index 9621fb5..c4f38d8 100644 ---- a/sysdeps/unix/sysv/linux/mips/mips32/Versions -+++ b/sysdeps/unix/sysv/linux/mips/mips32/Versions -@@ -3,4 +3,7 @@ libc { - getrlimit64; - setrlimit64; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - } -diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist -index db014ed..69386b2 100644 ---- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist -+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist -@@ -1943,6 +1943,8 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist -index 33ac881..62ba3f9 100644 ---- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist -+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist -@@ -1941,6 +1941,8 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/Versions b/sysdeps/unix/sysv/linux/mips/mips64/n32/Versions -index 9621fb5..c4f38d8 100644 ---- a/sysdeps/unix/sysv/linux/mips/mips64/n32/Versions -+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/Versions -@@ -3,4 +3,7 @@ libc { - getrlimit64; - setrlimit64; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - } -diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist -index b8b2c0e..49b2ad7 100644 ---- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist -+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist -@@ -1939,6 +1939,8 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/Versions b/sysdeps/unix/sysv/linux/mips/mips64/n64/Versions -new file mode 100644 -index 0000000..517d79a ---- /dev/null -+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/Versions -@@ -0,0 +1,5 @@ -+libc { -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } -+} -diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist -index 0741301..445db92 100644 ---- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist -+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist -@@ -1934,6 +1934,10 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmmsg F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/msgcompat.c b/sysdeps/unix/sysv/linux/msgcompat.c -new file mode 100644 -index 0000000..d45020a ---- /dev/null -+++ b/sysdeps/unix/sysv/linux/msgcompat.c -@@ -0,0 +1,196 @@ -+/* Temporary compatibility to bridge 2.24 ABI revert. -+ Copyright (C) 2015-2016 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 -+ -+#ifdef SHARED -+ -+ssize_t -+__libc_recvmsg_224 (int fd, struct msghdr *msg, int flags) -+{ -+ ssize_t ret; -+ -+ /* POSIX specifies that both msghdr::msg_iovlen and msghdr::msg_controllen -+ to be int and socklen_t respectively. However Linux defines it as -+ both size_t. So for 64-bit it requires some adjustments by copying to -+ temporary header and zeroing the pad fields. */ -+ struct msghdr hdr, *orig = msg; -+ if (msg != NULL) -+ { -+ hdr = *msg; -+ hdr.msg_iovlen = (int) hdr.msg_iovlen; -+ hdr.msg_controllen = (socklen_t) hdr.msg_controllen; -+ msg = &hdr; -+ } -+ -+# ifdef __ASSUME_RECVMSG_SYSCALL -+ ret = SYSCALL_CANCEL (recvmsg, fd, msg, flags); -+# else -+ ret = SOCKETCALL_CANCEL (recvmsg, fd, msg, flags); -+# endif -+ -+ if (orig != NULL) -+ *orig = hdr; -+ -+ return ret; -+} -+compat_symbol (libc, __libc_recvmsg_224, recvmsg, GLIBC_2_24); -+ -+ssize_t -+__sendmsg_224 (int fd, const struct msghdr *msg, int flags) -+{ -+ /* POSIX specifies that both msghdr::msg_iovlen and msghdr::msg_controllen -+ to be int and socklen_t respectively. However Linux defines it as -+ both size_t. So for 64-bit it requires some adjustments by copying to -+ temporary header and zeroing the pad fields. */ -+ struct msghdr hdr; -+ if (msg != NULL) -+ { -+ hdr = *msg; -+ hdr.msg_iovlen = (int) hdr.msg_iovlen; -+ hdr.msg_controllen = (socklen_t) hdr.msg_controllen; -+ msg = &hdr; -+ } -+ -+# ifdef __ASSUME_SENDMSG_SYSCALL -+ return SYSCALL_CANCEL (sendmsg, fd, msg, flags); -+# else -+ return SOCKETCALL_CANCEL (sendmsg, fd, msg, flags); -+# endif -+} -+compat_symbol (libc, __sendmsg_224, sendmsg, GLIBC_2_24); -+ -+#endif /* SHARED */ -+ -+#if defined (SHARED) && __WORDSIZE == 64 -+ -+static inline int -+send_mmsghdr (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags) -+{ -+ /* Emulate kernel interface for vlen size. */ -+ if (vlen > IOV_MAX) -+ vlen = IOV_MAX; -+ if (vlen == 0) -+ return 0; -+ /* POSIX specifies that both msghdr::msg_iovlen and msghdr::msg_controllen -+ to be int and socklen_t respectively, however Linux defines it as both -+ size_t. So for 64-bit it requires some adjustments by copying to -+ temporary header and zeroing the pad fields. -+ The problem is sendmmsg's msghdr may points to an already-filled control -+ buffer and modifying it is not part of sendmmsg contract (the data may -+ be in ro map). So interact over the msghdr calling the sendmsg that -+ adjust the header using a temporary buffer. */ -+ for (unsigned int i = 0; i < vlen; i++) -+ { -+ ssize_t ret = __sendmsg_224 (fd, &vmessages[i].msg_hdr, flags); -+ if (ret < 0) -+ return -1; -+ vmessages[i].msg_len = ret; -+ } -+ return 1; -+} -+ -+int -+__sendmmsg_224 (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags) -+{ -+ return send_mmsghdr (fd, vmessages, vlen, flags); -+} -+compat_symbol (libc, __sendmmsg_224, sendmmsg, GLIBC_2_24); -+ -+/* Do not use the recvmmsg syscall on socketcall architectures unless -+ it was added at the same time as the socketcall support or can be -+ assumed to be present. */ -+# if defined __ASSUME_SOCKETCALL \ -+ && !defined __ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL \ -+ && !defined __ASSUME_RECVMMSG_SYSCALL -+# undef __NR_recvmmsg -+# endif -+ -+static inline void -+adjust_mmsghdr (struct mmsghdr *vmessages, unsigned int vlen) -+{ -+ /* POSIX specifies that both msghdr::msg_iovlen and msghdr::msg_controllen -+ to be int and socklen_t respectively. However Linux defines it as -+ both size_t. So for 64-bit it requires some adjustments by zeroing -+ the pad fields. */ -+ struct mmsghdr *vmhdr = vmessages; -+ for (unsigned int i = 0; i != 0; i--, vmhdr++) -+ { -+ vmhdr->msg_hdr.msg_iovlen = (int) vmhdr->msg_hdr.msg_iovlen; -+ vmhdr->msg_hdr.msg_controllen -+ = (socklen_t) vmhdr->msg_hdr.msg_controllen; -+ } -+} -+ -+int -+__recvmmsg_224 (int fd, struct mmsghdr *vmessages, unsigned int vlen, -+ int flags, struct timespec *tmo) -+{ -+# ifdef __NR_recvmmsg -+ adjust_mmsghdr (vmessages, vlen); -+ return SYSCALL_CANCEL (recvmmsg, fd, vmessages, vlen, flags, tmo); -+# elif defined __NR_socketcall -+# ifdef __ASSUME_RECVMMSG_SOCKETCALL -+ adjust_mmsghdr (vmessages, vlen); -+ return SOCKETCALL_CANCEL (recvmmsg, fd, vmessages, vlen, flags, tmo); -+# else -+ static int have_recvmmsg; -+ if (__glibc_likely (have_recvmmsg >= 0)) -+ { -+ adjust_mmsghdr (vmessages, vlen); -+ int ret = SOCKETCALL_CANCEL (recvmmsg, fd, vmessages, vlen, flags, -+ tmo); -+ /* The kernel returns -EINVAL for unknown socket operations. -+ We need to convert that error to an ENOSYS error. */ -+ if (__builtin_expect (ret < 0, 0) -+ && have_recvmmsg == 0 -+ && errno == EINVAL) -+ { -+ /* Try another call, this time with an invalid file -+ descriptor and all other parameters cleared. This call -+ will not cause any harm and it will return -+ immediately. */ -+ ret = SOCKETCALL_CANCEL (invalid, -1); -+ if (errno == EINVAL) -+ { -+ have_recvmmsg = -1; -+ __set_errno (ENOSYS); -+ } -+ else -+ { -+ have_recvmmsg = 1; -+ __set_errno (EINVAL); -+ } -+ return -1; -+ } -+ return ret; -+ } -+ __set_errno (ENOSYS); -+ return -1; -+# endif /* __ASSUME_RECVMMSG_SOCKETCALL */ -+# else -+ __set_errno (ENOSYS); -+ return -1; -+# endif -+} -+compat_symbol (libc, __recvmmsg_224, recvmmsg, GLIBC_2_24); -+ -+#endif /* SHARED && __WORDSIZE == 64 */ -diff --git a/sysdeps/unix/sysv/linux/nios2/Versions b/sysdeps/unix/sysv/linux/nios2/Versions -index e42c85f..93458f5 100644 ---- a/sysdeps/unix/sysv/linux/nios2/Versions -+++ b/sysdeps/unix/sysv/linux/nios2/Versions -@@ -3,4 +3,7 @@ libc { - _flush_cache; - cacheflush; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - } -diff --git a/sysdeps/unix/sysv/linux/nios2/libc.abilist b/sysdeps/unix/sysv/linux/nios2/libc.abilist -index fa04825..d854b6d 100644 ---- a/sysdeps/unix/sysv/linux/nios2/libc.abilist -+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist -@@ -2130,3 +2130,5 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F -diff --git a/sysdeps/unix/sysv/linux/powerpc/Versions b/sysdeps/unix/sysv/linux/powerpc/Versions -index 8ebeea1..ab0db57 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/Versions -+++ b/sysdeps/unix/sysv/linux/powerpc/Versions -@@ -5,6 +5,9 @@ ld { - } - } - libc { -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - GLIBC_PRIVATE { - __vdso_get_tbfreq; - __vdso_clock_gettime; -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist -index 3d633c0..bcb4bd1 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist -+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist -@@ -1972,6 +1972,8 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist -index a6b164b..01f4957 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist -+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist -@@ -1977,6 +1977,8 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions -index a8e88b8..53e5527 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions -+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions -@@ -22,6 +22,9 @@ libc { - GLIBC_2.17 { - __ppc_get_timebase_freq; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - } - - librt { -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist -index 7200b76..8348670 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist -+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist -@@ -2177,3 +2177,7 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmmsg F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmmsg F -+GLIBC_2.24 sendmsg F -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist -index de62ecb..3de5d61 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist -+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist -@@ -91,6 +91,10 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmmsg F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 _Exit F - GLIBC_2.3 _IO_2_1_stderr_ D 0xe0 -diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/Versions b/sysdeps/unix/sysv/linux/s390/s390-32/Versions -index 1c120e8..afcc3fe 100644 ---- a/sysdeps/unix/sysv/linux/s390/s390-32/Versions -+++ b/sysdeps/unix/sysv/linux/s390/s390-32/Versions -@@ -49,6 +49,9 @@ libc { - GLIBC_2.11 { - fallocate64; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - } - - libutil { -diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist -index 8da0bc0..761f340 100644 ---- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist -+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist -@@ -1972,6 +1972,8 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/Versions b/sysdeps/unix/sysv/linux/s390/s390-64/Versions -index 3f4d960..fde5aee 100644 ---- a/sysdeps/unix/sysv/linux/s390/s390-64/Versions -+++ b/sysdeps/unix/sysv/linux/s390/s390-64/Versions -@@ -4,6 +4,9 @@ libc { - __register_frame; __register_frame_table; __deregister_frame; - __frame_state_for; __register_frame_info_table; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - } - - librt { -diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist -index 59066a9..b7f5371 100644 ---- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist -+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist -@@ -1873,6 +1873,10 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmmsg F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/sh/Versions b/sysdeps/unix/sysv/linux/sh/Versions -index e0938c4..ae5a00e 100644 ---- a/sysdeps/unix/sysv/linux/sh/Versions -+++ b/sysdeps/unix/sysv/linux/sh/Versions -@@ -30,4 +30,7 @@ libc { - GLIBC_2.16 { - fanotify_mark; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - } -diff --git a/sysdeps/unix/sysv/linux/sh/libc.abilist b/sysdeps/unix/sysv/linux/sh/libc.abilist -index 01ca9e6..fb58c06 100644 ---- a/sysdeps/unix/sysv/linux/sh/libc.abilist -+++ b/sysdeps/unix/sysv/linux/sh/libc.abilist -@@ -1858,6 +1858,8 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/sparc/Versions b/sysdeps/unix/sysv/linux/sparc/Versions -index 4dc1cd7..adbdec5 100644 ---- a/sysdeps/unix/sysv/linux/sparc/Versions -+++ b/sysdeps/unix/sysv/linux/sparc/Versions -@@ -29,6 +29,9 @@ libc { - - __getshmlba; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - } - - libpthread { -diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist -index 245c1c6..01260e2 100644 ---- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist -+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist -@@ -1964,6 +1964,8 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions -index fbea1bb..f950070 100644 ---- a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions -+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions -@@ -8,6 +8,9 @@ libc { - # w* - wordexp; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - } - - librt { -diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist -index 4478d13..8884d4e 100644 ---- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist -+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist -@@ -1902,6 +1902,10 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmmsg F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/tile/Versions b/sysdeps/unix/sysv/linux/tile/Versions -index 13da68f..a68e181 100644 ---- a/sysdeps/unix/sysv/linux/tile/Versions -+++ b/sysdeps/unix/sysv/linux/tile/Versions -@@ -11,6 +11,9 @@ libc { - fallocate64; - set_dataplane; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - GLIBC_PRIVATE { - __syscall_error; - __vdso_clock_gettime; -diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist -index c1a2613..81eea08 100644 ---- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist -+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist -@@ -2096,3 +2096,5 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F -diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Versions b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Versions -new file mode 100644 -index 0000000..517d79a ---- /dev/null -+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Versions -@@ -0,0 +1,5 @@ -+libc { -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } -+} -diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist -index 35fbf8a..9ce9b57 100644 ---- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist -+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist -@@ -2096,3 +2096,7 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmmsg F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmmsg F -+GLIBC_2.24 sendmsg F -diff --git a/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist -index c1a2613..81eea08 100644 ---- a/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist -+++ b/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist -@@ -2096,3 +2096,5 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F -diff --git a/sysdeps/unix/sysv/linux/x86_64/64/Versions b/sysdeps/unix/sysv/linux/x86_64/64/Versions -new file mode 100644 -index 0000000..517d79a ---- /dev/null -+++ b/sysdeps/unix/sysv/linux/x86_64/64/Versions -@@ -0,0 +1,5 @@ -+libc { -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } -+} -diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist -index c1054ce..03549b1 100644 ---- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist -+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist -@@ -1853,6 +1853,10 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmmsg F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmmsg F -+GLIBC_2.24 sendmsg F - GLIBC_2.3 GLIBC_2.3 A - GLIBC_2.3 __ctype_b_loc F - GLIBC_2.3 __ctype_tolower_loc F -diff --git a/sysdeps/unix/sysv/linux/x86_64/Versions b/sysdeps/unix/sysv/linux/x86_64/Versions -index 2a7ed28..bbef7e0 100644 ---- a/sysdeps/unix/sysv/linux/x86_64/Versions -+++ b/sysdeps/unix/sysv/linux/x86_64/Versions -@@ -6,6 +6,9 @@ libc { - - modify_ldt; - } -+ GLIBC_2.24 { -+ recvmsg; sendmsg; -+ } - } - - librt { -diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist -index 2fd6d60..86dab3f 100644 ---- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist -+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist -@@ -2096,3 +2096,5 @@ GLIBC_2.23 fts64_read F - GLIBC_2.23 fts64_set F - GLIBC_2.24 GLIBC_2.24 A - GLIBC_2.24 quick_exit F -+GLIBC_2.24 recvmsg F -+GLIBC_2.24 sendmsg F diff --git a/glibc.spec b/glibc.spec index ef7d149..c037c7b 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1,6 +1,6 @@ %define glibcsrcdir glibc-2.23-561-gf531f93 %define glibcversion 2.23.90 -%define glibcrelease 29%{?dist} +%define glibcrelease 30%{?dist} # Pre-release tarballs are pulled in from git using a command that is # effectively: # @@ -296,7 +296,6 @@ Patch2036: glibc-gcc-PR69537.patch # extend_alloca removal, BZ 18023 Patch2037: glibc-rh1315108.patch Patch2038: glibc-rh1335011.patch -Patch2039: glibc-rh1344830.patch # Upstream BZ 20313 Patch2110: glibc-rh1351108-update-to-unicode-9.0.0.patch @@ -829,7 +828,6 @@ microbenchmark tests on the system. %patch2036 -p1 %patch2037 -p1 %patch2038 -p1 -%patch2039 -p1 %patch2110 -p1 %patch2111 -p1 %patch2112 -p1 @@ -2156,6 +2154,9 @@ rm -f *.filelist* %endif %changelog +* Thu Jul 21 2016 Florian Weimer - 2.23.90-30 +- Drop sendmsg/recvmsg compatibility patch (#1344830) + * Wed Jul 20 2016 Florian Weimer - 2.23.90-29 - Move NSS modules to subpackages (#1338889)