mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-01 10:06:57 +03:00
Consolidate Linux accept implementation
This patch consolidates the accept Linux syscall implementation on sysdeps/unix/sysv/linux/accept.c. The changes are: 1. Remove accept from auto-generation syscalls.list on the architecture that uses __NR_accept. 2. Define __NR_accept as default (__ASSUME_ACCEPT_SYSCALL) and undef for architectures that do not support it. 3. Remove __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL and decide to use __NR_accept4 for accept generation based on __ASSUME_ACCEPT4_SYSCALL. 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/accept.c (__libc_accept): Replace __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL by __ASSUME_ACCEPT4_SYSCALL. * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove accept 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/mips/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/i386/kernel-features.h (__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Remove define. (__ASSUME_ACCEPT_SYSCALL): Undefine. * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_ACCEPT_SYSCALL): New define. * sysdeps/unix/sysv/linux/m68k/kernel-features.h (__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Remove define. (__ASSUME_ACCEPT_SYSCALL): Define wheter kernel version supports. * sysdeps/unix/sysv/linux/microblaze/kernel-features.h (__ASSUME_ACCEPT_SYSCALL): Define. * sysdeps/unix/sysv/linux/powerpc/kernel-features.h (__ASSUME_ACCEPT_SYSCALL): Undefine. * sysdeps/unix/sysv/linux/s390/kernel-features.h (__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Remove define. (__ASSUME_ACCEPT_SYSCALL): Undefine. * sysdeps/unix/sysv/linux/sh/kernel-features.h (__ASSUME_ACCEPT_SYSCALL): Undefine. * sysdeps/unix/sysv/linux/sparc/kernel-features.h (__ASSUME_ACCEPT_SYSCALL): Undefine for 32 bits.
This commit is contained in:
committed by
Adhemerval Zanella
parent
9a56f87183
commit
01061a7cab
33
ChangeLog
33
ChangeLog
@ -1,3 +1,36 @@
|
|||||||
|
2016-03-08 Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||||
|
|
||||||
|
* 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
|
||||||
|
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/mips/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/i386/kernel-features.h
|
||||||
|
(__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Remove define.
|
||||||
|
(__ASSUME_ACCEPT_SYSCALL): Undefine.
|
||||||
|
* sysdeps/unix/sysv/linux/kernel-features.h
|
||||||
|
(__ASSUME_ACCEPT_SYSCALL): New define.
|
||||||
|
* sysdeps/unix/sysv/linux/m68k/kernel-features.h
|
||||||
|
(__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Remove define.
|
||||||
|
(__ASSUME_ACCEPT_SYSCALL): Define wheter kernel version supports.
|
||||||
|
* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
|
||||||
|
(__ASSUME_ACCEPT_SYSCALL): Define.
|
||||||
|
* sysdeps/unix/sysv/linux/powerpc/kernel-features.h
|
||||||
|
(__ASSUME_ACCEPT_SYSCALL): Undefine.
|
||||||
|
* sysdeps/unix/sysv/linux/s390/kernel-features.h
|
||||||
|
(__ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL): Remove define.
|
||||||
|
(__ASSUME_ACCEPT_SYSCALL): Undefine.
|
||||||
|
* sysdeps/unix/sysv/linux/sh/kernel-features.h
|
||||||
|
(__ASSUME_ACCEPT_SYSCALL): Undefine.
|
||||||
|
* sysdeps/unix/sysv/linux/sparc/kernel-features.h
|
||||||
|
(__ASSUME_ACCEPT_SYSCALL): Undefine for 32 bits.
|
||||||
|
|
||||||
2017-03-08 Yury Norov <ynorov@caviumnetworks.com>
|
2017-03-08 Yury Norov <ynorov@caviumnetworks.com>
|
||||||
Zack Weinberg <zackw@panix.com>
|
Zack Weinberg <zackw@panix.com>
|
||||||
|
|
||||||
|
@ -15,21 +15,16 @@
|
|||||||
License along with the GNU C Library; if not, see
|
License along with the GNU C Library; if not, see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<http://www.gnu.org/licenses/>. */
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
#include <signal.h>
|
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
|
|
||||||
#include <sysdep-cancel.h>
|
#include <sysdep-cancel.h>
|
||||||
#include <socketcall.h>
|
#include <socketcall.h>
|
||||||
#include <sys/syscall.h>
|
|
||||||
#include <kernel-features.h>
|
|
||||||
|
|
||||||
int
|
int
|
||||||
__libc_accept (int fd, __SOCKADDR_ARG addr, socklen_t *len)
|
__libc_accept (int fd, __SOCKADDR_ARG addr, socklen_t *len)
|
||||||
{
|
{
|
||||||
#ifdef __ASSUME_ACCEPT_SYSCALL
|
#ifdef __ASSUME_ACCEPT_SYSCALL
|
||||||
return SYSCALL_CANCEL (accept, fd, addr.__sockaddr__, len);
|
return SYSCALL_CANCEL (accept, fd, addr.__sockaddr__, len);
|
||||||
#elif defined __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL
|
#elif defined __ASSUME_ACCEPT4_SYSCALL
|
||||||
return SYSCALL_CANCEL (accept4, fd, addr.__sockaddr__, len, 0);
|
return SYSCALL_CANCEL (accept4, fd, addr.__sockaddr__, len, 0);
|
||||||
#else
|
#else
|
||||||
return SOCKETCALL_CANCEL (accept, fd, addr.__sockaddr__, len);
|
return SOCKETCALL_CANCEL (accept, fd, addr.__sockaddr__, len);
|
||||||
|
@ -5,7 +5,6 @@ sigstack - sigstack 2 sigstack
|
|||||||
getpriority - getpriority i:ii __getpriority getpriority
|
getpriority - getpriority i:ii __getpriority getpriority
|
||||||
|
|
||||||
# proper socket implementations:
|
# proper socket implementations:
|
||||||
accept - accept Ci:iBN __libc_accept __accept accept
|
|
||||||
bind - bind i:ipi __bind bind
|
bind - bind i:ipi __bind bind
|
||||||
connect - connect Ci:ipi __libc_connect __connect connect
|
connect - connect Ci:ipi __libc_connect __connect connect
|
||||||
getpeername - getpeername i:ipp __getpeername getpeername
|
getpeername - getpeername i:ipp __getpeername getpeername
|
||||||
|
@ -22,7 +22,6 @@ fanotify_mark EXTRA fanotify_mark i:iiiiis fanotify_mark
|
|||||||
personality EXTRA personality Ei:i __personality personality
|
personality EXTRA personality Ei:i __personality personality
|
||||||
|
|
||||||
# proper socket implementations:
|
# proper socket implementations:
|
||||||
accept - accept Ci:iBN __libc_accept __accept accept
|
|
||||||
bind - bind i:ipi __bind bind
|
bind - bind i:ipi __bind bind
|
||||||
connect - connect Ci:ipi __libc_connect __connect connect
|
connect - connect Ci:ipi __libc_connect __connect connect
|
||||||
getpeername - getpeername i:ipp __getpeername getpeername
|
getpeername - getpeername i:ipp __getpeername getpeername
|
||||||
|
@ -5,7 +5,6 @@ socket - socket i:iii __socket socket
|
|||||||
socketpair - socketpair i:iiif __socketpair socketpair
|
socketpair - socketpair i:iiif __socketpair socketpair
|
||||||
bind - bind i:ipi __bind bind
|
bind - bind i:ipi __bind bind
|
||||||
listen - listen i:ii __listen listen
|
listen - listen i:ii __listen listen
|
||||||
accept - accept Ci:iBN __libc_accept __accept accept
|
|
||||||
connect - connect Ci:ipi __libc_connect __connect connect
|
connect - connect Ci:ipi __libc_connect __connect connect
|
||||||
getsockname - getsockname i:ipp __getsockname getsockname
|
getsockname - getsockname i:ipp __getsockname getsockname
|
||||||
getpeername - getpeername i:ipp __getpeername getpeername
|
getpeername - getpeername i:ipp __getpeername getpeername
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
# File name Caller Syscall name # args Strong name Weak names
|
# File name Caller Syscall name # args Strong name Weak names
|
||||||
|
|
||||||
# proper socket implementations:
|
# proper socket implementations:
|
||||||
accept - accept Ci:iBN __libc_accept __accept accept
|
|
||||||
bind - bind i:ipi __bind bind
|
bind - bind i:ipi __bind bind
|
||||||
connect - connect Ci:ipi __libc_connect __connect connect
|
connect - connect Ci:ipi __libc_connect __connect connect
|
||||||
getpeername - getpeername i:ipp __getpeername getpeername
|
getpeername - getpeername i:ipp __getpeername getpeername
|
||||||
|
@ -33,7 +33,6 @@
|
|||||||
# define __ASSUME_BIND_SYSCALL 1
|
# define __ASSUME_BIND_SYSCALL 1
|
||||||
# define __ASSUME_CONNECT_SYSCALL 1
|
# define __ASSUME_CONNECT_SYSCALL 1
|
||||||
# define __ASSUME_LISTEN_SYSCALL 1
|
# define __ASSUME_LISTEN_SYSCALL 1
|
||||||
# define __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL 1
|
|
||||||
# define __ASSUME_GETSOCKOPT_SYSCALL 1
|
# define __ASSUME_GETSOCKOPT_SYSCALL 1
|
||||||
# define __ASSUME_SETSOCKOPT_SYSCALL 1
|
# define __ASSUME_SETSOCKOPT_SYSCALL 1
|
||||||
# define __ASSUME_GETSOCKNAME_SYSCALL 1
|
# define __ASSUME_GETSOCKNAME_SYSCALL 1
|
||||||
@ -47,6 +46,8 @@
|
|||||||
|
|
||||||
#include_next <kernel-features.h>
|
#include_next <kernel-features.h>
|
||||||
|
|
||||||
|
#undef __ASSUME_ACCEPT_SYSCALL
|
||||||
|
|
||||||
#if __LINUX_KERNEL_VERSION < 0x040300
|
#if __LINUX_KERNEL_VERSION < 0x040300
|
||||||
# undef __ASSUME_ACCEPT4_SYSCALL
|
# undef __ASSUME_ACCEPT4_SYSCALL
|
||||||
# undef __ASSUME_SENDMSG_SYSCALL
|
# undef __ASSUME_SENDMSG_SYSCALL
|
||||||
|
@ -5,7 +5,6 @@ umount2 - umount 2 __umount2 umount2
|
|||||||
getpriority - getpriority i:ii __getpriority getpriority
|
getpriority - getpriority i:ii __getpriority getpriority
|
||||||
|
|
||||||
# proper socket implementations:
|
# proper socket implementations:
|
||||||
accept - accept Ci:iBN __libc_accept __accept accept
|
|
||||||
bind - bind i:ipi __bind bind
|
bind - bind i:ipi __bind bind
|
||||||
connect - connect Ci:ipi __libc_connect __connect connect
|
connect - connect Ci:ipi __libc_connect __connect connect
|
||||||
getpeername - getpeername i:ipp __getpeername getpeername
|
getpeername - getpeername i:ipp __getpeername getpeername
|
||||||
|
@ -147,6 +147,7 @@
|
|||||||
separate syscalls were only added later. */
|
separate syscalls were only added later. */
|
||||||
#define __ASSUME_SENDMSG_SYSCALL 1
|
#define __ASSUME_SENDMSG_SYSCALL 1
|
||||||
#define __ASSUME_RECVMSG_SYSCALL 1
|
#define __ASSUME_RECVMSG_SYSCALL 1
|
||||||
|
#define __ASSUME_ACCEPT_SYSCALL 1
|
||||||
|
|
||||||
/* Support for SysV IPC through wired syscalls. All supported architectures
|
/* Support for SysV IPC through wired syscalls. All supported architectures
|
||||||
either support ipc syscall and/or all the ipc correspondent syscalls. */
|
either support ipc syscall and/or all the ipc correspondent syscalls. */
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
# define __ASSUME_BIND_SYSCALL 1
|
# define __ASSUME_BIND_SYSCALL 1
|
||||||
# define __ASSUME_CONNECT_SYSCALL 1
|
# define __ASSUME_CONNECT_SYSCALL 1
|
||||||
# define __ASSUME_LISTEN_SYSCALL 1
|
# define __ASSUME_LISTEN_SYSCALL 1
|
||||||
# define __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL 1
|
|
||||||
# define __ASSUME_GETSOCKOPT_SYSCALL 1
|
# define __ASSUME_GETSOCKOPT_SYSCALL 1
|
||||||
# define __ASSUME_SETSOCKOPT_SYSCALL 1
|
# define __ASSUME_SETSOCKOPT_SYSCALL 1
|
||||||
# define __ASSUME_GETSOCKNAME_SYSCALL 1
|
# define __ASSUME_GETSOCKNAME_SYSCALL 1
|
||||||
@ -41,6 +40,8 @@
|
|||||||
|
|
||||||
#include_next <kernel-features.h>
|
#include_next <kernel-features.h>
|
||||||
|
|
||||||
|
#undef __ASSUME_ACCEPT_SYSCALL
|
||||||
|
|
||||||
#if __LINUX_KERNEL_VERSION < 0x040300
|
#if __LINUX_KERNEL_VERSION < 0x040300
|
||||||
# undef __ASSUME_ACCEPT4_SYSCALL
|
# undef __ASSUME_ACCEPT4_SYSCALL
|
||||||
# undef __ASSUME_RECVMMSG_SYSCALL
|
# undef __ASSUME_RECVMMSG_SYSCALL
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
#define __ASSUME_BIND_SYSCALL 1
|
#define __ASSUME_BIND_SYSCALL 1
|
||||||
#define __ASSUME_CONNECT_SYSCALL 1
|
#define __ASSUME_CONNECT_SYSCALL 1
|
||||||
#define __ASSUME_LISTEN_SYSCALL 1
|
#define __ASSUME_LISTEN_SYSCALL 1
|
||||||
#define __ASSUME_ACCEPT_SYSCALL 1
|
|
||||||
#define __ASSUME_GETSOCKNAME_SYSCALL 1
|
#define __ASSUME_GETSOCKNAME_SYSCALL 1
|
||||||
#define __ASSUME_GETPEERNAME_SYSCALL 1
|
#define __ASSUME_GETPEERNAME_SYSCALL 1
|
||||||
#define __ASSUME_SOCKETPAIR_SYSCALL 1
|
#define __ASSUME_SOCKETPAIR_SYSCALL 1
|
||||||
|
@ -12,7 +12,6 @@ sysmips - sysmips i:iiii __sysmips sysmips
|
|||||||
# Socket functions; Linux/MIPS doesn't use the socketcall(2) wrapper;
|
# Socket functions; Linux/MIPS doesn't use the socketcall(2) wrapper;
|
||||||
# it's provided for compatibility, though.
|
# it's provided for compatibility, though.
|
||||||
#
|
#
|
||||||
accept - accept Ci:iBN __libc_accept __accept accept
|
|
||||||
bind - bind i:ipi __bind bind
|
bind - bind i:ipi __bind bind
|
||||||
connect - connect Ci:ipi __libc_connect __connect connect
|
connect - connect Ci:ipi __libc_connect __connect connect
|
||||||
getpeername - getpeername i:ipp __getpeername getpeername
|
getpeername - getpeername i:ipp __getpeername getpeername
|
||||||
|
@ -25,7 +25,6 @@
|
|||||||
#define __ASSUME_BIND_SYSCALL 1
|
#define __ASSUME_BIND_SYSCALL 1
|
||||||
#define __ASSUME_CONNECT_SYSCALL 1
|
#define __ASSUME_CONNECT_SYSCALL 1
|
||||||
#define __ASSUME_LISTEN_SYSCALL 1
|
#define __ASSUME_LISTEN_SYSCALL 1
|
||||||
#define __ASSUME_ACCEPT_SYSCALL 1
|
|
||||||
#define __ASSUME_GETSOCKNAME_SYSCALL 1
|
#define __ASSUME_GETSOCKNAME_SYSCALL 1
|
||||||
#define __ASSUME_GETPEERNAME_SYSCALL 1
|
#define __ASSUME_GETPEERNAME_SYSCALL 1
|
||||||
#define __ASSUME_SOCKETPAIR_SYSCALL 1
|
#define __ASSUME_SOCKETPAIR_SYSCALL 1
|
||||||
|
@ -27,7 +27,6 @@
|
|||||||
# define __ASSUME_BIND_SYSCALL 1
|
# define __ASSUME_BIND_SYSCALL 1
|
||||||
# define __ASSUME_CONNECT_SYSCALL 1
|
# define __ASSUME_CONNECT_SYSCALL 1
|
||||||
# define __ASSUME_LISTEN_SYSCALL 1
|
# define __ASSUME_LISTEN_SYSCALL 1
|
||||||
# define __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL 1
|
|
||||||
# define __ASSUME_GETSOCKOPT_SYSCALL 1
|
# define __ASSUME_GETSOCKOPT_SYSCALL 1
|
||||||
# define __ASSUME_SETSOCKOPT_SYSCALL 1
|
# define __ASSUME_SETSOCKOPT_SYSCALL 1
|
||||||
# define __ASSUME_GETSOCKNAME_SYSCALL 1
|
# define __ASSUME_GETSOCKNAME_SYSCALL 1
|
||||||
@ -41,6 +40,8 @@
|
|||||||
|
|
||||||
#include_next <kernel-features.h>
|
#include_next <kernel-features.h>
|
||||||
|
|
||||||
|
#undef __ASSUME_ACCEPT_SYSCALL
|
||||||
|
|
||||||
#if __LINUX_KERNEL_VERSION < 0x040300
|
#if __LINUX_KERNEL_VERSION < 0x040300
|
||||||
# undef __ASSUME_ACCEPT4_SYSCALL
|
# undef __ASSUME_ACCEPT4_SYSCALL
|
||||||
# undef __ASSUME_RECVMMSG_SYSCALL
|
# undef __ASSUME_RECVMMSG_SYSCALL
|
||||||
|
@ -28,7 +28,6 @@
|
|||||||
#define __ASSUME_BIND_SYSCALL 1
|
#define __ASSUME_BIND_SYSCALL 1
|
||||||
#define __ASSUME_CONNECT_SYSCALL 1
|
#define __ASSUME_CONNECT_SYSCALL 1
|
||||||
#define __ASSUME_LISTEN_SYSCALL 1
|
#define __ASSUME_LISTEN_SYSCALL 1
|
||||||
#define __ASSUME_ACCEPT_SYSCALL 1
|
|
||||||
#define __ASSUME_GETSOCKNAME_SYSCALL 1
|
#define __ASSUME_GETSOCKNAME_SYSCALL 1
|
||||||
#define __ASSUME_GETPEERNAME_SYSCALL 1
|
#define __ASSUME_GETPEERNAME_SYSCALL 1
|
||||||
#define __ASSUME_SOCKETPAIR_SYSCALL 1
|
#define __ASSUME_SOCKETPAIR_SYSCALL 1
|
||||||
|
@ -38,5 +38,9 @@
|
|||||||
# undef __ASSUME_SET_ROBUST_LIST
|
# undef __ASSUME_SET_ROBUST_LIST
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined __arch64__
|
||||||
|
# undef __ASSUME_ACCEPT_SYSCALL
|
||||||
|
#endif
|
||||||
|
|
||||||
/* sparc only supports ipc syscall. */
|
/* sparc only supports ipc syscall. */
|
||||||
#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
|
#undef __ASSUME_DIRECT_SYSVIPC_SYSCALLS
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
# Override select.S in parent directory:
|
# Override select.S in parent directory:
|
||||||
select - select C:5 __select select
|
select - select C:5 __select select
|
||||||
accept - accept C:3 __libc_accept __accept accept
|
|
||||||
bind - bind 3 __bind bind
|
bind - bind 3 __bind bind
|
||||||
connect - connect C:3 __libc_connect __connect connect
|
connect - connect C:3 __libc_connect __connect connect
|
||||||
getpeername - getpeername 3 __getpeername getpeername
|
getpeername - getpeername 3 __getpeername getpeername
|
||||||
|
@ -10,7 +10,6 @@ syscall_clock_gettime EXTRA clock_gettime Ei:ip __syscall_clock_gettime
|
|||||||
|
|
||||||
|
|
||||||
# proper socket implementations:
|
# proper socket implementations:
|
||||||
accept - accept Ci:iBN __libc_accept __accept accept
|
|
||||||
bind - bind i:ipi __bind bind
|
bind - bind i:ipi __bind bind
|
||||||
connect - connect Ci:ipi __libc_connect __connect connect
|
connect - connect Ci:ipi __libc_connect __connect connect
|
||||||
getpeername - getpeername i:ipp __getpeername getpeername
|
getpeername - getpeername i:ipp __getpeername getpeername
|
||||||
|
Reference in New Issue
Block a user