Mark Wielaard a437685
commit d9201968186f799b9a2c0793a29029819372a072
Mark Wielaard a437685
Author: mjw <mjw@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Mark Wielaard a437685
Date:   Tue Feb 23 15:19:49 2016 +0000
Mark Wielaard a437685
Mark Wielaard a437685
    Bug 359703 s390: wire up separate socketcalls system calls
Mark Wielaard a437685
    
Mark Wielaard a437685
    The linux 4.3 s390 kernel has separate system calls that were originally
Mark Wielaard a437685
    hidden behind the socketcall multiplexer system call. Newer glibc versions
Mark Wielaard a437685
    will use these direct system calls instead of socketcall when available.
Mark Wielaard a437685
    Causing several regtest failures.
Mark Wielaard a437685
    
Mark Wielaard a437685
    This fix simply wires up the split out system calls directly to the
Mark Wielaard a437685
    existing syswrap handlers for s390.
Mark Wielaard a437685
    
Mark Wielaard a437685
    git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15802 a5019735-40e9-0310-863c-91ae7b9d1cf9
Mark Wielaard a437685
Mark Wielaard a437685
diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c
Mark Wielaard a437685
index e919b8f..0513789 100644
Mark Wielaard a437685
--- a/coregrind/m_syswrap/syswrap-s390x-linux.c
Mark Wielaard a437685
+++ b/coregrind/m_syswrap/syswrap-s390x-linux.c
Mark Wielaard a437685
@@ -1051,7 +1051,25 @@ static SyscallTableEntry syscall_table[] = {
Mark Wielaard a437685
 // ?????(__NR_seccomp, ),                                             // 348
Mark Wielaard a437685
    LINXY(__NR_getrandom, sys_getrandom),                              // 349
Mark Wielaard a437685
 
Mark Wielaard a437685
-   LINXY(__NR_memfd_create, sys_memfd_create)                         // 350
Mark Wielaard a437685
+   LINXY(__NR_memfd_create, sys_memfd_create),                        // 350
Mark Wielaard a437685
+
Mark Wielaard a437685
+   LINXY(__NR_recvmmsg, sys_recvmmsg),                                // 357
Mark Wielaard a437685
+   LINXY(__NR_sendmmsg, sys_sendmmsg),                                // 358
Mark Wielaard a437685
+   LINXY(__NR_socket, sys_socket),                                    // 359
Mark Wielaard a437685
+   LINXY(__NR_socketpair, sys_socketpair),                            // 360
Mark Wielaard a437685
+   LINX_(__NR_bind, sys_bind),                                        // 361
Mark Wielaard a437685
+   LINX_(__NR_connect, sys_connect),                                  // 362
Mark Wielaard a437685
+   LINX_(__NR_listen, sys_listen),                                    // 363
Mark Wielaard a437685
+   LINXY(__NR_accept4, sys_accept4),                                  // 364
Mark Wielaard a437685
+   LINXY(__NR_getsockopt, sys_getsockopt),                            // 365
Mark Wielaard a437685
+   LINX_(__NR_setsockopt, sys_setsockopt),                            // 366
Mark Wielaard a437685
+   LINXY(__NR_getsockname, sys_getsockname),                          // 367
Mark Wielaard a437685
+   LINXY(__NR_getpeername, sys_getpeername),                          // 368
Mark Wielaard a437685
+   LINX_(__NR_sendto, sys_sendto),                                    // 369
Mark Wielaard a437685
+   LINX_(__NR_sendmsg, sys_sendmsg),                                  // 270
Mark Wielaard a437685
+   LINXY(__NR_recvfrom, sys_recvfrom),                                // 371
Mark Wielaard a437685
+   LINXY(__NR_recvmsg, sys_recvmsg),                                  // 372
Mark Wielaard a437685
+   LINX_(__NR_shutdown, sys_shutdown)                                 // 373
Mark Wielaard a437685
 };
Mark Wielaard a437685
 
Mark Wielaard a437685
 SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno )
Mark Wielaard a437685
diff --git a/include/vki/vki-scnums-s390x-linux.h b/include/vki/vki-scnums-s390x-linux.h
Mark Wielaard a437685
index 2a4a8f1..0187045 100644
Mark Wielaard a437685
--- a/include/vki/vki-scnums-s390x-linux.h
Mark Wielaard a437685
+++ b/include/vki/vki-scnums-s390x-linux.h
Mark Wielaard a437685
@@ -316,7 +316,26 @@
Mark Wielaard a437685
 #define __NR_seccomp		348
Mark Wielaard a437685
 #define __NR_getrandom		349
Mark Wielaard a437685
 #define __NR_memfd_create	350
Mark Wielaard a437685
-#define NR_syscalls 351
Mark Wielaard a437685
+
Mark Wielaard a437685
+#define __NR_recvmmsg		357
Mark Wielaard a437685
+#define __NR_sendmmsg		358
Mark Wielaard a437685
+#define __NR_socket		359
Mark Wielaard a437685
+#define __NR_socketpair		360
Mark Wielaard a437685
+#define __NR_bind		361
Mark Wielaard a437685
+#define __NR_connect		362
Mark Wielaard a437685
+#define __NR_listen		363
Mark Wielaard a437685
+#define __NR_accept4		364
Mark Wielaard a437685
+#define __NR_getsockopt		365
Mark Wielaard a437685
+#define __NR_setsockopt		366
Mark Wielaard a437685
+#define __NR_getsockname	367
Mark Wielaard a437685
+#define __NR_getpeername	368
Mark Wielaard a437685
+#define __NR_sendto		369
Mark Wielaard a437685
+#define __NR_sendmsg		370
Mark Wielaard a437685
+#define __NR_recvfrom		371
Mark Wielaard a437685
+#define __NR_recvmsg		372
Mark Wielaard a437685
+#define __NR_shutdown		373
Mark Wielaard a437685
+
Mark Wielaard a437685
+#define NR_syscalls 374
Mark Wielaard a437685
 
Mark Wielaard a437685
 /* 
Mark Wielaard a437685
  * There are some system calls that are not present on 64 bit, some