X-Git-Url: http://git.pld-linux.org/?p=packages%2Fvalgrind.git;a=blobdiff_plain;f=valgrind-native-cpuid.patch;h=485c85daee84014abc3390064d24def2a7031068;hp=df4bf8d21eeef386b58dea9428fad484c933f5af;hb=HEAD;hpb=e5bb550ce5f8bb68c4359c66cd12968937b53ca3 diff --git a/valgrind-native-cpuid.patch b/valgrind-native-cpuid.patch index df4bf8d..485c85d 100644 --- a/valgrind-native-cpuid.patch +++ b/valgrind-native-cpuid.patch @@ -2,25 +2,24 @@ diff -uNr valgrind-3.6.0.orig/coregrind/m_main.c valgrind-3.6.0/coregrind/m_main --- valgrind-3.6.0.orig/coregrind/m_main.c 2010-10-20 22:19:45.000000000 +0200 +++ valgrind-3.6.0/coregrind/m_main.c 2011-01-17 20:38:26.676472616 +0100 @@ -519,6 +519,8 @@ - VG_(clo_vex_control).guest_chase_thresh, 0, 99) {} - else if VG_BOOL_CLO(arg, "--vex-guest-chase-cond", - VG_(clo_vex_control).guest_chase_cond) {} + VG_(clo_vex_control).guest_max_insns, 1, 100) {} + else if VG_BOOL_CLO(arg, "--vex-guest-chase", + VG_(clo_vex_control).guest_chase) {} + else if VG_BOOL_CLO(arg, "--vex-native-cpuid", + VG_(clo_vex_control).iropt_native_cpuid) {} - else if VG_INT_CLO(arg, "--log-fd", tmp_log_fd) { - log_to = VgLogTo_Fd; -diff -uNr valgrind-3.6.0.orig/VEX/priv/guest_amd64_defs.h valgrind-3.6.0/VEX/priv/guest_amd64_defs.h ---- valgrind-3.6.0.orig/VEX/priv/guest_amd64_defs.h 2010-10-20 22:19:51.000000000 +0200 -+++ valgrind-3.6.0/VEX/priv/guest_amd64_defs.h 2011-01-17 20:38:57.815124615 +0100 -@@ -147,6 +147,7 @@ - extern void amd64g_dirtyhelper_CPUID_baseline ( VexGuestAMD64State* st ); - extern void amd64g_dirtyhelper_CPUID_sse3_and_cx16 ( VexGuestAMD64State* st ); - extern void amd64g_dirtyhelper_CPUID_sse42_and_cx16 ( VexGuestAMD64State* st ); + else if VG_INT_CLO(arg, "--log-fd", pos->tmp_log_fd) { + pos->log_to = VgLogTo_Fd; +--- valgrind-3.11.0/VEX/priv/guest_amd64_defs.h.orig 2015-11-15 19:07:11.062949101 +0100 ++++ valgrind-3.11.0/VEX/priv/guest_amd64_defs.h 2015-11-15 19:09:09.992944110 +0100 +@@ -170,6 +170,7 @@ extern void amd64g_dirtyhelper_CPUID_ss + extern void amd64g_dirtyhelper_CPUID_avx2 ( VexGuestAMD64State* st, + ULong hasF16C, ULong hasRDRAND, + ULong hasRDSEED ); +extern void amd64g_dirtyhelper_CPUID_native ( VexGuestAMD64State* st ); - extern void amd64g_dirtyhelper_FINIT ( VexGuestAMD64State* ); + extern void amd64g_dirtyhelper_FINIT ( VexGuestAMD64State* ); diff -uNr valgrind-3.6.0.orig/VEX/priv/guest_amd64_helpers.c valgrind-3.6.0/VEX/priv/guest_amd64_helpers.c --- valgrind-3.6.0.orig/VEX/priv/guest_amd64_helpers.c 2010-10-20 22:19:51.000000000 +0200 +++ valgrind-3.6.0/VEX/priv/guest_amd64_helpers.c 2011-01-17 20:36:00.884903903 +0100 @@ -42,42 +41,31 @@ diff -uNr valgrind-3.6.0.orig/VEX/priv/guest_amd64_helpers.c valgrind-3.6.0/VEX/ +} + + - ULong amd64g_calculate_RCR ( ULong arg, - ULong rot_amt, - ULong rflags_in, -diff -uNr valgrind-3.6.0.orig/VEX/priv/guest_amd64_toIR.c valgrind-3.6.0/VEX/priv/guest_amd64_toIR.c ---- valgrind-3.6.0.orig/VEX/priv/guest_amd64_toIR.c 2011-01-17 20:35:34.380376775 +0100 -+++ valgrind-3.6.0/VEX/priv/guest_amd64_toIR.c 2011-01-17 20:36:00.891571709 +0100 -@@ -17620,7 +17620,11 @@ - HChar* fName = NULL; - void* fAddr = NULL; - if (haveF2orF3(pfx)) goto decode_failure; -- if (archinfo->hwcaps == (VEX_HWCAPS_AMD64_SSE3 -+ if (vex_control.iropt_native_cpuid) { -+ fName = "amd64g_dirtyhelper_CPUID_native"; -+ fAddr = &amd64g_dirtyhelper_CPUID_native; -+ } -+ else if (archinfo->hwcaps == (VEX_HWCAPS_AMD64_SSE3 - |VEX_HWCAPS_AMD64_CX16)) { - //fName = "amd64g_dirtyhelper_CPUID_sse3_and_cx16"; - //fAddr = &amd64g_dirtyhelper_CPUID_sse3_and_cx16; -diff -uNr valgrind-3.6.0.orig/VEX/pub/libvex.h valgrind-3.6.0/VEX/pub/libvex.h ---- valgrind-3.6.0.orig/VEX/pub/libvex.h 2010-10-20 22:19:52.000000000 +0200 -+++ valgrind-3.6.0/VEX/pub/libvex.h 2011-01-17 20:41:02.906490947 +0100 -@@ -60,7 +60,6 @@ - } - VexArch; + /*---------------------------------------------------------------*/ + /*--- Misc integer helpers, including rotates and crypto. ---*/ + /*---------------------------------------------------------------*/ +--- valgrind-3.11.0/VEX/priv/guest_amd64_toIR.c.orig 2015-11-15 19:07:11.129615765 +0100 ++++ valgrind-3.11.0/VEX/priv/guest_amd64_toIR.c 2015-11-15 19:13:47.379599136 +0100 +@@ -21920,6 +21920,10 @@ + + if (haveF2orF3(pfx)) goto decode_failure; -- - /* For a given architecture, these specify extra capabilities beyond - the minimum supported (baseline) capabilities. They may be OR'd - together, although some combinations don't make sense. (eg, SSE2 -@@ -270,6 +269,8 @@ - /* EXPERIMENTAL: chase across conditional branches? Not all - front ends honour this. Default: NO. */ - Bool guest_chase_cond; ++ if (vex_control.iropt_native_cpuid) { ++ fName = "amd64g_dirtyhelper_CPUID_native"; ++ fAddr = &amd64g_dirtyhelper_CPUID_native; ++ } else + /* This isn't entirely correct, CPUID should depend on the VEX + capabilities, not on the underlying CPU. See bug #324882. */ + if ((archinfo->hwcaps & VEX_HWCAPS_AMD64_SSSE3) && +--- valgrind-3.14.0/VEX/pub/libvex.h~ 2018-10-12 20:12:49.000000000 +0200 ++++ valgrind-3.14.0/VEX/pub/libvex.h 2018-10-12 20:13:55.990940300 +0200 +@@ -519,6 +519,8 @@ typedef + - '3': current, faster implementation; perhaps producing slightly worse + spilling decisions. */ + UInt regalloc_version; + /* For x86 and amd64 allow the use of native cpuid inst */ + Int iropt_native_cpuid; } VexControl; +