summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/sparc/kernel-features.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/sparc/kernel-features.h')
-rw-r--r--sysdeps/unix/sysv/linux/sparc/kernel-features.h41
1 files changed, 33 insertions, 8 deletions
diff --git a/sysdeps/unix/sysv/linux/sparc/kernel-features.h b/sysdeps/unix/sysv/linux/sparc/kernel-features.h
index 91990a716f..ea9a2a8212 100644
--- a/sysdeps/unix/sysv/linux/sparc/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/sparc/kernel-features.h
@@ -1,6 +1,6 @@
/* Set flags signalling availability of kernel features based on given
kernel version number. SPARC version.
- Copyright (C) 1999-2018 Free Software Foundation, Inc.
+ Copyright (C) 1999-2019 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
@@ -15,10 +15,7 @@
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/>. */
-
-/* SPARC uses socketcall. */
-#define __ASSUME_SOCKETCALL 1
+ <https://www.gnu.org/licenses/>. */
#include_next <kernel-features.h>
@@ -28,18 +25,46 @@
# undef __ASSUME_SET_ROBUST_LIST
#endif
-#if !defined __arch64__
+/* These syscalls were added for 32-bit in 4.4 (but present for 64-bit
+ in all supported kernel versions); the architecture-independent
+ kernel-features.h assumes some of them to be present by default.
+ getpeername and getsockname syscalls were also added for 32-bit in
+ 4.4, but only for 32-bit kernels, not in the compat syscall table
+ for 64-bit kernels. */
+#if !defined __arch64__ && __LINUX_KERNEL_VERSION < 0x040400
+# undef __ASSUME_SENDMSG_SYSCALL
+# undef __ASSUME_RECVMSG_SYSCALL
# undef __ASSUME_ACCEPT_SYSCALL
# undef __ASSUME_CONNECT_SYSCALL
# undef __ASSUME_RECVFROM_SYSCALL
+# undef __ASSUME_SENDTO_SYSCALL
#else
+# define __ASSUME_SOCKET_SYSCALL 1
+# define __ASSUME_SOCKETPAIR_SYSCALL 1
+# define __ASSUME_GETSOCKOPT_SYSCALL 1
+# define __ASSUME_SHUTDOWN_SYSCALL 1
+#endif
+
+/* These syscalls were added for both 32-bit and 64-bit in 4.4. */
+#if __LINUX_KERNEL_VERSION >= 0x040400
+# define __ASSUME_BIND_SYSCALL 1
+# define __ASSUME_LISTEN_SYSCALL 1
+# define __ASSUME_SETSOCKOPT_SYSCALL 1
+#endif
+
+#ifdef __arch64__
/* sparc64 defines __NR_pause, however it is not supported (ENOSYS).
Undefine so pause.c can use a correct alternative. */
# undef __NR_pause
#endif
-/* sparc only supports ipc syscall. */
-#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
+/* sparc only supports ipc syscall before 5.1. */
+#if __LINUX_KERNEL_VERSION < 0x050100
+# undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
+# if !defined __arch64__
+# undef __ASSUME_SYSVIPC_DEFAULT_IPC_64
+# endif
+#endif
/* Support for the renameat2 syscall was added in 3.16. */
#if __LINUX_KERNEL_VERSION < 0x031000