3.14.0-6 - Add valgrind-3.14.0-ppc64-ptrace.patch
This commit is contained in:
parent
1a8da4dddb
commit
87fefba67b
111
valgrind-3.14.0-ppc64-ptrace.patch
Normal file
111
valgrind-3.14.0-ppc64-ptrace.patch
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
commit 3967a99c26e8b314634a6b1fd8927cbb2bb5d060
|
||||||
|
Author: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Wed Dec 12 14:11:29 2018 +0100
|
||||||
|
|
||||||
|
Implement minimal ptrace support for ppc64[le]-linux.
|
||||||
|
|
||||||
|
diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
||||||
|
index 6549dd1..0fdcc8e 100644
|
||||||
|
--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
||||||
|
+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
|
||||||
|
@@ -388,6 +388,7 @@ DECL_TEMPLATE(ppc64_linux, sys_mmap);
|
||||||
|
//zz DECL_TEMPLATE(ppc64_linux, sys_sigreturn);
|
||||||
|
DECL_TEMPLATE(ppc64_linux, sys_rt_sigreturn);
|
||||||
|
DECL_TEMPLATE(ppc64_linux, sys_fadvise64);
|
||||||
|
+DECL_TEMPLATE(ppc64_linux, sys_ptrace);
|
||||||
|
|
||||||
|
PRE(sys_mmap)
|
||||||
|
{
|
||||||
|
@@ -511,6 +512,72 @@ PRE(sys_rt_sigreturn)
|
||||||
|
*flags |= SfPollAfter;
|
||||||
|
}
|
||||||
|
|
||||||
|
+// ARG3 is only used for pointers into the traced process's address
|
||||||
|
+// space and for offsets into the traced process's struct
|
||||||
|
+// user_regs_struct. It is never a pointer into this process's memory
|
||||||
|
+// space, and we should therefore not check anything it points to.
|
||||||
|
+// powerpc does have other ways to get/set registers, we only support
|
||||||
|
+// GET/SETREGSET for now.
|
||||||
|
+PRE(sys_ptrace)
|
||||||
|
+{
|
||||||
|
+ PRINT("sys_ptrace ( %ld, %ld, %#lx, %#lx )", ARG1,ARG2,ARG3,ARG4);
|
||||||
|
+ PRE_REG_READ4(int, "ptrace",
|
||||||
|
+ long, request, long, pid, long, addr, long, data);
|
||||||
|
+ switch (ARG1) {
|
||||||
|
+ case VKI_PTRACE_PEEKTEXT:
|
||||||
|
+ case VKI_PTRACE_PEEKDATA:
|
||||||
|
+ case VKI_PTRACE_PEEKUSR:
|
||||||
|
+ PRE_MEM_WRITE( "ptrace(peek)", ARG4,
|
||||||
|
+ sizeof (long));
|
||||||
|
+ break;
|
||||||
|
+ case VKI_PTRACE_GETEVENTMSG:
|
||||||
|
+ PRE_MEM_WRITE( "ptrace(geteventmsg)", ARG4, sizeof(unsigned long));
|
||||||
|
+ break;
|
||||||
|
+ case VKI_PTRACE_GETSIGINFO:
|
||||||
|
+ PRE_MEM_WRITE( "ptrace(getsiginfo)", ARG4, sizeof(vki_siginfo_t));
|
||||||
|
+ break;
|
||||||
|
+ case VKI_PTRACE_SETSIGINFO:
|
||||||
|
+ PRE_MEM_READ( "ptrace(setsiginfo)", ARG4, sizeof(vki_siginfo_t));
|
||||||
|
+ break;
|
||||||
|
+ case VKI_PTRACE_GETREGSET:
|
||||||
|
+ ML_(linux_PRE_getregset)(tid, ARG3, ARG4);
|
||||||
|
+ break;
|
||||||
|
+ case VKI_PTRACE_SETREGSET:
|
||||||
|
+ ML_(linux_PRE_setregset)(tid, ARG3, ARG4);
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+POST(sys_ptrace)
|
||||||
|
+{
|
||||||
|
+ switch (ARG1) {
|
||||||
|
+ case VKI_PTRACE_TRACEME:
|
||||||
|
+ ML_(linux_POST_traceme)(tid);
|
||||||
|
+ break;
|
||||||
|
+ case VKI_PTRACE_PEEKTEXT:
|
||||||
|
+ case VKI_PTRACE_PEEKDATA:
|
||||||
|
+ case VKI_PTRACE_PEEKUSR:
|
||||||
|
+ POST_MEM_WRITE( ARG4, sizeof (long));
|
||||||
|
+ break;
|
||||||
|
+ case VKI_PTRACE_GETEVENTMSG:
|
||||||
|
+ POST_MEM_WRITE( ARG4, sizeof(unsigned long));
|
||||||
|
+ break;
|
||||||
|
+ case VKI_PTRACE_GETSIGINFO:
|
||||||
|
+ /* XXX: This is a simplification. Different parts of the
|
||||||
|
+ * siginfo_t are valid depending on the type of signal.
|
||||||
|
+ */
|
||||||
|
+ POST_MEM_WRITE( ARG4, sizeof(vki_siginfo_t));
|
||||||
|
+ break;
|
||||||
|
+ case VKI_PTRACE_GETREGSET:
|
||||||
|
+ ML_(linux_POST_getregset)(tid, ARG3, ARG4);
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
#undef PRE
|
||||||
|
#undef POST
|
||||||
|
|
||||||
|
@@ -562,8 +629,7 @@ static SyscallTableEntry syscall_table[] = {
|
||||||
|
GENX_(__NR_getuid, sys_getuid), // 24
|
||||||
|
|
||||||
|
// _____(__NR_stime, sys_stime), // 25
|
||||||
|
-// When ptrace is supported, memcheck/tests/linux/getregset should be enabled
|
||||||
|
-// _____(__NR_ptrace, sys_ptrace), // 26
|
||||||
|
+ PLAXY(__NR_ptrace, sys_ptrace), // 26
|
||||||
|
GENX_(__NR_alarm, sys_alarm), // 27
|
||||||
|
// _____(__NR_oldfstat, sys_oldfstat), // 28
|
||||||
|
GENX_(__NR_pause, sys_pause), // 29
|
||||||
|
diff --git a/memcheck/tests/linux/getregset.vgtest b/memcheck/tests/linux/getregset.vgtest
|
||||||
|
index 4c66108..c35be4c 100644
|
||||||
|
--- a/memcheck/tests/linux/getregset.vgtest
|
||||||
|
+++ b/memcheck/tests/linux/getregset.vgtest
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
prog: getregset
|
||||||
|
vgopts: -q
|
||||||
|
-prereq: ((../../../tests/os_test linux 2.6.33 && ! ../../../tests/arch_test mips32) || ../../../tests/os_test linux 3.10.0 ) && ! ../../../tests/arch_test ppc64
|
||||||
|
+prereq: ((../../../tests/os_test linux 2.6.33 && ! ../../../tests/arch_test mips32) || ../../../tests/os_test linux 3.10.0 )
|
||||||
|
|
@ -3,7 +3,7 @@
|
|||||||
Summary: Tool for finding memory management bugs in programs
|
Summary: Tool for finding memory management bugs in programs
|
||||||
Name: %{?scl_prefix}valgrind
|
Name: %{?scl_prefix}valgrind
|
||||||
Version: 3.14.0
|
Version: 3.14.0
|
||||||
Release: 5%{?dist}
|
Release: 6%{?dist}
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
URL: http://www.valgrind.org/
|
URL: http://www.valgrind.org/
|
||||||
@ -151,6 +151,9 @@ Patch26: valgrind-3.14.0-jm-vmx-constraints.patch
|
|||||||
# commit 0c701ba2a Fix sigkill.stderr.exp for glibc-2.28.
|
# commit 0c701ba2a Fix sigkill.stderr.exp for glibc-2.28.
|
||||||
Patch27: valgrind-3.14.0-sigkill.patch
|
Patch27: valgrind-3.14.0-sigkill.patch
|
||||||
|
|
||||||
|
# KDE#402048 Implement minimal ptrace support for ppc64[le]-linux.
|
||||||
|
Patch28: valgrind-3.14.0-ppc64-ptrace.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
|
||||||
@ -311,6 +314,7 @@ Valgrind User Manual for details.
|
|||||||
%patch25 -p1
|
%patch25 -p1
|
||||||
%patch26 -p1
|
%patch26 -p1
|
||||||
%patch27 -p1
|
%patch27 -p1
|
||||||
|
%patch28 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
CC=gcc
|
CC=gcc
|
||||||
@ -545,7 +549,7 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Wed Dec 12 2018 Mark Wielaard <mjw@fedoraproject.org>
|
* Wed Dec 12 2018 Mark Wielaard <mjw@fedoraproject.org> - 3.14.0-6
|
||||||
- Add valgrind-3.14.0-final_tidyup.patch
|
- Add valgrind-3.14.0-final_tidyup.patch
|
||||||
- Add valgrind-3.14.0-ppc64-ldbrx.patch
|
- Add valgrind-3.14.0-ppc64-ldbrx.patch
|
||||||
- Add valgrind-3.14.0-ppc64-unaligned-words.patch
|
- Add valgrind-3.14.0-ppc64-unaligned-words.patch
|
||||||
@ -556,8 +560,9 @@ fi
|
|||||||
- Add valgrind-3.14.0-undef_malloc_args.patch
|
- Add valgrind-3.14.0-undef_malloc_args.patch
|
||||||
- Add valgrind-3.14.0-jm-vmx-constraints.patch
|
- Add valgrind-3.14.0-jm-vmx-constraints.patch
|
||||||
- Add valgrind-3.14.0-sigkill.patch
|
- Add valgrind-3.14.0-sigkill.patch
|
||||||
|
- Add valgrind-3.14.0-ppc64-ptrace.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
|
||||||
with upstream versions.
|
with upstream versions.
|
||||||
|
Loading…
Reference in New Issue
Block a user