summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv')
-rw-r--r--sysdeps/unix/sysv/linux/Makefile9
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/Versions4
-rw-r--r--sysdeps/unix/sysv/linux/aarch64/libc.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/alpha/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/alpha/libc.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/arm/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/bits/socket.h49
-rw-r--r--sysdeps/unix/sysv/linux/hppa/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/hppa/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/i386/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/i386/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/ia64/libc.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/m68k/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n32/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n64/Versions5
-rw-r--r--sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/nios2/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/nios2/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/oldrecvmmsg.c87
-rw-r--r--sysdeps/unix/sysv/linux/oldrecvmsg.c40
-rw-r--r--sysdeps/unix/sysv/linux/oldsendmmsg.c76
-rw-r--r--sysdeps/unix/sysv/linux/oldsendmsg.c40
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/recvmmsg.c61
-rw-r--r--sysdeps/unix/sysv/linux/recvmsg.c39
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/sendmmsg.c72
-rw-r--r--sysdeps/unix/sysv/linux/sendmsg.c26
-rw-r--r--sysdeps/unix/sysv/linux/sh/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/sh/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/sparc/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/tile/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Versions5
-rw-r--r--sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist2
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/Versions5
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/64/libc.abilist4
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/Versions3
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist2
59 files changed, 70 insertions, 575 deletions
diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile
index c57575fbcb..35e1ed48d2 100644
--- a/sysdeps/unix/sysv/linux/Makefile
+++ b/sysdeps/unix/sysv/linux/Makefile
@@ -124,12 +124,9 @@ 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 \
- oldrecvmmsg oldsendmmsg
-CFLAGS-recvmsg.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-sendmsg.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-oldrecvmsg.c = -fexceptions -fasynchronous-unwind-tables
-CFLAGS-oldsendmsg.c = -fexceptions -fasynchronous-unwind-tables
+sysdep_routines += cmsg_nxthdr
+CFLAGS-recvmmsg.c = -fexceptions -fasynchronous-unwind-tables
+CFLAGS-sendmmsg.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 ae3742cc1e..9bd87fe2d0 100644
--- a/sysdeps/unix/sysv/linux/aarch64/Versions
+++ b/sysdeps/unix/sysv/linux/aarch64/Versions
@@ -5,10 +5,6 @@ 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 38788910c2..9cdb623a5c 100644
--- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
@@ -2089,7 +2089,3 @@ 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 31abb2206e..29b82f999b 100644
--- a/sysdeps/unix/sysv/linux/alpha/Versions
+++ b/sysdeps/unix/sysv/linux/alpha/Versions
@@ -85,9 +85,6 @@ 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 5ce7e10c44..f3f3c70ca6 100644
--- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
+++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
@@ -2000,10 +2000,6 @@ 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 9f8eecc4c5..a93803d182 100644
--- a/sysdeps/unix/sysv/linux/arm/libc.abilist
+++ b/sysdeps/unix/sysv/linux/arm/libc.abilist
@@ -90,8 +90,6 @@ 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/bits/socket.h b/sysdeps/unix/sysv/linux/bits/socket.h
index ef4629a743..2eb95f7e20 100644
--- a/sysdeps/unix/sysv/linux/bits/socket.h
+++ b/sysdeps/unix/sysv/linux/bits/socket.h
@@ -27,8 +27,6 @@
#include <stddef.h>
#include <sys/types.h>
-#include <endian.h>
-#include <bits/wordsize.h>
/* Type for length arguments in socket calls. */
#ifndef __socklen_t_defined
@@ -252,32 +250,13 @@ struct msghdr
socklen_t msg_namelen; /* Length of address data. */
struct iovec *msg_iov; /* Vector of data to send/receive into. */
-#if __WORDSIZE == 64
-# if __BYTE_ORDER == __BIG_ENDIAN
- int __glibc_reserved1; /* Pad to adjust Linux size to POSIX defined
- size for msg_iovlen. */
- int msg_iovlen; /* Number of elements in the vector. */
-# else
- int msg_iovlen;
- int __glibc_reserved1;
-# endif
-#else
- int msg_iovlen;
-#endif
+ size_t msg_iovlen; /* Number of elements in the vector. */
void *msg_control; /* Ancillary data (eg BSD filedesc passing). */
-#if __WORDSIZE == 64
-# if __BYTE_ORDER == __BIG_ENDIAN
- int __glibc_reserved2; /* Pad to adjust Linux size to POSIX defined
- size for msg_controllen. */
- socklen_t msg_controllen; /* Ancillary data buffer length. */
-# else
- socklen_t msg_controllen;
- int __glibc_reserved2;
-# endif
-#else
- socklen_t msg_controllen;
-#endif
+ size_t msg_controllen; /* Ancillary data buffer length.
+ !! The type should be socklen_t but the
+ definition of the kernel is incompatible
+ with this. */
int msg_flags; /* Flags on received message. */
};
@@ -285,19 +264,11 @@ struct msghdr
/* Structure used for storage of ancillary data object information. */
struct cmsghdr
{
-#if __WORDSIZE == 64
-# if __BYTE_ORDER == __BIG_ENDIAN
- int __glibc_reserved1; /* Pad toadjust Linux size to POSIX defined
- size for cmsg_len. */
- socklen_t cmsg_len; /* Length of data in cmsg_data plus length
- of cmsghdr structure. */
-# else
- socklen_t cmsg_len;
- int __glibc_reserved1;
-# endif
-#else
- socklen_t cmsg_len;
-#endif
+ size_t cmsg_len; /* Length of data in cmsg_data plus length
+ of cmsghdr structure.
+ !! The type should be socklen_t but the
+ definition of the kernel is incompatible
+ with this. */
int cmsg_level; /* Originating protocol. */
int cmsg_type; /* Protocol specific type. */
#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
diff --git a/sysdeps/unix/sysv/linux/hppa/Versions b/sysdeps/unix/sysv/linux/hppa/Versions
index f0af95ef46..b5098b2171 100644
--- a/sysdeps/unix/sysv/linux/hppa/Versions
+++ b/sysdeps/unix/sysv/linux/hppa/Versions
@@ -35,7 +35,4 @@ 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 421b6feaea..58ed133385 100644
--- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
+++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
@@ -1854,8 +1854,6 @@ 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 64d503b62d..f3544acb75 100644
--- a/sysdeps/unix/sysv/linux/i386/Versions
+++ b/sysdeps/unix/sysv/linux/i386/Versions
@@ -45,9 +45,6 @@ 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 b7fc26c4cd..61cbae0f58 100644
--- a/sysdeps/unix/sysv/linux/i386/libc.abilist
+++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
@@ -2012,8 +2012,6 @@ 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 e0df2e3ae2..d40d264ef2 100644
--- a/sysdeps/unix/sysv/linux/ia64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/ia64/libc.abilist
@@ -1876,10 +1876,6 @@ 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 2dc2e83d07..7ecc96ea97 100644
--- a/sysdeps/unix/sysv/linux/m68k/Versions
+++ b/sysdeps/unix/sysv/linux/m68k/Versions
@@ -40,9 +40,6 @@ 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 f80cdfe28e..64432ae0e1 100644
--- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
@@ -91,8 +91,6 @@ 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 9132c26e77..8086c3857e 100644
--- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
+++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
@@ -1968,8 +1968,6 @@ 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 2e93b8a43a..aa48a3c155 100644
--- a/sysdeps/unix/sysv/linux/microblaze/Versions
+++ b/sysdeps/unix/sysv/linux/microblaze/Versions
@@ -2,7 +2,4 @@ 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 94439272a5..8c4c3bba45 100644
--- a/sysdeps/unix/sysv/linux/microblaze/libc.abilist
+++ b/sysdeps/unix/sysv/linux/microblaze/libc.abilist
@@ -2089,5 +2089,3 @@ 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 c4f38d8faf..9621fb5cae 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/Versions
+++ b/sysdeps/unix/sysv/linux/mips/mips32/Versions
@@ -3,7 +3,4 @@ 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 69386b2a94..db014edc51 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
@@ -1943,8 +1943,6 @@ 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 62ba3f918e..33ac881346 100644
--- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
@@ -1941,8 +1941,6 @@ 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 c4f38d8faf..9621fb5cae 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/Versions
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/Versions
@@ -3,7 +3,4 @@ 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 49b2ad7aa5..b8b2c0eabb 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
@@ -1939,8 +1939,6 @@ 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
deleted file mode 100644
index 517d79a880..0000000000
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/Versions
+++ /dev/null
@@ -1,5 +0,0 @@
-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 445db92115..07413015f4 100644
--- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
@@ -1934,10 +1934,6 @@ 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/nios2/Versions b/sysdeps/unix/sysv/linux/nios2/Versions
index 93458f5951..e42c85f575 100644
--- a/sysdeps/unix/sysv/linux/nios2/Versions
+++ b/sysdeps/unix/sysv/linux/nios2/Versions
@@ -3,7 +3,4 @@ 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 d854b6d8c9..fa04825b2b 100644
--- a/sysdeps/unix/sysv/linux/nios2/libc.abilist
+++ b/sysdeps/unix/sysv/linux/nios2/libc.abilist
@@ -2130,5 +2130,3 @@ 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/oldrecvmmsg.c b/sysdeps/unix/sysv/linux/oldrecvmmsg.c
deleted file mode 100644
index 4bf849bb58..0000000000
--- a/sysdeps/unix/sysv/linux/oldrecvmmsg.c
+++ /dev/null
@@ -1,87 +0,0 @@
-/* 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/oldrecvmsg.c b/sysdeps/unix/sysv/linux/oldrecvmsg.c
deleted file mode 100644
index 01c596e09a..0000000000
--- a/sysdeps/unix/sysv/linux/oldrecvmsg.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Compatibility version of recvmsg.
- 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>
-
-/* Both libc.so and libpthread.so provides sendmsg, so we need to
- provide the compat symbol for both libraries. */
-#if SHLIB_COMPAT (MODULE_NAME, GLIBC_2_0, GLIBC_2_24)
-
-/* We can use the same struct layout for old symbol version since
- size is the same. */
-ssize_t
-__old_recvmsg (int fd, struct msghdr *msg, int flags)
-{
-# ifdef __ASSUME_RECVMSG_SYSCALL
- return SYSCALL_CANCEL (recvmsg, fd, msg, flags);
-# else
- return SOCKETCALL_CANCEL (recvmsg, fd, msg, flags);
-# endif
-}
-compat_symbol (MODULE_NAME, __old_recvmsg, recvmsg, GLIBC_2_0);
-#endif
diff --git a/sysdeps/unix/sysv/linux/oldsendmmsg.c b/sysdeps/unix/sysv/linux/oldsendmmsg.c
deleted file mode 100644
index e40c31121c..0000000000
--- a/sysdeps/unix/sysv/linux/oldsendmmsg.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/* 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/oldsendmsg.c b/sysdeps/unix/sysv/linux/oldsendmsg.c
deleted file mode 100644
index a96790aa23..0000000000
--- a/sysdeps/unix/sysv/linux/oldsendmsg.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Compatibility implementation of sendmsg.
- 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>
-
-/* Both libc.so and libpthread.so provides sendmsg, so we need to
- provide the compat symbol for both libraries. */
-#if SHLIB_COMPAT (MODULE_NAME, GLIBC_2_0, GLIBC_2_24)
-
-/* We can use the same struct layout for old symbol version since
- size is the same. */
-ssize_t
-__old_sendmsg (int fd, const struct msghdr *msg, int flags)
-{
-# ifdef __ASSUME_SENDMSG_SYSCALL
- return SYSCALL_CANCEL (sendmsg, fd, msg, flags);
-# else
- return SOCKETCALL_CANCEL (sendmsg, fd, msg, flags);
-# endif
-}
-compat_symbol (MODULE_NAME, __old_sendmsg, sendmsg, GLIBC_2_0);
-#endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/Versions b/sysdeps/unix/sysv/linux/powerpc/Versions
index ab0db57137..8ebeea15a1 100644
--- a/sysdeps/unix/sysv/linux/powerpc/Versions
+++ b/sysdeps/unix/sysv/linux/powerpc/Versions
@@ -5,9 +5,6 @@ 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 bcb4bd1c8d..3d633c0999 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
@@ -1972,8 +1972,6 @@ 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 01f49572ee..a6b164bc23 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
@@ -1977,8 +1977,6 @@ 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 53e5527cb3..a8e88b89db 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions
@@ -22,9 +22,6 @@ 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 83486704ab..7200b76287 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist
@@ -2177,7 +2177,3 @@ 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 3de5d61cb7..de62ecb0f3 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist
@@ -91,10 +91,6 @@ 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/recvmmsg.c b/sysdeps/unix/sysv/linux/recvmmsg.c
index 08b89ba962..bf18260b46 100644
--- a/sysdeps/unix/sysv/linux/recvmmsg.c
+++ b/sysdeps/unix/sysv/linux/recvmmsg.c
@@ -16,10 +16,12 @@
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 <shlib-compat.h>
+#include <sys/syscall.h>
+#include <kernel-features.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
@@ -30,39 +32,31 @@
# undef __NR_recvmmsg
#endif
-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
-}
-
+#ifdef __NR_recvmmsg
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
- adjust_mmsghdr (vmessages, vlen);
+int
+recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags,
+ struct timespec *tmo)
+{
return SOCKETCALL_CANCEL (recvmmsg, fd, vmessages, vlen, flags, tmo);
+}
# else
- static int have_recvmmsg;
+static int have_recvmmsg;
+
+int
+recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags,
+ struct timespec *tmo)
+{
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.
@@ -92,19 +86,8 @@ __recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen,
}
__set_errno (ENOSYS);
return -1;
-# endif /* __ASSUME_RECVMMSG_SOCKETCALL */
-#else
-# 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);
+# endif /* __ASSUME_RECVMMSG_SOCKETCALL */
#else
-weak_alias (__recvmmsg, recvmmsg)
+# include <socket/recvmmsg.c>
#endif
diff --git a/sysdeps/unix/sysv/linux/recvmsg.c b/sysdeps/unix/sysv/linux/recvmsg.c
index 25a319358b..14ba67e72c 100644
--- a/sysdeps/unix/sysv/linux/recvmsg.c
+++ b/sysdeps/unix/sysv/linux/recvmsg.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2015-2016 Free Software Foundation, Inc.
+/* Linux recvmsg syscall wrapper.
+ 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
@@ -23,35 +24,11 @@
ssize_t
__libc_recvmsg (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. */
-#if __WORDSIZE == 64
- struct msghdr hdr, *orig = msg;
- if (msg != NULL)
- {
- hdr = *msg;
- hdr.__glibc_reserved1 = 0;
- hdr.__glibc_reserved2 = 0;
- msg = &hdr;
- }
-#endif
-
-#ifdef __ASSUME_RECVMSG_SYSCALL
- ret = SYSCALL_CANCEL (recvmsg, fd, msg, flags);
-#else
- ret = SOCKETCALL_CANCEL (recvmsg, fd, msg, flags);
-#endif
-
-#if __WORDSIZE == 64
- if (orig != NULL)
- *orig = hdr;
-#endif
-
- return ret;
+# ifdef __ASSUME_RECVMSG_SYSCALL
+ return SYSCALL_CANCEL (recvmsg, fd, msg, flags);
+# else
+ return SOCKETCALL_CANCEL (recvmsg, fd, msg, flags);
+# endif
}
+weak_alias (__libc_recvmsg, recvmsg)
weak_alias (__libc_recvmsg, __recvmsg)
-versioned_symbol (libc, __libc_recvmsg, recvmsg, GLIBC_2_24);
diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/Versions b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
index afcc3fee4e..1c120e8cbe 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/Versions
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/Versions
@@ -49,9 +49,6 @@ 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 761f3401ca..8da0bc087f 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
@@ -1972,8 +1972,6 @@ 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 fde5aeee48..3f4d960421 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/Versions
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/Versions
@@ -4,9 +4,6 @@ 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 b7f5371085..59066a9402 100644
--- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
@@ -1873,10 +1873,6 @@ 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/sendmmsg.c b/sysdeps/unix/sysv/linux/sendmmsg.c
index 9b193438ce..6e0d46be9e 100644
--- a/sysdeps/unix/sysv/linux/sendmmsg.c
+++ b/sysdeps/unix/sysv/linux/sendmmsg.c
@@ -16,10 +16,12 @@
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 <shlib-compat.h>
+#include <sys/syscall.h>
+#include <kernel-features.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
@@ -30,53 +32,31 @@
# undef __NR_sendmmsg
#endif
-#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
-
+#ifdef __NR_sendmmsg
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;
+static int have_sendmmsg;
+
+int
+__sendmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags)
+{
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)
@@ -104,20 +84,10 @@ __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
-
+# endif /* __ASSUME_SENDMMSG_SOCKETCALL */
libc_hidden_def (__sendmmsg)
-#if __WORDSIZE == 64
-versioned_symbol (libc, __sendmmsg, sendmmsg, GLIBC_2_24);
-#else
weak_alias (__sendmmsg, sendmmsg)
+#else
+# include <socket/sendmmsg.c>
#endif
diff --git a/sysdeps/unix/sysv/linux/sendmsg.c b/sysdeps/unix/sysv/linux/sendmsg.c
index a5ef238c4a..e10ab60ec3 100644
--- a/sysdeps/unix/sysv/linux/sendmsg.c
+++ b/sysdeps/unix/sysv/linux/sendmsg.c
@@ -1,4 +1,5 @@
-/* Copyright (C) 2015-2016 Free Software Foundation, Inc.
+/* Compatibility implementation of sendmsg.
+ 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
@@ -23,26 +24,11 @@
ssize_t
__libc_sendmsg (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. */
-#if __WORDSIZE == 64
- struct msghdr hdr;
- if (msg != NULL)
- {
- hdr = *msg;
- hdr.__glibc_reserved1 = 0;
- hdr.__glibc_reserved2 = 0;
- msg = &hdr;
- }
-#endif
-
-#ifdef __ASSUME_SENDMSG_SYSCALL
+# ifdef __ASSUME_SENDMSG_SYSCALL
return SYSCALL_CANCEL (sendmsg, fd, msg, flags);
-#else
+# else
return SOCKETCALL_CANCEL (sendmsg, fd, msg, flags);
-#endif
+# endif
}
+weak_alias (__libc_sendmsg, sendmsg)
weak_alias (__libc_sendmsg, __sendmsg)
-versioned_symbol (libc, __libc_sendmsg, sendmsg, GLIBC_2_24);
diff --git a/sysdeps/unix/sysv/linux/sh/Versions b/sysdeps/unix/sysv/linux/sh/Versions
index ae5a00e640..e0938c4165 100644
--- a/sysdeps/unix/sysv/linux/sh/Versions
+++ b/sysdeps/unix/sysv/linux/sh/Versions
@@ -30,7 +30,4 @@ 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 fb58c06b3d..01ca9e65ba 100644
--- a/sysdeps/unix/sysv/linux/sh/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sh/libc.abilist
@@ -1858,8 +1858,6 @@ 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 adbdec508a..4dc1cd720b 100644
--- a/sysdeps/unix/sysv/linux/sparc/Versions
+++ b/sysdeps/unix/sysv/linux/sparc/Versions
@@ -29,9 +29,6 @@ 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 01260e253b..245c1c6d22 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
@@ -1964,8 +1964,6 @@ 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 f950070b4d..fbea1bb2ef 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/Versions
@@ -8,9 +8,6 @@ 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 8884d4e4b7..4478d13710 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
@@ -1902,10 +1902,6 @@ 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 a68e181940..13da68fa79 100644
--- a/sysdeps/unix/sysv/linux/tile/Versions
+++ b/sysdeps/unix/sysv/linux/tile/Versions
@@ -11,9 +11,6 @@ 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 81eea08440..c1a2613418 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
@@ -2096,5 +2096,3 @@ 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
deleted file mode 100644
index 517d79a880..0000000000
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Versions
+++ /dev/null
@@ -1,5 +0,0 @@
-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 9ce9b57b28..35fbf8a904 100644
--- a/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
@@ -2096,7 +2096,3 @@ 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 81eea08440..c1a2613418 100644
--- a/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
+++ b/sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist
@@ -2096,5 +2096,3 @@ 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
deleted file mode 100644
index 517d79a880..0000000000
--- a/sysdeps/unix/sysv/linux/x86_64/64/Versions
+++ /dev/null
@@ -1,5 +0,0 @@
-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 03549b17df..c1054ce9d2 100644
--- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
@@ -1853,10 +1853,6 @@ 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 bbef7e08e5..2a7ed280fd 100644
--- a/sysdeps/unix/sysv/linux/x86_64/Versions
+++ b/sysdeps/unix/sysv/linux/x86_64/Versions
@@ -6,9 +6,6 @@ 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 86dab3ff01..2fd6d60d38 100644
--- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
+++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
@@ -2096,5 +2096,3 @@ 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