diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.com> | 2017-03-06 12:53:14 +0100 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.com> | 2017-03-09 15:22:06 +0100 |
commit | 1f8161a801b2292a58f3036ea92aa7feeafc10f2 (patch) | |
tree | 5997305e51faf43ad1235db44370b2a9c6dd21c7 | |
parent | 3e9ff426cb6fe7e1733d914af3114e04e98dbedd (diff) | |
download | glibc-1f8161a801b2292a58f3036ea92aa7feeafc10f2.zip glibc-1f8161a801b2292a58f3036ea92aa7feeafc10f2.tar.gz glibc-1f8161a801b2292a58f3036ea92aa7feeafc10f2.tar.bz2 |
Consolidate Linux recvfrom implementation
This patch consolidates the recvfrom Linux syscall implementation on
sysdeps/unix/sysv/linux/recvfrom.c. The changes are:
1. Define __ASSUME_RECVFROM_SYSCALL by default
2. Undef it for architectures that do not support __NR_recvfrom.
Checked on i686-linux-gnu, x86_64-linux-gnu, x86_64-linux-gnux32,
aarch64-linux-gnu, arm-linux-gnueabihf, and powerpc64le-linux-gnu.
* sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove recvfrom from
auto-generation list.
* sysdeps/unix/sysv/linux/arm/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/generic/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/i386/kernel-features.h
* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_RECVFROM_SYSCALL): Define by default.
(__ASSUME_RECVFROM_SYSCALL): Undef it if kernel does not support
__NR_recvfrom.
* sysdeps/unix/sysv/linux/m68k/kernel-features.h
(__ASSUME_RECVFROM_SYSCALL): Likewise.
* sysdeps/unix/sysv/linux/s390/kernel-features.h
(__ASSUME_RECVFROM_SYSCALL): Likewise.
* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
(__ASSUME_RECVFROM_SYSCALL): Remove definition.
* sysdeps/unix/sysv/linux/powerpc/kernel-features.h
(__ASSUME_RECVFROM_SYSCALL): Likewise.
* sysdeps/unix/sysv/linux/sh/kernel-features.h
(__ASSUME_RECVFROM_SYSCALL): Likewise.
* sysdeps/unix/sysv/linux/sparc/kernel-features.h
(__ASSUME_RECVFROM_SYSCALL): Likewise.
* sysdeps/unix/sysv/linux/recvfrom.c: Simplify includes.
-rw-r--r-- | ChangeLog | 28 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/syscalls.list | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/arm/syscalls.list | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/generic/syscalls.list | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/syscalls.list | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/i386/kernel-features.h | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ia64/syscalls.list | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/kernel-features.h | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/m68k/kernel-features.h | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/microblaze/kernel-features.h | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/mips/syscalls.list | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/kernel-features.h | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/recvfrom.c | 5 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/kernel-features.h | 2 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sh/kernel-features.h | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/kernel-features.h | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/x86_64/syscalls.list | 1 |
18 files changed, 33 insertions, 19 deletions
@@ -1,5 +1,33 @@ 2016-03-08 Adhemerval Zanella <adhemerval.zanella@linaro.org> + * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove recvfrom from + auto-generation list. + * sysdeps/unix/sysv/linux/arm/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/generic/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/hppa/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/x86_64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/i386/kernel-features.h + (__ASSUME_RECVFROM_SYSCALL): Define by default. + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_RECVFROM_SYSCALL): Undef it if kernel does not support + __NR_recvfrom. + * sysdeps/unix/sysv/linux/m68k/kernel-features.h + (__ASSUME_RECVFROM_SYSCALL): Likewise. + * sysdeps/unix/sysv/linux/s390/kernel-features.h + (__ASSUME_RECVFROM_SYSCALL): Likewise. + * sysdeps/unix/sysv/linux/microblaze/kernel-features.h + (__ASSUME_RECVFROM_SYSCALL): Remove definition. + * sysdeps/unix/sysv/linux/powerpc/kernel-features.h + (__ASSUME_RECVFROM_SYSCALL): Likewise. + * sysdeps/unix/sysv/linux/sh/kernel-features.h + (__ASSUME_RECVFROM_SYSCALL): Likewise. + * sysdeps/unix/sysv/linux/sparc/kernel-features.h + (__ASSUME_RECVFROM_SYSCALL): Likewise. + * sysdeps/unix/sysv/linux/recvfrom.c: Simplify includes. + * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove connect from auto-generation list. * sysdeps/unix/sysv/linux/arm/syscalls.list: Likewise. diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list index e9efb43..9cb44c1 100644 --- a/sysdeps/unix/sysv/linux/alpha/syscalls.list +++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list @@ -11,7 +11,6 @@ getsockname - getsockname i:ipp __getsockname getsockname getsockopt - getsockopt i:iiiBN __getsockopt getsockopt listen - listen i:ii __listen listen recv - recv Ci:ibni __libc_recv __recv recv -recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom send - send Ci:ibni __libc_send __send send sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto setsockopt - setsockopt i:iiibn __setsockopt setsockopt diff --git a/sysdeps/unix/sysv/linux/arm/syscalls.list b/sysdeps/unix/sysv/linux/arm/syscalls.list index 1c12be4..dc4f52a 100644 --- a/sysdeps/unix/sysv/linux/arm/syscalls.list +++ b/sysdeps/unix/sysv/linux/arm/syscalls.list @@ -28,7 +28,6 @@ getsockname - getsockname i:ipp __getsockname getsockname getsockopt - getsockopt i:iiiBN __getsockopt getsockopt listen - listen i:ii __listen listen recv - recv Ci:ibni __libc_recv __recv recv -recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom send - send Ci:ibni __libc_send __send send sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto setsockopt - setsockopt i:iiibn __setsockopt setsockopt diff --git a/sysdeps/unix/sysv/linux/generic/syscalls.list b/sysdeps/unix/sysv/linux/generic/syscalls.list index 2874a1f..c16ee52 100644 --- a/sysdeps/unix/sysv/linux/generic/syscalls.list +++ b/sysdeps/unix/sysv/linux/generic/syscalls.list @@ -8,7 +8,6 @@ listen - listen i:ii __listen listen getsockname - getsockname i:ipp __getsockname getsockname getpeername - getpeername i:ipp __getpeername getpeername sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto -recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom setsockopt - setsockopt i:iiibn __setsockopt setsockopt getsockopt - getsockopt i:iiiBN __getsockopt getsockopt shutdown - shutdown i:ii __shutdown shutdown diff --git a/sysdeps/unix/sysv/linux/hppa/syscalls.list b/sysdeps/unix/sysv/linux/hppa/syscalls.list index 288d096..8834115 100644 --- a/sysdeps/unix/sysv/linux/hppa/syscalls.list +++ b/sysdeps/unix/sysv/linux/hppa/syscalls.list @@ -7,7 +7,6 @@ getsockname - getsockname i:ipp __getsockname getsockname getsockopt - getsockopt i:iiiBN __getsockopt getsockopt listen - listen i:ii __listen listen recv - recv Ci:ibni __libc_recv __recv recv -recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom send - send Ci:ibni __libc_send __send send sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto setsockopt - setsockopt i:iiibn __setsockopt setsockopt diff --git a/sysdeps/unix/sysv/linux/i386/kernel-features.h b/sysdeps/unix/sysv/linux/i386/kernel-features.h index 23ca794..4ccab5d 100644 --- a/sysdeps/unix/sysv/linux/i386/kernel-features.h +++ b/sysdeps/unix/sysv/linux/i386/kernel-features.h @@ -38,7 +38,6 @@ # define __ASSUME_GETPEERNAME_SYSCALL 1 # define __ASSUME_SENDTO_SYSCALL 1 # define __ASSUME_SENDTO_FOR_SEND_SYSCALL 1 -# define __ASSUME_RECVFROM_SYSCALL 1 # define __ASSUME_RECVFROM_FOR_RECV_SYSCALL 1 # define __ASSUME_SHUTDOWN_SYSCALL 1 #endif @@ -52,6 +51,7 @@ # undef __ASSUME_SENDMSG_SYSCALL # undef __ASSUME_RECVMSG_SYSCALL # undef __ASSUME_CONNECT_SYSCALL +# undef __ASSUME_RECVFROM_SYSCALL #endif /* i686 only supports ipc syscall. */ diff --git a/sysdeps/unix/sysv/linux/ia64/syscalls.list b/sysdeps/unix/sysv/linux/ia64/syscalls.list index 32fdb08..57020a9 100644 --- a/sysdeps/unix/sysv/linux/ia64/syscalls.list +++ b/sysdeps/unix/sysv/linux/ia64/syscalls.list @@ -11,7 +11,6 @@ getsockname - getsockname i:ipp __getsockname getsockname getsockopt - getsockopt i:iiiBN __getsockopt getsockopt listen - listen i:ii __listen listen recv - recv Ci:ibni __libc_recv __recv recv -recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom send - send Ci:ibni __libc_send __send send sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto setsockopt - setsockopt i:iiibn __setsockopt setsockopt diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index e93f5f4..c6c816e 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -149,6 +149,7 @@ #define __ASSUME_RECVMSG_SYSCALL 1 #define __ASSUME_ACCEPT_SYSCALL 1 #define __ASSUME_CONNECT_SYSCALL 1 +#define __ASSUME_RECVFROM_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/m68k/kernel-features.h b/sysdeps/unix/sysv/linux/m68k/kernel-features.h index e19ccf7..fa874b3 100644 --- a/sysdeps/unix/sysv/linux/m68k/kernel-features.h +++ b/sysdeps/unix/sysv/linux/m68k/kernel-features.h @@ -32,7 +32,6 @@ # define __ASSUME_GETPEERNAME_SYSCALL 1 # define __ASSUME_SENDTO_SYSCALL 1 # define __ASSUME_SENDTO_FOR_SEND_SYSCALL 1 -# define __ASSUME_RECVFROM_SYSCALL 1 # define __ASSUME_RECVFROM_FOR_RECV_SYSCALL 1 # define __ASSUME_SHUTDOWN_SYSCALL 1 #endif @@ -48,6 +47,7 @@ # undef __ASSUME_SENDMSG_SYSCALL # undef __ASSUME_RECVMSG_SYSCALL # undef __ASSUME_CONNECT_SYSCALL +# undef __ASSUME_RECVFROM_SYSCALL #endif /* No support for PI futexes or robust mutexes before 3.10 for m68k. */ diff --git a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h index 9532d57..e4bf4d5 100644 --- a/sysdeps/unix/sysv/linux/microblaze/kernel-features.h +++ b/sysdeps/unix/sysv/linux/microblaze/kernel-features.h @@ -30,7 +30,6 @@ #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 diff --git a/sysdeps/unix/sysv/linux/mips/syscalls.list b/sysdeps/unix/sysv/linux/mips/syscalls.list index 8b0c5a3..053574e 100644 --- a/sysdeps/unix/sysv/linux/mips/syscalls.list +++ b/sysdeps/unix/sysv/linux/mips/syscalls.list @@ -18,7 +18,6 @@ getsockname - getsockname i:ipp __getsockname getsockname getsockopt - getsockopt i:iiiBN __getsockopt getsockopt listen - listen i:ii __listen listen recv - recv Ci:ibni __libc_recv __recv recv -recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom send - send Ci:ibni __libc_send __send send sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto setsockopt - setsockopt i:iiibn __setsockopt setsockopt diff --git a/sysdeps/unix/sysv/linux/powerpc/kernel-features.h b/sysdeps/unix/sysv/linux/powerpc/kernel-features.h index 272800c..a0d2e8f 100644 --- a/sysdeps/unix/sysv/linux/powerpc/kernel-features.h +++ b/sysdeps/unix/sysv/linux/powerpc/kernel-features.h @@ -31,7 +31,6 @@ #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 diff --git a/sysdeps/unix/sysv/linux/recvfrom.c b/sysdeps/unix/sysv/linux/recvfrom.c index 10ffb26..27c2360 100644 --- a/sysdeps/unix/sysv/linux/recvfrom.c +++ b/sysdeps/unix/sysv/linux/recvfrom.c @@ -15,14 +15,9 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ -#include <errno.h> -#include <signal.h> #include <sys/socket.h> - #include <sysdep-cancel.h> #include <socketcall.h> -#include <kernel-features.h> -#include <sys/syscall.h> ssize_t __libc_recvfrom (int fd, void *buf, size_t len, int flags, diff --git a/sysdeps/unix/sysv/linux/s390/kernel-features.h b/sysdeps/unix/sysv/linux/s390/kernel-features.h index 50a7e8c..29738af 100644 --- a/sysdeps/unix/sysv/linux/s390/kernel-features.h +++ b/sysdeps/unix/sysv/linux/s390/kernel-features.h @@ -32,7 +32,6 @@ # define __ASSUME_GETPEERNAME_SYSCALL 1 # define __ASSUME_SENDTO_SYSCALL 1 # define __ASSUME_SENDTO_FOR_SEND_SYSCALL 1 -# define __ASSUME_RECVFROM_SYSCALL 1 # define __ASSUME_RECVFROM_FOR_RECV_SYSCALL 1 # define __ASSUME_SHUTDOWN_SYSCALL 1 #endif @@ -48,6 +47,7 @@ # undef __ASSUME_SENDMSG_SYSCALL # undef __ASSUME_RECVMSG_SYSCALL # undef __ASSUME_CONNECT_SYSCALL +# undef __ASSUME_RECVFROM_SYSCALL #endif /* s390 only supports ipc syscall. */ diff --git a/sysdeps/unix/sysv/linux/sh/kernel-features.h b/sysdeps/unix/sysv/linux/sh/kernel-features.h index 7a83211..5ed5f93 100644 --- a/sysdeps/unix/sysv/linux/sh/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sh/kernel-features.h @@ -34,7 +34,6 @@ #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 diff --git a/sysdeps/unix/sysv/linux/sparc/kernel-features.h b/sysdeps/unix/sysv/linux/sparc/kernel-features.h index ba6e4c4..8e74478 100644 --- a/sysdeps/unix/sysv/linux/sparc/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sparc/kernel-features.h @@ -41,6 +41,7 @@ #if !defined __arch64__ # undef __ASSUME_ACCEPT_SYSCALL # undef __ASSUME_CONNECT_SYSCALL +# undef __ASSUME_RECVFROM_SYSCALL #endif /* sparc only supports ipc syscall. */ diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list index 4c785fd..f73b519 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list @@ -8,7 +8,6 @@ getsockname - getsockname 3 __getsockname getsockname getsockopt - getsockopt 5 __getsockopt getsockopt listen - listen 2 __listen listen recv - recv C:4 __libc_recv __recv recv -recvfrom - recvfrom C:6 __libc_recvfrom __recvfrom recvfrom send - send C:4 __libc_send __send send sendto - sendto C:6 __libc_sendto __sendto sendto setsockopt - setsockopt 5 __setsockopt setsockopt diff --git a/sysdeps/unix/sysv/linux/x86_64/syscalls.list b/sysdeps/unix/sysv/linux/x86_64/syscalls.list index b832593..7ff0376 100644 --- a/sysdeps/unix/sysv/linux/x86_64/syscalls.list +++ b/sysdeps/unix/sysv/linux/x86_64/syscalls.list @@ -15,7 +15,6 @@ getpeername - getpeername i:ipp __getpeername getpeername getsockname - getsockname i:ipp __getsockname getsockname getsockopt - getsockopt i:iiiBN __getsockopt getsockopt listen - listen i:ii __listen listen -recvfrom - recvfrom Ci:ibniBN __libc_recvfrom __recvfrom recvfrom sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto setsockopt - setsockopt i:iiibn __setsockopt setsockopt shutdown - shutdown i:ii __shutdown shutdown |