From 99bf5dabf7865aaea7f2192373633e026c6fb16e Mon Sep 17 00:00:00 2001 From: Andreas Arnez Date: Thu, 9 Dec 2021 15:27:41 +0100 Subject: [PATCH] Bug 444481 - Don't unmap the vDSO on s390x Newer Linux kernels on s390x may use the vDSO as a "trampoline" for syscall restart. This means that the vDSO is no longer optional, and unmapping it may lead to a segmentation fault when a system call restart is performed. So far Valgrind has been unmapping the vDSO on s390x. Just don't do this anymore. --- NEWS | 1 + coregrind/m_initimg/initimg-linux.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index a0844428ef..5a15158403 100644 --- a/NEWS +++ b/NEWS @@ -44,6 +44,7 @@ are not entered into bugzilla tend to get forgotten about or ignored. 444242 s390x: Valgrind crashes on EXRL with negative offset 444399 arm64: unhandled instruction 0xC87F2D89 (LD{,A}XP and ST{,L}XP). == 434283 +444481 gdb_server test failures on s390x 444495 dhat/tests/copy fails on s390x 444571 PPC, fix the lxsibzx and lxsihzx so they only load their respective sized data. diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c index 7d02d55678..95508ad1ed 100644 --- a/coregrind/m_initimg/initimg-linux.c +++ b/coregrind/m_initimg/initimg-linux.c @@ -892,7 +892,8 @@ Addr setup_client_stack( void* init_sp, # if !defined(VGP_ppc32_linux) && !defined(VGP_ppc64be_linux) \ && !defined(VGP_ppc64le_linux) \ && !defined(VGP_mips32_linux) && !defined(VGP_mips64_linux) \ - && !defined(VGP_nanomips_linux) + && !defined(VGP_nanomips_linux) \ + && !defined(VGP_s390x_linux) case AT_SYSINFO_EHDR: { /* Trash this, because we don't reproduce it */ const NSegment* ehdrseg = VG_(am_find_nsegment)((Addr)auxv->u.a_ptr); -- 2.47.2