Add valgrind-3.8.0-lzcnt-tzcnt-bugfix.patch (KDE#295808)
This commit is contained in:
parent
ee910861b7
commit
c06a5ebf83
66
valgrind-3.8.0-lzcnt-tzcnt-bugfix.patch
Normal file
66
valgrind-3.8.0-lzcnt-tzcnt-bugfix.patch
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
------------------------------------------------------------------------
|
||||||
|
r2478 | sewardj | 2012-08-23 22:14:51 +0200 (Thu, 23 Aug 2012) | 4 lines
|
||||||
|
|
||||||
|
Fix LZCNT and TZCNT properly. Fixes #295808. (Jakub Jelinek,
|
||||||
|
jakub@redhat.com)
|
||||||
|
|
||||||
|
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
Index: priv/guest_amd64_toIR.c
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.8.0/VEX/priv/guest_amd64_toIR.c (revision 2477)
|
||||||
|
+++ valgrind-3.8.0/VEX/priv/guest_amd64_toIR.c (revision 2478)
|
||||||
|
@@ -20084,13 +20084,16 @@
|
||||||
|
return delta;
|
||||||
|
|
||||||
|
case 0xBC: /* BSF Gv,Ev */
|
||||||
|
- if (haveF2orF3(pfx)) goto decode_failure;
|
||||||
|
+ if (haveF2(pfx)) goto decode_failure;
|
||||||
|
delta = dis_bs_E_G ( vbi, pfx, sz, delta, True );
|
||||||
|
return delta;
|
||||||
|
|
||||||
|
case 0xBD: /* BSR Gv,Ev */
|
||||||
|
- if (!haveF2orF3(pfx)) {
|
||||||
|
- /* no-F2 no-F3 0F BD = BSR */
|
||||||
|
+ if (!haveF2orF3(pfx)
|
||||||
|
+ || (haveF3noF2(pfx)
|
||||||
|
+ && 0 == (archinfo->hwcaps & VEX_HWCAPS_AMD64_LZCNT))) {
|
||||||
|
+ /* no-F2 no-F3 0F BD = BSR
|
||||||
|
+ or F3 0F BD = REP; BSR on older CPUs. */
|
||||||
|
delta = dis_bs_E_G ( vbi, pfx, sz, delta, False );
|
||||||
|
return delta;
|
||||||
|
}
|
||||||
|
Index: priv/guest_x86_toIR.c
|
||||||
|
===================================================================
|
||||||
|
--- valgrind-3.8.0/VEX/priv/guest_x86_toIR.c (revision 2477)
|
||||||
|
+++ valgrind-3.8.0/VEX/priv/guest_x86_toIR.c (revision 2478)
|
||||||
|
@@ -14021,12 +14021,28 @@
|
||||||
|
for the rest, it means REP) */
|
||||||
|
case 0xF3: {
|
||||||
|
Addr32 eip_orig = guest_EIP_bbstart + delta_start;
|
||||||
|
- if (sorb != 0) goto decode_failure;
|
||||||
|
abyte = getIByte(delta); delta++;
|
||||||
|
|
||||||
|
if (abyte == 0x66) { sz = 2; abyte = getIByte(delta); delta++; }
|
||||||
|
|
||||||
|
+ if (sorb != 0 && abyte != 0x0F) goto decode_failure;
|
||||||
|
+
|
||||||
|
switch (abyte) {
|
||||||
|
+ case 0x0F:
|
||||||
|
+ switch (getIByte(delta)) {
|
||||||
|
+ /* On older CPUs, TZCNT behaves the same as BSF. */
|
||||||
|
+ case 0xBC: /* REP BSF Gv,Ev */
|
||||||
|
+ delta = dis_bs_E_G ( sorb, sz, delta + 1, True );
|
||||||
|
+ break;
|
||||||
|
+ /* On older CPUs, LZCNT behaves the same as BSR. */
|
||||||
|
+ case 0xBD: /* REP BSR Gv,Ev */
|
||||||
|
+ delta = dis_bs_E_G ( sorb, sz, delta + 1, False );
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ goto decode_failure;
|
||||||
|
+ }
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
case 0xA4: sz = 1; /* REP MOVS<sz> */
|
||||||
|
case 0xA5:
|
||||||
|
dis_REP_op ( &dres, X86CondAlways, dis_MOVS, sz, eip_orig,
|
@ -21,6 +21,7 @@ Patch10: valgrind-3.8.0-ldso-supp.patch
|
|||||||
Patch11: valgrind-3.8.0-x86-backtrace.patch
|
Patch11: valgrind-3.8.0-x86-backtrace.patch
|
||||||
Patch12: valgrind-3.8.0-find-buildid.patch
|
Patch12: valgrind-3.8.0-find-buildid.patch
|
||||||
Patch13: valgrind-3.8.0-abbrev-parsing.patch
|
Patch13: valgrind-3.8.0-abbrev-parsing.patch
|
||||||
|
Patch14: valgrind-3.8.0-lzcnt-tzcnt-bugfix.patch
|
||||||
|
|
||||||
Obsoletes: valgrind-callgrind
|
Obsoletes: valgrind-callgrind
|
||||||
%ifarch x86_64 ppc64
|
%ifarch x86_64 ppc64
|
||||||
@ -113,6 +114,7 @@ for details.
|
|||||||
%patch11 -p1
|
%patch11 -p1
|
||||||
%patch12 -p1
|
%patch12 -p1
|
||||||
%patch13 -p1
|
%patch13 -p1
|
||||||
|
%patch14 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
CC=gcc
|
CC=gcc
|
||||||
@ -223,6 +225,9 @@ echo ===============END TESTING===============
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Sep 11 2012 Mark Wielaard <mjw@redhat.com>
|
||||||
|
- Add valgrind-3.8.0-lzcnt-tzcnt-bugfix.patch (KDE#295808)
|
||||||
|
|
||||||
* Mon Aug 27 2012 Mark Wielaard <mjw@redhat.com> 3.8.0-5
|
* Mon Aug 27 2012 Mark Wielaard <mjw@redhat.com> 3.8.0-5
|
||||||
- Add valgrind-3.8.0-abbrev-parsing.patch for #849783 (KDE#305513).
|
- Add valgrind-3.8.0-abbrev-parsing.patch for #849783 (KDE#305513).
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user