]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add support for the getrandom system call. BZ#340788.
authorTom Hughes <tom@compton.nu>
Mon, 10 Nov 2014 09:55:59 +0000 (09:55 +0000)
committerTom Hughes <tom@compton.nu>
Mon, 10 Nov 2014 09:55:59 +0000 (09:55 +0000)
Requires r14705 for updated system call lists.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14709

12 files changed:
NEWS
coregrind/m_syswrap/priv_syswrap-linux.h
coregrind/m_syswrap/syswrap-amd64-linux.c
coregrind/m_syswrap/syswrap-arm-linux.c
coregrind/m_syswrap/syswrap-arm64-linux.c
coregrind/m_syswrap/syswrap-linux.c
coregrind/m_syswrap/syswrap-mips32-linux.c
coregrind/m_syswrap/syswrap-mips64-linux.c
coregrind/m_syswrap/syswrap-ppc32-linux.c
coregrind/m_syswrap/syswrap-ppc64-linux.c
coregrind/m_syswrap/syswrap-s390x-linux.c
coregrind/m_syswrap/syswrap-x86-linux.c

diff --git a/NEWS b/NEWS
index 62607f8fd8b174e2cc7c1f4f98087d1228a5f06c..4bcf9293e7084a3c0f275d96ff8c3dbc100c8dcf 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -67,6 +67,7 @@ where XXXXXX is the bug number as listed below.
 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.
index f7b6b9079242a498b39c56efd64c29c48d8bcbcd..22c6c983d9a962393430a67a02a9af4271025c89 100644 (file)
@@ -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
index 92148a88ed2279768c954caca27f9a36b5e3cea2..364a8bb9cffda047ebd823b6ef74d50fc8648b36 100644 (file)
@@ -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 )
index baa6380f2700d9a38f5bb4a0257da9b6a17a0461..f9f8dd42b09daa2e9b7eeddf4709580b68043256 100644 (file)
@@ -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
 };
 
 
index f8a59c1aacf94116c93dfc0e11ff39de01ddab02..59e1cf6fffc80c17621c208fd5e581c76b425382 100644 (file)
@@ -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
index d3064f23773f4369edf4642152e95ab07429c2b0..d63010006d4269a3616b6a23bc1b9a029ec51053 100644 (file)
@@ -3004,6 +3004,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
    ------------------------------------------------------------------ */
index 5888841d768bf5ead6e12610ba3ebcf05ba858f3..0f5359c2048ae7a490f24458eca37b38efaa30fc 100644 (file)
@@ -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)
index c1154a2a155c4208630845093887328c2270acc0..34ea581fbe5a75bf282fd6f96efe107fd0fdc9c5 100644 (file)
@@ -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 )
index 2e5436d75b183ed0e56b010422d95c86208a7bb0..5c058c281570448299372d11a36a1b2a181be210 100644 (file)
@@ -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 )
index d775f9bd0e0b8df9103eadea855e3b54a04b2d1d..c173593439caae6870d032fa1836fbb78a14fe9f 100644 (file)
@@ -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 )
index 1152b3b00152a70c7168665a501c1bbb35636ef1..344b61444780563c2c96359cd990171d7b945bdf 100644 (file)
@@ -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 )
index 8271b42e3f0419a4592fad51fff883f5c7be2f99..dcbf4251e3dedc13a70de11992eb51e050f969a2 100644 (file)
@@ -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 )