|
From: <sv...@va...> - 2016-02-17 20:53:42
|
Author: mjw
Date: Wed Feb 17 20:53:34 2016
New Revision: 15793
Log:
Bug 359201 futex syscall skips argument 5 if op is FUTEX_WAIT_BITSET
Modified:
trunk/NEWS
trunk/coregrind/m_syswrap/syswrap-linux.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Wed Feb 17 20:53:34 2016
@@ -70,6 +70,7 @@
357871 pthread_spin_destroy not properly wrapped
357887 Fix a file handle leak. VG_(fclose) did not close the file
358030 support direct socket calls on x86 32bit (new in linux 4.3)
+359201 futex syscall "skips" argument 5 if op is FUTEX_WAIT_BITSET
359133 Assertion 'eltSzB <= ddpa->poolSzB' failed
359289 s390x: popcnt (B9E1) not implemented
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c Wed Feb 17 20:53:34 2016
@@ -1154,13 +1154,16 @@
return;
}
if (*(vki_u32 *)ARG1 != ARG3) {
- PRE_REG_READ5(long, "futex",
+ PRE_REG_READ4(long, "futex",
vki_u32 *, futex, int, op, int, val,
- struct timespec *, utime, int, dummy);
+ struct timespec *, utime);
} else {
- PRE_REG_READ6(long, "futex",
+ /* Note argument 5 is unused, but argument 6 is used.
+ So we cannot just PRE_REG_READ6. Read argument 6 separately. */
+ PRE_REG_READ4(long, "futex",
vki_u32 *, futex, int, op, int, val,
- struct timespec *, utime, int, dummy, int, val3);
+ struct timespec *, utime);
+ PRA6("futex",int,val3);
}
break;
case VKI_FUTEX_WAKE_BITSET:
|