diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2016-11-17 18:15:52 -0200 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.com> | 2017-03-09 15:22:06 +0100 |
commit | 3e9ff426cb6fe7e1733d914af3114e04e98dbedd (patch) | |
tree | f5d26689f4058a44e0f3d6b7b7eaabae5504152d | |
parent | 01061a7cab941c1676cf3bad70c7ccdd953f0463 (diff) | |
download | glibc-3e9ff426cb6fe7e1733d914af3114e04e98dbedd.tar glibc-3e9ff426cb6fe7e1733d914af3114e04e98dbedd.tar.gz glibc-3e9ff426cb6fe7e1733d914af3114e04e98dbedd.tar.bz2 glibc-3e9ff426cb6fe7e1733d914af3114e04e98dbedd.zip |
Consolidate Linux connect implementation
This patch consolidates the connect Linux syscall implementation on
sysdeps/unix/sysv/linux/accept.c. The changes are:
1. Remove connect from auto-generation syscalls.list on the architecture
that uses __NR_connect.
2. Define __NR_connect as default (__ASSUME_CONNECT_SYSCALL) and undef for
architectures that do not support it.
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 connect from
auto-generation list.
* sysdeps/unix/sysv/linux/arm/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/generic/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/hppa/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/connect.c: Simplify include list.
* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_CONNECT_SYSCALL): Define.
* sysdeps/unix/sysv/linux/i386/kernel-features.h
(__ASSUME_CONNECT_SYSCALL): Undef if kernel does not support it.
* sysdeps/unix/sysv/linux/m68k/kernel-features.h
(__ASSUME_CONNECT_SYSCALL): Likewise.
* sysdeps/unix/sysv/linux/s390/kernel-features.h
(__ASSUME_CONNECT_SYSCALL): Likewise.
* sysdeps/unix/sysv/linux/sparc/kernel-features.h
(__ASSUME_CONNECT_SYSCALL): Likewise.
-rw-r--r-- | ChangeLog | 21 | ||||
-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/connect.c | 5 | ||||
-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/mips/syscalls.list | 1 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/s390/kernel-features.h | 2 | ||||
-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 |
15 files changed, 26 insertions, 16 deletions
@@ -1,5 +1,26 @@ 2016-03-08 Adhemerval Zanella <adhemerval.zanella@linaro.org> + * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove connect from + auto-generation list. + * sysdeps/unix/sysv/linux/arm/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/generic/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/hppa/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/ia64/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/mips/syscalls.list: Likewise. + * sysdeps/unix/sysv/linux/connect.c: Simplify include list. + * sysdeps/unix/sysv/linux/kernel-features.h + (__ASSUME_CONNECT_SYSCALL): Define. + * sysdeps/unix/sysv/linux/i386/kernel-features.h + (__ASSUME_CONNECT_SYSCALL): Undef if kernel does not support it. + * sysdeps/unix/sysv/linux/m68k/kernel-features.h + (__ASSUME_CONNECT_SYSCALL): Likewise. + * sysdeps/unix/sysv/linux/s390/kernel-features.h + (__ASSUME_CONNECT_SYSCALL): Likewise. + * sysdeps/unix/sysv/linux/sparc/kernel-features.h + (__ASSUME_CONNECT_SYSCALL): Likewise. + * sysdeps/unix/sysv/linux/accept.c (__libc_accept): Replace __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL by __ASSUME_ACCEPT4_SYSCALL. * sysdeps/unix/sysv/linux/alpha/syscalls.list?: Remove accept from diff --git a/sysdeps/unix/sysv/linux/alpha/syscalls.list b/sysdeps/unix/sysv/linux/alpha/syscalls.list index 4cfe19e645..e9efb43b56 100644 --- a/sysdeps/unix/sysv/linux/alpha/syscalls.list +++ b/sysdeps/unix/sysv/linux/alpha/syscalls.list @@ -6,7 +6,6 @@ getpriority - getpriority i:ii __getpriority getpriority # proper socket implementations: bind - bind i:ipi __bind bind -connect - connect Ci:ipi __libc_connect __connect connect getpeername - getpeername i:ipp __getpeername getpeername getsockname - getsockname i:ipp __getsockname getsockname getsockopt - getsockopt i:iiiBN __getsockopt getsockopt diff --git a/sysdeps/unix/sysv/linux/arm/syscalls.list b/sysdeps/unix/sysv/linux/arm/syscalls.list index 1c4f61ff40..1c12be4eef 100644 --- a/sysdeps/unix/sysv/linux/arm/syscalls.list +++ b/sysdeps/unix/sysv/linux/arm/syscalls.list @@ -23,7 +23,6 @@ personality EXTRA personality Ei:i __personality personality # proper socket implementations: bind - bind i:ipi __bind bind -connect - connect Ci:ipi __libc_connect __connect connect getpeername - getpeername i:ipp __getpeername getpeername getsockname - getsockname i:ipp __getsockname getsockname getsockopt - getsockopt i:iiiBN __getsockopt getsockopt diff --git a/sysdeps/unix/sysv/linux/connect.c b/sysdeps/unix/sysv/linux/connect.c index 3837a5bea0..f6ab5df6ad 100644 --- a/sysdeps/unix/sysv/linux/connect.c +++ b/sysdeps/unix/sysv/linux/connect.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> int __libc_connect (int fd, __CONST_SOCKADDR_ARG addr, socklen_t len) diff --git a/sysdeps/unix/sysv/linux/generic/syscalls.list b/sysdeps/unix/sysv/linux/generic/syscalls.list index b176a729d7..2874a1f8c7 100644 --- a/sysdeps/unix/sysv/linux/generic/syscalls.list +++ b/sysdeps/unix/sysv/linux/generic/syscalls.list @@ -5,7 +5,6 @@ socket - socket i:iii __socket socket socketpair - socketpair i:iiif __socketpair socketpair bind - bind i:ipi __bind bind listen - listen i:ii __listen listen -connect - connect Ci:ipi __libc_connect __connect connect getsockname - getsockname i:ipp __getsockname getsockname getpeername - getpeername i:ipp __getpeername getpeername sendto - sendto Ci:ibnibn __libc_sendto __sendto sendto diff --git a/sysdeps/unix/sysv/linux/hppa/syscalls.list b/sysdeps/unix/sysv/linux/hppa/syscalls.list index ee814fba6f..288d096820 100644 --- a/sysdeps/unix/sysv/linux/hppa/syscalls.list +++ b/sysdeps/unix/sysv/linux/hppa/syscalls.list @@ -2,7 +2,6 @@ # proper socket implementations: bind - bind i:ipi __bind bind -connect - connect Ci:ipi __libc_connect __connect connect getpeername - getpeername i:ipp __getpeername getpeername getsockname - getsockname i:ipp __getsockname getsockname getsockopt - getsockopt i:iiiBN __getsockopt getsockopt diff --git a/sysdeps/unix/sysv/linux/i386/kernel-features.h b/sysdeps/unix/sysv/linux/i386/kernel-features.h index 07462f824a..23ca79437f 100644 --- a/sysdeps/unix/sysv/linux/i386/kernel-features.h +++ b/sysdeps/unix/sysv/linux/i386/kernel-features.h @@ -31,7 +31,6 @@ # 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_GETSOCKOPT_SYSCALL 1 # define __ASSUME_SETSOCKOPT_SYSCALL 1 @@ -52,6 +51,7 @@ # undef __ASSUME_ACCEPT4_SYSCALL # undef __ASSUME_SENDMSG_SYSCALL # undef __ASSUME_RECVMSG_SYSCALL +# undef __ASSUME_CONNECT_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 96db4c30a5..32fdb0878b 100644 --- a/sysdeps/unix/sysv/linux/ia64/syscalls.list +++ b/sysdeps/unix/sysv/linux/ia64/syscalls.list @@ -6,7 +6,6 @@ getpriority - getpriority i:ii __getpriority getpriority # proper socket implementations: bind - bind i:ipi __bind bind -connect - connect Ci:ipi __libc_connect __connect connect getpeername - getpeername i:ipp __getpeername getpeername getsockname - getsockname i:ipp __getsockname getsockname getsockopt - getsockopt i:iiiBN __getsockopt getsockopt diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h index 78b091b6ae..e93f5f441f 100644 --- a/sysdeps/unix/sysv/linux/kernel-features.h +++ b/sysdeps/unix/sysv/linux/kernel-features.h @@ -148,6 +148,7 @@ #define __ASSUME_SENDMSG_SYSCALL 1 #define __ASSUME_RECVMSG_SYSCALL 1 #define __ASSUME_ACCEPT_SYSCALL 1 +#define __ASSUME_CONNECT_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 ff196ac12f..e19ccf72b8 100644 --- a/sysdeps/unix/sysv/linux/m68k/kernel-features.h +++ b/sysdeps/unix/sysv/linux/m68k/kernel-features.h @@ -25,7 +25,6 @@ # 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_GETSOCKOPT_SYSCALL 1 # define __ASSUME_SETSOCKOPT_SYSCALL 1 @@ -48,6 +47,7 @@ # undef __ASSUME_SENDMMSG_SYSCALL # undef __ASSUME_SENDMSG_SYSCALL # undef __ASSUME_RECVMSG_SYSCALL +# undef __ASSUME_CONNECT_SYSCALL #endif /* No support for PI futexes or robust mutexes before 3.10 for m68k. */ diff --git a/sysdeps/unix/sysv/linux/mips/syscalls.list b/sysdeps/unix/sysv/linux/mips/syscalls.list index 81ea2a7ada..8b0c5a3ad6 100644 --- a/sysdeps/unix/sysv/linux/mips/syscalls.list +++ b/sysdeps/unix/sysv/linux/mips/syscalls.list @@ -13,7 +13,6 @@ sysmips - sysmips i:iiii __sysmips sysmips # it's provided for compatibility, though. # bind - bind i:ipi __bind bind -connect - connect Ci:ipi __libc_connect __connect connect getpeername - getpeername i:ipp __getpeername getpeername getsockname - getsockname i:ipp __getsockname getsockname getsockopt - getsockopt i:iiiBN __getsockopt getsockopt diff --git a/sysdeps/unix/sysv/linux/s390/kernel-features.h b/sysdeps/unix/sysv/linux/s390/kernel-features.h index ccfb0a2c88..50a7e8cc2a 100644 --- a/sysdeps/unix/sysv/linux/s390/kernel-features.h +++ b/sysdeps/unix/sysv/linux/s390/kernel-features.h @@ -25,7 +25,6 @@ # 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_GETSOCKOPT_SYSCALL 1 # define __ASSUME_SETSOCKOPT_SYSCALL 1 @@ -48,6 +47,7 @@ # undef __ASSUME_SENDMMSG_SYSCALL # undef __ASSUME_SENDMSG_SYSCALL # undef __ASSUME_RECVMSG_SYSCALL +# undef __ASSUME_CONNECT_SYSCALL #endif /* s390 only supports ipc syscall. */ diff --git a/sysdeps/unix/sysv/linux/sparc/kernel-features.h b/sysdeps/unix/sysv/linux/sparc/kernel-features.h index 3ffa96e303..ba6e4c44e7 100644 --- a/sysdeps/unix/sysv/linux/sparc/kernel-features.h +++ b/sysdeps/unix/sysv/linux/sparc/kernel-features.h @@ -40,6 +40,7 @@ #if !defined __arch64__ # undef __ASSUME_ACCEPT_SYSCALL +# undef __ASSUME_CONNECT_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 27ca5fa4a3..4c785fd019 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list @@ -3,7 +3,6 @@ # Override select.S in parent directory: select - select C:5 __select select bind - bind 3 __bind bind -connect - connect C:3 __libc_connect __connect connect getpeername - getpeername 3 __getpeername getpeername getsockname - getsockname 3 __getsockname getsockname getsockopt - getsockopt 5 __getsockopt getsockopt diff --git a/sysdeps/unix/sysv/linux/x86_64/syscalls.list b/sysdeps/unix/sysv/linux/x86_64/syscalls.list index fe7d1567cb..b832593823 100644 --- a/sysdeps/unix/sysv/linux/x86_64/syscalls.list +++ b/sysdeps/unix/sysv/linux/x86_64/syscalls.list @@ -11,7 +11,6 @@ syscall_clock_gettime EXTRA clock_gettime Ei:ip __syscall_clock_gettime # proper socket implementations: bind - bind i:ipi __bind bind -connect - connect Ci:ipi __libc_connect __connect connect getpeername - getpeername i:ipp __getpeername getpeername getsockname - getsockname i:ipp __getsockname getsockname getsockopt - getsockopt i:iiiBN __getsockopt getsockopt |