Do not use SYS_ipc and SYS_socketcall

* linux/dummy.h (sys_ipc, sys_socketcall): Remove redirections to
printargs.
* linux/ia64/syscallent.h: Likewise.
* linux/i386/syscallent.h: Remove native_scno initialization for "ipc"
and "socketcall".
* linux/syscall.h (sys_ipc, sys_socketcall): New prototypes.
(SYS_ipc, SYS_socketcall): Remove no longer used constants.
[IA64]: Remove undefining of ipc and socket SYS_* constants.
[SPARC || SPARC64]: Remove unused ipc SYS_* constants.
* ipc.c (sys_ipc): New function.
* sock.c (sys_socketcall): Likewise.
* syscall.c (trace_syscall_entering): Use sys_func to check for ipc and
socket subcalls.
This commit is contained in:
Дмитрий Левин 2012-02-20 17:02:38 +00:00
parent 9aa25abb2e
commit b5e88d43a8
7 changed files with 35 additions and 87 deletions

6
ipc.c
View File

@ -560,3 +560,9 @@ sys_mq_getsetattr(struct tcb *tcp)
return 0;
}
#endif
int
sys_ipc(struct tcb *tcp)
{
return printargs(tcp);
}

View File

@ -114,10 +114,6 @@
#define sys_timer_getoverrun printargs
#define sys_vhangup printargs
/* subcall entry points */
#define sys_socketcall printargs
#define sys_ipc printargs
/* unimplemented */
#define sys_afs_syscall printargs
#define sys_break printargs

View File

@ -130,7 +130,7 @@
{ 2, TF, sys_statfs, "statfs" }, /* 99 */
{ 2, TD, sys_fstatfs, "fstatfs" }, /* 100 */
{ 3, 0, sys_ioperm, "ioperm" }, /* 101 */
{ 2, TD, sys_socketcall, "socketcall", SYS_socketcall }, /* 102 */
{ 2, TD, sys_socketcall, "socketcall" }, /* 102 */
{ 3, 0, sys_syslog, "syslog" }, /* 103 */
{ 3, 0, sys_setitimer, "setitimer" }, /* 104 */
{ 2, 0, sys_getitimer, "getitimer" }, /* 105 */
@ -145,7 +145,7 @@
{ 4, TP, sys_wait4, "wait4", }, /* 114 */
{ 1, TF, sys_swapoff, "swapoff" }, /* 115 */
{ 1, 0, sys_sysinfo, "sysinfo" }, /* 116 */
{ 6, TI, sys_ipc, "ipc", SYS_ipc }, /* 117 */
{ 6, TI, sys_ipc, "ipc", }, /* 117 */
{ 1, TD, sys_fsync, "fsync" }, /* 118 */
{ 0, TS, sys_sigreturn, "sigreturn" }, /* 119 */
{ 5, TP, sys_clone, "clone", SYS_clone }, /* 120 */

View File

@ -80,7 +80,6 @@
#define sys_statfs printargs
#define sys_fstatfs printargs
#define sys_ioperm printargs
#define sys_socketcall printargs
#define sys_setitimer printargs
#define sys_getitimer printargs
#define sys_stat printargs
@ -92,7 +91,6 @@
#define sys_vm86old printargs
#define sys_wait4 printargs
#define sys_sysinfo printargs
#define sys_ipc printargs
#define sys_sigreturn printargs
#define sys_uname printargs
#define sys_modify_ldt printargs
@ -184,7 +182,6 @@
#undef sys_statfs
#undef sys_fstatfs
#undef sys_ioperm
#undef sys_socketcall
#undef sys_setitimer
#undef sys_getitimer
#undef sys_stat
@ -196,7 +193,6 @@
#undef sys_vm86old
#undef sys_wait4
#undef sys_sysinfo
#undef sys_ipc
#undef sys_sigreturn
#undef sys_uname
#undef sys_modify_ldt

View File

@ -122,6 +122,7 @@ int sys_io_getevents();
int sys_io_setup();
int sys_io_submit();
int sys_ioctl();
int sys_ipc();
int sys_kill();
int sys_link();
int sys_linkat();
@ -259,6 +260,7 @@ int sys_sigreturn();
int sys_sigsetmask();
int sys_sigsuspend();
int sys_socket();
int sys_socketcall();
int sys_socketpair();
int sys_splice();
int sys_stat();
@ -315,32 +317,6 @@ int sys_osf_wait4();
#if !defined(ALPHA) && !defined(MIPS) && !defined(HPPA) && \
!defined(__ARM_EABI__)
# ifdef IA64
/*
* IA64 syscall numbers (the only ones available from standard header
* files) are disjoint from IA32 syscall numbers. We need to define
* the IA32 socket call number here.
*/
# define SYS_socketcall 102
# undef SYS_socket
# undef SYS_bind
# undef SYS_connect
# undef SYS_listen
# undef SYS_accept
# undef SYS_getsockname
# undef SYS_getpeername
# undef SYS_socketpair
# undef SYS_send
# undef SYS_recv
# undef SYS_sendto
# undef SYS_recvfrom
# undef SYS_shutdown
# undef SYS_setsockopt
# undef SYS_getsockopt
# undef SYS_sendmsg
# undef SYS_recvmsg
# endif /* IA64 */
# if defined(SPARC) || defined(SPARC64)
# define SYS_socket_subcall 353
# else
@ -352,41 +328,10 @@ int sys_osf_wait4();
#if !defined(ALPHA) && !defined(MIPS) && !defined(HPPA) && \
!defined(__ARM_EABI__)
# ifdef IA64
/*
* IA64 syscall numbers (the only ones available from standard
* header files) are disjoint from IA32 syscall numbers. We need
* to define the IA32 socket call number here. Fortunately, this
* symbol, `SYS_ipc', is not used by any of the IA64 code so
* re-defining this symbol will not cause a problem.
*/
# undef SYS_ipc
# define SYS_ipc 117
# undef SYS_semop
# undef SYS_semget
# undef SYS_semctl
# undef SYS_semtimedop
# undef SYS_msgsnd
# undef SYS_msgrcv
# undef SYS_msgget
# undef SYS_msgctl
# undef SYS_shmat
# undef SYS_shmdt
# undef SYS_shmget
# undef SYS_shmctl
# endif /* IA64 */
#define SYS_ipc_subcall ((SYS_socket_subcall)+(SYS_socket_nsubcalls))
#define SYS_ipc_nsubcalls 25
#endif /* !(ALPHA || MIPS || HPPA) */
#if defined SYS_ipc_subcall && !defined SYS_ipc
# define SYS_ipc SYS_ipc_subcall
#endif
#if defined SYS_socket_subcall && !defined SYS_socketcall
# define SYS_socketcall SYS_socket_subcall
#endif
#ifdef IA64
/*
* IA64 syscall numbers (the only ones available from standard header
@ -434,19 +379,8 @@ int sys_semsys();
int sys_shmsys();
#define SYS_semsys_subcall 200
#define SYS_semsys_nsubcalls 3
#define SYS_semctl (SYS_semsys_subcall + 0)
#define SYS_semget (SYS_semsys_subcall + 1)
#define SYS_semop (SYS_semsys_subcall + 2)
#define SYS_msgsys_subcall 203
#define SYS_msgsys_nsubcalls 4
#define SYS_msgget (SYS_msgsys_subcall + 0)
#define SYS_msgctl (SYS_msgsys_subcall + 1)
#define SYS_msgrcv (SYS_msgsys_subcall + 2)
#define SYS_msgsnd (SYS_msgsys_subcall + 3)
#define SYS_shmsys_subcall 207
#define SYS_shmsys_nsubcalls 4
#define SYS_shmat (SYS_shmsys_subcall + 0)
#define SYS_shmctl (SYS_shmsys_subcall + 1)
#define SYS_shmdt (SYS_shmsys_subcall + 2)
#define SYS_shmget (SYS_shmsys_subcall + 3)
#endif

6
sock.c
View File

@ -291,3 +291,9 @@ sock_ioctl(struct tcb *tcp, long code, long arg)
return 0;
}
}
int
sys_socketcall(struct tcb *tcp)
{
return printargs(tcp);
}

View File

@ -1733,19 +1733,28 @@ trace_syscall_entering(struct tcb *tcp)
goto ret;
}
switch (known_scno(tcp)) {
#if defined(SYS_socket_subcall) || defined(SYS_ipc_subcall)
while (SCNO_IN_RANGE(tcp->scno)) {
#ifdef SYS_socket_subcall
case SYS_socketcall:
decode_subcall(tcp, SYS_socket_subcall,
SYS_socket_nsubcalls, deref_style);
break;
if (sysent[tcp->scno].sys_func == sys_socketcall) {
decode_subcall(tcp, SYS_socket_subcall,
SYS_socket_nsubcalls, deref_style);
break;
}
#endif
#ifdef SYS_ipc_subcall
case SYS_ipc:
decode_subcall(tcp, SYS_ipc_subcall,
SYS_ipc_nsubcalls, shift_style);
break;
if (sysent[tcp->scno].sys_func == sys_ipc) {
decode_subcall(tcp, SYS_ipc_subcall,
SYS_ipc_nsubcalls, shift_style);
break;
}
#endif
break;
}
#endif /* SYS_socket_subcall || SYS_ipc_subcall */
#if defined(SVR4) || defined(FREEBSD) || defined(SUNOS4)
switch (known_scno(tcp)) {
#ifdef SVR4
#ifdef SYS_pgrpsys_subcall
case SYS_pgrpsys:
@ -1820,6 +1829,7 @@ trace_syscall_entering(struct tcb *tcp)
break;
#endif
}
#endif /* SVR4 || FREEBSD || SUNOS4 */
internal_syscall(tcp);