about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/internal_accept4.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/internal_accept4.S')
-rw-r--r--sysdeps/unix/sysv/linux/internal_accept4.S12
1 files changed, 11 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/internal_accept4.S b/sysdeps/unix/sysv/linux/internal_accept4.S
index ffc553624c..f0c61b55b1 100644
--- a/sysdeps/unix/sysv/linux/internal_accept4.S
+++ b/sysdeps/unix/sysv/linux/internal_accept4.S
@@ -1,8 +1,18 @@
 #include <kernel-features.h>
 #include <sys/syscall.h>
+
+/* 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
+# undef __NR_accept4
+#endif
+
 #if !defined __NR_accept4 && defined __NR_socketcall
 # define socket	accept4
-# ifdef __ASSUME_ACCEPT4
+# ifdef __ASSUME_ACCEPT4_SOCKETCALL
 #  define __socket accept4
 # else
 #  define __socket __internal_accept4