Blob Blame History Raw
commit d9201968186f799b9a2c0793a29029819372a072
Author: mjw <mjw@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Date:   Tue Feb 23 15:19:49 2016 +0000

    Bug 359703 s390: wire up separate socketcalls system calls
    
    The linux 4.3 s390 kernel has separate system calls that were originally
    hidden behind the socketcall multiplexer system call. Newer glibc versions
    will use these direct system calls instead of socketcall when available.
    Causing several regtest failures.
    
    This fix simply wires up the split out system calls directly to the
    existing syswrap handlers for s390.
    
    git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15802 a5019735-40e9-0310-863c-91ae7b9d1cf9

diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c
index e919b8f..0513789 100644
--- a/coregrind/m_syswrap/syswrap-s390x-linux.c
+++ b/coregrind/m_syswrap/syswrap-s390x-linux.c
@@ -1051,7 +1051,25 @@ static SyscallTableEntry syscall_table[] = {
 // ?????(__NR_seccomp, ),                                             // 348
    LINXY(__NR_getrandom, sys_getrandom),                              // 349
 
-   LINXY(__NR_memfd_create, sys_memfd_create)                         // 350
+   LINXY(__NR_memfd_create, sys_memfd_create),                        // 350
+
+   LINXY(__NR_recvmmsg, sys_recvmmsg),                                // 357
+   LINXY(__NR_sendmmsg, sys_sendmmsg),                                // 358
+   LINXY(__NR_socket, sys_socket),                                    // 359
+   LINXY(__NR_socketpair, sys_socketpair),                            // 360
+   LINX_(__NR_bind, sys_bind),                                        // 361
+   LINX_(__NR_connect, sys_connect),                                  // 362
+   LINX_(__NR_listen, sys_listen),                                    // 363
+   LINXY(__NR_accept4, sys_accept4),                                  // 364
+   LINXY(__NR_getsockopt, sys_getsockopt),                            // 365
+   LINX_(__NR_setsockopt, sys_setsockopt),                            // 366
+   LINXY(__NR_getsockname, sys_getsockname),                          // 367
+   LINXY(__NR_getpeername, sys_getpeername),                          // 368
+   LINX_(__NR_sendto, sys_sendto),                                    // 369
+   LINX_(__NR_sendmsg, sys_sendmsg),                                  // 270
+   LINXY(__NR_recvfrom, sys_recvfrom),                                // 371
+   LINXY(__NR_recvmsg, sys_recvmsg),                                  // 372
+   LINX_(__NR_shutdown, sys_shutdown)                                 // 373
 };
 
 SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
diff --git a/include/vki/vki-scnums-s390x-linux.h b/include/vki/vki-scnums-s390x-linux.h
index 2a4a8f1..0187045 100644
--- a/include/vki/vki-scnums-s390x-linux.h
+++ b/include/vki/vki-scnums-s390x-linux.h
@@ -316,7 +316,26 @@
 #define __NR_seccomp		348
 #define __NR_getrandom		349
 #define __NR_memfd_create	350
-#define NR_syscalls 351
+
+#define __NR_recvmmsg		357
+#define __NR_sendmmsg		358
+#define __NR_socket		359
+#define __NR_socketpair		360
+#define __NR_bind		361
+#define __NR_connect		362
+#define __NR_listen		363
+#define __NR_accept4		364
+#define __NR_getsockopt		365
+#define __NR_setsockopt		366
+#define __NR_getsockname	367
+#define __NR_getpeername	368
+#define __NR_sendto		369
+#define __NR_sendmsg		370
+#define __NR_recvfrom		371
+#define __NR_recvmsg		372
+#define __NR_shutdown		373
+
+#define NR_syscalls 374
 
 /* 
  * There are some system calls that are not present on 64 bit, some