Mark Wielaard f1bdbb
commit 99bf5dabf7865aaea7f2192373633e026c6fb16e
Mark Wielaard f1bdbb
Author: Andreas Arnez <arnez@linux.ibm.com>
Mark Wielaard f1bdbb
Date:   Thu Dec 9 15:27:41 2021 +0100
Mark Wielaard f1bdbb
Mark Wielaard f1bdbb
    Bug 444481 - Don't unmap the vDSO on s390x
Mark Wielaard f1bdbb
    
Mark Wielaard f1bdbb
    Newer Linux kernels on s390x may use the vDSO as a "trampoline" for
Mark Wielaard f1bdbb
    syscall restart.  This means that the vDSO is no longer optional, and
Mark Wielaard f1bdbb
    unmapping it may lead to a segmentation fault when a system call restart
Mark Wielaard f1bdbb
    is performed.
Mark Wielaard f1bdbb
    
Mark Wielaard f1bdbb
    So far Valgrind has been unmapping the vDSO on s390x.  Just don't do this
Mark Wielaard f1bdbb
    anymore.
Mark Wielaard f1bdbb
Mark Wielaard f1bdbb
diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c
Mark Wielaard f1bdbb
index 7d02d5567..95508ad1e 100644
Mark Wielaard f1bdbb
--- a/coregrind/m_initimg/initimg-linux.c
Mark Wielaard f1bdbb
+++ b/coregrind/m_initimg/initimg-linux.c
Mark Wielaard f1bdbb
@@ -892,7 +892,8 @@ Addr setup_client_stack( void*  init_sp,
Mark Wielaard f1bdbb
 #        if !defined(VGP_ppc32_linux) && !defined(VGP_ppc64be_linux) \
Mark Wielaard f1bdbb
             && !defined(VGP_ppc64le_linux) \
Mark Wielaard f1bdbb
             && !defined(VGP_mips32_linux) && !defined(VGP_mips64_linux) \
Mark Wielaard f1bdbb
-            && !defined(VGP_nanomips_linux)
Mark Wielaard f1bdbb
+            && !defined(VGP_nanomips_linux) \
Mark Wielaard f1bdbb
+            && !defined(VGP_s390x_linux)
Mark Wielaard f1bdbb
          case AT_SYSINFO_EHDR: {
Mark Wielaard f1bdbb
             /* Trash this, because we don't reproduce it */
Mark Wielaard f1bdbb
             const NSegment* ehdrseg = VG_(am_find_nsegment)((Addr)auxv->u.a_ptr);