From: Julian Seward Date: Wed, 6 Oct 2010 12:59:44 +0000 (+0000) Subject: get_shm_size(): pass VKI_IPC_64 to our shmctl call if it is available, X-Git-Tag: svn/VALGRIND_3_6_0~59 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=12dd8bd181fa713dcb62ed98a6c459e83bcaa7b7;p=thirdparty%2Fvalgrind.git 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, batuzovk@ispras.ru) git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11398 --- diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c index 91e40df7e4..9c00c57852 100644 --- a/coregrind/m_syswrap/syswrap-generic.c +++ b/coregrind/m_syswrap/syswrap-generic.c @@ -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,