From 8f579dba6158a2f38d4ee76d47aa173c49a1cdb0 Mon Sep 17 00:00:00 2001 From: Julian Seward Date: Thu, 4 Sep 2014 10:17:08 +0000 Subject: [PATCH] Add support for sys_kcmp. Patch from Chris Jones (cjones.bugs@gmail.com). Fixes #338106. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14451 --- coregrind/m_syswrap/priv_syswrap-linux.h | 2 +- coregrind/m_syswrap/syswrap-amd64-linux.c | 3 ++- coregrind/m_syswrap/syswrap-linux.c | 8 ++++++++ coregrind/m_syswrap/syswrap-x86-linux.c | 3 ++- include/vki/vki-scnums-amd64-linux.h | 1 + include/vki/vki-scnums-x86-linux.h | 1 + 6 files changed, 15 insertions(+), 3 deletions(-) diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h index 0bdf660948..40c43a0ed0 100644 --- a/coregrind/m_syswrap/priv_syswrap-linux.h +++ b/coregrind/m_syswrap/priv_syswrap-linux.h @@ -352,7 +352,7 @@ DECL_TEMPLATE(linux, sys_listen); DECL_TEMPLATE(linux, sys_getsockname); DECL_TEMPLATE(linux, sys_getpeername); DECL_TEMPLATE(linux, sys_socketpair); - +DECL_TEMPLATE(linux, sys_kcmp); #endif // __PRIV_SYSWRAP_LINUX_H diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c index 02d5a469b6..5999270d3d 100644 --- a/coregrind/m_syswrap/syswrap-amd64-linux.c +++ b/coregrind/m_syswrap/syswrap-amd64-linux.c @@ -1060,7 +1060,8 @@ static SyscallTableEntry syscall_table[] = { LINXY(__NR_getcpu, sys_getcpu), // 309 LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 310 - LINX_(__NR_process_vm_writev, sys_process_vm_writev) // 311 + LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 311 + LINX_(__NR_kcmp, sys_kcmp) // 312 }; SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index a4b64a8572..4a2c092aa9 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -8606,6 +8606,14 @@ ML_(linux_POST_getregset) ( ThreadId tid, long arg3, long arg4 ) POST_MEM_WRITE((unsigned long) iov->iov_base, iov->iov_len); } +PRE(sys_kcmp) +{ + PRINT("kcmp ( %ld, %ld, %ld, %lu, %lu )", ARG1, ARG1, ARG3, ARG4, ARG5); + PRE_REG_READ5(long, "kcmp", + vki_pid_t, pid1, vki_pid_t, pid2, int, type, + unsigned long, idx1, unsigned long, idx2); +} + #undef PRE #undef POST diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c index 2ec4d1ae72..c51a9f4c52 100644 --- a/coregrind/m_syswrap/syswrap-x86-linux.c +++ b/coregrind/m_syswrap/syswrap-x86-linux.c @@ -1812,7 +1812,8 @@ static SyscallTableEntry syscall_table[] = { LINXY(__NR_sendmmsg, sys_sendmmsg), // 345 // LINX_(__NR_setns, sys_ni_syscall), // 346 LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 347 - LINX_(__NR_process_vm_writev, sys_process_vm_writev) // 348 + LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 348 + LINX_(__NR_kcmp, sys_kcmp) // 349 }; SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) diff --git a/include/vki/vki-scnums-amd64-linux.h b/include/vki/vki-scnums-amd64-linux.h index 9d0b1eaef4..d5a11f81d2 100644 --- a/include/vki/vki-scnums-amd64-linux.h +++ b/include/vki/vki-scnums-amd64-linux.h @@ -393,6 +393,7 @@ #define __NR_getcpu 309 #define __NR_process_vm_readv 310 #define __NR_process_vm_writev 311 +#define __NR_kcmp 312 #endif /* __VKI_SCNUMS_AMD64_LINUX_H */ diff --git a/include/vki/vki-scnums-x86-linux.h b/include/vki/vki-scnums-x86-linux.h index ad7c424533..b99f0fa012 100644 --- a/include/vki/vki-scnums-x86-linux.h +++ b/include/vki/vki-scnums-x86-linux.h @@ -383,6 +383,7 @@ #define __NR_setns 346 #define __NR_process_vm_readv 347 #define __NR_process_vm_writev 348 +#define __NR_kcmp 349 #endif /* __VKI_SCNUMS_X86_LINUX_H */ -- 2.47.2