diff --git a/valgrind-3.2.3-private-futex.patch b/valgrind-3.2.3-private-futex.patch new file mode 100644 index 0000000..356f310 --- /dev/null +++ b/valgrind-3.2.3-private-futex.patch @@ -0,0 +1,59 @@ +--- valgrind-3.2.3/include/vki-linux.h (revision 6760) ++++ valgrind-3.2.3/include/vki-linux.h (working copy) +@@ -1151,6 +1151,7 @@ + #define VKI_FUTEX_FD (2) + #define VKI_FUTEX_REQUEUE (3) + #define VKI_FUTEX_CMP_REQUEUE (4) ++#define VKI_FUTEX_PRIVATE_FLAG (128) + + struct vki_robust_list { + struct vki_robust_list __user *next; +--- valgrind-3.2.3/coregrind/m_syswrap/syswrap-linux.c (revision 6760) ++++ valgrind-3.2.3/coregrind/m_syswrap/syswrap-linux.c (working copy) +@@ -843,21 +843,25 @@ + PRINT("sys_futex ( %p, %d, %d, %p, %p )", ARG1,ARG2,ARG3,ARG4,ARG5); + switch(ARG2) { + case VKI_FUTEX_CMP_REQUEUE: ++ case VKI_FUTEX_CMP_REQUEUE | VKI_FUTEX_PRIVATE_FLAG: + PRE_REG_READ6(long, "futex", + vki_u32 *, futex, int, op, int, val, + struct timespec *, utime, vki_u32 *, uaddr2, int, val3); + break; + case VKI_FUTEX_REQUEUE: ++ case VKI_FUTEX_REQUEUE | VKI_FUTEX_PRIVATE_FLAG: + PRE_REG_READ5(long, "futex", + vki_u32 *, futex, int, op, int, val, + struct timespec *, utime, vki_u32 *, uaddr2); + break; + case VKI_FUTEX_WAIT: ++ case VKI_FUTEX_WAIT | VKI_FUTEX_PRIVATE_FLAG: + PRE_REG_READ4(long, "futex", + vki_u32 *, futex, int, op, int, val, + struct timespec *, utime); + break; + case VKI_FUTEX_WAKE: ++ case VKI_FUTEX_WAKE | VKI_FUTEX_PRIVATE_FLAG: + case VKI_FUTEX_FD: + PRE_REG_READ3(long, "futex", + vki_u32 *, futex, int, op, int, val); +@@ -873,16 +877,20 @@ + + switch(ARG2) { + case VKI_FUTEX_WAIT: ++ case VKI_FUTEX_WAIT | VKI_FUTEX_PRIVATE_FLAG: + if (ARG4 != 0) + PRE_MEM_READ( "futex(timeout)", ARG4, sizeof(struct vki_timespec) ); + break; + + case VKI_FUTEX_REQUEUE: ++ case VKI_FUTEX_REQUEUE | VKI_FUTEX_PRIVATE_FLAG: + case VKI_FUTEX_CMP_REQUEUE: ++ case VKI_FUTEX_CMP_REQUEUE | VKI_FUTEX_PRIVATE_FLAG: + PRE_MEM_READ( "futex(futex2)", ARG5, sizeof(Int) ); + break; + + case VKI_FUTEX_WAKE: ++ case VKI_FUTEX_WAKE | VKI_FUTEX_PRIVATE_FLAG: + case VKI_FUTEX_FD: + /* no additional pointers */ + break; diff --git a/valgrind-3.2.3-x86_64-nops.patch b/valgrind-3.2.3-x86_64-nops.patch new file mode 100644 index 0000000..815f22f --- /dev/null +++ b/valgrind-3.2.3-x86_64-nops.patch @@ -0,0 +1,11 @@ +--- valgrind-3.2.3/VEX/priv/guest-amd64/toIR.c (revision 1776) ++++ valgrind-3.2.3/VEX/priv/guest-amd64/toIR.c (revision 1777) +@@ -8355,7 +8355,7 @@ DisResult disInstr_AMD64_WRK ( + as many invalid combinations as possible. */ + n_prefixes = 0; + while (True) { +- if (n_prefixes > 5) goto decode_failure; ++ if (n_prefixes > 7) goto decode_failure; + pre = getUChar(delta); + switch (pre) { + case 0x66: pfx |= PFX_66; break; diff --git a/valgrind.spec b/valgrind.spec index 78677c2..e8b7b02 100644 --- a/valgrind.spec +++ b/valgrind.spec @@ -1,7 +1,7 @@ Summary: Tool for finding memory management bugs in programs Name: valgrind Version: 3.2.3 -Release: 5 +Release: 6 Epoch: 1 Source0: http://www.valgrind.org/downloads/valgrind-%{version}.tar.bz2 Patch1: valgrind-3.2.3-openat.patch @@ -10,7 +10,9 @@ Patch3: valgrind-3.2.3-pkg-config.patch Patch4: valgrind-3.2.3-glibc2_6.patch Patch5: valgrind-3.2.3-io_destroy.patch Patch6: valgrind-3.2.3-power5+-6.patch -License: GPL +Patch7: valgrind-3.2.3-private-futex.patch +Patch8: valgrind-3.2.3-x86_64-nops.patch +License: GPLv2 URL: http://www.valgrind.org/ Group: Development/Debuggers BuildRoot: %{_tmppath}/%{name}-root @@ -44,6 +46,8 @@ find/diagnose. %patch4 -p1 %patch5 -p1 %patch6 -p1 +%patch7 -p1 +%patch8 -p1 %build %ifarch x86_64 ppc64 @@ -131,6 +135,11 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/valgrind* %changelog +* Fri Aug 31 2007 Jakub Jelinek 3.2.3-6 +- handle new x86_64 nops (#256801, KDE#148447) +- add support for private futexes (KDE#146781) +- update License tag + * Fri Aug 3 2007 Jakub Jelinek 3.2.3-5 - add ppc64-linux symlink in valgrind ppc.rpm, so that when rpm prefers 32-bit binaries over 64-bit ones 32-bit