|
From: <sv...@va...> - 2013-03-01 23:31:20
|
philippe 2013-03-01 23:31:09 +0000 (Fri, 01 Mar 2013)
New Revision: 13302
Log:
Factorise some code from syswrap-amd64/arm/mips32/mips64-linux.c to syswrap-linux.c
Almost mechanical transformation, removes > 1000 SLOC.
Compiled and regtested on amd64/x86/mips32
Compiled and (somewhat) tested on mips64
Compiled on arm
Modified files:
trunk/coregrind/m_syswrap/priv_syswrap-linux.h
trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
trunk/coregrind/m_syswrap/syswrap-arm-linux.c
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/coregrind/m_syswrap/syswrap-mips32-linux.c
trunk/coregrind/m_syswrap/syswrap-mips64-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-mips64-linux.c (+26 -392)
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-mips64-linux.c 2013-03-01 23:05:43 +00:00 (rev 13301)
+++ trunk/coregrind/m_syswrap/syswrap-mips64-linux.c 2013-03-01 23:31:09 +00:00 (rev 13302)
@@ -315,11 +315,6 @@
DECL_TEMPLATE (mips_linux, sys_set_thread_area);
DECL_TEMPLATE (mips_linux, sys_clone);
-DECL_TEMPLATE (mips_linux, sys_socket);
-DECL_TEMPLATE (mips_linux, sys_setsockopt);
-DECL_TEMPLATE (mips_linux, sys_getsockopt);
-DECL_TEMPLATE (mips_linux, sys_connect);
-DECL_TEMPLATE (mips_linux, sys_accept);
DECL_TEMPLATE (mips_linux, sys_tee);
DECL_TEMPLATE (mips_linux, sys_splice);
DECL_TEMPLATE (mips_linux, sys_vmsplice);
@@ -329,103 +324,16 @@
DECL_TEMPLATE (mips_linux, sys_swapoff);
DECL_TEMPLATE (mips_linux, sys_setdomainname);
DECL_TEMPLATE (mips_linux, sys_sethostname);
-DECL_TEMPLATE (mips_linux, sys_accept4);
-DECL_TEMPLATE (mips_linux, sys_sendto);
-DECL_TEMPLATE (mips_linux, sys_recvfrom);
-DECL_TEMPLATE (mips_linux, sys_sendmsg);
-DECL_TEMPLATE (mips_linux, sys_recvmsg);
-DECL_TEMPLATE (mips_linux, sys_shutdown);
-DECL_TEMPLATE (mips_linux, sys_bind);
DECL_TEMPLATE (mips_linux, sys_reboot);
-DECL_TEMPLATE (mips_linux, sys_listen);
-DECL_TEMPLATE (mips_linux, sys_getsockname);
-DECL_TEMPLATE (mips_linux, sys_getpeername);
-DECL_TEMPLATE (mips_linux, sys_socketpair);
-DECL_TEMPLATE (mips_linux, sys_semget);
-DECL_TEMPLATE (mips_linux, sys_semop);
-DECL_TEMPLATE (mips_linux, sys_semtimedop);
DECL_TEMPLATE (mips_linux, sys_cacheflush);
-DECL_TEMPLATE (mips_linux, sys_semctl);
DECL_TEMPLATE (mips_linux, sys_sched_rr_get_interval);
-DECL_TEMPLATE (mips_linux, sys_msgget);
-DECL_TEMPLATE (mips_linux, sys_msgrcv);
DECL_TEMPLATE (mips_linux, sys_unshare);
-DECL_TEMPLATE (mips_linux, sys_msgsnd);
-DECL_TEMPLATE (mips_linux, sys_msgctl);
-DECL_TEMPLATE (mips_linux, sys_shmget);
-DECL_TEMPLATE (mips_linux, wrap_sys_shmat);
-DECL_TEMPLATE (mips_linux, sys_shmdt);
-DECL_TEMPLATE (mips_linux, sys_shmdt);
-DECL_TEMPLATE (mips_linux, sys_shmctl);
DECL_TEMPLATE (mips_linux, sys_arch_prctl);
DECL_TEMPLATE (mips_linux, sys_ptrace);
DECL_TEMPLATE (mips_linux, sys_mmap);
DECL_TEMPLATE (mips_linux, sys_rt_sigreturn);
DECL_TEMPLATE (mips_linux, sys_pipe);
-PRE(sys_socketpair)
-{
- PRINT("sys_socketpair ( %ld, %ld, %ld, %#lx )", ARG1, ARG2, ARG3, ARG4);
- PRE_REG_READ4(long, "socketpair", int, d, int, type, int, protocol,
- int *, sv);
- ML_(generic_PRE_sys_socketpair)(tid, ARG1, ARG2, ARG3, ARG4);
-}
-
-POST(sys_socketpair)
-{
- vg_assert(SUCCESS);
- ML_(generic_POST_sys_socketpair)(tid, VG_(mk_SysRes_Success)(RES),
- ARG1, ARG2, ARG3, ARG4);
-}
-
-PRE(wrap_sys_shmat)
-{
- UWord arg2tmp;
- PRINT("wrap_sys_shmat ( %ld, %#lx, %ld )", ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "shmat", int, shmid, const void *, shmaddr, int, shmflg);
- arg2tmp = ML_(generic_PRE_sys_shmat)(tid, ARG1, ARG2, ARG3);
- if (arg2tmp == 0)
- SET_STATUS_Failure(VKI_EINVAL);
- else
- ARG2 = arg2tmp;
-}
-
-POST(wrap_sys_shmat)
-{
- ML_(generic_POST_sys_shmat)(tid, RES, ARG1, ARG2, ARG3);
-}
-
-PRE(sys_shmdt)
-{
- PRINT("sys_shmdt ( %#lx )", ARG1);
- PRE_REG_READ1(long, "shmdt", const void *, shmaddr);
- if (!ML_(generic_PRE_sys_shmdt)(tid, ARG1))
- SET_STATUS_Failure(VKI_EINVAL);
-}
-
-POST(sys_shmdt)
-{
- ML_(generic_POST_sys_shmdt)(tid, RES, ARG1);
-}
-
-PRE(sys_shmctl)
-{
- PRINT("sys_shmctl ( %ld, %ld, %#lx )", ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "shmctl", int, shmid, int, cmd, struct shmid_ds *, buf);
- ML_(generic_PRE_sys_shmctl)(tid, ARG1, ARG2, ARG3);
-}
-
-POST(sys_shmctl)
-{
- ML_(generic_POST_sys_shmctl)(tid, RES, ARG1, ARG2, ARG3);
-}
-
-PRE(sys_shmget)
-{
- PRINT("sys_shmget ( %ld, %ld, %ld )", ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "shmget", vki_key_t, key, vki_size_t, size, int, shmflg);
-}
-
PRE(sys_tee)
{
PRINT("sys_tee ( %ld, %ld, %ld, %ld )", ARG1, ARG2, ARG3, ARG4);
@@ -455,24 +363,6 @@
PRE_REG_READ1(long, "sys_unshare", int, flags);
}
-PRE(sys_msgctl)
-{
- PRINT("sys_msgctl ( %ld, %ld, %#lx )", ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "msgctl", int, msqid, int, cmd, struct msqid_ds *, buf);
- ML_(linux_PRE_sys_msgctl) (tid, ARG1, ARG2, ARG3);
-}
-
-POST(sys_msgctl)
-{
- ML_(linux_POST_sys_msgctl)(tid, RES, ARG1, ARG2, ARG3);
-}
-
-PRE(sys_msgget)
-{
- PRINT("sys_msgget ( %ld, %ld )", ARG1, ARG2);
- PRE_REG_READ2(long, "msgget", vki_key_t, key, int, msgflg);
-}
-
PRE(sys_sched_rr_get_interval)
{
PRINT("sys_sched_rr_get_interval ( %ld, %#lx)", ARG1, ARG2);
@@ -505,91 +395,6 @@
PRE_REG_READ3(long, "sysfs", int, flags, int, desc, const void *, path);
}
-PRE(sys_msgsnd)
-{
- PRINT("sys_msgsnd ( %ld, %#lx, %ld, %ld )", ARG1, ARG2, ARG3, ARG4);
- PRE_REG_READ4(long, "msgsnd", int, msqid, struct msgbuf *, msgp,
- vki_size_t, msgsz, int, msgflg);
- ML_(linux_PRE_sys_msgsnd)(tid, ARG1, ARG2, ARG3, ARG4);
- if ((ARG4 & VKI_IPC_NOWAIT) == 0)
- *flags |= SfMayBlock;
-}
-
-PRE(sys_msgrcv)
-{
- PRINT("sys_msgrcv ( %ld, %#lx, %ld, %ld, %ld )", ARG1, ARG2, ARG3, ARG4,
- ARG5);
- PRE_REG_READ5(long, "msgrcv", int, msqid, struct msgbuf *, msgp,
- vki_size_t, msgsz, long, msgytp, int, msgflg);
- ML_(linux_PRE_sys_msgrcv) (tid, ARG1, ARG2, ARG3, ARG4, ARG5);
- if ((ARG4 & VKI_IPC_NOWAIT) == 0)
- *flags |= SfMayBlock;
-}
-
-POST(sys_msgrcv)
-{
- ML_(linux_POST_sys_msgrcv)(tid, RES, ARG1, ARG2, ARG3, ARG4, ARG5);
-}
-
-PRE(sys_semctl)
-{
- switch (ARG3 & ~VKI_IPC_64) {
- case VKI_IPC_INFO:
- case VKI_SEM_INFO:
- PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )", ARG1, ARG2, ARG3, ARG4);
- PRE_REG_READ4(long, "semctl", int, semid, int, semnum, int, cmd,
- struct seminfo *, arg);
- break;
- case VKI_IPC_STAT:
- case VKI_SEM_STAT:
- case VKI_IPC_SET:
- PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )", ARG1, ARG2, ARG3, ARG4);
- PRE_REG_READ4(long, "semctl", int, semid, int, semnum, int, cmd,
- struct semid_ds *, arg);
- break;
- case VKI_GETALL:
- case VKI_SETALL:
- PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )", ARG1, ARG2, ARG3, ARG4);
- PRE_REG_READ4(long, "semctl", int, semid, int, semnum, int, cmd,
- unsigned short *, arg);
- break;
- default:
- PRINT("sys_semctl ( %ld, %ld, %ld )", ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "semctl", int, semid, int, semnum, int, cmd);
- break;
- }
- ML_(generic_PRE_sys_semctl)(tid, ARG1, ARG2, ARG3, ARG4);
-}
-
-POST(sys_semctl)
-{
- ML_(generic_POST_sys_semctl)(tid, RES, ARG1, ARG2, ARG3, ARG4);
-}
-
-PRE(sys_semget)
-{
- PRINT("sys_semget ( %ld, %ld, %ld )", ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "semget", vki_key_t, key, int, nsems, int, semflg);
-}
-
-PRE(sys_semop)
-{
- *flags |= SfMayBlock;
- PRINT("sys_semop ( %ld, %#lx, %lu )", ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "semop", int, semid, struct sembuf *, sops,
- unsigned, nsoops);
- ML_(generic_PRE_sys_semop)(tid, ARG1, ARG2, ARG3);
-}
-
-PRE(sys_semtimedop)
-{
- *flags |= SfMayBlock;
- PRINT("sys_semtimedop ( %ld, %#lx, %lu, %#lx )", ARG1, ARG2, ARG3, ARG4);
- PRE_REG_READ4(long, "semtimedop", int, semid, struct sembuf *, sops,
- unsigned, nsoops, struct timespec *, timeout);
- ML_(generic_PRE_sys_semtimedop)(tid, ARG1, ARG2, ARG3, ARG4);
-}
-
/* Very much MIPS specific */
PRE(sys_cacheflush)
{
@@ -601,43 +406,6 @@
SET_STATUS_Success(0);
}
-PRE(sys_getpeername)
-{
- PRINT("sys_getpeername ( %ld, %#lx, %#lx )", ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "getpeername", int, s, struct sockaddr *, name,
- int *, namelen);
- ML_(generic_PRE_sys_getpeername) (tid, ARG1, ARG2, ARG3);
-}
-
-POST(sys_getpeername)
-{
- vg_assert (SUCCESS);
- ML_(generic_POST_sys_getpeername)(tid, VG_ (mk_SysRes_Success) (RES),
- ARG1, ARG2, ARG3);
-}
-
-PRE(sys_getsockname)
-{
- PRINT("sys_getsockname ( %ld, %#lx, %#lx )", ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "getsockname", int, s, struct sockaddr *, name,
- int *, namelen);
- ML_(generic_PRE_sys_getsockname)(tid, ARG1, ARG2, ARG3);
-}
-
-POST(sys_getsockname)
-{
- vg_assert(SUCCESS);
- ML_(generic_POST_sys_getsockname)(tid, VG_ (mk_SysRes_Success) (RES),
- ARG1, ARG2, ARG3);
-}
-
-PRE(sys_shutdown)
-{
- *flags |= SfMayBlock;
- PRINT("sys_shutdown ( %ld, %ld )", ARG1, ARG2);
- PRE_REG_READ2(int, "shutdown", int, s, int, how);
-}
-
PRE(sys_reboot)
{
PRINT("sys_reboot ( %ld )", ARG1);
@@ -645,14 +413,6 @@
*flags |= SfMayBlock;
}
-PRE(sys_bind)
-{
- PRINT("sys_bind ( %ld, %#lx, %ld )", ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "bind", int, sockfd, struct sockaddr *, my_addr,
- int, addrlen);
- ML_(generic_PRE_sys_bind)(tid, ARG1, ARG2, ARG3);
-}
-
PRE(sys_setdomainname)
{
PRINT ("sys_setdomainname ( %#lx, %ld )", ARG1, ARG2);
@@ -665,132 +425,6 @@
PRE_REG_READ2 (long, "sethostname", const void *, name, int, len);
}
-PRE(sys_listen)
-{
- PRINT ("sys_listen ( %ld, %ld )", ARG1, ARG2);
- PRE_REG_READ2 (long, "listen", int, s, int, backlog);
-}
-
-PRE(sys_sendmsg)
-{
- *flags |= SfMayBlock;
- PRINT("sys_sendmsg ( %ld, %#lx, %ld )",ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "sendmsg", int, s, const struct msghdr *, msg,
- int, flags);
- ML_(generic_PRE_sys_sendmsg)(tid, "msg", (struct vki_msghdr *)ARG2);
-}
-
-PRE(sys_recvmsg)
-{
- *flags |= SfMayBlock;
- PRINT("sys_recvmsg ( %ld, %#lx, %ld )",ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "recvmsg", int, s, struct msghdr *, msg, int, flags);
- ML_(generic_PRE_sys_recvmsg)(tid, "msg", (struct vki_msghdr *)ARG2);
-}
-
-POST(sys_recvmsg)
-{
- ML_(generic_POST_sys_recvmsg)(tid, "msg", (struct vki_msghdr *)ARG2, RES);
-}
-
-PRE(sys_sendto)
-{
- *flags |= SfMayBlock;
- PRINT ("sys_sendto ( %ld, %#lx, %ld, %lu, %#lx, %ld )", ARG1, ARG2, ARG3,
- ARG4, ARG5, ARG6);
- PRE_REG_READ6 (long, "sendto", int, s, const void *, msg, int, len,
- unsigned int, flags, const struct sockaddr *, to, int, tolen);
- ML_(generic_PRE_sys_sendto) (tid, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6);
-}
-
-PRE(sys_recvfrom)
-{
- *flags |= SfMayBlock;
- PRINT("sys_recvfrom ( %ld, %#lx, %ld, %lu, %#lx, %#lx )", ARG1, ARG2,
- ARG3, ARG4, ARG5, ARG6);
- PRE_REG_READ6(long, "recvfrom", int, s, void *, buf, int, len,
- unsigned int, flags, struct sockaddr *, from, int *, fromlen);
- ML_(generic_PRE_sys_recvfrom)(tid, ARG1, ARG2, ARG3, ARG4, ARG5, ARG6);
-}
-
-POST(sys_recvfrom)
-{
- vg_assert(SUCCESS);
- ML_(generic_POST_sys_recvfrom)(tid, VG_(mk_SysRes_Success)(RES),
- ARG1, ARG2, ARG3, ARG4, ARG5, ARG6);
-}
-
-PRE (sys_connect)
-{
- *flags |= SfMayBlock;
- PRINT("sys_connect ( %ld, %#lx, %ld )", ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "connect", int, sockfd, struct sockaddr *, serv_addr,
- int, addrlen);
- ML_(generic_PRE_sys_connect)(tid, ARG1, ARG2, ARG3);
-}
-
-PRE(sys_accept)
-{
- *flags |= SfMayBlock;
- PRINT("sys_accept ( %ld, %#lx, %ld )", ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "accept", int, s, struct sockaddr *, addr,
- int, *addrlen);
- ML_(generic_PRE_sys_accept)(tid, ARG1, ARG2, ARG3);
-}
-
-PRE(sys_accept4)
-{
- *flags |= SfMayBlock;
-}
-
-POST(sys_accept)
-{
- 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_setsockopt)
-{
- PRINT("sys_setsockopt ( %ld, %ld, %ld, %#lx, %ld )", ARG1, ARG2, ARG3,
- ARG4, ARG5);
- PRE_REG_READ5(long, "setsockopt", int, s, int, level, int, optname,
- const void *, optval, int, optlen);
- ML_(generic_PRE_sys_setsockopt)(tid, ARG1, ARG2, ARG3, ARG4, ARG5);
-}
-
-PRE(sys_getsockopt)
-{
- PRINT("sys_getsockopt ( %ld, %ld, %ld, %#lx, %#lx )", ARG1, ARG2, ARG3,
- ARG4, ARG5);
- PRE_REG_READ5(long, "getsockopt", int, s, int, level, int, optname,
- void *, optval, int, *optlen);
- ML_(linux_PRE_sys_getsockopt)(tid, ARG1, ARG2, ARG3, ARG4, ARG5);
-}
-
-POST(sys_getsockopt)
-{
- vg_assert(SUCCESS);
- ML_(linux_POST_sys_getsockopt)(tid, VG_(mk_SysRes_Success) (RES),
- ARG1, ARG2, ARG3, ARG4, ARG5);
-}
-
-PRE(sys_socket)
-{
- PRINT("sys_socket ( %ld, %ld, %ld )", ARG1, ARG2, ARG3);
- PRE_REG_READ3(long, "socket", int, domain, int, type, int, protocol);
-}
-
-POST(sys_socket)
-{
- SysRes r;
- vg_assert(SUCCESS);
- r = ML_(generic_POST_sys_socket)(tid, VG_(mk_SysRes_Success)(RES));
- SET_STATUS_from_SysRes(r);
-}
-
PRE(sys_ptrace)
{
PRINT("sys_ptrace ( %ld, %ld, %#lx, %#lx )", ARG1, ARG2, ARG3, ARG4);
@@ -1030,9 +664,9 @@
GENX_ (__NR_msync, sys_msync),
GENXY (__NR_mincore, sys_mincore),
GENX_ (__NR_madvise, sys_madvise),
- PLAX_ (__NR_shmget, sys_shmget),
+ LINX_ (__NR_shmget, sys_shmget),
/* PLAXY(__NR_shmat,sys_shmat), */
- PLAXY (__NR_shmctl, sys_shmctl),
+ LINXY (__NR_shmctl, sys_shmctl),
GENXY (__NR_dup, sys_dup),
GENXY (__NR_dup2, sys_dup2),
/* GENXY(__NR_dup3,sys_dup3), */
@@ -1044,22 +678,22 @@
GENX_ (__NR_getpid, sys_getpid),
/* LINX_(__NR_fallocate,sys_fallocate), */
LINXY (__NR_sendfile, sys_sendfile),
- PLAXY (__NR_socket, sys_socket),
- PLAX_ (__NR_connect, sys_connect),
- PLAXY (__NR_accept, sys_accept),
+ LINXY (__NR_socket, sys_socket),
+ LINX_ (__NR_connect, sys_connect),
+ LINXY (__NR_accept, sys_accept),
/* PLAX_(__NR_accept4,sys_accept4), */
- PLAX_ (__NR_sendto, sys_sendto),
- PLAXY (__NR_recvfrom, sys_recvfrom),
- PLAX_ (__NR_sendmsg, sys_sendmsg),
- PLAXY (__NR_recvmsg, sys_recvmsg),
- PLAX_ (__NR_shutdown, sys_shutdown),
- PLAX_ (__NR_bind, sys_bind),
- PLAX_ (__NR_listen, sys_listen),
- PLAXY (__NR_getsockname, sys_getsockname),
- PLAXY (__NR_getpeername, sys_getpeername),
- PLAXY (__NR_socketpair, sys_socketpair),
- PLAX_ (__NR_setsockopt, sys_setsockopt),
- PLAXY (__NR_getsockopt, sys_getsockopt),
+ LINX_ (__NR_sendto, sys_sendto),
+ LINXY (__NR_recvfrom, sys_recvfrom),
+ LINX_ (__NR_sendmsg, sys_sendmsg),
+ LINXY (__NR_recvmsg, sys_recvmsg),
+ LINX_ (__NR_shutdown, sys_shutdown),
+ LINX_ (__NR_bind, sys_bind),
+ LINX_ (__NR_listen, sys_listen),
+ LINXY (__NR_getsockname, sys_getsockname),
+ LINXY (__NR_getpeername, sys_getpeername),
+ LINXY (__NR_socketpair, sys_socketpair),
+ LINX_ (__NR_setsockopt, sys_setsockopt),
+ LINXY (__NR_getsockopt, sys_getsockopt),
PLAX_ (__NR_clone, sys_clone),
GENX_ (__NR_fork, sys_fork),
GENX_ (__NR_execve, sys_execve),
@@ -1067,14 +701,14 @@
GENXY (__NR_wait4, sys_wait4),
GENX_ (__NR_kill, sys_kill),
GENXY (__NR_uname, sys_newuname),
- PLAX_ (__NR_semget, sys_semget),
- PLAX_ (__NR_semop, sys_semop),
- PLAXY (__NR_semctl, sys_semctl),
- PLAXY (__NR_shmdt, sys_shmdt),
- PLAX_ (__NR_msgget, sys_msgget),
- PLAX_ (__NR_msgsnd, sys_msgsnd),
- PLAXY (__NR_msgrcv, sys_msgrcv),
- PLAXY (__NR_msgctl, sys_msgctl),
+ LINX_ (__NR_semget, sys_semget),
+ LINX_ (__NR_semop, sys_semop),
+ LINXY (__NR_semctl, sys_semctl),
+ LINXY (__NR_shmdt, sys_shmdt),
+ LINX_ (__NR_msgget, sys_msgget),
+ LINX_ (__NR_msgsnd, sys_msgsnd),
+ LINXY (__NR_msgrcv, sys_msgrcv),
+ LINXY (__NR_msgctl, sys_msgctl),
LINXY (__NR_fcntl, sys_fcntl),
GENX_ (__NR_flock, sys_flock),
GENX_ (__NR_fsync, sys_fsync),
@@ -1217,7 +851,7 @@
PLAX_(__NR_rt_sigreturn,sys_rt_sigreturn),
/* LINXY(__NR_fcntl64,sys_fcntl64), */
LINX_ (__NR_set_tid_address, sys_set_tid_address),
- PLAX_ (__NR_semtimedop, sys_semtimedop),
+ LINX_ (__NR_semtimedop, sys_semtimedop),
LINX_ (__NR_fadvise64, sys_fadvise64),
LINXY (__NR_timer_create, sys_timer_create),
LINXY (__NR_timer_settime, sys_timer_settime),
Modified: trunk/coregrind/m_syswrap/syswrap-arm-linux.c (+30 -445)
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-arm-linux.c 2013-03-01 23:05:43 +00:00 (rev 13301)
+++ trunk/coregrind/m_syswrap/syswrap-arm-linux.c 2013-03-01 23:31:09 +00:00 (rev 13302)
@@ -344,40 +344,6 @@
aren't visible outside this file, but that requires even more macro
magic. */
-DECL_TEMPLATE(arm_linux, sys_socket);
-DECL_TEMPLATE(arm_linux, sys_setsockopt);
-DECL_TEMPLATE(arm_linux, sys_getsockopt);
-DECL_TEMPLATE(arm_linux, sys_connect);
-DECL_TEMPLATE(arm_linux, sys_accept);
-DECL_TEMPLATE(arm_linux, sys_accept4);
-DECL_TEMPLATE(arm_linux, sys_sendto);
-DECL_TEMPLATE(arm_linux, sys_recvfrom);
-//XXX: Semaphore code ripped from AMD64.
-DECL_TEMPLATE(arm_linux, sys_semget);
-DECL_TEMPLATE(arm_linux, sys_semop);
-DECL_TEMPLATE(arm_linux, sys_semctl);
-DECL_TEMPLATE(arm_linux, sys_semtimedop);
-//XXX: Shared memory code ripped from AMD64
-//
-DECL_TEMPLATE(arm_linux, wrap_sys_shmat);
-DECL_TEMPLATE(arm_linux, sys_shmget);
-DECL_TEMPLATE(arm_linux, sys_shmdt);
-DECL_TEMPLATE(arm_linux, sys_shmctl);
-DECL_TEMPLATE(arm_linux, sys_sendmsg);
-DECL_TEMPLATE(arm_linux, sys_recvmsg);
-//msg* code from AMD64
-DECL_TEMPLATE(arm_linux, sys_msgget);
-DECL_TEMPLATE(arm_linux, sys_msgrcv);
-DECL_TEMPLATE(arm_linux, sys_msgsnd);
-DECL_TEMPLATE(arm_linux, sys_msgctl);
-DECL_TEMPLATE(arm_linux, sys_shutdown);
-DECL_TEMPLATE(arm_linux, sys_bind);
-DECL_TEMPLATE(arm_linux, sys_listen);
-DECL_TEMPLATE(arm_linux, sys_getsockname);
-DECL_TEMPLATE(arm_linux, sys_getpeername);
-DECL_TEMPLATE(arm_linux, sys_socketpair);
-DECL_TEMPLATE(arm_linux, sys_send);
-DECL_TEMPLATE(arm_linux, sys_recv);
DECL_TEMPLATE(arm_linux, sys_mmap2);
DECL_TEMPLATE(arm_linux, sys_stat64);
DECL_TEMPLATE(arm_linux, sys_lstat64);
@@ -391,387 +357,6 @@
DECL_TEMPLATE(arm_linux, sys_cacheflush);
DECL_TEMPLATE(arm_linux, sys_ptrace);
-
-PRE(sys_socket)
-{
- PRINT("sys_socket ( %ld, %ld, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "socket", int, domain, int, type, int, protocol);
-}
-POST(sys_socket)
-{
- SysRes r;
- vg_assert(SUCCESS);
- r = ML_(generic_POST_sys_socket)(tid, VG_(mk_SysRes_Success)(RES));
- SET_STATUS_from_SysRes(r);
-}
-
-PRE(sys_setsockopt)
-{
- PRINT("sys_setsockopt ( %ld, %ld, %ld, %#lx, %ld )",ARG1,ARG2,ARG3,ARG4,ARG5);
- PRE_REG_READ5(long, "setsockopt",
- int, s, int, level, int, optname,
- const void *, optval, int, optlen);
- ML_(generic_PRE_sys_setsockopt)(tid, ARG1,ARG2,ARG3,ARG4,ARG5);
-}
-
-PRE(sys_getsockopt)
-{
- PRINT("sys_getsockopt ( %ld, %ld, %ld, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5);
- PRE_REG_READ5(long, "getsockopt",
- int, s, int, level, int, optname,
- void *, optval, int, *optlen);
- ML_(linux_PRE_sys_getsockopt)(tid, ARG1,ARG2,ARG3,ARG4,ARG5);
-}
-POST(sys_getsockopt)
-{
- vg_assert(SUCCESS);
- ML_(linux_POST_sys_getsockopt)(tid, VG_(mk_SysRes_Success)(RES),
- ARG1,ARG2,ARG3,ARG4,ARG5);
-}
-
-PRE(sys_connect)
-{
- *flags |= SfMayBlock;
- PRINT("sys_connect ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "connect",
- int, sockfd, struct sockaddr *, serv_addr, int, addrlen);
- ML_(generic_PRE_sys_connect)(tid, ARG1,ARG2,ARG3);
-}
-
-PRE(sys_accept)
-{
- *flags |= SfMayBlock;
- PRINT("sys_accept ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "accept",
- int, s, struct sockaddr *, addr, int, *addrlen);
- ML_(generic_PRE_sys_accept)(tid, ARG1,ARG2,ARG3);
-}
-POST(sys_accept)
-{
- 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_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;
- PRINT("sys_sendto ( %ld, %#lx, %ld, %lu, %#lx, %ld )",ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
- PRE_REG_READ6(long, "sendto",
- int, s, const void *, msg, int, len,
- unsigned int, flags,
- const struct sockaddr *, to, int, tolen);
- ML_(generic_PRE_sys_sendto)(tid, ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
-}
-
-PRE(sys_recvfrom)
-{
- *flags |= SfMayBlock;
- PRINT("sys_recvfrom ( %ld, %#lx, %ld, %lu, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
- PRE_REG_READ6(long, "recvfrom",
- int, s, void *, buf, int, len, unsigned int, flags,
- struct sockaddr *, from, int *, fromlen);
- ML_(generic_PRE_sys_recvfrom)(tid, ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
-}
-POST(sys_recvfrom)
-{
- vg_assert(SUCCESS);
- ML_(generic_POST_sys_recvfrom)(tid, VG_(mk_SysRes_Success)(RES),
- ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
-}
-
-PRE(sys_sendmsg)
-{
- *flags |= SfMayBlock;
- PRINT("sys_sendmsg ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "sendmsg",
- int, s, const struct msghdr *, msg, int, flags);
- ML_(generic_PRE_sys_sendmsg)(tid, "msg", (struct vki_msghdr *)ARG2);
-}
-
-PRE(sys_recvmsg)
-{
- *flags |= SfMayBlock;
- PRINT("sys_recvmsg ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "recvmsg", int, s, struct msghdr *, msg, int, flags);
- ML_(generic_PRE_sys_recvmsg)(tid, "msg", (struct vki_msghdr *)ARG2);
-}
-POST(sys_recvmsg)
-{
- ML_(generic_POST_sys_recvmsg)(tid, "msg", (struct vki_msghdr *)ARG2, RES);
-}
-
-//XXX: Semaphore code ripped from AMD64.
-PRE(sys_semget)
-{
- PRINT("sys_semget ( %ld, %ld, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "semget", vki_key_t, key, int, nsems, int, semflg);
-}
-
-PRE(sys_semop)
-{
- *flags |= SfMayBlock;
- PRINT("sys_semop ( %ld, %#lx, %lu )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "semop",
- int, semid, struct sembuf *, sops, unsigned, nsoops);
- ML_(generic_PRE_sys_semop)(tid, ARG1,ARG2,ARG3);
-}
-
-PRE(sys_semctl)
-{
- switch (ARG3 & ~VKI_IPC_64) {
- case VKI_IPC_INFO:
- case VKI_SEM_INFO:
- PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "semctl",
- int, semid, int, semnum, int, cmd, struct seminfo *, arg);
- break;
- case VKI_IPC_STAT:
- case VKI_SEM_STAT:
- case VKI_IPC_SET:
- PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "semctl",
- int, semid, int, semnum, int, cmd, struct semid_ds *, arg);
- break;
- case VKI_GETALL:
- case VKI_SETALL:
- PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "semctl",
- int, semid, int, semnum, int, cmd, unsigned short *, arg);
- break;
- default:
- PRINT("sys_semctl ( %ld, %ld, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "semctl",
- int, semid, int, semnum, int, cmd);
- break;
- }
- ML_(generic_PRE_sys_semctl)(tid, ARG1,ARG2,ARG3,ARG4);
-}
-
-POST(sys_semctl)
-{
- ML_(generic_POST_sys_semctl)(tid, RES,ARG1,ARG2,ARG3,ARG4);
-}
-
-PRE(sys_semtimedop)
-{
- *flags |= SfMayBlock;
- PRINT("sys_semtimedop ( %ld, %#lx, %lu, %#lx )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "semtimedop",
- int, semid, struct sembuf *, sops, unsigned, nsoops,
- struct timespec *, timeout);
- ML_(generic_PRE_sys_semtimedop)(tid, ARG1,ARG2,ARG3,ARG4);
-}
-
-//amd64
-PRE(sys_msgget)
-{
- PRINT("sys_msgget ( %ld, %ld )",ARG1,ARG2);
- PRE_REG_READ2(long, "msgget", vki_key_t, key, int, msgflg);
-}
-
-PRE(sys_msgsnd)
-{
- PRINT("sys_msgsnd ( %ld, %#lx, %ld, %ld )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "msgsnd",
- int, msqid, struct msgbuf *, msgp, vki_size_t, msgsz, int, msgflg);
- ML_(linux_PRE_sys_msgsnd)(tid, ARG1,ARG2,ARG3,ARG4);
- if ((ARG4 & VKI_IPC_NOWAIT) == 0)
- *flags |= SfMayBlock;
-}
-
-PRE(sys_msgrcv)
-{
- PRINT("sys_msgrcv ( %ld, %#lx, %ld, %ld, %ld )",ARG1,ARG2,ARG3,ARG4,ARG5);
- PRE_REG_READ5(long, "msgrcv",
- int, msqid, struct msgbuf *, msgp, vki_size_t, msgsz,
- long, msgytp, int, msgflg);
- ML_(linux_PRE_sys_msgrcv)(tid, ARG1,ARG2,ARG3,ARG4,ARG5);
- if ((ARG5 & VKI_IPC_NOWAIT) == 0)
- *flags |= SfMayBlock;
-}
-POST(sys_msgrcv)
-{
- ML_(linux_POST_sys_msgrcv)(tid, RES,ARG1,ARG2,ARG3,ARG4,ARG5);
-}
-
-
-PRE(sys_msgctl)
-{
- PRINT("sys_msgctl ( %ld, %ld, %#lx )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "msgctl",
- int, msqid, int, cmd, struct msqid_ds *, buf);
- ML_(linux_PRE_sys_msgctl)(tid, ARG1,ARG2,ARG3);
-}
-POST(sys_msgctl)
-{
- ML_(linux_POST_sys_msgctl)(tid, RES,ARG1,ARG2,ARG3);
-}
-
-//shared memory code from AMD64
-PRE(sys_shmget)
-{
- PRINT("sys_shmget ( %ld, %ld, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "shmget", vki_key_t, key, vki_size_t, size, int, shmflg);
-}
-
-PRE(wrap_sys_shmat)
-{
- UWord arg2tmp;
- PRINT("wrap_sys_shmat ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "shmat",
- int, shmid, const void *, shmaddr, int, shmflg);
- /* Round the attach address down to an VKI_SHMLBA boundary if the
- client requested rounding. See #222545. This is necessary only
- on arm-linux because VKI_SHMLBA is 4 * VKI_PAGE size; on all
- other linux targets it is the same as the page size. */
- if (ARG3 & VKI_SHM_RND)
- ARG2 = VG_ROUNDDN(ARG2, VKI_SHMLBA);
- arg2tmp = ML_(generic_PRE_sys_shmat)(tid, ARG1,ARG2,ARG3);
- if (arg2tmp == 0)
- SET_STATUS_Failure( VKI_EINVAL );
- else
- ARG2 = arg2tmp;
-}
-
-POST(wrap_sys_shmat)
-{
- ML_(generic_POST_sys_shmat)(tid, RES,ARG1,ARG2,ARG3);
-}
-
-PRE(sys_shmdt)
-{
- PRINT("sys_shmdt ( %#lx )",ARG1);
- PRE_REG_READ1(long, "shmdt", const void *, shmaddr);
- if (!ML_(generic_PRE_sys_shmdt)(tid, ARG1))
- SET_STATUS_Failure( VKI_EINVAL );
-}
-
-POST(sys_shmdt)
-{
- ML_(generic_POST_sys_shmdt)(tid, RES,ARG1);
-}
-
-PRE(sys_shmctl)
-{
- PRINT("sys_shmctl ( %ld, %ld, %#lx )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "shmctl",
- int, shmid, int, cmd, struct shmid_ds *, buf);
- ML_(generic_PRE_sys_shmctl)(tid, ARG1,ARG2,ARG3);
-}
-
-POST(sys_shmctl)
-{
- ML_(generic_POST_sys_shmctl)(tid, RES,ARG1,ARG2,ARG3);
-}
-
-PRE(sys_shutdown)
-{
- *flags |= SfMayBlock;
- PRINT("sys_shutdown ( %ld, %ld )",ARG1,ARG2);
- PRE_REG_READ2(int, "shutdown", int, s, int, how);
-}
-
-PRE(sys_bind)
-{
- PRINT("sys_bind ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "bind",
- int, sockfd, struct sockaddr *, my_addr, int, addrlen);
- ML_(generic_PRE_sys_bind)(tid, ARG1,ARG2,ARG3);
-}
-
-PRE(sys_listen)
-{
- PRINT("sys_listen ( %ld, %ld )",ARG1,ARG2);
- PRE_REG_READ2(long, "listen", int, s, int, backlog);
-}
-
-PRE(sys_getsockname)
-{
- PRINT("sys_getsockname ( %ld, %#lx, %#lx )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "getsockname",
- int, s, struct sockaddr *, name, int *, namelen);
- ML_(generic_PRE_sys_getsockname)(tid, ARG1,ARG2,ARG3);
-}
-POST(sys_getsockname)
-{
- vg_assert(SUCCESS);
- ML_(generic_POST_sys_getsockname)(tid, VG_(mk_SysRes_Success)(RES),
- ARG1,ARG2,ARG3);
-}
-
-PRE(sys_getpeername)
-{
- PRINT("sys_getpeername ( %ld, %#lx, %#lx )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "getpeername",
- int, s, struct sockaddr *, name, int *, namelen);
- ML_(generic_PRE_sys_getpeername)(tid, ARG1,ARG2,ARG3);
-}
-POST(sys_getpeername)
-{
- vg_assert(SUCCESS);
- ML_(generic_POST_sys_getpeername)(tid, VG_(mk_SysRes_Success)(RES),
- ARG1,ARG2,ARG3);
-}
-
-PRE(sys_socketpair)
-{
- PRINT("sys_socketpair ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "socketpair",
- int, d, int, type, int, protocol, int*, sv);
- ML_(generic_PRE_sys_socketpair)(tid, ARG1,ARG2,ARG3,ARG4);
-}
-POST(sys_socketpair)
-{
- vg_assert(SUCCESS);
- ML_(generic_POST_sys_socketpair)(tid, VG_(mk_SysRes_Success)(RES),
- ARG1,ARG2,ARG3,ARG4);
-}
-
-PRE(sys_send)
-{
- *flags |= SfMayBlock;
- PRINT("sys_send ( %ld, %#lx, %ld, %lu )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "send",
- int, s, const void *, msg, int, len,
- unsigned int, flags);
-
- ML_(generic_PRE_sys_send)( tid, ARG1, ARG2, ARG3 );
-}
-
-PRE(sys_recv)
-{
- *flags |= SfMayBlock;
- PRINT("sys_recv ( %ld, %#lx, %ld, %lu )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "recv",
- int, s, void *, buf, int, len, unsigned int, flags);
- ML_(generic_PRE_sys_recv)( tid, ARG1, ARG2, ARG3 );
-}
-
-POST(sys_recv)
-{
- ML_(generic_POST_sys_recv)( tid, RES, ARG1, ARG2, ARG3 );
-}
-
PRE(sys_mmap2)
{
SysRes r;
@@ -1532,31 +1117,31 @@
LINXY(__NR_mq_getsetattr, sys_mq_getsetattr), // (mq_open+5)
LINXY(__NR_waitid, sys_waitid), // 280
- PLAXY(__NR_socket, sys_socket), // 281
- PLAX_(__NR_bind, sys_bind), // 282
- PLAX_(__NR_connect, sys_connect), // 283
- PLAX_(__NR_listen, sys_listen), // 284
- PLAXY(__NR_accept, sys_accept), // 285
- PLAXY(__NR_getsockname, sys_getsockname), // 286
- PLAXY(__NR_getpeername, sys_getpeername), // 287
- PLAXY(__NR_socketpair, sys_socketpair), // 288
- PLAX_(__NR_send, sys_send),
- PLAX_(__NR_sendto, sys_sendto), // 290
- PLAXY(__NR_recv, sys_recv),
- PLAXY(__NR_recvfrom, sys_recvfrom), // 292
- PLAX_(__NR_shutdown, sys_shutdown), // 293
- PLAX_(__NR_setsockopt, sys_setsockopt), // 294
- PLAXY(__NR_getsockopt, sys_getsockopt), // 295
- PLAX_(__NR_sendmsg, sys_sendmsg), // 296
- PLAXY(__NR_recvmsg, sys_recvmsg), // 297
- PLAX_(__NR_semop, sys_semop), // 298
- PLAX_(__NR_semget, sys_semget), // 299
- PLAXY(__NR_semctl, sys_semctl), // 300
- PLAX_(__NR_msgget, sys_msgget),
- PLAX_(__NR_msgsnd, sys_msgsnd),
- PLAXY(__NR_msgrcv, sys_msgrcv),
- PLAXY(__NR_msgctl, sys_msgctl), // 304
- PLAX_(__NR_semtimedop, sys_semtimedop), // 312
+ LINXY(__NR_socket, sys_socket), // 281
+ LINX_(__NR_bind, sys_bind), // 282
+ LINX_(__NR_connect, sys_connect), // 283
+ LINX_(__NR_listen, sys_listen), // 284
+ LINXY(__NR_accept, sys_accept), // 285
+ LINXY(__NR_getsockname, sys_getsockname), // 286
+ LINXY(__NR_getpeername, sys_getpeername), // 287
+ LINXY(__NR_socketpair, sys_socketpair), // 288
+ LINX_(__NR_send, sys_send),
+ LINX_(__NR_sendto, sys_sendto), // 290
+ LINXY(__NR_recv, sys_recv),
+ LINXY(__NR_recvfrom, sys_recvfrom), // 292
+ LINX_(__NR_shutdown, sys_shutdown), // 293
+ LINX_(__NR_setsockopt, sys_setsockopt), // 294
+ LINXY(__NR_getsockopt, sys_getsockopt), // 295
+ LINX_(__NR_sendmsg, sys_sendmsg), // 296
+ LINXY(__NR_recvmsg, sys_recvmsg), // 297
+ LINX_(__NR_semop, sys_semop), // 298
+ LINX_(__NR_semget, sys_semget), // 299
+ LINXY(__NR_semctl, sys_semctl), // 300
+ LINX_(__NR_msgget, sys_msgget),
+ LINX_(__NR_msgsnd, sys_msgsnd),
+ LINXY(__NR_msgrcv, sys_msgrcv),
+ LINXY(__NR_msgctl, sys_msgctl), // 304
+ LINX_(__NR_semtimedop, sys_semtimedop), // 312
LINX_(__NR_add_key, sys_add_key), // 286
LINX_(__NR_request_key, sys_request_key), // 287
@@ -1584,10 +1169,10 @@
LINX_(__NR_readlinkat, sys_readlinkat), //
LINX_(__NR_fchmodat, sys_fchmodat), //
LINX_(__NR_faccessat, sys_faccessat), //
- PLAXY(__NR_shmat, wrap_sys_shmat), //305
- PLAXY(__NR_shmdt, sys_shmdt), //306
- PLAX_(__NR_shmget, sys_shmget), //307
- PLAXY(__NR_shmctl, sys_shmctl), // 308
+ LINXY(__NR_shmat, wrap_sys_shmat), //305
+ LINXY(__NR_shmdt, sys_shmdt), //306
+ LINX_(__NR_shmget, sys_shmget), //307
+ LINXY(__NR_shmctl, sys_shmctl), // 308
// LINX_(__NR_pselect6, sys_pselect6), //
// LINX_(__NR_unshare, sys_unshare), // 310
@@ -1636,7 +1221,7 @@
LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo),// 363
LINXY(__NR_perf_event_open, sys_perf_event_open), // 364
- PLAXY(__NR_accept4, sys_accept4) // 366
+ LINXY(__NR_accept4, sys_accept4) // 366
};
Modified: trunk/coregrind/m_syswrap/syswrap-amd64-linux.c (+28 -398)
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2013-03-01 23:05:43 +00:00 (rev 13301)
+++ trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2013-03-01 23:31:09 +00:00 (rev 13302)
@@ -358,35 +358,6 @@
magic. */
DECL_TEMPLATE(amd64_linux, sys_clone);
DECL_TEMPLATE(amd64_linux, sys_rt_sigreturn);
-DECL_TEMPLATE(amd64_linux, sys_socket);
-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);
-DECL_TEMPLATE(amd64_linux, sys_recvmsg);
-DECL_TEMPLATE(amd64_linux, sys_shutdown);
-DECL_TEMPLATE(amd64_linux, sys_bind);
-DECL_TEMPLATE(amd64_linux, sys_listen);
-DECL_TEMPLATE(amd64_linux, sys_getsockname);
-DECL_TEMPLATE(amd64_linux, sys_getpeername);
-DECL_TEMPLATE(amd64_linux, sys_socketpair);
-DECL_TEMPLATE(amd64_linux, sys_semget);
-DECL_TEMPLATE(amd64_linux, sys_semop);
-DECL_TEMPLATE(amd64_linux, sys_semtimedop);
-DECL_TEMPLATE(amd64_linux, sys_semctl);
-DECL_TEMPLATE(amd64_linux, sys_msgget);
-DECL_TEMPLATE(amd64_linux, sys_msgrcv);
-DECL_TEMPLATE(amd64_linux, sys_msgsnd);
-DECL_TEMPLATE(amd64_linux, sys_msgctl);
-DECL_TEMPLATE(amd64_linux, sys_shmget);
-DECL_TEMPLATE(amd64_linux, wrap_sys_shmat);
-DECL_TEMPLATE(amd64_linux, sys_shmdt);
-DECL_TEMPLATE(amd64_linux, sys_shmdt);
-DECL_TEMPLATE(amd64_linux, sys_shmctl);
DECL_TEMPLATE(amd64_linux, sys_arch_prctl);
DECL_TEMPLATE(amd64_linux, sys_ptrace);
DECL_TEMPLATE(amd64_linux, sys_fadvise64);
@@ -659,347 +630,6 @@
}
}
-PRE(sys_socket)
-{
- PRINT("sys_socket ( %ld, %ld, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "socket", int, domain, int, type, int, protocol);
-}
-POST(sys_socket)
-{
- SysRes r;
- vg_assert(SUCCESS);
- r = ML_(generic_POST_sys_socket)(tid, VG_(mk_SysRes_Success)(RES));
- SET_STATUS_from_SysRes(r);
-}
-
-PRE(sys_setsockopt)
-{
- PRINT("sys_setsockopt ( %ld, %ld, %ld, %#lx, %ld )",ARG1,ARG2,ARG3,ARG4,ARG5);
- PRE_REG_READ5(long, "setsockopt",
- int, s, int, level, int, optname,
- const void *, optval, int, optlen);
- ML_(generic_PRE_sys_setsockopt)(tid, ARG1,ARG2,ARG3,ARG4,ARG5);
-}
-
-PRE(sys_getsockopt)
-{
- PRINT("sys_getsockopt ( %ld, %ld, %ld, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5);
- PRE_REG_READ5(long, "getsockopt",
- int, s, int, level, int, optname,
- void *, optval, int, *optlen);
- ML_(linux_PRE_sys_getsockopt)(tid, ARG1,ARG2,ARG3,ARG4,ARG5);
-}
-POST(sys_getsockopt)
-{
- vg_assert(SUCCESS);
- ML_(linux_POST_sys_getsockopt)(tid, VG_(mk_SysRes_Success)(RES),
- ARG1,ARG2,ARG3,ARG4,ARG5);
-}
-
-PRE(sys_connect)
-{
- *flags |= SfMayBlock;
- PRINT("sys_connect ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "connect",
- int, sockfd, struct sockaddr *, serv_addr, int, addrlen);
- ML_(generic_PRE_sys_connect)(tid, ARG1,ARG2,ARG3);
-}
-
-PRE(sys_accept)
-{
- *flags |= SfMayBlock;
- PRINT("sys_accept ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "accept",
- int, s, struct sockaddr *, addr, int, *addrlen);
- ML_(generic_PRE_sys_accept)(tid, ARG1,ARG2,ARG3);
-}
-POST(sys_accept)
-{
- 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_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;
- PRINT("sys_sendto ( %ld, %#lx, %ld, %lu, %#lx, %ld )",ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
- PRE_REG_READ6(long, "sendto",
- int, s, const void *, msg, int, len,
- unsigned int, flags,
- const struct sockaddr *, to, int, tolen);
- ML_(generic_PRE_sys_sendto)(tid, ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
-}
-
-PRE(sys_recvfrom)
-{
- *flags |= SfMayBlock;
- PRINT("sys_recvfrom ( %ld, %#lx, %ld, %lu, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
- PRE_REG_READ6(long, "recvfrom",
- int, s, void *, buf, int, len, unsigned int, flags,
- struct sockaddr *, from, int *, fromlen);
- ML_(generic_PRE_sys_recvfrom)(tid, ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
-}
-POST(sys_recvfrom)
-{
- vg_assert(SUCCESS);
- ML_(generic_POST_sys_recvfrom)(tid, VG_(mk_SysRes_Success)(RES),
- ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
-}
-
-PRE(sys_sendmsg)
-{
- *flags |= SfMayBlock;
- PRINT("sys_sendmsg ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "sendmsg",
- int, s, const struct msghdr *, msg, int, flags);
- ML_(generic_PRE_sys_sendmsg)(tid, "msg", (struct vki_msghdr *)ARG2);
-}
-
-PRE(sys_recvmsg)
-{
- *flags |= SfMayBlock;
- PRINT("sys_recvmsg ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "recvmsg", int, s, struct msghdr *, msg, int, flags);
- ML_(generic_PRE_sys_recvmsg)(tid, "msg", (struct vki_msghdr *)ARG2);
-}
-POST(sys_recvmsg)
-{
- ML_(generic_POST_sys_recvmsg)(tid, "msg", (struct vki_msghdr *)ARG2, RES);
-}
-
-PRE(sys_shutdown)
-{
- *flags |= SfMayBlock;
- PRINT("sys_shutdown ( %ld, %ld )",ARG1,ARG2);
- PRE_REG_READ2(int, "shutdown", int, s, int, how);
-}
-
-PRE(sys_bind)
-{
- PRINT("sys_bind ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "bind",
- int, sockfd, struct sockaddr *, my_addr, int, addrlen);
- ML_(generic_PRE_sys_bind)(tid, ARG1,ARG2,ARG3);
-}
-
-PRE(sys_listen)
-{
- PRINT("sys_listen ( %ld, %ld )",ARG1,ARG2);
- PRE_REG_READ2(long, "listen", int, s, int, backlog);
-}
-
-PRE(sys_getsockname)
-{
- PRINT("sys_getsockname ( %ld, %#lx, %#lx )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "getsockname",
- int, s, struct sockaddr *, name, int *, namelen);
- ML_(generic_PRE_sys_getsockname)(tid, ARG1,ARG2,ARG3);
-}
-POST(sys_getsockname)
-{
- vg_assert(SUCCESS);
- ML_(generic_POST_sys_getsockname)(tid, VG_(mk_SysRes_Success)(RES),
- ARG1,ARG2,ARG3);
-}
-
-PRE(sys_getpeername)
-{
- PRINT("sys_getpeername ( %ld, %#lx, %#lx )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "getpeername",
- int, s, struct sockaddr *, name, int *, namelen);
- ML_(generic_PRE_sys_getpeername)(tid, ARG1,ARG2,ARG3);
-}
-POST(sys_getpeername)
-{
- vg_assert(SUCCESS);
- ML_(generic_POST_sys_getpeername)(tid, VG_(mk_SysRes_Success)(RES),
- ARG1,ARG2,ARG3);
-}
-
-PRE(sys_socketpair)
-{
- PRINT("sys_socketpair ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "socketpair",
- int, d, int, type, int, protocol, int*, sv);
- ML_(generic_PRE_sys_socketpair)(tid, ARG1,ARG2,ARG3,ARG4);
-}
-POST(sys_socketpair)
-{
- vg_assert(SUCCESS);
- ML_(generic_POST_sys_socketpair)(tid, VG_(mk_SysRes_Success)(RES),
- ARG1,ARG2,ARG3,ARG4);
-}
-
-PRE(sys_semget)
-{
- PRINT("sys_semget ( %ld, %ld, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "semget", vki_key_t, key, int, nsems, int, semflg);
-}
-
-PRE(sys_semop)
-{
- *flags |= SfMayBlock;
- PRINT("sys_semop ( %ld, %#lx, %lu )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "semop",
- int, semid, struct sembuf *, sops, unsigned, nsoops);
- ML_(generic_PRE_sys_semop)(tid, ARG1,ARG2,ARG3);
-}
-
-PRE(sys_semtimedop)
-{
- *flags |= SfMayBlock;
- PRINT("sys_semtimedop ( %ld, %#lx, %lu, %#lx )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "semtimedop",
- int, semid, struct sembuf *, sops, unsigned, nsoops,
- struct timespec *, timeout);
- ML_(generic_PRE_sys_semtimedop)(tid, ARG1,ARG2,ARG3,ARG4);
-}
-
-PRE(sys_semctl)
-{
- switch (ARG3 & ~VKI_IPC_64) {
- case VKI_IPC_INFO:
- case VKI_SEM_INFO:
- PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "semctl",
- int, semid, int, semnum, int, cmd, struct seminfo *, arg);
- break;
- case VKI_IPC_STAT:
- case VKI_SEM_STAT:
- case VKI_IPC_SET:
- PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "semctl",
- int, semid, int, semnum, int, cmd, struct semid_ds *, arg);
- break;
- case VKI_GETALL:
- case VKI_SETALL:
- PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "semctl",
- int, semid, int, semnum, int, cmd, unsigned short *, arg);
- break;
- default:
- PRINT("sys_semctl ( %ld, %ld, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "semctl",
- int, semid, int, semnum, int, cmd);
- break;
- }
- ML_(generic_PRE_sys_semctl)(tid, ARG1,ARG2,ARG3|VKI_IPC_64,ARG4);
-}
-POST(sys_semctl)
-{
- ML_(generic_POST_sys_semctl)(tid, RES,ARG1,ARG2,ARG3|VKI_IPC_64,ARG4);
-}
-
-PRE(sys_msgget)
-{
- PRINT("sys_msgget ( %ld, %ld )",ARG1,ARG2);
- PRE_REG_READ2(long, "msgget", vki_key_t, key, int, msgflg);
-}
-
-PRE(sys_msgsnd)
-{
- PRINT("sys_msgsnd ( %ld, %#lx, %ld, %ld )",ARG1,ARG2,ARG3,ARG4);
- PRE_REG_READ4(long, "msgsnd",
- int, msqid, struct msgbuf *, msgp, vki_size_t, msgsz, int, msgflg);
- ML_(linux_PRE_sys_msgsnd)(tid, ARG1,ARG2,ARG3,ARG4);
- if ((ARG4 & VKI_IPC_NOWAIT) == 0)
- *flags |= SfMayBlock;
-}
-
-PRE(sys_msgrcv)
-{
- PRINT("sys_msgrcv ( %ld, %#lx, %ld, %ld, %ld )",ARG1,ARG2,ARG3,ARG4,ARG5);
- PRE_REG_READ5(long, "msgrcv",
- int, msqid, struct msgbuf *, msgp, vki_size_t, msgsz,
- long, msgytp, int, msgflg);
- ML_(linux_PRE_sys_msgrcv)(tid, ARG1,ARG2,ARG3,ARG4,ARG5);
- if ((ARG5 & VKI_IPC_NOWAIT) == 0)
- *flags |= SfMayBlock;
-}
-POST(sys_msgrcv)
-{
- ML_(linux_POST_sys_msgrcv)(tid, RES,ARG1,ARG2,ARG3,ARG4,ARG5);
-}
-
-PRE(sys_msgctl)
-{
- PRINT("sys_msgctl ( %ld, %ld, %#lx )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "msgctl",
- int, msqid, int, cmd, struct msqid_ds *, buf);
- ML_(linux_PRE_sys_msgctl)(tid, ARG1,ARG2,ARG3);
-}
-POST(sys_msgctl)
-{
- ML_(linux_POST_sys_msgctl)(tid, RES,ARG1,ARG2,ARG3);
-}
-
-PRE(sys_shmget)
-{
- PRINT("sys_shmget ( %ld, %ld, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "shmget", vki_key_t, key, vki_size_t, size, int, shmflg);
-}
-
-PRE(wrap_sys_shmat)
-{
- UWord arg2tmp;
- PRINT("wrap_sys_shmat ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "shmat",
- int, shmid, const void *, shmaddr, int, shmflg);
- arg2tmp = ML_(generic_PRE_sys_shmat)(tid, ARG1,ARG2,ARG3);
- if (arg2tmp == 0)
- SET_STATUS_Failure( VKI_EINVAL );
- else
- ARG2 = arg2tmp; // used in POST
-}
-POST(wrap_sys_shmat)
-{
- ML_(generic_POST_sys_shmat)(tid, RES,ARG1,ARG2,ARG3);
-}
-
-PRE(sys_shmdt)
-{
- PRINT("sys_shmdt ( %#lx )",ARG1);
- PRE_REG_READ1(long, "shmdt", const void *, shmaddr);
- if (!ML_(generic_PRE_sys_shmdt)(tid, ARG1))
- SET_STATUS_Failure( VKI_EINVAL );
-}
-POST(sys_shmdt)
-{
- ML_(generic_POST_sys_shmdt)(tid, RES,ARG1);
-}
-
-PRE(sys_shmctl)
-{
- PRINT("sys_shmctl ( %ld, %ld, %#lx )",ARG1,ARG2,ARG3);
- PRE_REG_READ3(long, "shmctl",
- int, shmid, int, cmd, struct shmid_ds *, buf);
- ML_(generic_PRE_sys_shmctl)(tid, ARG1,ARG2|VKI_IPC_64,ARG3);
-}
-POST(sys_shmctl)
-{
- ML_(generic_POST_sys_shmctl)(tid, RES,ARG1,ARG2|VKI_IPC_64,ARG3);
-}
-
PRE(sys_fadvise64)
{
PRINT("sys_fadvise64 ( %ld, %ld, %lu, %ld )", ARG1,ARG2,ARG3,ARG4);
@@ -1112,10 +742,10 @@
GENX_(__NR_msync, sys_msync), // 26
GENXY(__NR_mincore, sys_mincore), // 27
GENX_(__NR_madvise, sys_madvise), // 28
- PLAX_(__NR_shmget, sys_shmget), // 29
+ LINX_(__NR_shmget, sys_shmget), // 29
- PLAXY(__NR_shmat, wrap_sys_shmat), // 30
- PLAXY(__NR_shmctl, sys_shmctl), // 31
+ LINXY(__NR_shmat, wrap_sys_shmat), // 30
+ LINXY(__NR_shmctl, sys_shmctl), // 31
GENXY(__NR_dup, sys_dup), // 32
GENXY(__NR_dup2, sys_dup2), // 33
GENX_(__NR_pause, sys_pause), // 34
@@ -1127,24 +757,24 @@
GENX_(__NR_getpid, sys_getpid), // 39
LINXY(__NR_sendfile, sys_sendfile), // 40
- PLAXY(__NR_socket, sys_socket), // 41
- PLAX_(__NR_connect, sys_connect), // 42
- PLAXY(__NR_accept, sys_accept), // 43
- PLAX_(__NR_sendto, sys_sendto), // 44
+ LINXY(__NR_socket, sys_socket), // 41
+ LINX_(__NR_connect, sys_connect), // 42
+ LINXY(__NR_accept, sys_accept), // 43
+ LINX_(__NR_sendto, sys_sendto), // 44
- PLAXY(__NR_recvfrom, sys_recvfrom), // 45
- PLAX_(__NR_sendmsg, sys_sendmsg), // 46
- PLAXY(__NR_recvmsg, sys_recvmsg), // 47
- PLAX_(__NR_shutdown, sys_shutdown), // 48
- PLAX_(__NR_bind, sys_bind), // 49
+ LINXY(__NR_recvfrom, sys_recvfrom), // 45
+ LINX_(__NR_sendmsg, sys_sendmsg), // 46
+ LINXY(__NR_recvmsg, sys_recvmsg), // 47
+ LINX_(__NR_shutdown, sys_shutdown), // 48
+ LINX_(__NR_bind, sys_bind), // 49
- PLAX_(__NR_listen, sys_listen), // 50
- PLAXY(__NR_getsockname, sys_getsockname), // 51
- PLAXY(__NR_getpeername, sys_getpeername), // 52
- PLAXY(__NR_socketpair, sys_socketpair), // 53
- PLAX_(__NR_setsockopt, sys_setsockopt), // 54
+ LINX_(__NR_listen, sys_listen), // 50
+ LINXY(__NR_getsockname, sys_getsockname), // 51
+ LINXY(__NR_getpeername, sys_getpeername), // 52
+ LINXY(__NR_socketpair, sys_socketpair), // 53
+ LINX_(__NR_setsockopt, sys_setsockopt), // 54
- PLAXY(__NR_getsockopt, sys_getsockopt), // 55
+ LINXY(__NR_getsockopt, sys_getsockopt), // 55
PLAX_(__NR_clone, sys_clone), // 56
GENX_(__NR_fork, sys_fork), // 57
GENX_(__NR_vfork, sys_fork), // 58 treat as fork
@@ -1154,16 +784,16 @@
GENXY(__NR_wait4, sys_wait4), // 61
GENX_(__NR_kill, sys_kill), // 62
GENXY(__NR_uname, sys_newuname), // 63
- PLAX_(__NR_semget, sys_semget), // 64
+ LINX_(__NR_semget, sys_semget), // 64
- PLAX_(__NR_semop, sys_semop), // 65
- PLAXY(__NR_semctl, sys_semctl), // 66
- PLAXY(__NR_shmdt, sys_shmdt), // 67
- PLAX_(__NR_msgget, sys_msgget), // 68
- PLAX_(__NR_msgsnd, sys_msgsnd), // 69
+ LINX_(__NR_semop, sys_semop), // 65
+ LINXY(__NR_semctl, sys_semctl), // 66
+ LINXY(__NR_shmdt, sys_shmdt), // 67
+ LINX_(__NR_msgget, sys_msgget), // 68
+ LINX_(__NR_msgsnd, sys_msgsnd), // 69
- PLAXY(__NR_msgrcv, sys_msgrcv), // 70
- PLAXY(__NR_msgctl, sys_msgctl), // 71
+ LINXY(__NR_msgrcv, sys_msgrcv), // 70
+ LINXY(__NR_msgctl, sys_msgctl), // 71
LINXY(__NR_fcntl, sys_fcntl), // 72
GENX_(__NR_flock, sys_flock), // 73
GENX_(__NR_fsync, sys_fsync), // 74
@@ -1342,7 +972,7 @@
LINX_(__NR_set_tid_address, sys_set_tid_address),// 218
// (__NR_restart_syscall, sys_restart_syscall),// 219
- PLAX_(__NR_semtimedop, sys_semtimedop), // 220
+ LINX_(__NR_semtimedop, sys_semtimedop), // 220
PLAX_(__NR_fadvise64, sys_fadvise64), // 221
LINXY(__NR_timer_create, sys_timer_create), // 222
LINXY(__NR_timer_settime, sys_timer_settime), // 223
@@ -1423,7 +1053,7 @@
LINX_(__NR_fallocate, sys_fallocate), // 285
LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 286
LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 287
- PLAXY(__NR_accept4, sys_accept4), // 288
+ LINXY(__NR_accept4, sys_accept4), // 288
LINXY(__NR_signalfd4, sys_signalfd4), // 289
LINX_(__NR_eventfd2, sys_eventfd2), // 290
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c (+397 -0)
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c 2013-03-01 23:05:43 +00:00 (rev 13301)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c 2013-03-01 23:31:09 +00:00 (rev 13302)
@@ -3502,6 +3502,186 @@
}
#endif
+PRE(sys_semget)
+{
+ PRINT("sys_semget ( %ld, %ld, %ld )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "semget", vki_key_t, key, int, nsems, int, semflg);
+}
+
+PRE(sys_semop)
+{
+ *flags |= SfMayBlock;
+ PRINT("sys_semop ( %ld, %#lx, %lu )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "semop",
+ int, semid, struct sembuf *, sops, unsigned, nsoops);
+ ML_(generic_PRE_sys_semop)(tid, ARG1,ARG2,ARG3);
+}
+
+PRE(sys_semctl)
+{
+ switch (ARG3 & ~VKI_IPC_64) {
+ case VKI_IPC_INFO:
+ case VKI_SEM_INFO:
+ PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4);
+ PRE_REG_READ4(long, "semctl",
+ int, semid, int, semnum, int, cmd, struct seminfo *, arg);
+ break;
+ case VKI_IPC_STAT:
+ case VKI_SEM_STAT:
+ case VKI_IPC_SET:
+ PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4);
+ PRE_REG_READ4(long, "semctl",
+ int, semid, int, semnum, int, cmd, struct semid_ds *, arg);
+ break;
+ case VKI_GETALL:
+ case VKI_SETALL:
+ PRINT("sys_semctl ( %ld, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4);
+ PRE_REG_READ4(long, "semctl",
+ int, semid, int, semnum, int, cmd, unsigned short *, arg);
+ break;
+ default:
+ PRINT("sys_semctl ( %ld, %ld, %ld )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "semctl",
+ int, semid, int, semnum, int, cmd);
+ break;
+ }
+#ifdef VGP_amd64_linux
+ ML_(generic_PRE_sys_semctl)(tid, ARG1,ARG2,ARG3|VKI_IPC_64,ARG4);
+#else
+ ML_(generic_PRE_sys_semctl)(tid, ARG1,ARG2,ARG3,ARG4);
+#endif
+}
+
+POST(sys_semctl)
+{
+#ifdef VGP_amd64_linux
+ ML_(generic_POST_sys_semctl)(tid, RES,ARG1,ARG2,ARG3|VKI_IPC_64,ARG4);
+#else
+ ML_(generic_POST_sys_semctl)(tid, RES,ARG1,ARG2,ARG3,ARG4);
+#endif
+}
+
+PRE(sys_semtimedop)
+{
+ *flags |= SfMayBlock;
+ PRINT("sys_semtimedop ( %ld, %#lx, %lu, %#lx )",ARG1,ARG2,ARG3,ARG4);
+ PRE_REG_READ4(long, "semtimedop",
+ int, semid, struct sembuf *, sops, unsigned, nsoops,
+ struct timespec *, timeout);
+ ML_(generic_PRE_sys_semtimedop)(tid, ARG1,ARG2,ARG3,ARG4);
+}
+
+PRE(sys_msgget)
+{
+ PRINT("sys_msgget ( %ld, %ld )",ARG1,ARG2);
+ PRE_REG_READ2(long, "msgget", vki_key_t, key, int, msgflg);
+}
+
+PRE(sys_msgsnd)
+{
+ PRINT("sys_msgsnd ( %ld, %#lx, %ld, %ld )",ARG1,ARG2,ARG3,ARG4);
+ PRE_REG_READ4(long, "msgsnd",
+ int, msqid, struct msgbuf *, msgp, vki_size_t, msgsz, int, msgflg);
+ ML_(linux_PRE_sys_msgsnd)(tid, ARG1,ARG2,ARG3,ARG4);
+ if ((ARG4 & VKI_IPC_NOWAIT) == 0)
+ *flags |= SfMayBlock;
+}
+
+PRE(sys_msgrcv)
+{
+ PRINT("sys_msgrcv ( %ld, %#lx, %ld, %ld, %ld )",ARG1,ARG2,ARG3,ARG4,ARG5);
+ PRE_REG_READ5(long, "msgrcv",
+ int, msqid, struct msgbuf *, msgp, vki_size_t, msgsz,
+ long, msgytp, int, msgflg);
+ ML_(linux_PRE_sys_msgrcv)(tid, ARG1,ARG2,ARG3,ARG4,ARG5);
+ if ((ARG5 & VKI_IPC_NOWAIT) == 0)
+ *flags |= SfMayBlock;
+}
+POST(sys_msgrcv)
+{
+ ML_(linux_POST_sys_msgrcv)(tid, RES,ARG1,ARG2,ARG3,ARG4,ARG5);
+}
+
+PRE(sys_msgctl)
+{
+ PRINT("sys_msgctl ( %ld, %ld, %#lx )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "msgctl",
+ int, msqid, int, cmd, struct msqid_ds *, buf);
+ ML_(linux_PRE_sys_msgctl)(tid, ARG1,ARG2,ARG3);
+}
+
+POST(sys_msgctl)
+{
+ ML_(linux_POST_sys_msgctl)(tid, RES,ARG1,ARG2,ARG3);
+}
+
+PRE(sys_shmget)
+{
+ PRINT("sys_shmget ( %ld, %ld, %ld )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "shmget", vki_key_t, key, vki_size_t, size, int, shmflg);
+}
+
+PRE(wrap_sys_shmat)
+{
+ UWord arg2tmp;
+ PRINT("wrap_sys_shmat ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "shmat",
+ int, shmid, const void *, shmaddr, int, shmflg);
+#if defined(VGP_arm_linux)
+ /* Round the attach address down to an VKI_SHMLBA boundary if the
+ client requested rounding. See #222545. This is necessary only
+ on arm-linux because VKI_SHMLBA is 4 * VKI_PAGE size; on all
+ other linux targets it is the same as the page size. */
+ if (ARG3 & VKI_SHM_RND)
+ ARG2 = VG_ROUNDDN(ARG2, VKI_SHMLBA);
+#endif
+ arg2tmp = ML_(generic_PRE_sys_shmat)(tid, ARG1,ARG2,ARG3);
+ if (arg2tmp == 0)
+ SET_STATUS_Failure( VKI_EINVAL );
+ else
+ ARG2 = arg2tmp; // used in POST
+}
+
+POST(wrap_sys_shmat)
+{
+ ML_(generic_POST_sys_shmat)(tid, RES,ARG1,ARG2,ARG3);
+}
+
+PRE(sys_shmdt)
+{
+ PRINT("sys_shmdt ( %#lx )",ARG1);
+ PRE_REG_READ1(long, "shmdt", const void *, shmaddr);
+ if (!ML_(generic_PRE_sys_shmdt)(tid, ARG1))
+ SET_STATUS_Failure( VKI_EINVAL );
+}
+
+POST(sys_shmdt)
+{
+ ML_(generic_POST_sys_shmdt)(tid, RES,ARG1);
+}
+
+PRE(sys_shmctl)
+{
+ PRINT("sys_shmctl ( %ld, %ld, %#lx )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "shmctl",
+ int, shmid, int, cmd, struct shmid_ds *, buf);
+#ifdef VGP_amd64_linux
+ ML_(generic_PRE_sys_shmctl)(tid, ARG1,ARG2|VKI_IPC_64,ARG3);
+#else
+ ML_(generic_PRE_sys_shmctl)(tid, ARG1,ARG2,ARG3);
+#endif
+}
+
+POST(sys_shmctl)
+{
+#ifdef VGP_amd64_linux
+ ML_(generic_POST_sys_shmctl)(tid, RES,ARG1,ARG2|VKI_IPC_64,ARG3);
+#else
+ ML_(generic_POST_sys_shmctl)(tid, RES,ARG1,ARG2,ARG3);
+#endif
+}
+
+
/* ---------------------------------------------------------------------
Generic handler for sys_socketcall
Depending on the platform, some socket related syscalls (e.g. socketpair,
@@ -3774,6 +3954,223 @@
}
#endif
+PRE(sys_socket)
+{
+ PRINT("sys_socket ( %ld, %ld, %ld )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "socket", int, domain, int, type, int, protocol);
+}
+POST(sys_socket)
+{
+ SysRes r;
+ vg_assert(SUCCESS);
+ r = ML_(generic_POST_sys_socket)(tid, VG_(mk_SysRes_Success)(RES));
+ SET_STATUS_from_SysRes(r);
+}
+
+PRE(sys_setsockopt)
+{
+ PRINT("sys_setsockopt ( %ld, %ld, %ld, %#lx, %ld )",ARG1,ARG2,ARG3,ARG4,ARG5);
+ PRE_REG_READ5(long, "setsockopt",
+ int, s, int, level, int, optname,
+ const void *, optval, int, optlen);
+ ML_(generic_PRE_sys_setsockopt)(tid, ARG1,ARG2,ARG3,ARG4,ARG5);
+}
+
+PRE(sys_getsockopt)
+{
+ PRINT("sys_getsockopt ( %ld, %ld, %ld, %#lx, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5);
+ PRE_REG_READ5(long, "getsockopt",
+ int, s, int, level, int, optname,
+ void *, optval, int, *optlen);
+ ML_(linux_PRE_sys_getsockopt)(tid, ARG1,ARG2,ARG3,ARG4,ARG5);
+}
+POST(sys_getsockopt)
+{
+ vg_assert(SUCCESS);
+ ML_(linux_POST_sys_getsockopt)(tid, VG_(mk_SysRes_Success)(RES),
+ ARG1,ARG2,ARG3,ARG4,ARG5);
+}
+
+PRE(sys_connect)
+{
+ *flags |= SfMayBlock;
+ PRINT("sys_connect ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "connect",
+ int, sockfd, struct sockaddr *, serv_addr, int, addrlen);
+ ML_(generic_PRE_sys_connect)(tid, ARG1,ARG2,ARG3);
+}
+
+PRE(sys_accept)
+{
+ *flags |= SfMayBlock;
+ PRINT("sys_accept ( %ld, %#lx, %ld )",ARG1,ARG2,ARG3);
+ PRE_REG_READ3(long, "accept",
+ int, s, struct sockaddr *, addr, int, *addrlen);
+ ML_(generic_PRE_sys_accept)(tid, ARG1,ARG2,ARG3);
+}
+POST(sys_accept)
+{
+ 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_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...
[truncated message content] |