Remove unused patch files.

This commit is contained in:
Mark Wielaard 2014-03-19 11:28:53 +01:00
parent 391e3828e9
commit d74c103f67
12 changed files with 0 additions and 851 deletions

View File

@ -1,21 +0,0 @@
commit 56d49b46587a6faffc98662f7d22450df0294019
Author: tom <tom@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Date: Fri Nov 1 10:46:28 2013 +0000
Clear direction flag after tests on amd64. BZ#326983.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13709 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/none/tests/amd64/gen_insn_test.pl b/none/tests/amd64/gen_insn_test.pl
index 409249e..863e560 100644
--- a/none/tests/amd64/gen_insn_test.pl
+++ b/none/tests/amd64/gen_insn_test.pl
@@ -850,6 +850,7 @@ while (<>)
}
# print qq| \"frstor %$stateargnum\\n\"\n|;
+ print qq| \"cld\\n\"\n|;
print qq| :|;

View File

@ -1,73 +0,0 @@
commit 836b51a998fe520728aab7c5e1b156cadaa20c20
Author: mjw <mjw@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Date: Sun Nov 24 17:19:35 2013 +0000
Bug 327916 - DW_TAG_typedef may have no name
We already accepted DW_TAG_typedef without a name for Ada. But g++ for
OpenMP can also emit such nameless DW_TAG_typedefs. Just accept them.
Also fix up anonymous enum and typedef printing in tytypes.c.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13718 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_debuginfo/readdwarf3.c b/coregrind/m_debuginfo/readdwarf3.c
index b0a7a92..f64a97b 100644
--- a/coregrind/m_debuginfo/readdwarf3.c
+++ b/coregrind/m_debuginfo/readdwarf3.c
@@ -2926,19 +2926,17 @@ static void parse_type_DIE ( /*MOD*/XArray* /* of TyEnt */ tyents,
= cook_die_using_form( cc, (UWord)cts.u.val, form );
}
}
- /* Do we have something that looks sane? */
- if (/* must have a name */
- typeE.Te.TyTyDef.name == NULL
- /* However gcc gnat Ada generates minimal typedef
- such as the below => accept no name for Ada.
- <6><91cc>: DW_TAG_typedef
- DW_AT_abstract_ori: <9066>
- */
- && parser->language != 'A'
- /* but the referred-to type can be absent */)
- goto bad_DIE;
- else
- goto acquire_Type;
+ /* Do we have something that looks sane?
+ gcc gnat Ada generates minimal typedef
+ such as the below
+ <6><91cc>: DW_TAG_typedef
+ DW_AT_abstract_ori: <9066>
+ g++ for OMP can generate artificial functions that have
+ parameters that refer to pointers to unnamed typedefs.
+ See https://bugs.kde.org/show_bug.cgi?id=273475
+ So we cannot require a name for a DW_TAG_typedef.
+ */
+ goto acquire_Type;
}
if (dtag == DW_TAG_subroutine_type) {
diff --git a/coregrind/m_debuginfo/tytypes.c b/coregrind/m_debuginfo/tytypes.c
index 05df456..0fde46b 100644
--- a/coregrind/m_debuginfo/tytypes.c
+++ b/coregrind/m_debuginfo/tytypes.c
@@ -265,8 +265,8 @@ void ML_(pp_TyEnt_C_ishly)( XArray* /* of TyEnt */ tyents,
VG_(printf)("&&");
break;
case Te_TyEnum:
- if (!ent->Te.TyEnum.name) goto unhandled;
- VG_(printf)("enum %s", ent->Te.TyEnum.name);
+ VG_(printf)("enum %s", ent->Te.TyEnum.name ? ent->Te.TyEnum.name
+ : "<anonymous>" );
break;
case Te_TyStOrUn:
VG_(printf)("%s %s",
@@ -287,8 +287,8 @@ void ML_(pp_TyEnt_C_ishly)( XArray* /* of TyEnt */ tyents,
}
break;
case Te_TyTyDef:
- if (!ent->Te.TyTyDef.name) goto unhandled;
- VG_(printf)("%s", ent->Te.TyTyDef.name);
+ VG_(printf)("%s", ent->Te.TyTyDef.name ? ent->Te.TyTyDef.name
+ : "<anonymous>" );
break;
case Te_TyFn:
VG_(printf)("%s", "<function_type>");

View File

@ -1,26 +0,0 @@
commit 568d77ce8e0a508fbbd9e71e9938d6dab1639912
Author: mjw <mjw@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Date: Wed Nov 20 11:54:38 2013 +0000
dwz compressed alternate .debug_info and .debug_str not read correctly.
Bug #327837. The buildid from the .gnu_debugaltlink section was parsed
incorrectly (from the wrong offset). Causing the debug alt file not to
be found.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13715 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_debuginfo/readelf.c b/coregrind/m_debuginfo/readelf.c
index e72e0d7..b7d574a 100644
--- a/coregrind/m_debuginfo/readelf.c
+++ b/coregrind/m_debuginfo/readelf.c
@@ -2609,7 +2609,8 @@ Bool ML_(read_elf_debug_info) ( struct _DebugInfo* di )
vg_assert(aimg == NULL);
if (debugaltlink_escn.img != NULL) {
- UInt buildid_offset = ML_(img_strlen)(debugaltlink_escn.img, 0)+1;
+ UInt buildid_offset = ML_(img_strlen)(debugaltlink_escn.img,
+ debugaltlink_escn.ioff)+1;
vg_assert(buildid_offset < debugaltlink_escn.szB);

View File

@ -1,25 +0,0 @@
--- valgrind/gdbserver_tests/mcinvokeWS.vgtest (revision 12990)
+++ valgrind/gdbserver_tests/mcinvokeWS.vgtest (working copy)
@@ -4,7 +4,8 @@
args: 1 10000000 0 -S-S-S-S
vgopts: --tool=memcheck --vgdb=yes --vgdb-prefix=./vgdb-prefix-mcinvokeWS
stderr_filter: filter_make_empty
-prereq: test -f vgdb.ptraceinvoker
+# One some ppc64 installs this test just hangs
+prereq: test -f vgdb.ptraceinvoker && ! `../tests/arch_test ppc64`
progB: invoker
argsB: 10 --vgdb-prefix=./vgdb-prefix-mcinvokeWS --wait=60 -c v.wait 0
# if the --wait is not enough, the test will fail or block
Index: gdbserver_tests/mcinvokeRU.vgtest
===================================================================
--- valgrind/gdbserver_tests/mcinvokeRU.vgtest (revision 12990)
+++ valgrind/gdbserver_tests/mcinvokeRU.vgtest (working copy)
@@ -7,6 +7,8 @@
# as the Valgrind process is always busy, we do not need the vgdb.ptraceinvoker prereq.
# We even disable ptrace invoker to avoid spurious attach error message
# on kernels where ptrace is restricted.
+# One some ppc64 installs this test just hangs
+prereq: ! `../tests/arch_test ppc64`
progB: invoker
argsB: 10 --vgdb-prefix=./vgdb-prefix-mcinvokeRU --max-invoke-ms=0 --wait=60 -c v.wait 0
# if the --wait is not enough, the test will fail or block.

View File

@ -1,72 +0,0 @@
diff -ur valgrind-3.9.0.orig/config.h.in valgrind-3.9.0/config.h.in
--- valgrind-3.9.0.orig/config.h.in 2014-02-21 22:35:28.368908710 +0100
+++ valgrind-3.9.0/config.h.in 2014-02-21 22:36:09.000000000 +0100
@@ -57,6 +57,9 @@
/* Define to 1 if you're using glibc 2.18.x */
#undef GLIBC_2_18
+/* Define to 1 if you're using glibc 2.19.x */
+#undef GLIBC_2_19
+
/* Define to 1 if you're using glibc 2.2.x */
#undef GLIBC_2_2
diff -ur valgrind-3.9.0.orig/configure valgrind-3.9.0/configure
--- valgrind-3.9.0.orig/configure 2014-02-21 22:35:28.425909165 +0100
+++ valgrind-3.9.0/configure 2014-02-21 23:20:33.425979851 +0100
@@ -6689,6 +6689,16 @@
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;
+ 2.19)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.19 family" >&5
+$as_echo "2.19 family" >&6; }
+
+$as_echo "#define GLIBC_2_19 1" >>confdefs.h
+
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;;
darwin)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5
$as_echo "Darwin" >&6; }
@@ -6709,8 +6719,8 @@
*)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported version ${GLIBC_VERSION}" >&5
$as_echo "unsupported version ${GLIBC_VERSION}" >&6; }
- as_fn_error $? "Valgrind requires glibc version 2.2 - 2.17" "$LINENO" 5
- as_fn_error $? "or Darwin libc" "$LINENO" 5
+ as_fn_error $? "Valgrind requires glibc version 2.2 - 2.19" "$LINENO" 5
+ as_fn_error $? "or Darwin or Bionic libc" "$LINENO" 5
;;
esac
diff -ur valgrind-3.9.0.orig/configure.ac valgrind-3.9.0/configure.ac
--- valgrind-3.9.0.orig/configure.ac 2014-02-21 22:35:28.368908710 +0100
+++ valgrind-3.9.0/configure.ac 2014-02-21 22:35:53.044106114 +0100
@@ -918,6 +918,13 @@
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;
+ 2.19)
+ AC_MSG_RESULT(2.19 family)
+ AC_DEFINE([GLIBC_2_19], 1, [Define to 1 if you're using glibc 2.19.x])
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;;
darwin)
AC_MSG_RESULT(Darwin)
AC_DEFINE([DARWIN_LIBC], 1, [Define to 1 if you're using Darwin])
@@ -931,8 +938,8 @@
*)
AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
- AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.17])
- AC_MSG_ERROR([or Darwin libc])
+ AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.19])
+ AC_MSG_ERROR([or Darwin or Bionic libc])
;;
esac

View File

@ -1,245 +0,0 @@
commit 323d397747ff81a5706cce63f45cc1b2109db252
Author: mjw <mjw@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Date: Thu Dec 12 21:20:48 2013 +0000
Bug 328711 valgrind.1 manpage "memcheck options" section is badly generated
Add missing para tags inside listitems. (Miroslav Franc, mfranc@redhat.com)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13758 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/memcheck/docs/mc-manual.xml b/memcheck/docs/mc-manual.xml
index a53bf86..e913e89 100644
--- a/memcheck/docs/mc-manual.xml
+++ b/memcheck/docs/mc-manual.xml
@@ -610,14 +610,14 @@ when <option>--leak-check=full</option> is specified. </para>
in one of the following ways:
<itemizedlist>
- <listitem>a comma separated list of one or more of
- <option>definite indirect possible reachable</option>.
+ <listitem><para>a comma separated list of one or more of
+ <option>definite indirect possible reachable</option>.</para>
</listitem>
- <listitem><option>all</option> to specify the complete set (all leak kinds).
+ <listitem><para><option>all</option> to specify the complete set (all leak kinds).</para>
</listitem>
- <listitem><option>none</option> for the empty set.
+ <listitem><para><option>none</option> for the empty set.</para>
</listitem>
</itemizedlist>
@@ -721,16 +721,16 @@ is <option>--errors-for-leak-kinds=definite,possible</option>
one of the following ways:
<itemizedlist>
- <listitem>a comma separated list of one or more of
- <option>definite indirect possible reachable</option>.
+ <listitem><para>a comma separated list of one or more of
+ <option>definite indirect possible reachable</option>.</para>
</listitem>
- <listitem><option>all</option> to specify the complete set (all leak kinds).
+ <listitem><para><option>all</option> to specify the complete set (all leak kinds).
It is equivalent to
- <option>--show-leak-kinds=definite,indirect,possible,reachable</option>.
+ <option>--show-leak-kinds=definite,indirect,possible,reachable</option>.</para>
</listitem>
- <listitem><option>none</option> for the empty set.
+ <listitem><para><option>none</option> for the empty set.</para>
</listitem>
</itemizedlist>
</para>
@@ -763,17 +763,17 @@ is <option>--errors-for-leak-kinds=definite,possible</option>
The heuristic set is specified in one of the following ways:
<itemizedlist>
- <listitem>a comma separated list of one or more of
- <option>stdstring newarray multipleinheritance</option>.
+ <listitem><para>a comma separated list of one or more of
+ <option>stdstring newarray multipleinheritance</option>.</para>
</listitem>
- <listitem><option>all</option> to activate the complete set of
+ <listitem><para><option>all</option> to activate the complete set of
heuristics.
It is equivalent to
- <option>--leak-check-heuristics=stdstring,newarray,multipleinheritance</option>.
+ <option>--leak-check-heuristics=stdstring,newarray,multipleinheritance</option>.</para>
</listitem>
- <listitem><option>none</option> for the empty set.
+ <listitem><para><option>none</option> for the empty set.</para>
</listitem>
</itemizedlist>
</para>
@@ -797,18 +797,24 @@ is <option>--errors-for-leak-kinds=definite,possible</option>
<para>These options provide an alternative way to specify the leak kinds to show:
<itemizedlist>
<listitem>
+ <para>
<option>--show-reachable=no --show-possibly-lost=yes</option> is equivalent to
<option>--show-leak-kinds=definite,possible</option>.
+ </para>
</listitem>
<listitem>
+ <para>
<option>--show-reachable=no --show-possibly-lost=no</option> is equivalent to
<option>--show-leak-kinds=definite</option>.
+ </para>
</listitem>
<listitem>
+ <para>
<option>--show-reachable=yes</option> is equivalent to
<option>--show-leak-kinds=all</option>.
Note that <option>--show-possibly-lost=no</option> has no effect
if <option>--show-reachable=yes</option> is specified.
+ </para>
</listitem>
</itemizedlist>
</para>
--- valgrind-3.9.0/docs/valgrind.1.orig 2013-12-12 22:34:11.912168437 +0100
+++ valgrind-3.9.0/docs/valgrind.1 2013-12-12 22:34:18.686421525 +0100
@@ -2,12 +2,12 @@
.\" Title: VALGRIND
.\" Author: [see the "Author" section]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\" Date: 11/01/2013
+.\" Date: 12/12/2013
.\" Manual: Release 3.9.0
.\" Source: Release 3.9.0
.\" Language: English
.\"
-.TH "VALGRIND" "1" "11/01/2013" "Release 3.9.0" "Release 3.9.0"
+.TH "VALGRIND" "1" "12/12/2013" "Release 3.9.0" "Release 3.9.0"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@@ -1080,8 +1080,8 @@
.IP \(bu 2.3
.\}
a comma separated list of one or more of
- \fBdefinite indirect possible reachable\fR\&.
- .RE
+\fBdefinite indirect possible reachable\fR\&.
+.RE
.sp
.RS 4
.ie n \{\
@@ -1091,10 +1091,10 @@
.sp -1
.IP \(bu 2.3
.\}
-\fBall\fR to specify the complete set (all leak kinds)\&.
- It is equivalent to
- \fB\-\-show\-leak\-kinds=definite,indirect,possible,reachable\fR\&.
- .RE
+\fBall\fR
+to specify the complete set (all leak kinds)\&. It is equivalent to
+\fB\-\-show\-leak\-kinds=definite,indirect,possible,reachable\fR\&.
+.RE
.sp
.RS 4
.ie n \{\
@@ -1104,8 +1104,9 @@
.sp -1
.IP \(bu 2.3
.\}
-\fBnone\fR for the empty set\&.
- .RE
+\fBnone\fR
+for the empty set\&.
+.RE
.sp
.RE
.PP
@@ -1130,8 +1131,8 @@
.IP \(bu 2.3
.\}
a comma separated list of one or more of
- \fBstdstring newarray multipleinheritance\fR\&.
- .RE
+\fBstdstring newarray multipleinheritance\fR\&.
+.RE
.sp
.RS 4
.ie n \{\
@@ -1141,11 +1142,10 @@
.sp -1
.IP \(bu 2.3
.\}
-\fBall\fR to activate the complete set of
- heuristics\&.
- It is equivalent to
- \fB\-\-leak\-check\-heuristics=stdstring,newarray,multipleinheritance\fR\&.
- .RE
+\fBall\fR
+to activate the complete set of heuristics\&. It is equivalent to
+\fB\-\-leak\-check\-heuristics=stdstring,newarray,multipleinheritance\fR\&.
+.RE
.sp
.RS 4
.ie n \{\
@@ -1155,8 +1155,9 @@
.sp -1
.IP \(bu 2.3
.\}
-\fBnone\fR for the empty set\&.
- .RE
+\fBnone\fR
+for the empty set\&.
+.RE
.sp
Note that these heuristics are dependent on the layout of the objects produced by the C++ compiler\&. They have been tested with some gcc versions (e\&.g\&. 4\&.4 and 4\&.7)\&. They might not work properly with other C++ compilers\&.
.RE
@@ -1173,9 +1174,10 @@
.sp -1
.IP \(bu 2.3
.\}
-\fB\-\-show\-reachable=no \-\-show\-possibly\-lost=yes\fR is equivalent to
- \fB\-\-show\-leak\-kinds=definite,possible\fR\&.
- .RE
+\fB\-\-show\-reachable=no \-\-show\-possibly\-lost=yes\fR
+is equivalent to
+\fB\-\-show\-leak\-kinds=definite,possible\fR\&.
+.RE
.sp
.RS 4
.ie n \{\
@@ -1185,9 +1187,10 @@
.sp -1
.IP \(bu 2.3
.\}
-\fB\-\-show\-reachable=no \-\-show\-possibly\-lost=no\fR is equivalent to
- \fB\-\-show\-leak\-kinds=definite\fR\&.
- .RE
+\fB\-\-show\-reachable=no \-\-show\-possibly\-lost=no\fR
+is equivalent to
+\fB\-\-show\-leak\-kinds=definite\fR\&.
+.RE
.sp
.RS 4
.ie n \{\
@@ -1197,11 +1200,14 @@
.sp -1
.IP \(bu 2.3
.\}
-\fB\-\-show\-reachable=yes\fR is equivalent to
- \fB\-\-show\-leak\-kinds=all\fR\&.
- Note that \fB\-\-show\-possibly\-lost=no\fR has no effect
- if \fB\-\-show\-reachable=yes\fR is specified\&.
- .RE
+\fB\-\-show\-reachable=yes\fR
+is equivalent to
+\fB\-\-show\-leak\-kinds=all\fR\&. Note that
+\fB\-\-show\-possibly\-lost=no\fR
+has no effect if
+\fB\-\-show\-reachable=yes\fR
+is specified\&.
+.RE
.sp
.RE
.PP

View File

@ -1,24 +0,0 @@
commit df77b4d9c15823519165f6e9a206b2c40ac68389
Author: mjw <mjw@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Date: Mon Mar 10 14:45:32 2014 +0000
Enable sys_getpriority and sys_setpriority for ppc64.
Bug 331830 - ppc64: WARNING: unhandled syscall: 96/97
(Miroslav Franc, mfranc@redhat.com)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13861 a5019735-40e9-0310-863c-91ae7b9d1cf9
--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
@@ -792,8 +792,8 @@ static SyscallTableEntry syscall_table[] = {
GENX_(__NR_fchmod, sys_fchmod), // 94
GENX_(__NR_fchown, sys_fchown), // 95
-// _____(__NR_getpriority, sys_getpriority), // 96
-// _____(__NR_setpriority, sys_setpriority), // 97
+ GENX_(__NR_getpriority, sys_getpriority), // 96
+ GENX_(__NR_setpriority, sys_setpriority), // 97
// _____(__NR_profil, sys_profil), // 98
GENXY(__NR_statfs, sys_statfs), // 99

View File

@ -1,13 +0,0 @@
diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c
index f9bc136..58ed0f8 100644
--- a/coregrind/m_syswrap/syswrap-s390x-linux.c
+++ b/coregrind/m_syswrap/syswrap-s390x-linux.c
@@ -1044,7 +1044,7 @@ static SyscallTableEntry syscall_table[] = {
LINXY(__NR_inotify_init1, sys_inotify_init1), // 324
LINXY(__NR_pipe2, sys_pipe2), // 325
- // (__NR_dup3, ),
+ LINXY(__NR_dup3, sys_dup3), // 326
LINXY(__NR_epoll_create1, sys_epoll_create1), // 327
LINXY(__NR_preadv, sys_preadv), // 328
LINX_(__NR_pwritev, sys_pwritev), // 329

View File

@ -1,201 +0,0 @@
commit 9b28d5ecf72accc80d267a3fcfd0bd4212ff34d8
Author: florian <florian@8f6e269a-dfd6-0310-a8e1-e2731360e62c>
Date: Tue Dec 10 16:51:15 2013 +0000
The result of rounding a 128-bit BFP/DFP value to 32/64 bit needs to
be stored in a register pair. This constraint was not observed previously
and the result was stored in any FPR that happened to be chosen. If the
selected FPR was not identifying a proper FPR pair, a SIGILL was delivered.
Fixes BZ #328455.
git-svn-id: svn://svn.valgrind.org/vex/trunk@2801 8f6e269a-dfd6-0310-a8e1-e2731360e62c
diff --git a/priv/host_s390_defs.c b/priv/host_s390_defs.c
index 0b61a5d..ce76285 100644
--- a/VEX/priv/host_s390_defs.c
+++ b/VEX/priv/host_s390_defs.c
@@ -5861,7 +5861,6 @@ s390_insn_bfp128_convert(UChar size, s390_bfp_conv_t tag, HReg dst_hi,
} else {
/* From 16 bytes to smaller size */
vassert(is_valid_fp128_regpair(op_hi, op_lo));
- vassert(hregIsInvalid(dst_lo));
}
insn->tag = S390_INSN_BFP_CONVERT;
@@ -5891,11 +5890,11 @@ s390_insn_bfp128_convert_to(UChar size, s390_bfp_conv_t tag, HReg dst_hi,
s390_insn *
-s390_insn_bfp128_convert_from(UChar size, s390_bfp_conv_t tag, HReg dst,
- HReg op_hi, HReg op_lo,
+s390_insn_bfp128_convert_from(UChar size, s390_bfp_conv_t tag, HReg dst_hi,
+ HReg dst_lo, HReg op_hi, HReg op_lo,
s390_bfp_round_t rounding_mode)
{
- return s390_insn_bfp128_convert(size, tag, dst, INVALID_HREG, op_hi, op_lo,
+ return s390_insn_bfp128_convert(size, tag, dst_hi, dst_lo, op_hi, op_lo,
rounding_mode);
}
@@ -6192,7 +6191,6 @@ s390_insn_dfp128_convert(UChar size, s390_dfp_conv_t tag, HReg dst_hi,
} else {
/* From 16 bytes to smaller size */
vassert(is_valid_fp128_regpair(op_hi, op_lo));
- vassert(hregIsInvalid(dst_lo));
}
insn->tag = S390_INSN_DFP_CONVERT;
@@ -6222,11 +6220,11 @@ s390_insn_dfp128_convert_to(UChar size, s390_dfp_conv_t tag, HReg dst_hi,
s390_insn *
-s390_insn_dfp128_convert_from(UChar size, s390_dfp_conv_t tag, HReg dst,
- HReg op_hi, HReg op_lo,
+s390_insn_dfp128_convert_from(UChar size, s390_dfp_conv_t tag, HReg dst_hi,
+ HReg dst_lo, HReg op_hi, HReg op_lo,
s390_dfp_round_t rounding_mode)
{
- return s390_insn_dfp128_convert(size, tag, dst, INVALID_HREG, op_hi, op_lo,
+ return s390_insn_dfp128_convert(size, tag, dst_hi, dst_lo, op_hi, op_lo,
rounding_mode);
}
diff --git a/priv/host_s390_defs.h b/priv/host_s390_defs.h
index dafc8ae..5b6fc1f 100644
--- a/VEX/priv/host_s390_defs.h
+++ b/VEX/priv/host_s390_defs.h
@@ -665,8 +665,8 @@ s390_insn *s390_insn_bfp128_compare(UChar size, HReg dst, HReg op1_hi,
s390_insn *s390_insn_bfp128_convert_to(UChar size, s390_bfp_conv_t,
HReg dst_hi, HReg dst_lo, HReg op);
s390_insn *s390_insn_bfp128_convert_from(UChar size, s390_bfp_conv_t,
- HReg dst, HReg op_hi, HReg op_lo,
- s390_bfp_round_t);
+ HReg dst_hi, HReg dst_lo, HReg op_hi,
+ HReg op_lo, s390_bfp_round_t);
s390_insn *s390_insn_dfp_binop(UChar size, s390_dfp_binop_t, HReg dst,
HReg op2, HReg op3,
s390_dfp_round_t rounding_mode);
@@ -699,8 +699,8 @@ s390_insn *s390_insn_dfp128_compare(UChar size, s390_dfp_cmp_t, HReg dst,
s390_insn *s390_insn_dfp128_convert_to(UChar size, s390_dfp_conv_t,
HReg dst_hi, HReg dst_lo, HReg op);
s390_insn *s390_insn_dfp128_convert_from(UChar size, s390_dfp_conv_t,
- HReg dst, HReg op_hi, HReg op_lo,
- s390_dfp_round_t);
+ HReg dst_hi, HReg dst_lo, HReg op_hi,
+ HReg op_lo, s390_dfp_round_t);
s390_insn *s390_insn_dfp128_reround(UChar size, HReg dst_hi, HReg dst_lo,
HReg op2, HReg op3_hi, HReg op3_lo,
s390_dfp_round_t);
diff --git a/priv/host_s390_isel.c b/priv/host_s390_isel.c
index aaccff6..3662ffd 100644
--- a/VEX/priv/host_s390_isel.c
+++ b/VEX/priv/host_s390_isel.c
@@ -1257,7 +1257,8 @@ s390_isel_int_expr_wrk(ISelEnv *env, IRExpr *expr)
addInstr(env, s390_insn_move(8, f15, op_lo));
rounding_mode = get_bfp_rounding_mode(env, arg1);
- addInstr(env, s390_insn_bfp128_convert_from(size, conv, res, f13, f15,
+ addInstr(env, s390_insn_bfp128_convert_from(size, conv, res,
+ INVALID_HREG, f13, f15,
rounding_mode));
return res;
}
@@ -1290,7 +1291,8 @@ s390_isel_int_expr_wrk(ISelEnv *env, IRExpr *expr)
addInstr(env, s390_insn_move(8, f15, op_lo));
rounding_mode = get_dfp_rounding_mode(env, arg1);
- addInstr(env, s390_insn_dfp128_convert_from(size, dconv, res, f13,
+ addInstr(env, s390_insn_dfp128_convert_from(size, dconv, res,
+ INVALID_HREG, f13,
f15, rounding_mode));
return res;
}
@@ -2455,7 +2457,7 @@ s390_isel_float_expr_wrk(ISelEnv *env, IRExpr *expr)
case Iop_F128toF64:
case Iop_F128toF32: {
- HReg op_hi, op_lo, f13, f15;
+ HReg op_hi, op_lo, f12, f13, f14, f15;
s390_bfp_round_t rounding_mode;
conv = op == Iop_F128toF32 ? S390_BFP_F128_TO_F32
@@ -2463,15 +2465,18 @@ s390_isel_float_expr_wrk(ISelEnv *env, IRExpr *expr)
s390_isel_float128_expr(&op_hi, &op_lo, env, left);
- /* We use non-virtual registers as pairs (f13, f15) */
+ /* We use non-virtual registers as pairs (f13, f15) and (f12, f14)) */
+ f12 = make_fpr(12);
f13 = make_fpr(13);
+ f14 = make_fpr(14);
f15 = make_fpr(15);
/* operand --> (f13, f15) */
addInstr(env, s390_insn_move(8, f13, op_hi));
addInstr(env, s390_insn_move(8, f15, op_lo));
- dst = newVRegF(env);
+ /* result --> (f12, f14) */
+
/* load-rounded has a rounding mode field when the floating point
extension facility is installed. */
if (s390_host_has_fpext) {
@@ -2480,8 +2485,12 @@ s390_isel_float_expr_wrk(ISelEnv *env, IRExpr *expr)
set_bfp_rounding_mode_in_fpc(env, irrm);
rounding_mode = S390_BFP_ROUND_PER_FPC;
}
- addInstr(env, s390_insn_bfp128_convert_from(size, conv, dst, f13, f15,
- rounding_mode));
+
+ addInstr(env, s390_insn_bfp128_convert_from(size, conv, f12, f14,
+ f13, f15, rounding_mode));
+ dst = newVRegF(env);
+ addInstr(env, s390_insn_move(8, dst, f12));
+
return dst;
}
}
@@ -3044,22 +3053,25 @@ s390_isel_dfp_expr_wrk(ISelEnv *env, IRExpr *expr)
}
case Iop_D128toD64: {
- HReg op_hi, op_lo, f13, f15;
+ HReg op_hi, op_lo, f12, f13, f14, f15;
s390_dfp_round_t rounding_mode;
conv = S390_DFP_D128_TO_D64;
s390_isel_dfp128_expr(&op_hi, &op_lo, env, left);
- /* We use non-virtual registers as pairs (f13, f15) */
+ /* We use non-virtual registers as pairs (f13, f15) and (f12, f14) */
+ f12 = make_fpr(12);
f13 = make_fpr(13);
+ f14 = make_fpr(14);
f15 = make_fpr(15);
/* operand --> (f13, f15) */
addInstr(env, s390_insn_move(8, f13, op_hi));
addInstr(env, s390_insn_move(8, f15, op_lo));
- dst = newVRegF(env);
+ /* result --> (f12, f14) */
+
/* load-rounded has a rounding mode field when the floating point
extension facility is installed. */
if (s390_host_has_fpext) {
@@ -3068,8 +3080,11 @@ s390_isel_dfp_expr_wrk(ISelEnv *env, IRExpr *expr)
set_dfp_rounding_mode_in_fpc(env, irrm);
rounding_mode = S390_DFP_ROUND_PER_FPC_0;
}
- addInstr(env, s390_insn_dfp128_convert_from(size, conv, dst, f13, f15,
- rounding_mode));
+ addInstr(env, s390_insn_dfp128_convert_from(size, conv, f12, f14,
+ f13, f15, rounding_mode));
+ dst = newVRegF(env);
+ addInstr(env, s390_insn_move(8, dst, f12));
+
return dst;
}

View File

@ -1,11 +0,0 @@
--- valgrind-3.9.0/VEX/priv/guest_s390_toIR.c.orig 2013-11-07 22:45:58.021660641 +0100
+++ valgrind-3.9.0/VEX/priv/guest_s390_toIR.c 2013-11-07 22:46:12.319772145 +0100
@@ -7606,7 +7606,7 @@
put_gpr_dw0(r1, binop(Iop_And64, mkexpr(op2), mkU64(mask)));
}
assign(result, get_gpr_dw0(r1));
- s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, op2);
+ s390_cc_thunk_putS(S390_CC_OP_LOAD_AND_TEST, result);
return "risbg";
}

View File

@ -1,105 +0,0 @@
BZ#331380 Syscall param timer_create(evp) points to uninitialised byte(s)
Only check struct sigevent actually used by the kernel. If SIGEV_THREAD_ID
is set check sigev_notify_thread_id, otherwise don't.
diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c
index 9dadd84..1a7fa6b 100644
--- a/coregrind/m_syswrap/syswrap-linux.c
+++ b/coregrind/m_syswrap/syswrap-linux.c
@@ -2175,8 +2175,18 @@ PRE(sys_timer_create)
PRE_REG_READ3(long, "timer_create",
vki_clockid_t, clockid, struct sigevent *, evp,
vki_timer_t *, timerid);
- if (ARG2 != 0)
- PRE_MEM_READ( "timer_create(evp)", ARG2, sizeof(struct vki_sigevent) );
+ if (ARG2 != 0) {
+ struct vki_sigevent *evp = (struct vki_sigevent *) ARG2;
+ PRE_MEM_READ( "timer_create(evp.sigev_value)", (Addr)&evp->sigev_value,
+ sizeof(vki_sigval_t) );
+ PRE_MEM_READ( "timer_create(evp.sigev_signo)", (Addr)&evp->sigev_signo,
+ sizeof(int) );
+ PRE_MEM_READ( "timer_create(evp.sigev_notify)", (Addr)&evp->sigev_notify,
+ sizeof(int) );
+ if ((evp->sigev_notify & VKI_SIGEV_THREAD_ID) != 0)
+ PRE_MEM_READ( "timer_create(evp.sigev_notify_thread_id)",
+ (Addr)&evp->vki_sigev_notify_thread_id, sizeof(int) );
+ }
PRE_MEM_WRITE( "timer_create(timerid)", ARG3, sizeof(vki_timer_t) );
}
POST(sys_timer_create)
diff --git a/include/vki/vki-linux.h b/include/vki/vki-linux.h
index 14bb8bf..a3c4b3c 100644
--- a/include/vki/vki-linux.h
+++ b/include/vki/vki-linux.h
@@ -544,6 +544,9 @@ typedef struct vki_siginfo {
#define VKI_SIGEV_PAD_SIZE ((VKI_SIGEV_MAX_SIZE - VKI___ARCH_SIGEV_PREAMBLE_SIZE) \
/ sizeof(int))
+/* This is the flag the kernel handles, userspace/glibc handles SEGEV_THEAD. */
+#define VKI_SIGEV_THREAD_ID 4
+
typedef struct vki_sigevent {
vki_sigval_t sigev_value;
int sigev_signo;
@@ -559,6 +562,8 @@ typedef struct vki_sigevent {
} _sigev_un;
} vki_sigevent_t;
+#define vki_sigev_notify_thread_id _sigev_un._tid
+
//----------------------------------------------------------------------
// From elsewhere...
//----------------------------------------------------------------------
commit 763710cc391c5adc85712606bf9882f49ee43e7c
Author: mjw <mjw@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Date: Mon Feb 24 15:09:21 2014 +0000
BZ#331380 cont. Don't crash if evp->sigev_notify is invalid. Fix scalar test.
We check evp.sigev_notify_thread_id only if evp->sigev_notify has
SIGEV_THREAD_ID set. But before checking we need to make sure accessing
evp->sigev_notify is valid.
Fix memcheck/tests/x86-linux/scalar.stderr.exp output.
We now produce separate warnings for the 3 different fields.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13837 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c
index 1a7fa6b..1b1e65e 100644
--- a/coregrind/m_syswrap/syswrap-linux.c
+++ b/coregrind/m_syswrap/syswrap-linux.c
@@ -2183,7 +2183,8 @@ PRE(sys_timer_create)
sizeof(int) );
PRE_MEM_READ( "timer_create(evp.sigev_notify)", (Addr)&evp->sigev_notify,
sizeof(int) );
- if ((evp->sigev_notify & VKI_SIGEV_THREAD_ID) != 0)
+ if (ML_(safe_to_deref)(&evp->sigev_notify, sizeof(int))
+ && (evp->sigev_notify & VKI_SIGEV_THREAD_ID) != 0)
PRE_MEM_READ( "timer_create(evp.sigev_notify_thread_id)",
(Addr)&evp->vki_sigev_notify_thread_id, sizeof(int) );
}
diff --git a/memcheck/tests/x86-linux/scalar.stderr.exp b/memcheck/tests/x86-linux/scalar.stderr.exp
index e1a2bf2..2114db9 100644
--- a/memcheck/tests/x86-linux/scalar.stderr.exp
+++ b/memcheck/tests/x86-linux/scalar.stderr.exp
@@ -3602,7 +3602,17 @@ Syscall param timer_create(timerid) contains uninitialised byte(s)
...
by 0x........: main (scalar.c:1158)
-Syscall param timer_create(evp) points to unaddressable byte(s)
+Syscall param timer_create(evp.sigev_value) points to unaddressable byte(s)
+ ...
+ by 0x........: main (scalar.c:1158)
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param timer_create(evp.sigev_signo) points to unaddressable byte(s)
+ ...
+ by 0x........: main (scalar.c:1158)
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
+Syscall param timer_create(evp.sigev_notify) points to unaddressable byte(s)
...
by 0x........: main (scalar.c:1158)
Address 0x........ is not stack'd, malloc'd or (recently) free'd

View File

@ -1,35 +0,0 @@
From ae58d7305de27aa96abf715456a07045018cda98 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mjw@redhat.com>
Date: Tue, 26 Nov 2013 22:49:55 +0100
Subject: [PATCH] Bug 328100 XABORT not implemented.
XABORT can be called even when there is no current transaction.
In such a case XABORT acts as a NOP. Implement xabort as nop.
---
priv/guest_amd64_toIR.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/VEX/priv/guest_amd64_toIR.c b/VEX/priv/guest_amd64_toIR.c
index a17c8f4..7ea5748 100644
--- a/VEX/priv/guest_amd64_toIR.c
+++ b/VEX/priv/guest_amd64_toIR.c
@@ -20270,6 +20270,16 @@ Long dis_ESC_NONE (
return delta;
}
/* END HACKY SUPPORT FOR xbegin */
+ /* BEGIN HACKY SUPPORT FOR xabort */
+ if (modrm == 0xF8 && !have66orF2orF3(pfx) && sz == 1
+ && (archinfo->hwcaps & VEX_HWCAPS_AMD64_AVX)) {
+ delta++; /* mod/rm byte */
+ abyte = getUChar(delta); delta++;
+ /* There is never a real transaction in progress, so do nothing. */
+ DIP("xabort $%d", (Int)abyte);
+ return delta;
+ }
+ /* END HACKY SUPPORT FOR xabort */
goto decode_failure;
case 0xC8: /* ENTER */
--
1.8.3.1