Remove unused patch files.
This commit is contained in:
parent
391e3828e9
commit
d74c103f67
@ -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| :|;
|
||||
|
@ -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>");
|
@ -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);
|
||||
|
@ -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.
|
@ -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
|
||||
|
@ -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
|
@ -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
|
||||
|
@ -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
|
@ -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;
|
||||
}
|
||||
|
@ -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";
|
||||
}
|
@ -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
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user