]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
restructure code for future fixing of 123837 (semctl GETVAL false positive)
authorPhilippe Waroquiers <philippe.waroquiers@skynet.be>
Sun, 21 Oct 2012 20:21:17 +0000 (20:21 +0000)
committerPhilippe Waroquiers <philippe.waroquiers@skynet.be>
Sun, 21 Oct 2012 20:21:17 +0000 (20:21 +0000)
Regrouped identical code (except for indentation)
from syswrap-ppc64-linux.c, syswrap-ppc32-linux.c,syswrap-mips32-linux.c
  syswrap-x86-linux.c, syswrap-s390x-linux.c
into
  syswrap-linux.c

(compiled/regtested on x86, amd64, ppc64, mips32, s390x)

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

coregrind/m_syswrap/priv_syswrap-linux.h
coregrind/m_syswrap/syswrap-generic.c
coregrind/m_syswrap/syswrap-linux.c
coregrind/m_syswrap/syswrap-mips32-linux.c
coregrind/m_syswrap/syswrap-ppc32-linux.c
coregrind/m_syswrap/syswrap-ppc64-linux.c
coregrind/m_syswrap/syswrap-s390x-linux.c
coregrind/m_syswrap/syswrap-x86-linux.c

index d674c000221ad0d9ff79543a82547345a0799805..2c34dd8c12230a32167e30e25834cff90dcd11ce 100644 (file)
@@ -294,6 +294,10 @@ extern void ML_(linux_POST_sys_getsockopt) ( TId, SR, UW, UW, UW, UW, UW );
 #undef UW
 #undef SR
 
+/* sys_ipc is a multiplexor which implements several syscalls.
+   Used e.g. by x86, ppc32, ppc64, ... */
+DECL_TEMPLATE(linux, sys_ipc);
+
 #endif   // __PRIV_SYSWRAP_LINUX_H
 
 /*--------------------------------------------------------------------*/
index 73ab5ffd366bcaf3e5edaba632c000cedf99656a..7bc9f89ebd1edc4fff58e96bc8373e7bfade19a7 100644 (file)
@@ -1935,7 +1935,6 @@ ML_(generic_POST_sys_shmctl) ( ThreadId tid,
    }
 }
 
-
 /* ---------------------------------------------------------------------
    Generic handler for mmap
    ------------------------------------------------------------------ */
index 133f48a64aac5676b19c78ac71915832c1646bf7..5ab17db6323aa4b350c1029090cbc873d0dd8878 100644 (file)
@@ -3288,6 +3288,166 @@ ML_(linux_POST_sys_msgctl) ( ThreadId tid,
    }
 }
 
+/* ---------------------------------------------------------------------
+   Generic handler for sys_ipc
+   Depending on the platform, some syscalls (e.g. semctl, semop, ...)
+   are either direct system calls, or are all implemented via sys_ipc.
+   ------------------------------------------------------------------ */
+#ifdef __NR_ipc
+static Addr deref_Addr ( ThreadId tid, Addr a, Char* s )
+{
+   Addr* a_p = (Addr*)a;
+   PRE_MEM_READ( s, (Addr)a_p, sizeof(Addr) );
+   return *a_p;
+}
+
+PRE(sys_ipc)
+{
+   PRINT("sys_ipc ( %ld, %ld, %ld, %ld, %#lx, %ld )", ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
+   // XXX: this is simplistic -- some args are not used in all circumstances.
+   PRE_REG_READ6(int, "ipc",
+                 vki_uint, call, int, first, int, second, int, third,
+                 void *, ptr, long, fifth)
+
+   switch (ARG1 /* call */) {
+   case VKI_SEMOP:
+      ML_(generic_PRE_sys_semop)( tid, ARG2, ARG5, ARG3 );
+      *flags |= SfMayBlock;
+      break;
+   case VKI_SEMGET:
+      break;
+   case VKI_SEMCTL:
+   {
+      UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" );
+      ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
+      break;
+   }
+   case VKI_SEMTIMEDOP:
+      ML_(generic_PRE_sys_semtimedop)( tid, ARG2, ARG5, ARG3, ARG6 );
+      *flags |= SfMayBlock;
+      break;
+   case VKI_MSGSND:
+      ML_(linux_PRE_sys_msgsnd)( tid, ARG2, ARG5, ARG3, ARG4 );
+      if ((ARG4 & VKI_IPC_NOWAIT) == 0)
+         *flags |= SfMayBlock;
+      break;
+   case VKI_MSGRCV:
+   {
+      Addr msgp;
+      Word msgtyp;
+      msgp = deref_Addr( tid,
+                        (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp),
+                        "msgrcv(msgp)" );
+      msgtyp = deref_Addr( tid,
+                          (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
+                          "msgrcv(msgp)" );
+
+      ML_(linux_PRE_sys_msgrcv)( tid, ARG2, msgp, ARG3, msgtyp, ARG4 );
+
+      if ((ARG4 & VKI_IPC_NOWAIT) == 0)
+         *flags |= SfMayBlock;
+      break;
+   }
+   case VKI_MSGGET:
+      break;
+   case VKI_MSGCTL:
+      ML_(linux_PRE_sys_msgctl)( tid, ARG2, ARG3, ARG5 );
+      break;
+   case VKI_SHMAT:
+   {
+      UWord w;
+      PRE_MEM_WRITE( "shmat(raddr)", ARG4, sizeof(Addr) );
+      w = ML_(generic_PRE_sys_shmat)( tid, ARG2, ARG5, ARG3 );
+      if (w == 0)
+         SET_STATUS_Failure( VKI_EINVAL );
+      else
+         ARG5 = w;
+      break;
+   }
+   case VKI_SHMDT:
+      if (!ML_(generic_PRE_sys_shmdt)(tid, ARG5))
+        SET_STATUS_Failure( VKI_EINVAL );
+      break;
+   case VKI_SHMGET:
+      break;
+   case VKI_SHMCTL: /* IPCOP_shmctl */
+      ML_(generic_PRE_sys_shmctl)( tid, ARG2, ARG3, ARG5 );
+      break;
+   default:
+      VG_(message)(Vg_DebugMsg, "FATAL: unhandled syscall(ipc) %ld\n", ARG1 );
+      VG_(core_panic)("... bye!\n");
+      break; /*NOTREACHED*/
+   }   
+}
+
+POST(sys_ipc)
+{
+   vg_assert(SUCCESS);
+   switch (ARG1 /* call */) {
+   case VKI_SEMOP:
+   case VKI_SEMGET:
+      break;
+   case VKI_SEMCTL:
+   {
+      UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" );
+      ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
+      break;
+   }
+   case VKI_SEMTIMEDOP:
+   case VKI_MSGSND:
+      break;
+   case VKI_MSGRCV:
+   {
+      Addr msgp;
+      Word msgtyp;
+
+      msgp = deref_Addr( tid,
+                        (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp),
+                        "msgrcv(msgp)" );
+      msgtyp = deref_Addr( tid,
+                          (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
+                          "msgrcv(msgp)" );
+
+      ML_(linux_POST_sys_msgrcv)( tid, RES, ARG2, msgp, ARG3, msgtyp, ARG4 );
+      break;
+   }
+   case VKI_MSGGET:
+      break;
+   case VKI_MSGCTL:
+      ML_(linux_POST_sys_msgctl)( tid, RES, ARG2, ARG3, ARG5 );
+      break;
+   case VKI_SHMAT:
+   {
+      Addr addr;
+
+      /* force readability. before the syscall it is
+       * indeed uninitialized, as can be seen in
+       * glibc/sysdeps/unix/sysv/linux/shmat.c */
+      POST_MEM_WRITE( ARG4, sizeof( Addr ) );
+
+      addr = deref_Addr ( tid, ARG4, "shmat(addr)" );
+      ML_(generic_POST_sys_shmat)( tid, addr, ARG2, ARG5, ARG3 );
+      break;
+   }
+   case VKI_SHMDT:
+      ML_(generic_POST_sys_shmdt)( tid, RES, ARG5 );
+      break;
+   case VKI_SHMGET:
+      break;
+   case VKI_SHMCTL:
+      ML_(generic_POST_sys_shmctl)( tid, RES, ARG2, ARG3, ARG5 );
+      break;
+   default:
+      VG_(message)(Vg_DebugMsg,
+                  "FATAL: unhandled syscall(ipc) %ld\n",
+                  ARG1 );
+      VG_(core_panic)("... bye!\n");
+      break; /*NOTREACHED*/
+   }
+}
+#endif
+
 /* ---------------------------------------------------------------------
    *at wrappers
    ------------------------------------------------------------------ */
index a9497946e583a80878e82d10739f89529de383ca..a819a87203b16291c9e26dafb09f44465cdbea97 100644 (file)
@@ -381,7 +381,6 @@ DECL_TEMPLATE (mips_linux, sys_connect);
 DECL_TEMPLATE (mips_linux, sys_accept);
 DECL_TEMPLATE (mips_linux, sys_sendto);
 DECL_TEMPLATE (mips_linux, sys_recvfrom);
-DECL_TEMPLATE (mips_linux, sys_ipc);
 DECL_TEMPLATE (mips_linux, sys_semget);
 DECL_TEMPLATE (mips_linux, sys_semop);
 DECL_TEMPLATE (mips_linux, sys_semctl);
@@ -1080,150 +1079,6 @@ POST (sys_fstat64)
   POST_MEM_WRITE (ARG2, sizeof (struct vki_stat64));
 } 
 
-static Addr
-deref_Addr (ThreadId tid, Addr a, Char * s) 
-{
-  Addr * a_p = (Addr *) a;
-  PRE_MEM_READ (s, (Addr) a_p, sizeof (Addr));
-  return *a_p;
-}
-
-PRE (sys_ipc) 
-{
-  PRINT ("sys_ipc ( %ld, %ld, %ld, %ld, %#lx, %ld )", ARG1, ARG2, ARG3, 
-                                                      ARG4, ARG5, ARG6);
-  // XXX: this is simplistic -- some args are not used in all circumstances.
-  PRE_REG_READ6 (int, "ipc", vki_uint, call, int, first, int, second, int,
-                 third, void *, ptr, long, fifth) 
-  switch (ARG1 /* call */ )
-    {
-      case VKI_SEMOP:
-        ML_ (generic_PRE_sys_semop) (tid, ARG2, ARG5, ARG3);
-        *flags |= SfMayBlock;
-      break;
-      case VKI_SEMGET:
-      break;
-      case VKI_SEMCTL:
-        {
-          UWord arg = deref_Addr (tid, ARG5, "semctl(arg)");
-          ML_ (generic_PRE_sys_semctl) (tid, ARG2, ARG3, ARG4, arg);
-          break;
-        }
-      case VKI_SEMTIMEDOP:
-        ML_ (generic_PRE_sys_semtimedop) (tid, ARG2, ARG5, ARG3, ARG6);
-        *flags |= SfMayBlock;
-        break;
-      case VKI_MSGSND:
-        ML_ (linux_PRE_sys_msgsnd) (tid, ARG2, ARG5, ARG3, ARG4);
-        if ((ARG4 & VKI_IPC_NOWAIT) == 0)
-          *flags |= SfMayBlock;
-        break;
-      case VKI_MSGRCV:
-        {
-          Addr msgp;
-          Word msgtyp;
-          msgp = deref_Addr (tid,
-                            (Addr)(&((struct vki_ipc_kludge *)ARG5)->msgp),
-                            "msgrcv(msgp)");
-          msgtyp = deref_Addr (tid,
-                              (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
-                              "msgrcv(msgp)");
-          ML_ (linux_PRE_sys_msgrcv) (tid, ARG2, msgp, ARG3, msgtyp, ARG4);
-          if ((ARG4 & VKI_IPC_NOWAIT) == 0)
-            *flags |= SfMayBlock;
-            break;
-        }
-      case VKI_MSGGET:
-        break;
-      case VKI_MSGCTL:
-        ML_ (linux_PRE_sys_msgctl) (tid, ARG2, ARG3, ARG5);
-        break;
-      case VKI_SHMAT:
-        {
-          PRE_MEM_WRITE ("shmat(raddr)", ARG4, sizeof (Addr));
-          break;
-        }
-      case VKI_SHMDT:
-        if (!ML_ (generic_PRE_sys_shmdt) (tid, ARG5))
-          SET_STATUS_Failure (VKI_EINVAL);
-        break;
-      case VKI_SHMGET:
-        break;
-      case VKI_SHMCTL:         /* IPCOP_shmctl */
-        ML_ (generic_PRE_sys_shmctl) (tid, ARG2, ARG3, ARG5);
-        break;
-      default:
-        VG_ (message) (Vg_DebugMsg, "FATAL: unhandled syscall(ipc) %ld\n",
-                       ARG1);
-        VG_ (core_panic) ("... bye!\n");
-        break;
-     /*NOTREACHED*/ 
-  }
-}
-
-POST (sys_ipc) 
-{
-  vg_assert (SUCCESS);
-  switch (ARG1 /* call */ )
-    {
-      case VKI_SEMOP:
-      case VKI_SEMGET:
-      break;
-      case VKI_SEMCTL:
-      {
-        UWord arg = deref_Addr (tid, ARG5, "semctl(arg)");
-        ML_ (generic_PRE_sys_semctl) (tid, ARG2, ARG3, ARG4, arg);
-        break;
-      }
-      case VKI_SEMTIMEDOP:
-      case VKI_MSGSND:
-      break;
-      case VKI_MSGRCV:
-        {
-          Addr msgp;
-          Word msgtyp;
-          msgp = deref_Addr (tid, (Addr) (&((struct vki_ipc_kludge *)
-                             ARG5)->msgp), 
-          "msgrcv(msgp)");
-          msgtyp = deref_Addr (tid,
-                           (Addr) (&((struct vki_ipc_kludge *) ARG5)->msgtyp),
-                           "msgrcv(msgp)");
-          ML_ (linux_POST_sys_msgrcv)(tid, RES, ARG2, msgp, ARG3, msgtyp, ARG4);
-          break;
-        }
-      case VKI_MSGGET:
-      break;
-      case VKI_MSGCTL:
-        ML_ (linux_POST_sys_msgctl) (tid, RES, ARG2, ARG3, ARG5);
-      break;
-      case VKI_SHMAT:
-        {
-          Addr addr;
-          /* force readability. before the syscall it is
-           * indeed uninitialized, as can be seen in
-           * glibc/sysdeps/unix/sysv/linux/shmat.c */ 
-          POST_MEM_WRITE (ARG4, sizeof (Addr));
-          addr = deref_Addr (tid, ARG4, "shmat(addr)");
-          ML_ (generic_POST_sys_shmat) (tid, addr, ARG2, ARG5, ARG3);
-          break;
-        }
-      case VKI_SHMDT:
-        ML_ (generic_POST_sys_shmdt) (tid, RES, ARG5);
-      break;
-      case VKI_SHMGET:
-      break;
-      case VKI_SHMCTL:
-        ML_ (generic_POST_sys_shmctl) (tid, RES, ARG2, ARG3, ARG5);
-      break;
-      default:
-        VG_ (message) (Vg_DebugMsg, "FATAL: unhandled syscall(ipc) %ld\n",
-                       ARG1);
-        VG_ (core_panic) ("... bye!\n");
-      break;
-     /*NOTREACHED*/
-  }
-}
-
 PRE (sys_clone) 
   {
     Bool badarg = False;
@@ -1535,7 +1390,7 @@ static SyscallTableEntry syscall_main_table[] = {
   //..
   //..    //   (__NR_swapoff,           sys_swapoff),           // 115 */Linux 
   LINXY (__NR_sysinfo, sys_sysinfo),   // 116
-  PLAXY (__NR_ipc, sys_ipc),   // 117
+  LINXY (__NR_ipc, sys_ipc),   // 117
   GENX_ (__NR_fsync, sys_fsync),       // 118
   PLAX_ (__NR_sigreturn, sys_sigreturn),       // 119 ?/Linux
   //..
index 3d7ab5e8c8608116f4e3494af60eb5f423dc9a4a..c4b8b422c69b0884a334074d1f3cb9749e46c8ef 100644 (file)
@@ -417,7 +417,6 @@ DECL_TEMPLATE(ppc32_linux, sys_stat64);
 DECL_TEMPLATE(ppc32_linux, sys_lstat64);
 DECL_TEMPLATE(ppc32_linux, sys_fstatat64);
 DECL_TEMPLATE(ppc32_linux, sys_fstat64);
-DECL_TEMPLATE(ppc32_linux, sys_ipc);
 DECL_TEMPLATE(ppc32_linux, sys_clone);
 DECL_TEMPLATE(ppc32_linux, sys_sigreturn);
 DECL_TEMPLATE(ppc32_linux, sys_rt_sigreturn);
@@ -784,160 +783,6 @@ POST(sys_fstat64)
   POST_MEM_WRITE( ARG2, sizeof(struct vki_stat64) );
 }
 
-static Addr deref_Addr ( ThreadId tid, Addr a, Char* s )
-{
-   Addr* a_p = (Addr*)a;
-   PRE_MEM_READ( s, (Addr)a_p, sizeof(Addr) );
-   return *a_p;
-}
-
-PRE(sys_ipc)
-{
-  PRINT("sys_ipc ( %ld, %ld, %ld, %ld, %#lx, %ld )", ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
-  // XXX: this is simplistic -- some args are not used in all circumstances.
-  PRE_REG_READ6(int, "ipc",
-               vki_uint, call, int, first, int, second, int, third,
-               void *, ptr, long, fifth)
-
-    switch (ARG1 /* call */) {
-    case VKI_SEMOP:
-      ML_(generic_PRE_sys_semop)( tid, ARG2, ARG5, ARG3 );
-      *flags |= SfMayBlock;
-      break;
-    case VKI_SEMGET:
-      break;
-    case VKI_SEMCTL:
-      {
-       UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" );
-       ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
-       break;
-      }
-    case VKI_SEMTIMEDOP:
-      ML_(generic_PRE_sys_semtimedop)( tid, ARG2, ARG5, ARG3, ARG6 );
-      *flags |= SfMayBlock;
-      break;
-    case VKI_MSGSND:
-      ML_(linux_PRE_sys_msgsnd)( tid, ARG2, ARG5, ARG3, ARG4 );
-      if ((ARG4 & VKI_IPC_NOWAIT) == 0)
-       *flags |= SfMayBlock;
-      break;
-    case VKI_MSGRCV:
-      {
-       Addr msgp;
-       Word msgtyp;
-
-       msgp = deref_Addr( tid,
-                          (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp),
-                          "msgrcv(msgp)" );
-       msgtyp = deref_Addr( tid,
-                            (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
-                            "msgrcv(msgp)" );
-
-       ML_(linux_PRE_sys_msgrcv)( tid, ARG2, msgp, ARG3, msgtyp, ARG4 );
-
-       if ((ARG4 & VKI_IPC_NOWAIT) == 0)
-         *flags |= SfMayBlock;
-       break;
-      }
-    case VKI_MSGGET:
-      break;
-    case VKI_MSGCTL:
-      ML_(linux_PRE_sys_msgctl)( tid, ARG2, ARG3, ARG5 );
-      break;
-    case VKI_SHMAT:
-      {
-       UWord w;
-       PRE_MEM_WRITE( "shmat(raddr)", ARG4, sizeof(Addr) );
-       w = ML_(generic_PRE_sys_shmat)( tid, ARG2, ARG5, ARG3 );
-       if (w == 0)
-         SET_STATUS_Failure( VKI_EINVAL );
-       else
-         ARG5 = w;
-       break;
-      }
-    case VKI_SHMDT:
-      if (!ML_(generic_PRE_sys_shmdt)(tid, ARG5))
-       SET_STATUS_Failure( VKI_EINVAL );
-      break;
-    case VKI_SHMGET:
-      break;
-    case VKI_SHMCTL: /* IPCOP_shmctl */
-      ML_(generic_PRE_sys_shmctl)( tid, ARG2, ARG3, ARG5 );
-      break;
-    default:
-      VG_(message)(Vg_DebugMsg, "FATAL: unhandled syscall(ipc) %ld\n", ARG1 );
-      VG_(core_panic)("... bye!\n");
-      break; /*NOTREACHED*/
-    }
-}
-
-POST(sys_ipc)
-{
-  vg_assert(SUCCESS);
-  switch (ARG1 /* call */) {
-  case VKI_SEMOP:
-  case VKI_SEMGET:
-    break;
-  case VKI_SEMCTL:
-    {
-      UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" );
-      ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
-      break;
-    }
-  case VKI_SEMTIMEDOP:
-  case VKI_MSGSND:
-    break;
-  case VKI_MSGRCV:
-    {
-      Addr msgp;
-      Word msgtyp;
-
-      msgp = deref_Addr( tid,
-                         (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp),
-                         "msgrcv(msgp)" );
-      msgtyp = deref_Addr( tid,
-                           (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
-                           "msgrcv(msgp)" );
-
-      ML_(linux_POST_sys_msgrcv)( tid, RES, ARG2, msgp, ARG3, msgtyp, ARG4 );
-      break;
-    }
-  case VKI_MSGGET:
-    break;
-  case VKI_MSGCTL:
-    ML_(linux_POST_sys_msgctl)( tid, RES, ARG2, ARG3, ARG5 );
-    break;
-  case VKI_SHMAT:
-    {
-      Addr addr;
-
-      /* force readability. before the syscall it is
-       * indeed uninitialized, as can be seen in
-       * glibc/sysdeps/unix/sysv/linux/shmat.c */
-      POST_MEM_WRITE( ARG4, sizeof( Addr ) );
-
-      addr = deref_Addr ( tid, ARG4, "shmat(addr)" );
-      ML_(generic_POST_sys_shmat)( tid, addr, ARG2, ARG5, ARG3 );
-      break;
-    }
-  case VKI_SHMDT:
-    ML_(generic_POST_sys_shmdt)( tid, RES, ARG5 );
-    break;
-  case VKI_SHMGET:
-    break;
-  case VKI_SHMCTL:
-    ML_(generic_POST_sys_shmctl)( tid, RES, ARG2, ARG3, ARG5 );
-    break;
-  default:
-    VG_(message)(Vg_DebugMsg,
-                "FATAL: unhandled syscall(ipc) %ld\n",
-                ARG1 );
-    VG_(core_panic)("... bye!\n");
-    break; /*NOTREACHED*/
-  }
-}
-
-
 
 
 //.. PRE(old_select, MayBlock)
@@ -1240,159 +1085,6 @@ PRE(sys_rt_sigreturn)
 //..    }
 //.. }
 
-//.. // XXX: this duplicates a function in coregrind/vg_syscalls.c, yuk
-//.. static Addr deref_Addr ( ThreadId tid, Addr a, Char* s )
-//.. {
-//..    Addr* a_p = (Addr*)a;
-//..    PRE_MEM_READ( s, (Addr)a_p, sizeof(Addr) );
-//..    return *a_p;
-//.. }
-
-//.. // XXX: should use the constants here (eg. SHMAT), not the numbers directly!
-//.. PRE(sys_ipc, 0)
-//.. {
-//..    PRINT("sys_ipc ( %d, %d, %d, %d, %p, %d )", ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
-//..    // XXX: this is simplistic -- some args are not used in all circumstances.
-//..    PRE_REG_READ6(int, "ipc",
-//..                  vki_uint, call, int, first, int, second, int, third,
-//..                  void *, ptr, long, fifth)
-//.. 
-//..    switch (ARG1 /* call */) {
-//..    case VKI_SEMOP:
-//..       ML_(generic_PRE_sys_semop)( tid, ARG2, ARG5, ARG3 );
-//..       /* tst->sys_flags |= MayBlock; */
-//..       break;
-//..    case VKI_SEMGET:
-//..       break;
-//..    case VKI_SEMCTL:
-//..    {
-//..       UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" );
-//..       ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
-//..       break;
-//..    }
-//..    case VKI_SEMTIMEDOP:
-//..       ML_(generic_PRE_sys_semtimedop)( tid, ARG2, ARG5, ARG3, ARG6 );
-//..       /* tst->sys_flags |= MayBlock; */
-//..       break;
-//..    case VKI_MSGSND:
-//..       ML_(linux_PRE_sys_msgsnd)( tid, ARG2, ARG5, ARG3, ARG4 );
-//..       /* if ((ARG4 & VKI_IPC_NOWAIT) == 0)
-//..             tst->sys_flags |= MayBlock;
-//..       */
-//..       break;
-//..    case VKI_MSGRCV:
-//..    {
-//..       Addr msgp;
-//..       Word msgtyp;
-//..  
-//..       msgp = deref_Addr( tid,
-//..                    (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp),
-//..                    "msgrcv(msgp)" );
-//..       msgtyp = deref_Addr( tid,
-//..                      (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
-//..                      "msgrcv(msgp)" );
-//.. 
-//..       ML_(linux_PRE_sys_msgrcv)( tid, ARG2, msgp, ARG3, msgtyp, ARG4 );
-//.. 
-//..       /* if ((ARG4 & VKI_IPC_NOWAIT) == 0)
-//..             tst->sys_flags |= MayBlock;
-//..       */
-//..       break;
-//..    }
-//..    case VKI_MSGGET:
-//..       break;
-//..    case VKI_MSGCTL:
-//..       ML_(linux_PRE_sys_msgctl)( tid, ARG2, ARG3, ARG5 );
-//..       break;
-//..    case VKI_SHMAT:
-//..       PRE_MEM_WRITE( "shmat(raddr)", ARG4, sizeof(Addr) );
-//..       ARG5 = ML_(generic_PRE_sys_shmat)( tid, ARG2, ARG5, ARG3 );
-//..       if (ARG5 == 0)
-//..          SET_RESULT( -VKI_EINVAL );
-//..       break;
-//..    case VKI_SHMDT:
-//..       if (!ML_(generic_PRE_sys_shmdt)(tid, ARG5))
-//..    SET_RESULT( -VKI_EINVAL );
-//..       break;
-//..    case VKI_SHMGET:
-//..       break;
-//..    case VKI_SHMCTL: /* IPCOP_shmctl */
-//..       ML_(generic_PRE_sys_shmctl)( tid, ARG2, ARG3, ARG5 );
-//..       break;
-//..    default:
-//..       VG_(message)(Vg_DebugMsg, "FATAL: unhandled syscall(ipc) %d", ARG1 );
-//..       VG_(core_panic)("... bye!\n");
-//..       break; /*NOTREACHED*/
-//..    }   
-//.. }
-
-//.. POST(sys_ipc)
-//.. {
-//..    switch (ARG1 /* call */) {
-//..    case VKI_SEMOP:
-//..    case VKI_SEMGET:
-//..       break;
-//..    case VKI_SEMCTL:
-//..    {
-//..       UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" );
-//..       ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
-//..       break;
-//..    }
-//..    case VKI_SEMTIMEDOP:
-//..    case VKI_MSGSND:
-//..       break;
-//..    case VKI_MSGRCV:
-//..    {
-//..       Addr msgp;
-//..       Word msgtyp;
-//.. 
-//..       msgp = deref_Addr( tid,
-//..                    (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp),
-//..                    "msgrcv(msgp)" );
-//..       msgtyp = deref_Addr( tid,
-//..                      (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
-//..                      "msgrcv(msgp)" );
-//.. 
-//..       ML_(linux_POST_sys_msgrcv)( tid, RES, ARG2, msgp, ARG3, msgtyp, ARG4 );
-//..       break;
-//..    }
-//..    case VKI_MSGGET:
-//..       break;
-//..    case VKI_MSGCTL:
-//..       ML_(linux_POST_sys_msgctl)( tid, RES, ARG2, ARG3, ARG5 );
-//..       break;
-//..    case VKI_SHMAT:
-//..    {
-//..       Addr addr;
-//.. 
-//..       /* force readability. before the syscall it is
-//..        * indeed uninitialized, as can be seen in
-//..        * glibc/sysdeps/unix/sysv/linux/shmat.c */
-//..       POST_MEM_WRITE( ARG4, sizeof( Addr ) );
-//.. 
-//..       addr = deref_Addr ( tid, ARG4, "shmat(addr)" );
-//..       if ( addr > 0 ) { 
-//..          ML_(generic_POST_sys_shmat)( tid, addr, ARG2, ARG5, ARG3 );
-//..       }
-//..       break;
-//..    }
-//..    case VKI_SHMDT:
-//..       ML_(generic_POST_sys_shmdt)( tid, RES, ARG5 );
-//..       break;
-//..    case VKI_SHMGET:
-//..       break;
-//..    case VKI_SHMCTL:
-//..       ML_(generic_POST_sys_shmctl)( tid, RES, ARG2, ARG3, ARG5 );
-//..       break;
-//..    default:
-//..       VG_(message)(Vg_DebugMsg,
-//..              "FATAL: unhandled syscall(ipc) %d",
-//..              ARG1 );
-//..       VG_(core_panic)("... bye!\n");
-//..       break; /*NOTREACHED*/
-//..    }
-//.. }
-
 /* NB: This is an almost identical clone of versions for x86-linux and
    arm-linux, which are themselves literally identical. */
 PRE(sys_sigsuspend)
@@ -1591,7 +1283,7 @@ static SyscallTableEntry syscall_table[] = {
 //.. 
 //..    //   (__NR_swapoff,           sys_swapoff),           // 115 */Linux 
    LINXY(__NR_sysinfo,           sys_sysinfo),           // 116
-   PLAXY(__NR_ipc,               sys_ipc),               // 117
+   LINXY(__NR_ipc,               sys_ipc),               // 117
    GENX_(__NR_fsync,             sys_fsync),             // 118
    PLAX_(__NR_sigreturn,         sys_sigreturn),         // 119 ?/Linux
 //.. 
index 0d84fd41bf51954ea2d0796bcef36773d190fa77..2e077266b4f457fac168d6c5c979b756a56d4cec 100644 (file)
@@ -445,7 +445,6 @@ DECL_TEMPLATE(ppc64_linux, sys_mmap);
 //zz DECL_TEMPLATE(ppc64_linux, sys_stat64);
 //zz DECL_TEMPLATE(ppc64_linux, sys_lstat64);
 //zz DECL_TEMPLATE(ppc64_linux, sys_fstat64);
-DECL_TEMPLATE(ppc64_linux, sys_ipc);
 DECL_TEMPLATE(ppc64_linux, sys_clone);
 //zz DECL_TEMPLATE(ppc64_linux, sys_sigreturn);
 DECL_TEMPLATE(ppc64_linux, sys_rt_sigreturn);
@@ -797,158 +796,6 @@ PRE(sys_mmap)
 //zz   POST_MEM_WRITE( ARG2, sizeof(struct vki_stat64) );
 //zz }
 
-static Addr deref_Addr ( ThreadId tid, Addr a, Char* s )
-{
-   Addr* a_p = (Addr*)a;
-   PRE_MEM_READ( s, (Addr)a_p, sizeof(Addr) );
-   return *a_p;
-}
-
-PRE(sys_ipc)
-{
-  PRINT("sys_ipc ( %ld, %ld, %ld, %ld, %#lx, %ld )", ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
-  // XXX: this is simplistic -- some args are not used in all circumstances.
-  PRE_REG_READ6(int, "ipc",
-               vki_uint, call, int, first, int, second, int, third,
-               void *, ptr, long, fifth)
-
-    switch (ARG1 /* call */) {
-    case VKI_SEMOP:
-      ML_(generic_PRE_sys_semop)( tid, ARG2, ARG5, ARG3 );
-      *flags |= SfMayBlock;
-      break;
-    case VKI_SEMGET:
-      break;
-    case VKI_SEMCTL:
-      {
-       UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" );
-       ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
-       break;
-      }
-    case VKI_SEMTIMEDOP:
-      ML_(generic_PRE_sys_semtimedop)( tid, ARG2, ARG5, ARG3, ARG6 );
-      *flags |= SfMayBlock;
-      break;
-    case VKI_MSGSND:
-      ML_(linux_PRE_sys_msgsnd)( tid, ARG2, ARG5, ARG3, ARG4 );
-      if ((ARG4 & VKI_IPC_NOWAIT) == 0)
-       *flags |= SfMayBlock;
-      break;
-    case VKI_MSGRCV:
-      {
-       Addr msgp;
-       Word msgtyp;
-
-       msgp = deref_Addr( tid,
-                          (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp),
-                          "msgrcv(msgp)" );
-       msgtyp = deref_Addr( tid,
-                            (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
-                            "msgrcv(msgp)" );
-
-       ML_(linux_PRE_sys_msgrcv)( tid, ARG2, msgp, ARG3, msgtyp, ARG4 );
-
-       if ((ARG4 & VKI_IPC_NOWAIT) == 0)
-         *flags |= SfMayBlock;
-       break;
-      }
-    case VKI_MSGGET:
-      break;
-    case VKI_MSGCTL:
-      ML_(linux_PRE_sys_msgctl)( tid, ARG2, ARG3, ARG5 );
-      break;
-    case VKI_SHMAT:
-      {
-       UWord w;
-       PRE_MEM_WRITE( "shmat(raddr)", ARG4, sizeof(Addr) );
-       w = ML_(generic_PRE_sys_shmat)( tid, ARG2, ARG5, ARG3 );
-       if (w == 0)
-         SET_STATUS_Failure( VKI_EINVAL );
-       else
-         ARG5 = w;
-       break;
-      }
-    case VKI_SHMDT:
-      if (!ML_(generic_PRE_sys_shmdt)(tid, ARG5))
-       SET_STATUS_Failure( VKI_EINVAL );
-      break;
-    case VKI_SHMGET:
-      break;
-    case VKI_SHMCTL: /* IPCOP_shmctl */
-      ML_(generic_PRE_sys_shmctl)( tid, ARG2, ARG3, ARG5 );
-      break;
-    default:
-      VG_(message)(Vg_DebugMsg, "FATAL: unhandled syscall(ipc) %ld\n", ARG1 );
-      VG_(core_panic)("... bye!\n");
-      break; /*NOTREACHED*/
-    }
-}
-
-POST(sys_ipc)
-{
-  vg_assert(SUCCESS);
-  switch (ARG1 /* call */) {
-  case VKI_SEMOP:
-  case VKI_SEMGET:
-    break;
-  case VKI_SEMCTL:
-    {
-      UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" );
-      ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
-      break;
-    }
-  case VKI_SEMTIMEDOP:
-  case VKI_MSGSND:
-    break;
-  case VKI_MSGRCV:
-    {
-      Addr msgp;
-      Word msgtyp;
-
-      msgp = deref_Addr( tid,
-                         (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp),
-                         "msgrcv(msgp)" );
-      msgtyp = deref_Addr( tid,
-                           (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
-                           "msgrcv(msgp)" );
-
-      ML_(linux_POST_sys_msgrcv)( tid, RES, ARG2, msgp, ARG3, msgtyp, ARG4 );
-      break;
-    }
-  case VKI_MSGGET:
-    break;
-  case VKI_MSGCTL:
-    ML_(linux_POST_sys_msgctl)( tid, RES, ARG2, ARG3, ARG5 );
-    break;
-  case VKI_SHMAT:
-    {
-      Addr addr;
-
-      /* force readability. before the syscall it is
-       * indeed uninitialized, as can be seen in
-       * glibc/sysdeps/unix/sysv/linux/shmat.c */
-      POST_MEM_WRITE( ARG4, sizeof( Addr ) );
-
-      addr = deref_Addr ( tid, ARG4, "shmat(addr)" );
-      ML_(generic_POST_sys_shmat)( tid, addr, ARG2, ARG5, ARG3 );
-      break;
-    }
-  case VKI_SHMDT:
-    ML_(generic_POST_sys_shmdt)( tid, RES, ARG5 );
-    break;
-  case VKI_SHMGET:
-    break;
-  case VKI_SHMCTL:
-    ML_(generic_POST_sys_shmctl)( tid, RES, ARG2, ARG3, ARG5 );
-    break;
-  default:
-    VG_(message)(Vg_DebugMsg,
-                "FATAL: unhandled syscall(ipc) %ld\n",
-                ARG1 );
-    VG_(core_panic)("... bye!\n");
-    break; /*NOTREACHED*/
-  }
-}
 
 PRE(sys_clone)
 {
@@ -1237,7 +1084,7 @@ static SyscallTableEntry syscall_table[] = {
 
 // _____(__NR_swapoff,           sys_swapoff),            // 115
    LINXY(__NR_sysinfo,           sys_sysinfo),            // 116
-   PLAXY(__NR_ipc,               sys_ipc),                // 117
+   LINXY(__NR_ipc,               sys_ipc),                // 117
    GENX_(__NR_fsync,             sys_fsync),              // 118
 // _____(__NR_sigreturn,         sys_sigreturn),          // 119
 
index 0dfc8bb6ac39d69ddff28ca7e62915c3e476e084..f33ef4656ee46caa6b93f80409f2b9c163903d10 100644 (file)
@@ -341,7 +341,6 @@ static SysRes do_clone ( ThreadId ptid,
 DECL_TEMPLATE(s390x_linux, sys_ptrace);
 DECL_TEMPLATE(s390x_linux, sys_socketcall);
 DECL_TEMPLATE(s390x_linux, sys_mmap);
-DECL_TEMPLATE(s390x_linux, sys_ipc);
 DECL_TEMPLATE(s390x_linux, sys_clone);
 DECL_TEMPLATE(s390x_linux, sys_sigreturn);
 DECL_TEMPLATE(s390x_linux, sys_rt_sigreturn);
@@ -781,160 +780,6 @@ PRE(sys_mmap)
    SET_STATUS_from_SysRes(r);
 }
 
-static Addr deref_Addr ( ThreadId tid, Addr a, Char* s )
-{
-   Addr* a_p = (Addr*)a;
-   PRE_MEM_READ( s, (Addr)a_p, sizeof(Addr) );
-   return *a_p;
-}
-
-PRE(sys_ipc)
-{
-  PRINT("sys_ipc ( %ld, %ld, %ld, %ld, %#lx, %ld )",
-        ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
-  // XXX: this is simplistic -- some args are not used in all circumstances.
-  PRE_REG_READ6(int, "ipc",
-               vki_uint, call, int, first, int, second, int, third,
-               void *, ptr, long, fifth)
-
-    switch (ARG1 /* call */) {
-    case VKI_SEMOP:
-      ML_(generic_PRE_sys_semop)( tid, ARG2, ARG5, ARG3 );
-      *flags |= SfMayBlock;
-      break;
-    case VKI_SEMGET:
-      break;
-    case VKI_SEMCTL:
-      {
-       UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" );
-       ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
-       break;
-      }
-    case VKI_SEMTIMEDOP:
-      ML_(generic_PRE_sys_semtimedop)( tid, ARG2, ARG5, ARG3, ARG6 );
-      *flags |= SfMayBlock;
-      break;
-    case VKI_MSGSND:
-      ML_(linux_PRE_sys_msgsnd)( tid, ARG2, ARG5, ARG3, ARG4 );
-      if ((ARG4 & VKI_IPC_NOWAIT) == 0)
-       *flags |= SfMayBlock;
-      break;
-    case VKI_MSGRCV:
-      {
-       Addr msgp;
-       Word msgtyp;
-
-       msgp = deref_Addr( tid,
-                          (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp),
-                          "msgrcv(msgp)" );
-       msgtyp = deref_Addr( tid,
-                            (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
-                            "msgrcv(msgp)" );
-
-       ML_(linux_PRE_sys_msgrcv)( tid, ARG2, msgp, ARG3, msgtyp, ARG4 );
-
-       if ((ARG4 & VKI_IPC_NOWAIT) == 0)
-         *flags |= SfMayBlock;
-       break;
-      }
-    case VKI_MSGGET:
-      break;
-    case VKI_MSGCTL:
-      ML_(linux_PRE_sys_msgctl)( tid, ARG2, ARG3, ARG5 );
-      break;
-    case VKI_SHMAT:
-      {
-       UWord w;
-       PRE_MEM_WRITE( "shmat(raddr)", ARG4, sizeof(Addr) );
-       w = ML_(generic_PRE_sys_shmat)( tid, ARG2, ARG5, ARG3 );
-       if (w == 0)
-         SET_STATUS_Failure( VKI_EINVAL );
-       else
-         ARG5 = w;
-       break;
-      }
-    case VKI_SHMDT:
-      if (!ML_(generic_PRE_sys_shmdt)(tid, ARG5))
-       SET_STATUS_Failure( VKI_EINVAL );
-      break;
-    case VKI_SHMGET:
-      break;
-    case VKI_SHMCTL: /* IPCOP_shmctl */
-      ML_(generic_PRE_sys_shmctl)( tid, ARG2, ARG3, ARG5 );
-      break;
-    default:
-      VG_(message)(Vg_DebugMsg, "FATAL: unhandled syscall(ipc) %ld", ARG1 );
-      VG_(core_panic)("... bye!\n");
-      break; /*NOTREACHED*/
-    }
-}
-
-POST(sys_ipc)
-{
-  vg_assert(SUCCESS);
-  switch (ARG1 /* call */) {
-  case VKI_SEMOP:
-  case VKI_SEMGET:
-    break;
-  case VKI_SEMCTL:
-    {
-      UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" );
-      ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
-      break;
-    }
-  case VKI_SEMTIMEDOP:
-  case VKI_MSGSND:
-    break;
-  case VKI_MSGRCV:
-    {
-      Addr msgp;
-      Word msgtyp;
-
-      msgp = deref_Addr( tid,
-                         (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp),
-                         "msgrcv(msgp)" );
-      msgtyp = deref_Addr( tid,
-                           (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
-                           "msgrcv(msgp)" );
-
-      ML_(linux_POST_sys_msgrcv)( tid, RES, ARG2, msgp, ARG3, msgtyp, ARG4 );
-      break;
-    }
-  case VKI_MSGGET:
-    break;
-  case VKI_MSGCTL:
-    ML_(linux_POST_sys_msgctl)( tid, RES, ARG2, ARG3, ARG5 );
-    break;
-  case VKI_SHMAT:
-    {
-      Addr addr;
-
-      /* force readability. before the syscall it is
-       * indeed uninitialized, as can be seen in
-       * glibc/sysdeps/unix/sysv/linux/shmat.c */
-      POST_MEM_WRITE( ARG4, sizeof( Addr ) );
-
-      addr = deref_Addr ( tid, ARG4, "shmat(addr)" );
-      ML_(generic_POST_sys_shmat)( tid, addr, ARG2, ARG5, ARG3 );
-      break;
-    }
-  case VKI_SHMDT:
-    ML_(generic_POST_sys_shmdt)( tid, RES, ARG5 );
-    break;
-  case VKI_SHMGET:
-    break;
-  case VKI_SHMCTL:
-    ML_(generic_POST_sys_shmctl)( tid, RES, ARG2, ARG3, ARG5 );
-    break;
-  default:
-    VG_(message)(Vg_DebugMsg,
-                "FATAL: unhandled syscall(ipc) %ld",
-                ARG1 );
-    VG_(core_panic)("... bye!\n");
-    break; /*NOTREACHED*/
-  }
-}
-
 PRE(sys_clone)
 {
    UInt cloneflags;
@@ -1254,7 +1099,7 @@ static SyscallTableEntry syscall_table[] = {
 
 // ?????(__NR_swapoff, ),                                             // 115
    LINXY(__NR_sysinfo,  sys_sysinfo),                                 // 116
-   PLAXY(__NR_ipc, sys_ipc),                                          // 117
+   LINXY(__NR_ipc, sys_ipc),                                          // 117
    GENX_(__NR_fsync,  sys_fsync),                                     // 118
    PLAX_(__NR_sigreturn, sys_sigreturn),                              // 119
 
index 5009c68b67655468be4544a2d11b604fb25fc12c..060f641c39dd0743dedc9f7258451244a40e0dbe 100644 (file)
@@ -800,7 +800,6 @@ DECL_TEMPLATE(x86_linux, sys_clone);
 DECL_TEMPLATE(x86_linux, old_mmap);
 DECL_TEMPLATE(x86_linux, sys_mmap2);
 DECL_TEMPLATE(x86_linux, sys_sigreturn);
-DECL_TEMPLATE(x86_linux, sys_ipc);
 DECL_TEMPLATE(x86_linux, sys_rt_sigreturn);
 DECL_TEMPLATE(x86_linux, sys_modify_ldt);
 DECL_TEMPLATE(x86_linux, sys_set_thread_area);
@@ -1177,159 +1176,6 @@ POST(sys_ptrace)
    }
 }
 
-static Addr deref_Addr ( ThreadId tid, Addr a, Char* s )
-{
-   Addr* a_p = (Addr*)a;
-   PRE_MEM_READ( s, (Addr)a_p, sizeof(Addr) );
-   return *a_p;
-}
-PRE(sys_ipc)
-{
-   PRINT("sys_ipc ( %ld, %ld, %ld, %ld, %#lx, %ld )", ARG1,ARG2,ARG3,ARG4,ARG5,ARG6);
-   // XXX: this is simplistic -- some args are not used in all circumstances.
-   PRE_REG_READ6(int, "ipc",
-                 vki_uint, call, int, first, int, second, int, third,
-                 void *, ptr, long, fifth)
-
-   switch (ARG1 /* call */) {
-   case VKI_SEMOP:
-      ML_(generic_PRE_sys_semop)( tid, ARG2, ARG5, ARG3 );
-      *flags |= SfMayBlock;
-      break;
-   case VKI_SEMGET:
-      break;
-   case VKI_SEMCTL:
-   {
-      UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" );
-      ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
-      break;
-   }
-   case VKI_SEMTIMEDOP:
-      ML_(generic_PRE_sys_semtimedop)( tid, ARG2, ARG5, ARG3, ARG6 );
-      *flags |= SfMayBlock;
-      break;
-   case VKI_MSGSND:
-      ML_(linux_PRE_sys_msgsnd)( tid, ARG2, ARG5, ARG3, ARG4 );
-      if ((ARG4 & VKI_IPC_NOWAIT) == 0)
-         *flags |= SfMayBlock;
-      break;
-   case VKI_MSGRCV:
-   {
-      Addr msgp;
-      Word msgtyp;
-      msgp = deref_Addr( tid,
-                        (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp),
-                        "msgrcv(msgp)" );
-      msgtyp = deref_Addr( tid,
-                          (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
-                          "msgrcv(msgp)" );
-
-      ML_(linux_PRE_sys_msgrcv)( tid, ARG2, msgp, ARG3, msgtyp, ARG4 );
-
-      if ((ARG4 & VKI_IPC_NOWAIT) == 0)
-         *flags |= SfMayBlock;
-      break;
-   }
-   case VKI_MSGGET:
-      break;
-   case VKI_MSGCTL:
-      ML_(linux_PRE_sys_msgctl)( tid, ARG2, ARG3, ARG5 );
-      break;
-   case VKI_SHMAT:
-   {
-      UWord w;
-      PRE_MEM_WRITE( "shmat(raddr)", ARG4, sizeof(Addr) );
-      w = ML_(generic_PRE_sys_shmat)( tid, ARG2, ARG5, ARG3 );
-      if (w == 0)
-         SET_STATUS_Failure( VKI_EINVAL );
-      else
-         ARG5 = w;
-      break;
-   }
-   case VKI_SHMDT:
-      if (!ML_(generic_PRE_sys_shmdt)(tid, ARG5))
-        SET_STATUS_Failure( VKI_EINVAL );
-      break;
-   case VKI_SHMGET:
-      break;
-   case VKI_SHMCTL: /* IPCOP_shmctl */
-      ML_(generic_PRE_sys_shmctl)( tid, ARG2, ARG3, ARG5 );
-      break;
-   default:
-      VG_(message)(Vg_DebugMsg, "FATAL: unhandled syscall(ipc) %ld\n", ARG1 );
-      VG_(core_panic)("... bye!\n");
-      break; /*NOTREACHED*/
-   }   
-}
-
-POST(sys_ipc)
-{
-   vg_assert(SUCCESS);
-   switch (ARG1 /* call */) {
-   case VKI_SEMOP:
-   case VKI_SEMGET:
-      break;
-   case VKI_SEMCTL:
-   {
-      UWord arg = deref_Addr( tid, ARG5, "semctl(arg)" );
-      ML_(generic_PRE_sys_semctl)( tid, ARG2, ARG3, ARG4, arg );
-      break;
-   }
-   case VKI_SEMTIMEDOP:
-   case VKI_MSGSND:
-      break;
-   case VKI_MSGRCV:
-   {
-      Addr msgp;
-      Word msgtyp;
-
-      msgp = deref_Addr( tid,
-                        (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgp),
-                        "msgrcv(msgp)" );
-      msgtyp = deref_Addr( tid,
-                          (Addr) (&((struct vki_ipc_kludge *)ARG5)->msgtyp),
-                          "msgrcv(msgp)" );
-
-      ML_(linux_POST_sys_msgrcv)( tid, RES, ARG2, msgp, ARG3, msgtyp, ARG4 );
-      break;
-   }
-   case VKI_MSGGET:
-      break;
-   case VKI_MSGCTL:
-      ML_(linux_POST_sys_msgctl)( tid, RES, ARG2, ARG3, ARG5 );
-      break;
-   case VKI_SHMAT:
-   {
-      Addr addr;
-
-      /* force readability. before the syscall it is
-       * indeed uninitialized, as can be seen in
-       * glibc/sysdeps/unix/sysv/linux/shmat.c */
-      POST_MEM_WRITE( ARG4, sizeof( Addr ) );
-
-      addr = deref_Addr ( tid, ARG4, "shmat(addr)" );
-      ML_(generic_POST_sys_shmat)( tid, addr, ARG2, ARG5, ARG3 );
-      break;
-   }
-   case VKI_SHMDT:
-      ML_(generic_POST_sys_shmdt)( tid, RES, ARG5 );
-      break;
-   case VKI_SHMGET:
-      break;
-   case VKI_SHMCTL:
-      ML_(generic_POST_sys_shmctl)( tid, RES, ARG2, ARG3, ARG5 );
-      break;
-   default:
-      VG_(message)(Vg_DebugMsg,
-                  "FATAL: unhandled syscall(ipc) %ld\n",
-                  ARG1 );
-      VG_(core_panic)("... bye!\n");
-      break; /*NOTREACHED*/
-   }
-}
-
 PRE(old_mmap)
 {
    /* struct mmap_arg_struct {           
@@ -1954,7 +1800,7 @@ static SyscallTableEntry syscall_table[] = {
 //zz 
 //zz    //   (__NR_swapoff,           sys_swapoff),        // 115 */Linux 
    LINXY(__NR_sysinfo,           sys_sysinfo),        // 116
-   PLAXY(__NR_ipc,               sys_ipc),            // 117
+   LINXY(__NR_ipc,               sys_ipc),            // 117
    GENX_(__NR_fsync,             sys_fsync),          // 118
    PLAX_(__NR_sigreturn,         sys_sigreturn),      // 119 ?/Linux