]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
get_shm_size(): pass VKI_IPC_64 to our shmctl call if it is available,
authorJulian Seward <jseward@acm.org>
Wed, 6 Oct 2010 12:59:44 +0000 (12:59 +0000)
committerJulian Seward <jseward@acm.org>
Wed, 6 Oct 2010 12:59:44 +0000 (12:59 +0000)
except on amd64-linux.  This fixes a secondary problem discussed
in bug 222545.  (Kirill Batuzov, batuzovk@ispras.ru)

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11398

coregrind/m_syswrap/syswrap-generic.c

index 91e40df7e4418a16dd204426e79ca7448721d4cb..9c00c57852fb2e217204fb4d2184f55666a66bfe 100644 (file)
@@ -1709,11 +1709,18 @@ UInt get_shm_size ( Int shmid )
 #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,