Add valgrind-3.14.0-final_tidyup.patch
This commit is contained in:
parent
802130c295
commit
edd3a75469
59
valgrind-3.14.0-final_tidyup.patch
Normal file
59
valgrind-3.14.0-final_tidyup.patch
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
commit be7a73004583aab5d4c97cf55276ca58d5b3090b
|
||||||
|
Author: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Wed Dec 12 14:15:28 2018 +0100
|
||||||
|
|
||||||
|
Mark helper regs defined in final_tidyup before freeres_wrapper call.
|
||||||
|
|
||||||
|
In final_tidyup we setup the guest to call the freeres_wrapper, which
|
||||||
|
will (possibly) call __gnu_cxx::__freeres() and/or __libc_freeres().
|
||||||
|
|
||||||
|
In a couple of cases (ppc64be, ppc64le and mips32) this involves setting
|
||||||
|
up one or more helper registers. Since we setup these guest registers
|
||||||
|
we should make sure to mark them as fully defined. Otherwise we might
|
||||||
|
see spurious warnings about undefined value usage if the guest register
|
||||||
|
happened to not be fully defined before.
|
||||||
|
|
||||||
|
This fixes PR402006.
|
||||||
|
|
||||||
|
diff --git a/coregrind/m_main.c b/coregrind/m_main.c
|
||||||
|
index 00702fc..22872a2 100644
|
||||||
|
--- a/coregrind/m_main.c
|
||||||
|
+++ b/coregrind/m_main.c
|
||||||
|
@@ -2304,22 +2304,35 @@ static void final_tidyup(ThreadId tid)
|
||||||
|
"Caught __NR_exit; running %s wrapper\n", msgs[to_run - 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* set thread context to point to freeres_wrapper */
|
||||||
|
- /* ppc64be-linux note: freeres_wrapper gives us the real
|
||||||
|
+ /* Set thread context to point to freeres_wrapper.
|
||||||
|
+ ppc64be-linux note: freeres_wrapper gives us the real
|
||||||
|
function entry point, not a fn descriptor, so can use it
|
||||||
|
directly. However, we need to set R2 (the toc pointer)
|
||||||
|
appropriately. */
|
||||||
|
VG_(set_IP)(tid, freeres_wrapper);
|
||||||
|
+
|
||||||
|
# if defined(VGP_ppc64be_linux)
|
||||||
|
VG_(threads)[tid].arch.vex.guest_GPR2 = r2;
|
||||||
|
+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid,
|
||||||
|
+ offsetof(VexGuestPPC64State, guest_GPR2),
|
||||||
|
+ sizeof(VG_(threads)[tid].arch.vex.guest_GPR2));
|
||||||
|
# elif defined(VGP_ppc64le_linux)
|
||||||
|
/* setting GPR2 but not really needed, GPR12 is needed */
|
||||||
|
VG_(threads)[tid].arch.vex.guest_GPR2 = freeres_wrapper;
|
||||||
|
+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid,
|
||||||
|
+ offsetof(VexGuestPPC64State, guest_GPR2),
|
||||||
|
+ sizeof(VG_(threads)[tid].arch.vex.guest_GPR2));
|
||||||
|
VG_(threads)[tid].arch.vex.guest_GPR12 = freeres_wrapper;
|
||||||
|
+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid,
|
||||||
|
+ offsetof(VexGuestPPC64State, guest_GPR12),
|
||||||
|
+ sizeof(VG_(threads)[tid].arch.vex.guest_GPR12));
|
||||||
|
# endif
|
||||||
|
/* mips-linux note: we need to set t9 */
|
||||||
|
# if defined(VGP_mips32_linux) || defined(VGP_mips64_linux)
|
||||||
|
VG_(threads)[tid].arch.vex.guest_r25 = freeres_wrapper;
|
||||||
|
+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid,
|
||||||
|
+ offsetof(VexGuestMIPS32State, guest_r25),
|
||||||
|
+ sizeof(VG_(threads)[tid].arch.vex.guest_r25));
|
||||||
|
# endif
|
||||||
|
|
||||||
|
/* Pass a parameter to freeres_wrapper(). */
|
@ -131,6 +131,10 @@ Patch16: valgrind-3.14.0-enable-ppc-Iop_Sar_Shr8.patch
|
|||||||
# KDE#401627 memcheck errors with glibc avx2 optimized wcsncmp
|
# KDE#401627 memcheck errors with glibc avx2 optimized wcsncmp
|
||||||
Patch17: valgrind-3.14.0-wcsncmp.patch
|
Patch17: valgrind-3.14.0-wcsncmp.patch
|
||||||
|
|
||||||
|
# KDE#402006 mark helper regs defined in final_tidyup before freeres_wrapper
|
||||||
|
# Prereq for KDE#386945
|
||||||
|
Patch18: valgrind-3.14.0-final_tidyup.patch
|
||||||
|
|
||||||
%if %{build_multilib}
|
%if %{build_multilib}
|
||||||
# Ensure glibc{,-devel} is installed for both multilib arches
|
# Ensure glibc{,-devel} is installed for both multilib arches
|
||||||
BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
|
BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
|
||||||
@ -280,6 +284,7 @@ Valgrind User Manual for details.
|
|||||||
%patch15 -p1
|
%patch15 -p1
|
||||||
%patch16 -p1
|
%patch16 -p1
|
||||||
%patch17 -p1
|
%patch17 -p1
|
||||||
|
%patch18 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
CC=gcc
|
CC=gcc
|
||||||
@ -514,6 +519,9 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Dec 12 2018 Mark Wielaard <mjw@fedoraproject.org>
|
||||||
|
- Add valgrind-3.14.0-final_tidyup.patch
|
||||||
|
|
||||||
* Sat Dec 1 2018 Mark Wielaard <mjw@fedoraproject.org> - 3.14.0.5
|
* Sat Dec 1 2018 Mark Wielaard <mjw@fedoraproject.org> - 3.14.0.5
|
||||||
- Add valgrind-3.14.0-wcsncmp.patch (#1645971)
|
- Add valgrind-3.14.0-wcsncmp.patch (#1645971)
|
||||||
- Replace valgrind-3.14.0-s390x-vec-float-point-{code,test}.patch
|
- Replace valgrind-3.14.0-s390x-vec-float-point-{code,test}.patch
|
||||||
|
Loading…
Reference in New Issue
Block a user