From: Julian Seward Date: Mon, 28 Aug 2006 12:04:01 +0000 (+0000) Subject: Merge r5968 (fix for: FUTEX_WAKE does not use uaddr2) X-Git-Tag: svn/VALGRIND_3_2_1~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f19f626841002acf6168b30eba9d8ef46722f90f;p=thirdparty%2Fvalgrind.git Merge r5968 (fix for: FUTEX_WAKE does not use uaddr2) git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_2_BRANCH@6017 --- diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c index dc5338f768..7a774458c4 100644 --- a/coregrind/m_syswrap/syswrap-linux.c +++ b/coregrind/m_syswrap/syswrap-linux.c @@ -755,9 +755,31 @@ PRE(sys_futex) ARG6 - int val3 CMP_REQUEUE */ PRINT("sys_futex ( %p, %d, %d, %p, %p )", ARG1,ARG2,ARG3,ARG4,ARG5); - PRE_REG_READ6(long, "futex", - vki_u32 *, futex, int, op, int, val, - struct timespec *, utime, vki_u32 *, uaddr2, int, val3); + switch(ARG2) { + case VKI_FUTEX_CMP_REQUEUE: + 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: + PRE_REG_READ5(long, "futex", + vki_u32 *, futex, int, op, int, val, + struct timespec *, utime, vki_u32 *, uaddr2); + break; + case VKI_FUTEX_WAIT: + PRE_REG_READ4(long, "futex", + vki_u32 *, futex, int, op, int, val, + struct timespec *, utime); + break; + case VKI_FUTEX_WAKE: + case VKI_FUTEX_FD: + PRE_REG_READ3(long, "futex", + vki_u32 *, futex, int, op, int, val); + break; + default: + PRE_REG_READ2(long, "futex", vki_u32 *, futex, int, op); + break; + } PRE_MEM_READ( "futex(futex)", ARG1, sizeof(Int) );