diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-12-09 20:59:43 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-12-09 20:59:43 +0000 |
commit | e5a5315e2d290fe34e0fb80996c713b8b802dcc9 (patch) | |
tree | f2a6969f23119a881ac215ee073eb5698adb3d44 /sysdeps | |
parent | 578d080544d77daad68dd697e77f2dcff50c6c7b (diff) | |
download | glibc-e5a5315e2d290fe34e0fb80996c713b8b802dcc9.tar.gz glibc-e5a5315e2d290fe34e0fb80996c713b8b802dcc9.tar.xz glibc-e5a5315e2d290fe34e0fb80996c713b8b802dcc9.zip |
Use direct socket syscalls for new kernels on i386, m68k, microblaze, sh.
Now that we have __ASSUME_* macros for direct socket syscalls to use them instead of socketcall when they can be assumed to be available on socketcall architectures, this patch defines those macros when appropriate for i386, m68k, microblaze and sh (for 4.3, 4.3, all supported kernels and 2.6.37, respectively; the only use of socketcall support on microblaze is it allows accept4 and sendmmsg to be supported on a wider range of kernel versions). David, it seems that 32-bit SPARC is the only architecture supported by glibc that still lacks these direct syscalls. It would be good to get them added to the SPARC kernel so we can eventually eliminate socketcall support in glibc (and thereby just use entries in sysdeps/unix/syscalls.list for most of these functions) when we can assume new-enough kernels. Tested for i386 (testsuite, and that installed shared libraries are unchanged by this patch - not using a new enough kernel, so this doesn't actually test much, but the i386 and m68k code is essentially the same as that already in use for s390). * sysdeps/unix/sysv/linux/i386/kernel-features.h [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SOCKET_SYSCALL): New macro. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SOCKETPAIR_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_BIND_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_CONNECT_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_LISTEN_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_ACCEPT4_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_GETSOCKOPT_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SETSOCKOPT_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_GETSOCKNAME_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_GETPEERNAME_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDTO_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDTO_FOR_SEND_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDMSG_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVFROM_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVFROM_FOR_RECV_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVMSG_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SHUTDOWN_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/m68k/kernel-features.h [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVMMSG_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDMMSG_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SOCKET_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SOCKETPAIR_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_BIND_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_CONNECT_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_LISTEN_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_ACCEPT4_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_GETSOCKOPT_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SETSOCKOPT_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_GETSOCKNAME_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_GETPEERNAME_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDTO_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDTO_FOR_SEND_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SENDMSG_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVFROM_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVFROM_FOR_RECV_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_RECVMSG_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x040300] (__ASSUME_SHUTDOWN_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/microblaze/kernel-features.h (__ASSUME_SOCKET_SYSCALL): Likewise. (__ASSUME_BIND_SYSCALL): Likewise. (__ASSUME_CONNECT_SYSCALL): Likewise. (__ASSUME_LISTEN_SYSCALL): Likewise. (__ASSUME_ACCEPT_SYSCALL): Likewise. (__ASSUME_GETSOCKNAME_SYSCALL): Likewise. (__ASSUME_GETPEERNAME_SYSCALL): Likewise. (__ASSUME_SOCKETPAIR_SYSCALL): Likewise. (__ASSUME_SEND_SYSCALL): Likewise. (__ASSUME_SENDTO_SYSCALL): Likewise. (__ASSUME_RECV_SYSCALL): Likewise. (__ASSUME_RECVFROM_SYSCALL): Likewise. (__ASSUME_SHUTDOWN_SYSCALL): Likewise. (__ASSUME_GETSOCKOPT_SYSCALL): Likewise. (__ASSUME_SETSOCKOPT_SYSCALL): Likewise. (__ASSUME_SENDMSG_SYSCALL): Likewise. (__ASSUME_RECVMSG_SYSCALL): Likewise. * sysdeps/unix/sysv/linux/sh/kernel-features.h [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SOCKET_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_BIND_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_CONNECT_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_LISTEN_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_ACCEPT_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_GETSOCKNAME_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_GETPEERNAME_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SOCKETPAIR_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SEND_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SENDTO_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_RECV_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_RECVFROM_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SHUTDOWN_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_GETSOCKOPT_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SETSOCKOPT_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_SENDMSG_SYSCALL): Likewise. [__LINUX_KERNEL_VERSION >= 0x020625] (__ASSUME_RECVMSG_SYSCALL): Likewise.
Diffstat (limited to 'sysdeps')
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/kernel-features.h | 22 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/m68k/kernel-features.h | 24 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/microblaze/kernel-features.h | 19 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sh/kernel-features.h | 21 |
4 files changed, 86 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/kernel-features.h b/sysdeps/unix/sysv/linux/i386/kernel-features.h index ee240a7a20..826fcc39ad 100644 --- a/sysdeps/unix/sysv/linux/i386/kernel-features.h +++ b/sysdeps/unix/sysv/linux/i386/kernel-features.h @@ -32,4 +32,26 @@ #endif #define __ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL 1 +/* Direct socketcalls available with kernel 4.3. */ +#if __LINUX_KERNEL_VERSION >= 0x040300 +# define __ASSUME_SOCKET_SYSCALL 1 +# define __ASSUME_SOCKETPAIR_SYSCALL 1 +# define __ASSUME_BIND_SYSCALL 1 +# define __ASSUME_CONNECT_SYSCALL 1 +# define __ASSUME_LISTEN_SYSCALL 1 +# define __ASSUME_ACCEPT4_SYSCALL 1 +# define __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL 1 +# define __ASSUME_GETSOCKOPT_SYSCALL 1 +# define __ASSUME_SETSOCKOPT_SYSCALL 1 +# define __ASSUME_GETSOCKNAME_SYSCALL 1 +# define __ASSUME_GETPEERNAME_SYSCALL 1 +# define __ASSUME_SENDTO_SYSCALL 1 +# define __ASSUME_SENDTO_FOR_SEND_SYSCALL 1 +# define __ASSUME_SENDMSG_SYSCALL 1 +# define __ASSUME_RECVFROM_SYSCALL 1 +# define __ASSUME_RECVFROM_FOR_RECV_SYSCALL 1 +# define __ASSUME_RECVMSG_SYSCALL 1 +# define __ASSUME_SHUTDOWN_SYSCALL 1 +#endif + #include_next <kernel-features.h> diff --git a/sysdeps/unix/sysv/linux/m68k/kernel-features.h b/sysdeps/unix/sysv/linux/m68k/kernel-features.h index ae1a11f2a1..d373d4ad0d 100644 --- a/sysdeps/unix/sysv/linux/m68k/kernel-features.h +++ b/sysdeps/unix/sysv/linux/m68k/kernel-features.h @@ -20,6 +20,30 @@ /* m68k uses socketcall. */ #define __ASSUME_SOCKETCALL 1 +/* Direct socketcalls available with kernel 4.3. */ +#if __LINUX_KERNEL_VERSION >= 0x040300 +# define __ASSUME_RECVMMSG_SYSCALL 1 +# define __ASSUME_SENDMMSG_SYSCALL 1 +# define __ASSUME_SOCKET_SYSCALL 1 +# define __ASSUME_SOCKETPAIR_SYSCALL 1 +# define __ASSUME_BIND_SYSCALL 1 +# define __ASSUME_CONNECT_SYSCALL 1 +# define __ASSUME_LISTEN_SYSCALL 1 +# define __ASSUME_ACCEPT4_SYSCALL 1 +# define __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL 1 +# define __ASSUME_GETSOCKOPT_SYSCALL 1 +# define __ASSUME_SETSOCKOPT_SYSCALL 1 +# define __ASSUME_GETSOCKNAME_SYSCALL 1 +# define __ASSUME_GETPEERNAME_SYSCALL 1 +# define __ASSUME_SENDTO_SYSCALL 1 +# define __ASSUME_SENDTO_FOR_SEND_SYSCALL 1 +# define __ASSUME_SENDMSG_SYSCALL 1 +# define __ASSUME_RECVFROM_SYSCALL 1 +# define __ASSUME_RECVFROM_FOR_RECV_SYSCALL 1 +# define __ASSUME_RECVMSG_SYSCALL 1 +# define __ASSUME_SHUTDOWN_SYSCALL 1 +#endif + #include_next <kernel-features.h> /* These syscalls were added only in 3.0 for m68k. */ diff --git a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h index f2c580d36a..241f1f3476 100644 --- a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h +++ b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h @@ -19,6 +19,25 @@ /* MicroBlaze uses socketcall. */ #define __ASSUME_SOCKETCALL 1 +/* All supported kernel versions for MicroBlaze have these syscalls. */ +#define __ASSUME_SOCKET_SYSCALL 1 +#define __ASSUME_BIND_SYSCALL 1 +#define __ASSUME_CONNECT_SYSCALL 1 +#define __ASSUME_LISTEN_SYSCALL 1 +#define __ASSUME_ACCEPT_SYSCALL 1 +#define __ASSUME_GETSOCKNAME_SYSCALL 1 +#define __ASSUME_GETPEERNAME_SYSCALL 1 +#define __ASSUME_SOCKETPAIR_SYSCALL 1 +#define __ASSUME_SEND_SYSCALL 1 +#define __ASSUME_SENDTO_SYSCALL 1 +#define __ASSUME_RECV_SYSCALL 1 +#define __ASSUME_RECVFROM_SYSCALL 1 +#define __ASSUME_SHUTDOWN_SYSCALL 1 +#define __ASSUME_GETSOCKOPT_SYSCALL 1 +#define __ASSUME_SETSOCKOPT_SYSCALL 1 +#define __ASSUME_SENDMSG_SYSCALL 1 +#define __ASSUME_RECVMSG_SYSCALL 1 + /* Support for the accept4 and recvmmsg syscalls was added in 2.6.33. */ #if __LINUX_KERNEL_VERSION >= 0x020621 # define __ASSUME_ACCEPT4_SYSCALL 1 diff --git a/sysdeps/unix/sysv/linux/sh/kernel-features.h b/sysdeps/unix/sysv/linux/sh/kernel-features.h index 5e3487cae2..17fbdd1498 100644 --- a/sysdeps/unix/sysv/linux/sh/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sh/kernel-features.h @@ -20,6 +20,27 @@ /* SH uses socketcall. */ #define __ASSUME_SOCKETCALL 1 +/* These syscalls were added for SH in 2.6.37. */ +#if __LINUX_KERNEL_VERSION >= 0x020625 +# define __ASSUME_SOCKET_SYSCALL 1 +# define __ASSUME_BIND_SYSCALL 1 +# define __ASSUME_CONNECT_SYSCALL 1 +# define __ASSUME_LISTEN_SYSCALL 1 +# define __ASSUME_ACCEPT_SYSCALL 1 +# define __ASSUME_GETSOCKNAME_SYSCALL 1 +# define __ASSUME_GETPEERNAME_SYSCALL 1 +# define __ASSUME_SOCKETPAIR_SYSCALL 1 +# define __ASSUME_SEND_SYSCALL 1 +# define __ASSUME_SENDTO_SYSCALL 1 +# define __ASSUME_RECV_SYSCALL 1 +# define __ASSUME_RECVFROM_SYSCALL 1 +# define __ASSUME_SHUTDOWN_SYSCALL 1 +# define __ASSUME_GETSOCKOPT_SYSCALL 1 +# define __ASSUME_SETSOCKOPT_SYSCALL 1 +# define __ASSUME_SENDMSG_SYSCALL 1 +# define __ASSUME_RECVMSG_SYSCALL 1 +#endif + /* The accept4 syscall was added for SH in 2.6.37. */ #if __LINUX_KERNEL_VERSION >= 0x020625 # define __ASSUME_ACCEPT4_SYSCALL 1 |