From: Julian Seward Date: Sun, 23 Nov 2014 17:59:13 +0000 (+0000) Subject: Merge, from trunk, r14709 X-Git-Tag: svn/VALGRIND_3_10_1~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=20e60df1d76e65f34a857c4b7159e742da88e923;p=thirdparty%2Fvalgrind.git Merge, from trunk, r14709 340788 warning: unhandled syscall: 318 (getrandom) 14709 git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_10_BRANCH@14768 --- diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h index f7b6b90792..22c6c983d9 100644 --- a/coregrind/m_syswrap/priv_syswrap-linux.h +++ b/coregrind/m_syswrap/priv_syswrap-linux.h @@ -283,6 +283,9 @@ DECL_TEMPLATE(linux, sys_process_vm_writev); DECL_TEMPLATE(linux, sys_fanotify_init); DECL_TEMPLATE(linux, sys_fanotify_mark); +// Linux-specific (new in Linux 3.17) +DECL_TEMPLATE(linux, sys_getrandom); + /* --------------------------------------------------------------------- Wrappers for sockets and ipc-ery. These are split into standalone procedures because x86-linux hides them inside multiplexors diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c index 92148a88ed..364a8bb9cf 100644 --- a/coregrind/m_syswrap/syswrap-amd64-linux.c +++ b/coregrind/m_syswrap/syswrap-amd64-linux.c @@ -1061,7 +1061,18 @@ static SyscallTableEntry syscall_table[] = { LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 310 LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 311 - LINX_(__NR_kcmp, sys_kcmp) // 312 + LINX_(__NR_kcmp, sys_kcmp), // 312 +// LIN__(__NR_finit_module, sys_ni_syscall), // 313 +// LIN__(__NR_sched_setattr, sys_ni_syscall), // 314 + +// LIN__(__NR_sched_getattr, sys_ni_syscall), // 315 +// LIN__(__NR_renameat2, sys_ni_syscall), // 316 +// LIN__(__NR_seccomp, sys_ni_syscall), // 317 + LINXY(__NR_getrandom, sys_getrandom) // 318 +// LIN__(__NR_memfd_create, sys_ni_syscall), // 319 + +// LIN__(__NR_kexec_file_load, sys_ni_syscall), // 320 +// LIN__(__NR_bpf, sys_ni_syscall) // 321 }; SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c index baa6380f27..f9f8dd42b0 100644 --- a/coregrind/m_syswrap/syswrap-arm-linux.c +++ b/coregrind/m_syswrap/syswrap-arm-linux.c @@ -1215,7 +1215,8 @@ static SyscallTableEntry syscall_main_table[] = { LINXY(__NR_name_to_handle_at, sys_name_to_handle_at),// 370 LINXY(__NR_open_by_handle_at, sys_open_by_handle_at),// 371 LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 372 - LINXY(__NR_sendmmsg, sys_sendmmsg) // 374 + LINXY(__NR_sendmmsg, sys_sendmmsg), // 374 + LINXY(__NR_getrandom, sys_getrandom) // 384 }; diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c index f8a59c1aac..59e1cf6fff 100644 --- a/coregrind/m_syswrap/syswrap-arm64-linux.c +++ b/coregrind/m_syswrap/syswrap-arm64-linux.c @@ -1034,6 +1034,7 @@ static SyscallTableEntry syscall_main_table[] = { LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 270 LINX_(__NR_process_vm_writev, sys_process_vm_writev), // 271 + LINXY(__NR_getrandom, sys_getrandom), // 278 // The numbers below are bogus. (See comment further down.) // When pulling entries above this line, change the numbers diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index 37932814ad..e0045330bf 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -3005,6 +3005,19 @@ POST(sys_move_pages) POST_MEM_WRITE(ARG5, ARG2 * sizeof(int)); } +PRE(sys_getrandom) +{ + PRINT("sys_getrandom ( %#lx, %ld, %ld )" , ARG1,ARG2,ARG3); + PRE_REG_READ3(int, "getrandom", + char *, buf, vki_size_t, count, unsigned int, flags); + PRE_MEM_WRITE( "getrandom(cpu)", ARG1, ARG2 ); +} + +POST(sys_getrandom) +{ + POST_MEM_WRITE( ARG1, ARG2 ); +} + /* --------------------------------------------------------------------- utime wrapper ------------------------------------------------------------------ */ diff --git a/coregrind/m_syswrap/syswrap-mips32-linux.c b/coregrind/m_syswrap/syswrap-mips32-linux.c index 5888841d76..0f5359c204 100644 --- a/coregrind/m_syswrap/syswrap-mips32-linux.c +++ b/coregrind/m_syswrap/syswrap-mips32-linux.c @@ -1116,7 +1116,9 @@ static SyscallTableEntry syscall_main_table[] = { LINXY (__NR_clock_adjtime, sys_clock_adjtime), // 341 //.. LINXY (__NR_process_vm_readv, sys_process_vm_readv), // 345 - LINX_ (__NR_process_vm_writev, sys_process_vm_writev) // 346 + LINX_ (__NR_process_vm_writev, sys_process_vm_writev), // 346 + //.. + LINXY(__NR_getrandom, sys_getrandom) // 353 }; SyscallTableEntry* ML_(get_linux_syscall_entry) (UInt sysno) diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c index c1154a2a15..34ea581fbe 100644 --- a/coregrind/m_syswrap/syswrap-mips64-linux.c +++ b/coregrind/m_syswrap/syswrap-mips64-linux.c @@ -909,7 +909,8 @@ static SyscallTableEntry syscall_main_table[] = { LINXY (__NR_prlimit64, sys_prlimit64), LINXY (__NR_clock_adjtime, sys_clock_adjtime), LINXY (__NR_process_vm_readv, sys_process_vm_readv), - LINX_ (__NR_process_vm_writev, sys_process_vm_writev) + LINX_ (__NR_process_vm_writev, sys_process_vm_writev), + LINXY(__NR_getrandom, sys_getrandom) }; SyscallTableEntry * ML_(get_linux_syscall_entry) ( UInt sysno ) diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c index 2e5436d75b..5c058c2815 100644 --- a/coregrind/m_syswrap/syswrap-ppc32-linux.c +++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c @@ -1236,8 +1236,6 @@ static SyscallTableEntry syscall_table[] = { LINX_(__NR_pwritev, sys_pwritev), // 321 LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo),// 322 - LINX_(__NR_clock_adjtime, sys_clock_adjtime), // 347 - LINXY(__NR_socket, sys_socket), // 326 LINX_(__NR_bind, sys_bind), // 327 LINX_(__NR_connect, sys_connect), // 328 @@ -1255,8 +1253,12 @@ static SyscallTableEntry syscall_table[] = { LINXY(__NR_accept4, sys_accept4), // 344 + LINX_(__NR_clock_adjtime, sys_clock_adjtime), // 347 + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 351 - LINX_(__NR_process_vm_writev, sys_process_vm_writev) // 352 + LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 352 + + LINXY(__NR_getrandom, sys_getrandom) // 359 }; SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c index d775f9bd0e..c173593439 100644 --- a/coregrind/m_syswrap/syswrap-ppc64-linux.c +++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c @@ -1155,7 +1155,9 @@ static SyscallTableEntry syscall_table[] = { LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 347 LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 351 - LINX_(__NR_process_vm_writev, sys_process_vm_writev) // 352 + LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 352 + + LINXY(__NR_getrandom, sys_getrandom) // 359 }; SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c index 1152b3b001..344b614447 100644 --- a/coregrind/m_syswrap/syswrap-s390x-linux.c +++ b/coregrind/m_syswrap/syswrap-s390x-linux.c @@ -1043,12 +1043,16 @@ static SyscallTableEntry syscall_table[] = { LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 340 LINX_(__NR_process_vm_writev, sys_process_vm_writev), // 341 // ?????(__NR_s390_runtime_instr, ), // 342 - LINX_(__NR_kcmp, sys_kcmp) // 343 + LINX_(__NR_kcmp, sys_kcmp), // 343 // ?????(__NR_finit_module, ), // 344 // ?????(__NR_sched_setattr, ), // 345 // ?????(__NR_sched_getattr, ), // 346 // ?????(__NR_renameat2, ), // 347 +// ?????(__NR_seccomp, ), // 348 + LINXY(__NR_getrandom, sys_getrandom) // 349 + +// ?????(__NR_memfd_create, ), // 350 }; SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c index 2ba73f90dc..db36475f6f 100644 --- a/coregrind/m_syswrap/syswrap-x86-linux.c +++ b/coregrind/m_syswrap/syswrap-x86-linux.c @@ -1813,7 +1813,17 @@ static SyscallTableEntry syscall_table[] = { // 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_kcmp, sys_kcmp) // 349 + LINX_(__NR_kcmp, sys_kcmp), // 349 + +// LIN__(__NR_finit_module, sys_ni_syscall), // 350 +// LIN__(__NR_sched_setattr, sys_ni_syscall), // 351 +// LIN__(__NR_sched_getattr, sys_ni_syscall), // 352 +// LIN__(__NR_renameat2, sys_ni_syscall), // 353 +// LIN__(__NR_seccomp, sys_ni_syscall), // 354 + + LINXY(__NR_getrandom, sys_getrandom) // 355 +// LIN__(__NR_memfd_create, sys_ni_syscall), // 356 +// LIN__(__NR_bpf, sys_ni_syscall) // 357 }; SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )