|
From: <sv...@va...> - 2010-10-06 12:59:52
|
Author: sewardj
Date: 2010-10-06 13:59:44 +0100 (Wed, 06 Oct 2010)
New Revision: 11398
Log:
get_shm_size(): pass VKI_IPC_64 to our shmctl call if it is available,
except on amd64-linux. This fixes a secondary problem discussed
in bug 222545. (Kirill Batuzov, bat...@is...)
Modified:
trunk/coregrind/m_syswrap/syswrap-generic.c
Modified: trunk/coregrind/m_syswrap/syswrap-generic.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-generic.c 2010-10-06 11:38:01 UTC (rev 11397)
+++ trunk/coregrind/m_syswrap/syswrap-generic.c 2010-10-06 12:59:44 UTC (rev 11398)
@@ -1709,11 +1709,18 @@
#ifdef __NR_shmctl
# ifdef VKI_IPC_64
struct vki_shmid64_ds buf;
- SysRes __res = VG_(do_syscall3)(__NR_shmctl, shmid, VKI_IPC_STAT, (UWord)&buf);
-# else
+# ifdef VGP_amd64_linux
+ /* See bug 222545 comment 7 */
+ SysRes __res = VG_(do_syscall3)(__NR_shmctl, shmid,
+ VKI_IPC_STAT, (UWord)&buf);
+# else
+ SysRes __res = VG_(do_syscall3)(__NR_shmctl, shmid,
+ VKI_IPC_STAT|VKI_IPC_64, (UWord)&buf);
+# endif
+# else /* !def VKI_IPC_64 */
struct vki_shmid_ds buf;
SysRes __res = VG_(do_syscall3)(__NR_shmctl, shmid, VKI_IPC_STAT, (UWord)&buf);
-# endif
+# endif /* def VKI_IPC_64 */
#else
struct vki_shmid_ds buf;
SysRes __res = VG_(do_syscall5)(__NR_ipc, 24 /* IPCOP_shmctl */, shmid,
|