about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog27
-rw-r--r--sysdeps/unix/sysv/linux/accept4.c11
-rw-r--r--sysdeps/unix/sysv/linux/i386/kernel-features.h6
-rw-r--r--sysdeps/unix/sysv/linux/kernel-features.h21
-rw-r--r--sysdeps/unix/sysv/linux/microblaze/kernel-features.h3
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/kernel-features.h3
-rw-r--r--sysdeps/unix/sysv/linux/recvmmsg.c11
-rw-r--r--sysdeps/unix/sysv/linux/sendmmsg.c11
-rw-r--r--sysdeps/unix/sysv/linux/sh/kernel-features.h3
-rw-r--r--sysdeps/unix/sysv/linux/sparc/kernel-features.h9
10 files changed, 40 insertions, 65 deletions
diff --git a/ChangeLog b/ChangeLog
index dc0f8f6643..90aed79f8c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,30 @@
+2017-05-09  Joseph Myers  <joseph@codesourcery.com>
+
+	* sysdeps/unix/sysv/linux/accept4.c (accept4): Use syscall if
+	[__ASSUME_ACCEPT4_SYSCALL], otherwise socketcall.
+	* sysdeps/unix/sysv/linux/recvmmsg.c (recvmmsg): Use syscall if
+	[__ASSUME_RECVMMSG_SYSCALL], otherwise socketcall.
+	* sysdeps/unix/sysv/linux/sendmmsg.c (__sendmmsg): Use syscall if
+	[__ASSUME_SENDMMSG_SYSCALL], otherwise socketcall.
+	* sysdeps/unix/sysv/linux/kernel-features.h
+	(__ASSUME_ACCEPT4_SYSCALL): Move to general list of macros for
+	socket syscalls.
+	(__ASSUME_RECVMMSG_SYSCALL): Likewise.
+	(__ASSUME_SENDMMSG_SYSCALL): Likewise.
+	* sysdeps/unix/sysv/linux/i386/kernel-features.h
+	(__ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL): Remove.
+	(__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
+	* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
+	(__ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL): Remove.
+	* sysdeps/unix/sysv/linux/powerpc/kernel-features.h
+	(__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
+	* sysdeps/unix/sysv/linux/sh/kernel-features.h
+	(__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
+	* sysdeps/unix/sysv/linux/sparc/kernel-features.h
+	(__ASSUME_ACCEPT4_SYSCALL_WITH_SOCKETCALL): Likewise.
+	(__ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
+	(__ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL): Likewise.
+
 2017-05-09  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
 	* posix/Makefile (headers): Add pthreadtypes-arch.h and
diff --git a/sysdeps/unix/sysv/linux/accept4.c b/sysdeps/unix/sysv/linux/accept4.c
index 0592f43dd6..1590c021ad 100644
--- a/sysdeps/unix/sysv/linux/accept4.c
+++ b/sysdeps/unix/sysv/linux/accept4.c
@@ -28,14 +28,9 @@
 int
 accept4 (int fd, __SOCKADDR_ARG addr, socklen_t *addr_len, int flags)
 {
-/* Do not use the accept4 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_ACCEPT4_SYSCALL_WITH_SOCKETCALL \
-    && !defined __ASSUME_ACCEPT4_SYSCALL
-  return SOCKETCALL_CANCEL (accept4, fd, addr.__sockaddr__, addr_len, flags);
-#else
+#ifdef __ASSUME_ACCEPT4_SYSCALL
   return SYSCALL_CANCEL (accept4, fd, addr.__sockaddr__, addr_len, flags);
+#else
+  return SOCKETCALL_CANCEL (accept4, fd, addr.__sockaddr__, addr_len, flags);
 #endif
 }
diff --git a/sysdeps/unix/sysv/linux/i386/kernel-features.h b/sysdeps/unix/sysv/linux/i386/kernel-features.h
index 96a8e3bc1d..c6eb20f360 100644
--- a/sysdeps/unix/sysv/linux/i386/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/i386/kernel-features.h
@@ -20,12 +20,6 @@
 /* i386 uses socketcall.  */
 #define __ASSUME_SOCKETCALL		1
 
-/* The recvmmsg syscall was added for i386 in 2.6.33.  */
-#define __ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL	1
-
-/* The sendmmsg syscall was added for i386 in 3.0.  */
-#define __ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL	1
-
 /* Direct socketcalls available with kernel 4.3.  */
 #if __LINUX_KERNEL_VERSION >= 0x040300
 # define __ASSUME_SOCKET_SYSCALL             1
diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h
index 77285656cd..76053b5451 100644
--- a/sysdeps/unix/sysv/linux/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
@@ -71,16 +71,6 @@
    2.6.27.  */
 #define __ASSUME_IN_NONBLOCK	1
 
-/* Support for accept4 functionality was added in 2.6.28, but for some
-   architectures using a separate syscall rather than socketcall that
-   syscall was only added later, and some architectures first had
-   socketcall support then a separate syscall.  Define
-   __ASSUME_ACCEPT4_SYSCALL if it is available through a separate
-   syscall, and __ASSUME_ACCEPT4_SYSCALL_WITH_SOCKETCALL if it became
-   available through a separate syscall at the same time as through
-   socketcall.  */
-#define __ASSUME_ACCEPT4_SYSCALL	1
-
 /* Support for the FUTEX_CLOCK_REALTIME flag was added in 2.6.29.  */
 #define __ASSUME_FUTEX_CLOCK_REALTIME	1
 
@@ -88,18 +78,12 @@
 #define __ASSUME_PREADV	1
 #define __ASSUME_PWRITEV	1
 
-/* Support for recvmmsg functionality was added in 2.6.33.  The macros
-   defined correspond to those for accept4.  */
-#define __ASSUME_RECVMMSG_SYSCALL	1
-
 /* statfs fills in f_flags since 2.6.36.  */
 #if __LINUX_KERNEL_VERSION >= 0x020624
 # define __ASSUME_STATFS_F_FLAGS	1
 #endif
 
-/* Support for sendmmsg functionality was added in 3.0.  The macros
-   defined correspond to those for accept4 and recvmmsg.  */
-#define __ASSUME_SENDMMSG_SYSCALL	1
+/* Support for sendmmsg functionality was added in 3.0.  */
 #define __ASSUME_SENDMMSG	1
 
 /* On most architectures, most socket syscalls are supported for all
@@ -111,6 +95,9 @@
 #define __ASSUME_CONNECT_SYSCALL	1
 #define __ASSUME_RECVFROM_SYSCALL	1
 #define __ASSUME_SENDTO_SYSCALL		1
+#define __ASSUME_ACCEPT4_SYSCALL	1
+#define __ASSUME_RECVMMSG_SYSCALL	1
+#define __ASSUME_SENDMMSG_SYSCALL	1
 
 /* Support for SysV IPC through wired syscalls.  All supported architectures
    either support ipc syscall and/or all the ipc correspondent syscalls.  */
diff --git a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h
index fe170a0987..0257524777 100644
--- a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h
@@ -33,9 +33,6 @@
 #define __ASSUME_GETSOCKOPT_SYSCALL	1
 #define __ASSUME_SETSOCKOPT_SYSCALL	1
 
-/* Support for the accept4 and recvmmsg syscalls was added in 2.6.33.  */
-#define __ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL      1
-
 #include_next <kernel-features.h>
 
 /* Support for the pselect6, preadv and pwritev syscalls was added in
diff --git a/sysdeps/unix/sysv/linux/powerpc/kernel-features.h b/sysdeps/unix/sysv/linux/powerpc/kernel-features.h
index dc9ad941f7..e026394422 100644
--- a/sysdeps/unix/sysv/linux/powerpc/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/powerpc/kernel-features.h
@@ -34,9 +34,6 @@
 #define __ASSUME_GETSOCKOPT_SYSCALL	1
 #define __ASSUME_SETSOCKOPT_SYSCALL	1
 
-/* The sendmmsg syscall was added for PowerPC in 3.0.  */
-#define __ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL	1
-
 /* Define this if your 32-bit syscall API requires 64-bit register
    pairs to start with an even-number register.  */
 #ifndef __powerpc64__
diff --git a/sysdeps/unix/sysv/linux/recvmmsg.c b/sysdeps/unix/sysv/linux/recvmmsg.c
index de4412972b..60e06b7754 100644
--- a/sysdeps/unix/sysv/linux/recvmmsg.c
+++ b/sysdeps/unix/sysv/linux/recvmmsg.c
@@ -28,14 +28,9 @@ int
 recvmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags,
 	  struct timespec *tmo)
 {
-  /* 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
-  return SOCKETCALL_CANCEL (recvmmsg, fd, vmessages, vlen, flags, tmo);
-#else
+#ifdef __ASSUME_RECVMMSG_SYSCALL
   return SYSCALL_CANCEL (recvmmsg, fd, vmessages, vlen, flags, tmo);
+#else
+  return SOCKETCALL_CANCEL (recvmmsg, fd, vmessages, vlen, flags, tmo);
 #endif
 }
diff --git a/sysdeps/unix/sysv/linux/sendmmsg.c b/sysdeps/unix/sysv/linux/sendmmsg.c
index c559623c12..e0c2556309 100644
--- a/sysdeps/unix/sysv/linux/sendmmsg.c
+++ b/sysdeps/unix/sysv/linux/sendmmsg.c
@@ -27,15 +27,10 @@
 int
 __sendmmsg (int fd, struct mmsghdr *vmessages, unsigned int vlen, int flags)
 {
-  /* Do not use the sendmmsg 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_SENDMMSG_SYSCALL_WITH_SOCKETCALL \
-    && !defined __ASSUME_SENDMMSG_SYSCALL
-  return SOCKETCALL_CANCEL (sendmmsg, fd, vmessages, vlen, flags);
-#else
+#ifdef __ASSUME_SENDMMSG_SYSCALL
   return SYSCALL_CANCEL (sendmmsg, fd, vmessages, vlen, flags);
+#else
+  return SOCKETCALL_CANCEL (sendmmsg, fd, vmessages, vlen, flags);
 #endif
 }
 libc_hidden_def (__sendmmsg)
diff --git a/sysdeps/unix/sysv/linux/sh/kernel-features.h b/sysdeps/unix/sysv/linux/sh/kernel-features.h
index b0b321576c..175b4f5433 100644
--- a/sysdeps/unix/sysv/linux/sh/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/sh/kernel-features.h
@@ -37,9 +37,6 @@
 #define __ASSUME_GETSOCKOPT_SYSCALL	1
 #define __ASSUME_SETSOCKOPT_SYSCALL	1
 
-/* The sendmmsg syscall was added for SH in 3.0.  */
-#define __ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL	1
-
 #include_next <kernel-features.h>
 
 /* SH does not have a 64-bit inode field.  */
diff --git a/sysdeps/unix/sysv/linux/sparc/kernel-features.h b/sysdeps/unix/sysv/linux/sparc/kernel-features.h
index c833201767..72065a0248 100644
--- a/sysdeps/unix/sysv/linux/sparc/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/sparc/kernel-features.h
@@ -20,15 +20,6 @@
 /* SPARC uses socketcall.  */
 #define __ASSUME_SOCKETCALL		1
 
-/* The accept4 syscall was added for SPARC in 2.6.28.  */
-#define __ASSUME_ACCEPT4_SYSCALL_WITH_SOCKETCALL	1
-
-/* The recvmmsg syscall was added for SPARC in 2.6.33.  */
-#define __ASSUME_RECVMMSG_SYSCALL_WITH_SOCKETCALL	1
-
-/* The sendmmsg syscall was added for SPARC in 3.0.  */
-#define __ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL	1
-
 #include_next <kernel-features.h>
 
 /* 32-bit SPARC kernels do not support