aboutsummaryrefslogtreecommitdiff
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