]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Merge r5968 (fix for: FUTEX_WAKE does not use uaddr2)
authorJulian Seward <jseward@acm.org>
Mon, 28 Aug 2006 12:04:01 +0000 (12:04 +0000)
committerJulian Seward <jseward@acm.org>
Mon, 28 Aug 2006 12:04:01 +0000 (12:04 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_2_BRANCH@6017

coregrind/m_syswrap/syswrap-linux.c

index dc5338f7687b3eab9d064a7fdd4c8e87ac893bfa..7a774458c40f07cc9489cadc7117aae2257951c0 100644 (file)
@@ -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) );