From 4e7e6ed1e6f2492f556b98e766ca363782ff876c Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Apr 03 2016 19:31:19 +0000 Subject: Add valgrind-3.11.0-amd64-fcom.patch --- diff --git a/valgrind-3.11.0-amd64-fcom.patch b/valgrind-3.11.0-amd64-fcom.patch new file mode 100644 index 0000000..0458258 --- /dev/null +++ b/valgrind-3.11.0-amd64-fcom.patch @@ -0,0 +1,49 @@ +commit 6f472ff11be7fa4a1114b2e3d321609717325311 +Author: tom +Date: Wed Feb 3 10:14:18 2016 +0000 + + Handle missing FCOM case on amd64. + + Patch from Mark Harris on BZ#212352. + + + git-svn-id: svn://svn.valgrind.org/vex/trunk@3207 8f6e269a-dfd6-0310-a8e1-e2731360e62c + +diff --git a/VEX/priv/guest_amd64_toIR.c b/VEX/priv/guest_amd64_toIR.c +index af4817f..936d16f 100644 +--- a/VEX/priv/guest_amd64_toIR.c ++++ b/VEX/priv/guest_amd64_toIR.c +@@ -6401,19 +6401,20 @@ ULong dis_FPU ( /*OUT*/Bool* decode_ok, + fp_do_op_mem_ST_0 ( addr, "mul", dis_buf, Iop_MulF64, True ); + break; + +-//.. case 2: /* FCOM double-real */ +-//.. DIP("fcoml %s\n", dis_buf); +-//.. /* This forces C1 to zero, which isn't right. */ +-//.. put_C3210( +-//.. binop( Iop_And32, +-//.. binop(Iop_Shl32, +-//.. binop(Iop_CmpF64, +-//.. get_ST(0), +-//.. loadLE(Ity_F64,mkexpr(addr))), +-//.. mkU8(8)), +-//.. mkU32(0x4500) +-//.. )); +-//.. break; ++ case 2: /* FCOM double-real */ ++ DIP("fcoml %s\n", dis_buf); ++ /* This forces C1 to zero, which isn't right. */ ++ put_C3210( ++ unop(Iop_32Uto64, ++ binop( Iop_And32, ++ binop(Iop_Shl32, ++ binop(Iop_CmpF64, ++ get_ST(0), ++ loadLE(Ity_F64,mkexpr(addr))), ++ mkU8(8)), ++ mkU32(0x4500) ++ ))); ++ break; + + case 3: /* FCOMP double-real */ + DIP("fcompl %s\n", dis_buf); diff --git a/valgrind.spec b/valgrind.spec index baef49f..5be137c 100644 --- a/valgrind.spec +++ b/valgrind.spec @@ -142,6 +142,9 @@ Patch30: valgrind-3.11.0-isZeroU.patch # KDE#359472 - PPC vsubuqm instruction doesn't always give the correct result Patch31: valgrind-3.11.0-ppc64-128bit-mod-carry.patch +# KDE#212352 - vex amd64 unhandled opc_aux = 0x 2, first_opcode == 0xDC (FCOM) +Patch32: valgrind-3.11.0-amd64-fcom.patch + %if %{build_multilib} # Ensure glibc{,-devel} is installed for both multilib arches BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so @@ -281,6 +284,7 @@ chmod 755 memcheck/tests/arm64-linux/filter_stderr %patch29 -p1 %patch30 -p1 %patch31 -p1 +%patch32 -p1 %build # We need to use the software collection compiler and binutils if available. @@ -479,6 +483,7 @@ echo ===============END TESTING=============== - Add valgrind-3.11.0-isZeroU.patch - Replace valgrind-3.11.0-arm64-ldpsw.patch with upstream version - Add valgrind-3.11.0-ppc64-128bit-mod-carry.patch +- Add valgrind-3.11.0-amd64-fcom.patch * Mon Mar 14 2016 Mark Wielaard - 3.11.0-18 - Update valgrind-3.11.0-libstdc++-supp.patch.