diff options
-rw-r--r-- | ChangeLog | 21 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/Makefile | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/aarch64/libc.abilist | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/libc.abilist | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ia64/libc.abilist | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/oldrecvmmsg.c | 87 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/oldsendmmsg.c | 76 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/recvmmsg.c | 61 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sendmmsg.c | 72 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/x86_64/64/libc.abilist | 2 |
16 files changed, 296 insertions, 44 deletions
@@ -1,5 +1,26 @@ 2016-05-25 Adhemerval Zanella <adhemerval.zanella@linaro.org> + * sysdeps/unix/sysv/linux/Makefile + [$(subdir) = socket] (sysdep_routines): Add oldrecvmmsg and + oldsendmmsg. + * sysdeps/unix/sysv/linux/aarch64/libc.abilist: Add recvmmsg and + sendmmsg. + * sysdeps/unix/sysv/linux/alpha/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/ia64/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist: Likewise. + * sysdeps/sysv/linux/powerpc/powerpc64/libc-le.abilist: Likewise. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist: + Likewise. + * sysdeps/unix/sysv/linux/x86_64/64/libc.abilist: Likewise. + * sysdeps/unix/sysv/linux/oldrecvmmsg.c: New file. + * sysdeps/unix/sysv/linux/oldsendmmsg.c: Likewise. + * sysdeps/unix/sysv/linux/recvmmsg.c (__recvmmsg): Adjust msghdr + iovlen and controllen fields to adjust to POSIX specification. + * sysdeps/unix/sysv/linux/sendmmsg.c (__sendmmsg): Likewise. + * conform/data/sys/socket.h-data (msghdr.msg_iovlen): Remove xfail- and change to correct expected type. (msghdr.msg_controllen): Likewise. diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index bbba51bda8..c57575fbcb 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -124,7 +124,8 @@ 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 oldrecvmsg oldsendmsg +sysdep_routines += cmsg_nxthdr oldrecvmsg oldsendmsg \ + oldrecvmmsg oldsendmmsg CFLAGS-recvmsg.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-sendmsg.c = -fexceptions -fasynchronous-unwind-tables CFLAGS-oldrecvmsg.c = -fexceptions -fasynchronous-unwind-tables diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist index c3f2346ad1..79818172ba 100644 --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist @@ -2088,5 +2088,7 @@ GLIBC_2.23 fts64_open F GLIBC_2.23 fts64_read F GLIBC_2.23 fts64_set F GLIBC_2.24 GLIBC_2.24 A +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/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist index 7822242258..0c1e1acc71 100644 --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist @@ -1999,7 +1999,9 @@ GLIBC_2.23 fts64_open F GLIBC_2.23 fts64_read F GLIBC_2.23 fts64_set F GLIBC_2.24 GLIBC_2.24 A +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 diff --git a/sysdeps/unix/sysv/linux/ia64/libc.abilist b/sysdeps/unix/sysv/linux/ia64/libc.abilist index f5739b47da..b1388d11ad 100644 --- a/sysdeps/unix/sysv/linux/ia64/libc.abilist +++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist @@ -1875,7 +1875,9 @@ GLIBC_2.23 fts64_open F GLIBC_2.23 fts64_read F GLIBC_2.23 fts64_set F GLIBC_2.24 GLIBC_2.24 A +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 diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist index 6722f90fb0..0e2ff7502c 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist @@ -1933,7 +1933,9 @@ GLIBC_2.23 fts64_open F GLIBC_2.23 fts64_read F GLIBC_2.23 fts64_set F GLIBC_2.24 GLIBC_2.24 A +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 diff --git a/sysdeps/unix/sysv/linux/oldrecvmmsg.c b/sysdeps/unix/sysv/linux/oldrecvmmsg.c new file mode 100644 index 0000000000..4bf849bb58 --- /dev/null +++ b/sysdeps/unix/sysv/linux/oldrecvmmsg.c @@ -0,0 +1,87 @@ +/* Compatibility version of recvmsg. + Copyright (C) 2010-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 + <http://www.gnu.org/licenses/>. */ + +#include <sys/socket.h> +#include <sysdep-cancel.h> +#include <socketcall.h> +#include <shlib-compat.h> + +#if __WORDSIZE == 64 +# if SHLIB_COMPAT (libc, GLIBC_2_12, 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 + +int +__old_recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, + int flags, struct timespec *tmo) +{ +# ifdef __NR_recvmmsg + return SYSCALL_CANCEL (recvmmsg, fd, vmessages, vlen, flags, tmo); +# elif defined __NR_socketcall +# ifdef __ASSUME_RECVMMSG_SOCKETCALL + return SOCKETCALL_CANCEL (recvmmsg, fd, vmessages, vlen, flags, tmo); +# else + static int have_recvmmsg; + if (__glibc_likely (have_recvmmsg >= 0)) + { + 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, __old_recvmmsg, recvmmsg, GLIBC_2_12); + +# endif /* SHLIB_COMPAT (libc, GLIBC_2_12, GLIBC_2_24) */ +#endif /* __WORDSIZE == 64 */ diff --git a/sysdeps/unix/sysv/linux/oldsendmmsg.c b/sysdeps/unix/sysv/linux/oldsendmmsg.c new file mode 100644 index 0000000000..e40c31121c --- /dev/null +++ b/sysdeps/unix/sysv/linux/oldsendmmsg.c @@ -0,0 +1,76 @@ +/* Compatibility implementation of sendmmsg. + Copyright (C) 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 + <http://www.gnu.org/licenses/>. */ + +#include <sys/socket.h> +#include <sysdep-cancel.h> +#include <socketcall.h> +#include <shlib-compat.h> + +#if __WORDSIZE == 64 +# if SHLIB_COMPAT (libc, GLIBC_2_14, GLIBC_2_24) + +int +__old_sendmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, + int flags) +{ +# ifdef __NR_sendmmsg + return SYSCALL_CANCEL (sendmmsg, fd, vmessages, vlen, flags); +# elif defined __NR_socketcall +# ifdef __ASSUME_SENDMMSG_SOCKETCALL + return SOCKETCALL_CANCEL (sendmmsg, fd, vmessages, vlen, flags); +# else + static int have_sendmmsg; + if (__glibc_likely (have_sendmmsg >= 0)) + { + int ret = SOCKETCALL_CANCEL (sendmmsg, fd, vmessages, vlen, flags); + /* 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_sendmmsg == 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_sendmmsg = -1; + __set_errno (ENOSYS); + } + else + { + have_sendmmsg = 1; + __set_errno (EINVAL); + } + return -1; + } + return ret; + } + __set_errno (ENOSYS); + return -1; +# endif /* __ASSUME_SENDMMSG_SOCKETCALL */ +# else /* defined __NR_socketcall */ + __set_errno (ENOSYS); + return -1; +# endif +} +compat_symbol (libc, __old_sendmmsg, sendmmsg, GLIBC_2_14); +# endif /* SHLIB_COMPAT (libc, GLIBC_2_14, GLIBC_2_24) */ +#endif /* __WORDSIZE == 64 */ diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist index 7839b5a5dc..85286c42f3 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist @@ -2176,5 +2176,7 @@ GLIBC_2.23 fts64_open F GLIBC_2.23 fts64_read F GLIBC_2.23 fts64_set F GLIBC_2.24 GLIBC_2.24 A +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 20d5a19654..0abd098e29 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist @@ -90,7 +90,9 @@ GLIBC_2.23 fts64_open F GLIBC_2.23 fts64_read F GLIBC_2.23 fts64_set F GLIBC_2.24 GLIBC_2.24 A +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 diff --git a/sysdeps/unix/sysv/linux/recvmmsg.c b/sysdeps/unix/sysv/linux/recvmmsg.c index bf18260b46..08b89ba962 100644 --- a/sysdeps/unix/sysv/linux/recvmmsg.c +++ b/sysdeps/unix/sysv/linux/recvmmsg.c @@ -16,12 +16,10 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#include <errno.h> #include <sys/socket.h> - +#include <socketcall.h> #include <sysdep-cancel.h> -#include <sys/syscall.h> -#include <kernel-features.h> +#include <shlib-compat.h> /* Do not use the recvmmsg syscall on socketcall architectures unless it was added at the same time as the socketcall support or can be @@ -32,31 +30,39 @@ # undef __NR_recvmmsg #endif -#ifdef __NR_recvmmsg +static inline void +adjust_mmsghdr (struct mmsghdr *vmessages, unsigned int vlen) +{ +#if __WORDSIZE == 64 + /* 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.__glibc_reserved1 = 0; + vmhdr->msg_hdr.__glibc_reserved2 = 0; + } +#endif +} + int -recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, - struct timespec *tmo) +__recvmmsg (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 -# include <socketcall.h> # ifdef __ASSUME_RECVMMSG_SOCKETCALL -int -recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, - struct timespec *tmo) -{ + adjust_mmsghdr (vmessages, vlen); return SOCKETCALL_CANCEL (recvmmsg, fd, vmessages, vlen, flags, tmo); -} # else -static int have_recvmmsg; - -int -recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, - struct timespec *tmo) -{ + 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. @@ -86,8 +92,19 @@ recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags, } __set_errno (ENOSYS); return -1; -} # endif /* __ASSUME_RECVMMSG_SOCKETCALL */ #else -# include <socket/recvmmsg.c> +# define STUB 1 + __set_errno (ENOSYS); + return -1; +#endif +} +#ifdef STUB +stub_warning (recvmmsg) +#endif + +#if __WORDSIZE == 64 +versioned_symbol (libc, __recvmmsg, recvmmsg, GLIBC_2_24); +#else +weak_alias (__recvmmsg, recvmmsg) #endif diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist index 5892fcdae9..03a9b97f81 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist @@ -1872,7 +1872,9 @@ GLIBC_2.23 fts64_open F GLIBC_2.23 fts64_read F GLIBC_2.23 fts64_set F GLIBC_2.24 GLIBC_2.24 A +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 diff --git a/sysdeps/unix/sysv/linux/sendmmsg.c b/sysdeps/unix/sysv/linux/sendmmsg.c index 6e0d46be9e..9b193438ce 100644 --- a/sysdeps/unix/sysv/linux/sendmmsg.c +++ b/sysdeps/unix/sysv/linux/sendmmsg.c @@ -16,12 +16,10 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#include <errno.h> #include <sys/socket.h> - +#include <socketcall.h> #include <sysdep-cancel.h> -#include <sys/syscall.h> -#include <kernel-features.h> +#include <shlib-compat.h> /* Do not use the sendmmsg syscall on socketcall architectures unless it was added at the same time as the socketcall support or can be @@ -32,31 +30,53 @@ # undef __NR_sendmmsg #endif -#ifdef __NR_sendmmsg +#if __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 (fd, &vmessages[i].msg_hdr, flags); + if (ret < 0) + return -1; + vmessages[i].msg_len = ret; + } + return 1; +} +#endif + int __sendmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags) { +#if __WORDSIZE == 64 + return send_mmsghdr (fd, vmessages, vlen, flags); +#elif defined __NR_sendmmsg return SYSCALL_CANCEL (sendmmsg, fd, vmessages, vlen, flags); -} -libc_hidden_def (__sendmmsg) -weak_alias (__sendmmsg, sendmmsg) #elif defined __NR_socketcall -# include <socketcall.h> # ifdef __ASSUME_SENDMMSG_SOCKETCALL -int -__sendmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags) -{ return SOCKETCALL_CANCEL (sendmmsg, fd, vmessages, vlen, flags); -} # else -static int have_sendmmsg; - -int -__sendmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags) -{ + static int have_sendmmsg; if (__glibc_likely (have_sendmmsg >= 0)) { +# if __WORDSIZE == 64 + int ret = send_mmsghdr (fd, vmessages, vlen, flags); +# else int ret = SOCKETCALL_CANCEL (sendmmsg, fd, vmessages, vlen, flags); +# endif /* The kernel returns -EINVAL for unknown socket operations. We need to convert that error to an ENOSYS error. */ if (__builtin_expect (ret < 0, 0) @@ -84,10 +104,20 @@ __sendmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags) } __set_errno (ENOSYS); return -1; -} # endif /* __ASSUME_SENDMMSG_SOCKETCALL */ +#else /* defined __NR_socketcall */ +# define STUB 1 + __set_errno (ENOSYS); + return -1; +#endif +} +#ifdef STUB +stub_warning (sendmmsg) +#endif + libc_hidden_def (__sendmmsg) -weak_alias (__sendmmsg, sendmmsg) +#if __WORDSIZE == 64 +versioned_symbol (libc, __sendmmsg, sendmmsg, GLIBC_2_24); #else -# include <socket/sendmmsg.c> +weak_alias (__sendmmsg, sendmmsg) #endif diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist index 015a2f10ac..38b976f1ed 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist @@ -1901,7 +1901,9 @@ GLIBC_2.23 fts64_open F GLIBC_2.23 fts64_read F GLIBC_2.23 fts64_set F GLIBC_2.24 GLIBC_2.24 A +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 diff --git a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist index 1e160bde2c..07b1332a59 100644 --- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist +++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist @@ -2095,5 +2095,7 @@ GLIBC_2.23 fts64_open F GLIBC_2.23 fts64_read F GLIBC_2.23 fts64_set F GLIBC_2.24 GLIBC_2.24 A +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/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist index 175339e7cd..baea1f56c3 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist @@ -1852,7 +1852,9 @@ GLIBC_2.23 fts64_open F GLIBC_2.23 fts64_read F GLIBC_2.23 fts64_set F GLIBC_2.24 GLIBC_2.24 A +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 |