Add valgrind-3.14.0-ppc64-unaligned-words.patch
This commit is contained in:
parent
be40972a26
commit
4483169069
148
valgrind-3.14.0-ppc64-unaligned-words.patch
Normal file
148
valgrind-3.14.0-ppc64-unaligned-words.patch
Normal file
@ -0,0 +1,148 @@
|
|||||||
|
commit c5a5bea00af75f6ac50da10967d956f117b956f1
|
||||||
|
Author: Mark Wielaard <mark@klomp.org>
|
||||||
|
Date: Sat Dec 8 13:47:43 2018 -0500
|
||||||
|
|
||||||
|
memcheck: Allow unaligned loads of words on ppc64[le].
|
||||||
|
|
||||||
|
On powerpc partial unaligned loads of words from partially invalid
|
||||||
|
addresses are OK and could be generated by our translation of ldbrx.
|
||||||
|
|
||||||
|
Adjust partial_load memcheck tests to allow partial loads of words
|
||||||
|
on powerpc64.
|
||||||
|
|
||||||
|
Part of resolving bug #386945.
|
||||||
|
|
||||||
|
diff --git a/memcheck/mc_main.c b/memcheck/mc_main.c
|
||||||
|
index 3ef7cb9..737f79d 100644
|
||||||
|
--- a/memcheck/mc_main.c
|
||||||
|
+++ b/memcheck/mc_main.c
|
||||||
|
@@ -1508,6 +1508,9 @@ ULong mc_LOADVn_slow ( Addr a, SizeT nBits, Bool bigendian )
|
||||||
|
# if defined(VGA_mips64) && defined(VGABI_N32)
|
||||||
|
if (szB == VG_WORDSIZE * 2 && VG_IS_WORD_ALIGNED(a)
|
||||||
|
&& n_addrs_bad < VG_WORDSIZE * 2)
|
||||||
|
+# elif defined(VGA_ppc64be) || defined(VGA_ppc64le)
|
||||||
|
+ /* On power unaligned loads of words are OK. */
|
||||||
|
+ if (szB == VG_WORDSIZE && n_addrs_bad < VG_WORDSIZE)
|
||||||
|
# else
|
||||||
|
if (szB == VG_WORDSIZE && VG_IS_WORD_ALIGNED(a)
|
||||||
|
&& n_addrs_bad < VG_WORDSIZE)
|
||||||
|
diff --git a/memcheck/tests/Makefile.am b/memcheck/tests/Makefile.am
|
||||||
|
index 2af4dd1..70b8ada 100644
|
||||||
|
--- a/memcheck/tests/Makefile.am
|
||||||
|
+++ b/memcheck/tests/Makefile.am
|
||||||
|
@@ -235,8 +235,10 @@ EXTRA_DIST = \
|
||||||
|
partiallydefinedeq.stdout.exp \
|
||||||
|
partial_load_ok.vgtest partial_load_ok.stderr.exp \
|
||||||
|
partial_load_ok.stderr.exp64 \
|
||||||
|
+ partial_load_ok.stderr.exp-ppc64 \
|
||||||
|
partial_load_dflt.vgtest partial_load_dflt.stderr.exp \
|
||||||
|
partial_load_dflt.stderr.exp64 \
|
||||||
|
+ partial_load_dflt.stderr.exp-ppc64 \
|
||||||
|
partial_load_dflt.stderr.expr-s390x-mvc \
|
||||||
|
pdb-realloc.stderr.exp pdb-realloc.vgtest \
|
||||||
|
pdb-realloc2.stderr.exp pdb-realloc2.stdout.exp pdb-realloc2.vgtest \
|
||||||
|
diff --git a/memcheck/tests/partial_load.c b/memcheck/tests/partial_load.c
|
||||||
|
index 0b2f10b..685ca8d 100644
|
||||||
|
--- a/memcheck/tests/partial_load.c
|
||||||
|
+++ b/memcheck/tests/partial_load.c
|
||||||
|
@@ -1,14 +1,14 @@
|
||||||
|
-
|
||||||
|
+#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
int main ( void )
|
||||||
|
{
|
||||||
|
- long w;
|
||||||
|
- int i;
|
||||||
|
- char* p;
|
||||||
|
-
|
||||||
|
+ long w; int i; char* p;
|
||||||
|
assert(sizeof(long) == sizeof(void*));
|
||||||
|
+#if defined(__powerpc64__)
|
||||||
|
+ fprintf (stderr, "powerpc64\n"); /* Used to select correct .exp file. */
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
/* partial load, which --partial-loads-ok=yes should suppress */
|
||||||
|
p = calloc( sizeof(long)-1, 1 );
|
||||||
|
@@ -16,7 +16,7 @@ int main ( void )
|
||||||
|
w = *(long*)p;
|
||||||
|
free(p);
|
||||||
|
|
||||||
|
- /* partial but misaligned, cannot be suppressed */
|
||||||
|
+ /* partial but misaligned, ppc64[le] ok, but otherwise cannot be suppressed */
|
||||||
|
p = calloc( sizeof(long), 1 );
|
||||||
|
assert(p);
|
||||||
|
p++;
|
||||||
|
diff --git a/memcheck/tests/partial_load_dflt.stderr.exp-ppc64 b/memcheck/tests/partial_load_dflt.stderr.exp-ppc64
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..cf32bcf
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/memcheck/tests/partial_load_dflt.stderr.exp-ppc64
|
||||||
|
@@ -0,0 +1,23 @@
|
||||||
|
+
|
||||||
|
+powerpc64
|
||||||
|
+Invalid read of size 2
|
||||||
|
+ at 0x........: main (partial_load.c:30)
|
||||||
|
+ Address 0x........ is 0 bytes inside a block of size 1 alloc'd
|
||||||
|
+ at 0x........: calloc (vg_replace_malloc.c:...)
|
||||||
|
+ by 0x........: main (partial_load.c:28)
|
||||||
|
+
|
||||||
|
+Invalid read of size 8
|
||||||
|
+ at 0x........: main (partial_load.c:37)
|
||||||
|
+ Address 0x........ is 0 bytes inside a block of size 8 free'd
|
||||||
|
+ at 0x........: free (vg_replace_malloc.c:...)
|
||||||
|
+ by 0x........: main (partial_load.c:36)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+HEAP SUMMARY:
|
||||||
|
+ in use at exit: ... bytes in ... blocks
|
||||||
|
+ total heap usage: ... allocs, ... frees, ... bytes allocated
|
||||||
|
+
|
||||||
|
+For a detailed leak analysis, rerun with: --leak-check=full
|
||||||
|
+
|
||||||
|
+For counts of detected and suppressed errors, rerun with: -v
|
||||||
|
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
|
||||||
|
diff --git a/memcheck/tests/partial_load_ok.stderr.exp-ppc64 b/memcheck/tests/partial_load_ok.stderr.exp-ppc64
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..cf32bcf
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/memcheck/tests/partial_load_ok.stderr.exp-ppc64
|
||||||
|
@@ -0,0 +1,23 @@
|
||||||
|
+
|
||||||
|
+powerpc64
|
||||||
|
+Invalid read of size 2
|
||||||
|
+ at 0x........: main (partial_load.c:30)
|
||||||
|
+ Address 0x........ is 0 bytes inside a block of size 1 alloc'd
|
||||||
|
+ at 0x........: calloc (vg_replace_malloc.c:...)
|
||||||
|
+ by 0x........: main (partial_load.c:28)
|
||||||
|
+
|
||||||
|
+Invalid read of size 8
|
||||||
|
+ at 0x........: main (partial_load.c:37)
|
||||||
|
+ Address 0x........ is 0 bytes inside a block of size 8 free'd
|
||||||
|
+ at 0x........: free (vg_replace_malloc.c:...)
|
||||||
|
+ by 0x........: main (partial_load.c:36)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+HEAP SUMMARY:
|
||||||
|
+ in use at exit: ... bytes in ... blocks
|
||||||
|
+ total heap usage: ... allocs, ... frees, ... bytes allocated
|
||||||
|
+
|
||||||
|
+For a detailed leak analysis, rerun with: --leak-check=full
|
||||||
|
+
|
||||||
|
+For counts of detected and suppressed errors, rerun with: -v
|
||||||
|
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
|
||||||
|
diff -ur valgrind-3.14.0.orig/memcheck/tests/Makefile.in valgrind-3.14.0/memcheck/tests/Makefile.in
|
||||||
|
--- valgrind-3.14.0.orig/memcheck/tests/Makefile.in 2018-12-12 23:17:07.525501080 +0100
|
||||||
|
+++ valgrind-3.14.0/memcheck/tests/Makefile.in 2018-12-12 23:18:13.404014757 +0100
|
||||||
|
@@ -1546,8 +1546,10 @@
|
||||||
|
partiallydefinedeq.stdout.exp \
|
||||||
|
partial_load_ok.vgtest partial_load_ok.stderr.exp \
|
||||||
|
partial_load_ok.stderr.exp64 \
|
||||||
|
+ partial_load_ok.stderr.exp-ppc64 \
|
||||||
|
partial_load_dflt.vgtest partial_load_dflt.stderr.exp \
|
||||||
|
partial_load_dflt.stderr.exp64 \
|
||||||
|
+ partial_load_dflt.stderr.exp-ppc64 \
|
||||||
|
partial_load_dflt.stderr.expr-s390x-mvc \
|
||||||
|
pdb-realloc.stderr.exp pdb-realloc.vgtest \
|
||||||
|
pdb-realloc2.stderr.exp pdb-realloc2.stdout.exp pdb-realloc2.vgtest \
|
@ -138,6 +138,7 @@ Patch18: valgrind-3.14.0-final_tidyup.patch
|
|||||||
# KDE#386945 Bogus memcheck errors on ppc64(le) when using strcmp
|
# KDE#386945 Bogus memcheck errors on ppc64(le) when using strcmp
|
||||||
# See also patches 10 to 16 (yes, there are this many...)
|
# See also patches 10 to 16 (yes, there are this many...)
|
||||||
Patch19: valgrind-3.14.0-ppc64-ldbrx.patch
|
Patch19: valgrind-3.14.0-ppc64-ldbrx.patch
|
||||||
|
Patch20: valgrind-3.14.0-ppc64-unaligned-words.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
|
||||||
@ -290,6 +291,7 @@ Valgrind User Manual for details.
|
|||||||
%patch17 -p1
|
%patch17 -p1
|
||||||
%patch18 -p1
|
%patch18 -p1
|
||||||
%patch19 -p1
|
%patch19 -p1
|
||||||
|
%patch20 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
CC=gcc
|
CC=gcc
|
||||||
@ -527,6 +529,7 @@ fi
|
|||||||
* Wed Dec 12 2018 Mark Wielaard <mjw@fedoraproject.org>
|
* Wed Dec 12 2018 Mark Wielaard <mjw@fedoraproject.org>
|
||||||
- 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
|
||||||
|
|
||||||
* 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)
|
||||||
|
Loading…
Reference in New Issue
Block a user