mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-04 02:18:37 +00:00
Add support for accept4 system call based on patch
from Dodji Seketeli. Part fix for #215973. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10955
This commit is contained in:
parent
25a99cd1eb
commit
3174f947e2
@ -349,6 +349,7 @@ DECL_TEMPLATE(amd64_linux, sys_setsockopt);
|
||||
DECL_TEMPLATE(amd64_linux, sys_getsockopt);
|
||||
DECL_TEMPLATE(amd64_linux, sys_connect);
|
||||
DECL_TEMPLATE(amd64_linux, sys_accept);
|
||||
DECL_TEMPLATE(amd64_linux, sys_accept4);
|
||||
DECL_TEMPLATE(amd64_linux, sys_sendto);
|
||||
DECL_TEMPLATE(amd64_linux, sys_recvfrom);
|
||||
DECL_TEMPLATE(amd64_linux, sys_sendmsg);
|
||||
@ -684,6 +685,23 @@ POST(sys_accept)
|
||||
SET_STATUS_from_SysRes(r);
|
||||
}
|
||||
|
||||
PRE(sys_accept4)
|
||||
{
|
||||
*flags |= SfMayBlock;
|
||||
PRINT("sys_accept4 ( %ld, %#lx, %ld, %ld )",ARG1,ARG2,ARG3,ARG4);
|
||||
PRE_REG_READ4(long, "accept4",
|
||||
int, s, struct sockaddr *, addr, int, *addrlen, int, flags);
|
||||
ML_(generic_PRE_sys_accept)(tid, ARG1,ARG2,ARG3);
|
||||
}
|
||||
POST(sys_accept4)
|
||||
{
|
||||
SysRes r;
|
||||
vg_assert(SUCCESS);
|
||||
r = ML_(generic_POST_sys_accept)(tid, VG_(mk_SysRes_Success)(RES),
|
||||
ARG1,ARG2,ARG3);
|
||||
SET_STATUS_from_SysRes(r);
|
||||
}
|
||||
|
||||
PRE(sys_sendto)
|
||||
{
|
||||
*flags |= SfMayBlock;
|
||||
@ -1368,7 +1386,7 @@ const SyscallTableEntry ML_(syscall_table)[] = {
|
||||
LINX_(__NR_fallocate, sys_fallocate), // 285
|
||||
LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 286
|
||||
LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 287
|
||||
// (__NR_paccept, sys_ni_syscall) // 288
|
||||
PLAXY(__NR_accept4, sys_accept4), // 288
|
||||
LINXY(__NR_signalfd4, sys_signalfd4), // 289
|
||||
|
||||
LINX_(__NR_eventfd2, sys_eventfd2), // 290
|
||||
|
||||
@ -457,6 +457,13 @@ PRE(sys_socketcall)
|
||||
break;
|
||||
}
|
||||
|
||||
case VKI_SYS_ACCEPT4: {
|
||||
/* int accept(int s, struct sockaddr *addr, int *addrlen, int args); */
|
||||
PRE_MEM_READ( "socketcall.accept4(args)", ARG2, 4*sizeof(Addr) );
|
||||
ML_(generic_PRE_sys_accept)( tid, ARG2_0, ARG2_1, ARG2_2 );
|
||||
break;
|
||||
}
|
||||
|
||||
case VKI_SYS_SENDTO:
|
||||
/* int sendto(int s, const void *msg, int len,
|
||||
unsigned int flags,
|
||||
@ -602,6 +609,7 @@ POST(sys_socketcall)
|
||||
break;
|
||||
|
||||
case VKI_SYS_ACCEPT:
|
||||
case VKI_SYS_ACCEPT4:
|
||||
/* int accept(int s, struct sockaddr *addr, int *addrlen); */
|
||||
r = ML_(generic_POST_sys_accept)( tid, VG_(mk_SysRes_Success)(RES),
|
||||
ARG2_0, ARG2_1, ARG2_2 );
|
||||
|
||||
@ -484,6 +484,13 @@ PRE(sys_socketcall)
|
||||
break;
|
||||
}
|
||||
|
||||
case VKI_SYS_ACCEPT4: {
|
||||
/* int accept4(int s, struct sockaddr *addr, int *addrlen, int flags); */
|
||||
PRE_MEM_READ( "socketcall.accept4(args)", ARG2, 4*sizeof(Addr) );
|
||||
ML_(generic_PRE_sys_accept)( tid, ARG2_0, ARG2_1, ARG2_2 );
|
||||
break;
|
||||
}
|
||||
|
||||
case VKI_SYS_SENDTO:
|
||||
/* int sendto(int s, const void *msg, int len,
|
||||
unsigned int flags,
|
||||
@ -629,7 +636,9 @@ POST(sys_socketcall)
|
||||
break;
|
||||
|
||||
case VKI_SYS_ACCEPT:
|
||||
case VKI_SYS_ACCEPT4:
|
||||
/* int accept(int s, struct sockaddr *addr, int *addrlen); */
|
||||
/* int accept4(int s, struct sockaddr *addr, int *addrlen, int flags); */
|
||||
r = ML_(generic_POST_sys_accept)( tid, VG_(mk_SysRes_Success)(RES),
|
||||
ARG2_0, ARG2_1, ARG2_2 );
|
||||
SET_STATUS_from_SysRes(r);
|
||||
|
||||
@ -1475,6 +1475,13 @@ PRE(sys_socketcall)
|
||||
break;
|
||||
}
|
||||
|
||||
case VKI_SYS_ACCEPT4: {
|
||||
/*int accept(int s, struct sockaddr *add, int *addrlen, int flags)*/
|
||||
PRE_MEM_READ( "socketcall.accept4(args)", ARG2, 4*sizeof(Addr) );
|
||||
ML_(generic_PRE_sys_accept)( tid, ARG2_0, ARG2_1, ARG2_2 );
|
||||
break;
|
||||
}
|
||||
|
||||
case VKI_SYS_SENDTO:
|
||||
/* int sendto(int s, const void *msg, int len,
|
||||
unsigned int flags,
|
||||
@ -1620,7 +1627,9 @@ POST(sys_socketcall)
|
||||
break;
|
||||
|
||||
case VKI_SYS_ACCEPT:
|
||||
case VKI_SYS_ACCEPT4:
|
||||
/* int accept(int s, struct sockaddr *addr, int *addrlen); */
|
||||
/* int accept4(int s, struct sockaddr *addr, int *addrlen, int flags); */
|
||||
r = ML_(generic_POST_sys_accept)( tid, VG_(mk_SysRes_Success)(RES),
|
||||
ARG2_0, ARG2_1, ARG2_2 );
|
||||
SET_STATUS_from_SysRes(r);
|
||||
|
||||
@ -525,6 +525,7 @@ typedef struct vki_sigevent {
|
||||
#define VKI_SYS_GETSOCKOPT 15 /* sys_getsockopt(2) */
|
||||
#define VKI_SYS_SENDMSG 16 /* sys_sendmsg(2) */
|
||||
#define VKI_SYS_RECVMSG 17 /* sys_recvmsg(2) */
|
||||
#define VKI_SYS_ACCEPT4 18 /* sys_accept4(2) */
|
||||
|
||||
enum vki_sock_type {
|
||||
VKI_SOCK_STREAM = 1,
|
||||
|
||||
@ -369,7 +369,7 @@
|
||||
#define __NR_fallocate 285
|
||||
#define __NR_timerfd_settime 286
|
||||
#define __NR_timerfd_gettime 287
|
||||
#define __NR_paccept 288
|
||||
#define __NR_accept4 288
|
||||
#define __NR_signalfd4 289
|
||||
#define __NR_eventfd2 290
|
||||
#define __NR_epoll_create1 291
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user