|
From: <sv...@va...> - 2014-11-10 09:56:07
|
Author: tom
Date: Mon Nov 10 09:55:59 2014
New Revision: 14709
Log:
Add support for the getrandom system call. BZ#340788.
Requires r14705 for updated system call lists.
Modified:
trunk/NEWS
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-arm64-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
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
trunk/coregrind/m_syswrap/syswrap-s390x-linux.c
trunk/coregrind/m_syswrap/syswrap-x86-linux.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Mon Nov 10 09:55:59 2014
@@ -67,6 +67,7 @@
340509 arm64: unhandled instruction fcvtas
340630 arm64: fchmod (52) and fchown (55) syscalls not recognized
340632 arm64: unhandled instruction fcvtas
+340788 warning: unhandled syscall: 318 (getrandom)
n-i-bz Provide implementations of certain compiler builtins to support
compilers who may not provide those
n-i-bz Old STABS code is still being compiled, but never used. Remove it.
Modified: trunk/coregrind/m_syswrap/priv_syswrap-linux.h
==============================================================================
--- trunk/coregrind/m_syswrap/priv_syswrap-linux.h (original)
+++ trunk/coregrind/m_syswrap/priv_syswrap-linux.h Mon Nov 10 09:55:59 2014
@@ -283,6 +283,9 @@
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
Modified: trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-amd64-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-amd64-linux.c Mon Nov 10 09:55:59 2014
@@ -1061,7 +1061,18 @@
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 )
Modified: trunk/coregrind/m_syswrap/syswrap-arm-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-arm-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-arm-linux.c Mon Nov 10 09:55:59 2014
@@ -1215,7 +1215,8 @@
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
};
Modified: trunk/coregrind/m_syswrap/syswrap-arm64-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-arm64-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-arm64-linux.c Mon Nov 10 09:55:59 2014
@@ -1034,6 +1034,7 @@
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
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c Mon Nov 10 09:55:59 2014
@@ -3004,6 +3004,19 @@
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
------------------------------------------------------------------ */
Modified: trunk/coregrind/m_syswrap/syswrap-mips32-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-mips32-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-mips32-linux.c Mon Nov 10 09:55:59 2014
@@ -1116,7 +1116,9 @@
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)
Modified: trunk/coregrind/m_syswrap/syswrap-mips64-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-mips64-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-mips64-linux.c Mon Nov 10 09:55:59 2014
@@ -909,7 +909,8 @@
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 )
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c Mon Nov 10 09:55:59 2014
@@ -1236,8 +1236,6 @@
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 @@
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 )
Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c Mon Nov 10 09:55:59 2014
@@ -1155,7 +1155,9 @@
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 )
Modified: trunk/coregrind/m_syswrap/syswrap-s390x-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-s390x-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-s390x-linux.c Mon Nov 10 09:55:59 2014
@@ -1043,12 +1043,16 @@
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 )
Modified: trunk/coregrind/m_syswrap/syswrap-x86-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-x86-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-x86-linux.c Mon Nov 10 09:55:59 2014
@@ -1813,7 +1813,17 @@
// 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 )
|