]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Clean up handling of socket system calls on amd64-linux, so that the
authorJulian Seward <jseward@acm.org>
Tue, 1 Mar 2005 19:00:30 +0000 (19:00 +0000)
committerJulian Seward <jseward@acm.org>
Tue, 1 Mar 2005 19:00:30 +0000 (19:00 +0000)
code for them is shared between amd64-linux and x86-linux.

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

coregrind/amd64-linux/syscalls.c
coregrind/core.h
coregrind/vg_syscalls.c

index 9d35b8ea5d6739f83a17df4d76310c1fd2cdc9e0..a12d9f2bb074ac9713ab0a85767e4043412cf6d1 100644 (file)
@@ -173,9 +173,286 @@ PRE(sys_arch_prctl, 0)
    SET_RESULT( 0 );
 }
 
+/* --- BEGIN socketcall unwrappers for amd64-linux. --- */
+
+PRE(sys_socketcall, MayBlock)
+{
+#  define ARG2_0 (ARG2)
+#  define ARG2_1 (ARG3)
+#  define ARG2_2 (ARG4)
+#  define ARG2_3 (ARG5)
+#  define ARG2_4 (ARG6)
+
+   PRINT("sys_socketcall(amd64) %lld (0x%llx, 0x%llx, "
+         "0x%llx, 0x%llx, 0x%llx,  )",
+         ARG1,ARG2_0,ARG2_1,ARG2_2,ARG2_3,ARG2_4);
+
+   PRE_REG_READ2(long, "socketcall", int, call, unsigned long *, args);
+
+   switch (ARG1 /* request */) {
+
+//   case VKI_SYS_SOCKETPAIR:
+//      /* int socketpair(int d, int type, int protocol, int sv[2]); */
+//      PRE_MEM_READ( "socketcall.socketpair(args)", ARG2, 4*sizeof(Addr) );
+//      generic_PRE_sys_socketpair( tid, ARG2_0, ARG2_1, ARG2_2, ARG2_3 );
+//      break;
+
+   case VKI_SYS_SOCKET:
+      /* int socket(int domain, int type, int protocol); */
+      PRE_MEM_READ( "socketcall.socket(args)", ARG2, 3*sizeof(Addr) );
+      break;
+
+//   case VKI_SYS_BIND:
+//      /* int bind(int sockfd, struct sockaddr *my_addr, 
+//      int addrlen); */
+//      PRE_MEM_READ( "socketcall.bind(args)", ARG2, 3*sizeof(Addr) );
+//      generic_PRE_sys_bind( tid, ARG2_0, ARG2_1, ARG2_2 );
+//      break;
+//               
+//   case VKI_SYS_LISTEN:
+//      /* int listen(int s, int backlog); */
+//      PRE_MEM_READ( "socketcall.listen(args)", ARG2, 2*sizeof(Addr) );
+//      break;
+//
+//   case VKI_SYS_ACCEPT: {
+//      /* int accept(int s, struct sockaddr *addr, int *addrlen); */
+//      PRE_MEM_READ( "socketcall.accept(args)", ARG2, 3*sizeof(Addr) );
+//      generic_PRE_sys_accept( tid, ARG2_0, ARG2_1, ARG2_2 );
+//      break;
+//   }
+//
+//   case VKI_SYS_SENDTO:
+//      /* int sendto(int s, const void *msg, int len, 
+//                    unsigned int flags, 
+//                    const struct sockaddr *to, int tolen); */
+//      PRE_MEM_READ( "socketcall.sendto(args)", ARG2, 6*sizeof(Addr) );
+//      generic_PRE_sys_sendto( tid, ARG2_0, ARG2_1, ARG2_2, 
+//                                   ARG2_3, ARG2_4, ARG2_5 );
+//      break;
+//
+//   case VKI_SYS_SEND:
+//      /* int send(int s, const void *msg, size_t len, int flags); */
+//      PRE_MEM_READ( "socketcall.send(args)", ARG2, 4*sizeof(Addr) );
+//      generic_PRE_sys_send( tid, ARG2_0, ARG2_1, ARG2_2 );
+//      break;
+//
+//   case VKI_SYS_RECVFROM:
+//      /* int recvfrom(int s, void *buf, int len, unsigned int flags,
+//      struct sockaddr *from, int *fromlen); */
+//      PRE_MEM_READ( "socketcall.recvfrom(args)", ARG2, 6*sizeof(Addr) );
+//      generic_PRE_sys_recvfrom( tid, ARG2_0, ARG2_1, ARG2_2, 
+//                                     ARG2_3, ARG2_4, ARG2_5 );
+//      break;
+   
+   case VKI_SYS_RECV:
+      /* int recv(int s, void *buf, int len, unsigned int flags); */
+      /* man 2 recv says:
+        The  recv call is normally used only on a connected socket
+        (see connect(2)) and is identical to recvfrom with a NULL
+        from parameter.
+      */
+      PRE_MEM_READ( "socketcall.recv(args)", ARG2, 4*sizeof(Addr) );
+      VG_(generic_PRE_sys_recv)( tid, ARG2_0, ARG2_1, ARG2_2 );
+      break;
+
+//   case VKI_SYS_CONNECT:
+//      /* int connect(int sockfd, 
+//                     struct sockaddr *serv_addr, int addrlen ); */
+//      PRE_MEM_READ( "socketcall.connect(args)", ARG2, 3*sizeof(Addr) );
+//      generic_PRE_sys_connect( tid, ARG2_0, ARG2_1, ARG2_2 );
+//      break;
+//
+//   case VKI_SYS_SETSOCKOPT:
+//      /* int setsockopt(int s, int level, int optname, 
+//                        const void *optval, int optlen); */
+//      PRE_MEM_READ( "socketcall.setsockopt(args)", ARG2, 5*sizeof(Addr) );
+//      generic_PRE_sys_setsockopt( tid, ARG2_0, ARG2_1, ARG2_2, 
+//                                       ARG2_3, ARG2_4 );
+//      break;
+//
+//   case VKI_SYS_GETSOCKOPT:
+//      /* int getsockopt(int s, int level, int optname, 
+//                        void *optval, socklen_t *optlen); */
+//      PRE_MEM_READ( "socketcall.getsockopt(args)", ARG2, 5*sizeof(Addr) );
+//      generic_PRE_sys_getsockopt( tid, ARG2_0, ARG2_1, ARG2_2, 
+//                                       ARG2_3, ARG2_4 );
+//      break;
+//
+//   case VKI_SYS_GETSOCKNAME:
+//      /* int getsockname(int s, struct sockaddr* name, int* namelen) */
+//      PRE_MEM_READ( "socketcall.getsockname(args)", ARG2, 3*sizeof(Addr) );
+//      generic_PRE_sys_getsockname( tid, ARG2_0, ARG2_1, ARG2_2 );
+//      break;
+//
+//   case VKI_SYS_GETPEERNAME:
+//      /* int getpeername(int s, struct sockaddr* name, int* namelen) */
+//      PRE_MEM_READ( "socketcall.getpeername(args)", ARG2, 3*sizeof(Addr) );
+//      generic_PRE_sys_getpeername( tid, ARG2_0, ARG2_1, ARG2_2 );
+//      break;
+//
+//   case VKI_SYS_SHUTDOWN:
+//      /* int shutdown(int s, int how); */
+//      PRE_MEM_READ( "socketcall.shutdown(args)", ARG2, 2*sizeof(Addr) );
+//      break;
+//
+//   case VKI_SYS_SENDMSG: {
+//      /* int sendmsg(int s, const struct msghdr *msg, int flags); */
+//
+//      /* this causes warnings, and I don't get why. glibc bug?
+//       * (after all it's glibc providing the arguments array)
+//       PRE_MEM_READ( "socketcall.sendmsg(args)", ARG2, 3*sizeof(Addr) );
+//      */
+//      generic_PRE_sys_sendmsg( tid, ARG2_0, ARG2_1 );
+//      break;
+//   }
+//      
+//   case VKI_SYS_RECVMSG: {
+//      /* int recvmsg(int s, struct msghdr *msg, int flags); */
+//
+//      /* this causes warnings, and I don't get why. glibc bug?
+//       * (after all it's glibc providing the arguments array)
+//       PRE_MEM_READ("socketcall.recvmsg(args)", ARG2, 3*sizeof(Addr) );
+//      */
+//      generic_PRE_sys_recvmsg( tid, ARG2_0, ARG2_1 );
+//      break;
+//   }
+
+   default:
+      VG_(message)(Vg_DebugMsg,"Warning: amd64-linux: "
+                               "unhandled socketcall %lld",ARG1);
+      SET_RESULT( -VKI_EINVAL );
+      break;
+   }
+#  undef ARG2_0
+#  undef ARG2_1
+#  undef ARG2_2
+#  undef ARG2_3
+#  undef ARG2_4
+}
+
+POST(sys_socketcall)
+{
+#  define ARG2_0 (ARG2)
+#  define ARG2_1 (ARG3)
+#  define ARG2_2 (ARG4)
+#  define ARG2_3 (ARG5)
+#  define ARG2_4 (ARG6)
+   UWord r;
+   switch (ARG1 /* request */) {
+
+//   case VKI_SYS_SOCKETPAIR:
+//      generic_POST_sys_socketpair( tid, RES, ARG2_0, 
+//                                        ARG2_1, ARG2_2, ARG2_3 );
+//      break;
+
+   case VKI_SYS_SOCKET:
+     r = VG_(generic_POST_sys_socket)( tid, RES );
+     SET_RESULT(r);
+     break;
+
+//   case VKI_SYS_BIND:
+//      /* int bind(int sockfd, struct sockaddr *my_addr, 
+//                     int addrlen); */
+//      break;
+//               
+//   case VKI_SYS_LISTEN:
+//      /* int listen(int s, int backlog); */
+//      break;
+//
+//   case VKI_SYS_ACCEPT:
+//      /* int accept(int s, struct sockaddr *addr, int *addrlen); */
+//     r = generic_POST_sys_accept( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
+//     SET_RESULT(r);
+//     break;
+//
+//   case VKI_SYS_SENDTO:
+//      break;
+//
+//   case VKI_SYS_SEND:
+//      break;
+//
+//   case VKI_SYS_RECVFROM:
+//      generic_POST_sys_recvfrom( tid, RES, ARG2_0, ARG2_1, ARG2_2,
+//                                           ARG2_3, ARG2_4, ARG2_5 );
+//      break;
+
+   case VKI_SYS_RECV:
+      VG_(generic_POST_sys_recv)( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
+      break;
+
+//   case VKI_SYS_CONNECT:
+//      break;
+//
+//   case VKI_SYS_SETSOCKOPT:
+//      break;
+//
+//   case VKI_SYS_GETSOCKOPT:
+//      generic_POST_sys_getsockopt( tid, RES, ARG2_0, ARG2_1, 
+//                                             ARG2_2, ARG2_3, ARG2_4 );
+//      break;
+//
+//   case VKI_SYS_GETSOCKNAME:
+//      generic_POST_sys_getsockname( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
+//      break;
+//
+//   case VKI_SYS_GETPEERNAME:
+//      generic_POST_sys_getpeername( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
+//      break;
+//
+//   case VKI_SYS_SHUTDOWN:
+//      break;
+//
+//   case VKI_SYS_SENDMSG:
+//      break;
+//
+//   case VKI_SYS_RECVMSG:
+//     generic_POST_sys_recvmsg( tid, RES, ARG2_0, ARG2_1 );
+//     break;
+
+   default:
+      VG_(message)(Vg_DebugMsg,"FATAL: amd64-linux: "
+                               "unhandled socketcall %lld",ARG1);
+      VG_(core_panic)("... bye!\n");
+      break; /*NOTREACHED*/
+   }
+#  undef ARG2_0
+#  undef ARG2_1
+#  undef ARG2_2
+#  undef ARG2_3
+#  undef ARG2_4
+}
+
+/* --- END socketcall unwrappers for amd64-linux. --- */
+
+PRE(sys_setsockopt, 0)
+{
+   /* int setsockopt(int s, int level, int optname, 
+                     const void *optval, int optlen); */
+   VG_(generic_PRE_sys_setsockopt)(tid, ARG1,ARG2,ARG3,ARG4,ARG5);
+}
+
+PRE(sys_connect, MayBlock)
+{
+   /* int connect(int sockfd, 
+                  struct sockaddr *serv_addr, int addrlen ); */
+   VG_(generic_PRE_sys_connect)(tid, ARG1,ARG2,ARG3);
+}
+
+PRE(sys_recvmsg, MayBlock)
+{
+   /* int recvmsg(int s, struct msghdr *msg, int flags); */
+   VG_(generic_PRE_sys_recvmsg)(tid, ARG1,ARG2);
+}
+POST(sys_recvmsg)
+{
+   VG_(generic_POST_sys_recvmsg)(tid, RES,ARG1,ARG2);
+}
+
+
 #undef PRE
 #undef POST
 
+
 /* ---------------------------------------------------------------------
    The AMD64/Linux syscall table
    ------------------------------------------------------------------ */
@@ -201,7 +478,7 @@ const struct SyscallTableEntry VGA_(syscall_table)[] = {
 
    GENXY(__NR_fstat,             sys_newfstat),       // 5 
    GENXY(__NR_lstat,             sys_newlstat),       // 6 
-   //   (__NR_poll,              sys_poll),           // 7 
+   GENXY(__NR_poll,              sys_poll),           // 7 
    GENX_(__NR_lseek,             sys_lseek),          // 8 
    GENXY(__NR_mmap,              sys_mmap2),          // 9 
 
@@ -242,14 +519,14 @@ const struct SyscallTableEntry VGA_(syscall_table)[] = {
    GENX_(__NR_getpid,            sys_getpid),         // 39 
 
    //   (__NR_sendfile,          sys_sendfile64),     // 40 
-   //   (__NR_socket,            sys_socket),         // 41 
-   //   (__NR_connect,           sys_connect),        // 42 
+   PLAXY(__NR_socket,            sys_socketcall),     // 41 
+   PLAX_(__NR_connect,           sys_connect),        // 42
    //   (__NR_accept,            sys_accept),         // 43 
    //   (__NR_sendto,            sys_sendto),         // 44 
 
    //   (__NR_recvfrom,          sys_recvfrom),       // 45 
    //   (__NR_sendmsg,           sys_sendmsg),        // 46 
-   //   (__NR_recvmsg,           sys_recvmsg),        // 47 
+   PLAXY(__NR_recvmsg,           sys_recvmsg),        // 47
    //   (__NR_shutdown,          sys_shutdown),       // 48 
    //   (__NR_bind,              sys_bind),           // 49 
 
@@ -257,7 +534,7 @@ const struct SyscallTableEntry VGA_(syscall_table)[] = {
    //   (__NR_getsockname,       sys_getsockname),    // 51 
    //   (__NR_getpeername,       sys_getpeername),    // 52 
    //   (__NR_socketpair,        sys_socketpair),     // 53 
-   //   (__NR_setsockopt,        sys_setsockopt),     // 54 
+   PLAX_(__NR_setsockopt,        sys_setsockopt),     // 54
 
    //   (__NR_getsockopt,        sys_getsockopt),     // 55 
    //   (__NR_clone,             stub_clone),         // 56 
@@ -309,7 +586,7 @@ const struct SyscallTableEntry VGA_(syscall_table)[] = {
 
    //   (__NR_umask,             sys_umask),          // 95 
    //   (__NR_gettimeofday,      sys_gettimeofday),   // 96 
-   //   (__NR_getrlimit,         sys_getrlimit),      // 97 
+   GENXY(__NR_getrlimit,         sys_getrlimit),      // 97 
    //   (__NR_getrusage,         sys_getrusage),      // 98 
    //   (__NR_sysinfo,           sys_sysinfo),        // 99 
 
index ac62debf5dbcf6ffdb36ae2c1c1f3e2e17999db4..a85b67cca3d170e985ef780221158064db4bc406 100644 (file)
@@ -1727,6 +1727,40 @@ GEN_SYSCALL_WRAPPER(sys_mq_getsetattr);         // * P?
 #define POST_MEM_WRITE(zzaddr, zzlen) \
    VG_TRACK( post_mem_write, Vg_CoreSysCall, tid, zzaddr, zzlen)
 
+
+//////////////////////////////////////////////////////////
+
+#define TId ThreadId
+#define UW  UWord
+
+extern void  VG_(generic_PRE_sys_socketpair)   ( TId, UW, UW, UW, UW );
+extern UWord VG_(generic_POST_sys_socketpair)  ( TId, UW, UW, UW, UW, UW );
+extern UWord VG_(generic_POST_sys_socket)      ( TId, UW );
+extern void  VG_(generic_PRE_sys_bind)         ( TId, UW, UW, UW );
+extern void  VG_(generic_PRE_sys_accept)       ( TId, UW, UW, UW );
+extern UWord VG_(generic_POST_sys_accept)      ( TId, UW, UW, UW, UW );
+extern void  VG_(generic_PRE_sys_sendto)       ( TId, UW, UW, UW, UW, UW, UW );
+extern void  VG_(generic_PRE_sys_send)         ( TId, UW, UW, UW );
+extern void  VG_(generic_PRE_sys_recvfrom)     ( TId, UW, UW, UW, UW, UW, UW );
+extern void  VG_(generic_POST_sys_recvfrom)    ( TId, UW, UW, UW, UW, UW, UW, UW );
+extern void  VG_(generic_PRE_sys_recv)         ( TId, UW, UW, UW );
+extern void  VG_(generic_POST_sys_recv)        ( TId, UW, UW, UW, UW );
+extern void  VG_(generic_PRE_sys_connect)      ( TId, UW, UW, UW );
+extern void  VG_(generic_PRE_sys_setsockopt)   ( TId, UW, UW, UW, UW, UW );
+extern void  VG_(generic_PRE_sys_getsockopt)   ( TId, UW, UW, UW, UW, UW );
+extern void  VG_(generic_POST_sys_getsockopt)  ( TId, UW, UW, UW, UW, UW, UW );
+extern void  VG_(generic_PRE_sys_getsockname)  ( TId, UW, UW, UW );
+extern void  VG_(generic_POST_sys_getsockname) ( TId, UW, UW, UW, UW );
+extern void  VG_(generic_PRE_sys_getpeername)  ( TId, UW, UW, UW );
+extern void  VG_(generic_POST_sys_getpeername) ( TId, UW, UW, UW, UW );
+extern void  VG_(generic_PRE_sys_sendmsg)      ( TId, UW, UW );
+extern void  VG_(generic_PRE_sys_recvmsg)      ( TId, UW, UW );
+extern void  VG_(generic_POST_sys_recvmsg)     ( TId, UW, UW, UW );
+
+#undef TID
+#undef UW
+
+
 /* ---------------------------------------------------------------------
    Exports of vg_transtab.c
    ------------------------------------------------------------------ */
index 2dbe789d521bba3122e163c51c2d4cdd7ee05ec9..0f0277572f3984b5e87af90f7fad6d5ab4cd31c9 100644 (file)
@@ -972,7 +972,8 @@ Bool VG_(fd_allowed)(Int fd, const Char *syscallname, ThreadId tid, Bool soft)
 
 /* ------ */
 
-void generic_PRE_sys_socketpair ( ThreadId tid,
+void 
+VG_(generic_PRE_sys_socketpair) ( ThreadId tid,
                                   UWord arg0, UWord arg1, 
                                   UWord arg2, UWord arg3 )
 {
@@ -981,10 +982,11 @@ void generic_PRE_sys_socketpair ( ThreadId tid,
                   arg3, 2*sizeof(int) );
 }
 
-UWord generic_POST_sys_socketpair ( ThreadId tid,
-                                    UWord res,
-                                    UWord arg0, UWord arg1, 
-                                    UWord arg2, UWord arg3 )
+UWord 
+VG_(generic_POST_sys_socketpair) ( ThreadId tid,
+                                   UWord res,
+                                   UWord arg0, UWord arg1, 
+                                   UWord arg2, UWord arg3 )
 {
    UWord r = res;
    Int fd1 = ((Int*)arg3)[0];
@@ -1007,7 +1009,8 @@ UWord generic_POST_sys_socketpair ( ThreadId tid,
 
 /* ------ */
 
-UWord generic_POST_sys_socket ( ThreadId tid, UWord res )
+UWord 
+VG_(generic_POST_sys_socket) ( ThreadId tid, UWord res )
 {
    UWord r = res;
    if (!VG_(fd_allowed)(res, "socket", tid, True)) {
@@ -1022,7 +1025,8 @@ UWord generic_POST_sys_socket ( ThreadId tid, UWord res )
 
 /* ------ */
 
-void generic_PRE_sys_bind ( ThreadId tid,
+void 
+VG_(generic_PRE_sys_bind) ( ThreadId tid,
                             UWord arg0, UWord arg1, UWord arg2 )
 {
    /* int bind(int sockfd, struct sockaddr *my_addr, 
@@ -1035,7 +1039,8 @@ void generic_PRE_sys_bind ( ThreadId tid,
 
 /* ------ */
 
-void generic_PRE_sys_accept ( ThreadId tid,
+void 
+VG_(generic_PRE_sys_accept) ( ThreadId tid,
                               UWord arg0, UWord arg1, UWord arg2 )
 {
    /* int accept(int s, struct sockaddr *addr, int *addrlen); */
@@ -1047,9 +1052,10 @@ void generic_PRE_sys_accept ( ThreadId tid,
                               "socketcall.accept(addrlen_in)" );
 }
 
-UWord generic_POST_sys_accept ( ThreadId tid,
-                                UWord res,
-                                UWord arg0, UWord arg1, UWord arg2 )
+UWord 
+VG_(generic_POST_sys_accept) ( ThreadId tid,
+                               UWord res,
+                               UWord arg0, UWord arg1, UWord arg2 )
 {
    UWord r = res;
    if (!VG_(fd_allowed)(res, "accept", tid, True)) {
@@ -1069,7 +1075,8 @@ UWord generic_POST_sys_accept ( ThreadId tid,
 
 /* ------ */
 
-void generic_PRE_sys_sendto ( ThreadId tid, 
+void 
+VG_(generic_PRE_sys_sendto) ( ThreadId tid, 
                               UWord arg0, UWord arg1, UWord arg2,
                               UWord arg3, UWord arg4, UWord arg5 )
 {
@@ -1087,7 +1094,8 @@ void generic_PRE_sys_sendto ( ThreadId tid,
 
 /* ------ */
 
-void generic_PRE_sys_send ( ThreadId tid,
+void 
+VG_(generic_PRE_sys_send) ( ThreadId tid,
                             UWord arg0, UWord arg1, UWord arg2 )
 {
    /* int send(int s, const void *msg, size_t len, int flags); */
@@ -1099,7 +1107,8 @@ void generic_PRE_sys_send ( ThreadId tid,
 
 /* ------ */
 
-void generic_PRE_sys_recvfrom ( ThreadId tid, 
+void 
+VG_(generic_PRE_sys_recvfrom) ( ThreadId tid, 
                                 UWord arg0, UWord arg1, UWord arg2,
                                 UWord arg3, UWord arg4, UWord arg5 )
 {
@@ -1116,7 +1125,8 @@ void generic_PRE_sys_recvfrom ( ThreadId tid,
                               "socketcall.recvfrom(fromlen_in)" );
 }
 
-void generic_POST_sys_recvfrom ( ThreadId tid,
+void 
+VG_(generic_POST_sys_recvfrom) ( ThreadId tid,
                                  UWord res,
                                  UWord arg0, UWord arg1, UWord arg2,
                                  UWord arg3, UWord arg4, UWord arg5 )
@@ -1134,7 +1144,8 @@ void generic_POST_sys_recvfrom ( ThreadId tid,
 
 /* ------ */
 
-void generic_PRE_sys_recv ( ThreadId tid,
+void 
+VG_(generic_PRE_sys_recv) ( ThreadId tid,
                             UWord arg0, UWord arg1, UWord arg2 )
 {
    /* int recv(int s, void *buf, int len, unsigned int flags); */
@@ -1148,7 +1159,8 @@ void generic_PRE_sys_recv ( ThreadId tid,
                   arg2  /* len */ );
 }
 
-void generic_POST_sys_recv ( ThreadId tid, 
+void 
+VG_(generic_POST_sys_recv) ( ThreadId tid, 
                              UWord res,
                              UWord arg0, UWord arg1, UWord arg2 )
 {
@@ -1160,7 +1172,8 @@ void generic_POST_sys_recv ( ThreadId tid,
 
 /* ------ */
 
-void generic_PRE_sys_connect ( ThreadId tid,
+void 
+VG_(generic_PRE_sys_connect) ( ThreadId tid,
                                UWord arg0, UWord arg1, UWord arg2 )
 {
    /* int connect(int sockfd, 
@@ -1175,7 +1188,8 @@ void generic_PRE_sys_connect ( ThreadId tid,
 
 /* ------ */
 
-void generic_PRE_sys_setsockopt ( ThreadId tid, 
+void 
+VG_(generic_PRE_sys_setsockopt) ( ThreadId tid, 
                                   UWord arg0, UWord arg1, UWord arg2,
                                   UWord arg3, UWord arg4 )
 {
@@ -1188,7 +1202,8 @@ void generic_PRE_sys_setsockopt ( ThreadId tid,
 
 /* ------ */
 
-void generic_PRE_sys_getsockopt ( ThreadId tid, 
+void 
+VG_(generic_PRE_sys_getsockopt) ( ThreadId tid, 
                                   UWord arg0, UWord arg1, UWord arg2,
                                   UWord arg3, UWord arg4 )
 {
@@ -1203,7 +1218,8 @@ void generic_PRE_sys_getsockopt ( ThreadId tid,
                               "socketcall.getsockopt(optlen)" );
 }
 
-void generic_POST_sys_getsockopt ( ThreadId tid,
+void 
+VG_(generic_POST_sys_getsockopt) ( ThreadId tid,
                                    UWord res,
                                    UWord arg0, UWord arg1, UWord arg2,
                                    UWord arg3, UWord arg4 )
@@ -1217,7 +1233,8 @@ void generic_POST_sys_getsockopt ( ThreadId tid,
 
 /* ------ */
 
-void generic_PRE_sys_getsockname ( ThreadId tid,
+void 
+VG_(generic_PRE_sys_getsockname) ( ThreadId tid,
                                    UWord arg0, UWord arg1, UWord arg2 )
 {
    /* int getsockname(int s, struct sockaddr* name, int* namelen) */
@@ -1229,7 +1246,8 @@ void generic_PRE_sys_getsockname ( ThreadId tid,
                            "socketcall.getsockname(namelen_in)" );
 }
 
-void generic_POST_sys_getsockname ( ThreadId tid,
+void 
+VG_(generic_POST_sys_getsockname) ( ThreadId tid,
                                     UWord res,
                                     UWord arg0, UWord arg1, UWord arg2 )
 {
@@ -1241,7 +1259,8 @@ void generic_POST_sys_getsockname ( ThreadId tid,
 
 /* ------ */
 
-void generic_PRE_sys_getpeername ( ThreadId tid,
+void 
+VG_(generic_PRE_sys_getpeername) ( ThreadId tid,
                                    UWord arg0, UWord arg1, UWord arg2 )
 {
    /* int getpeername(int s, struct sockaddr* name, int* namelen) */
@@ -1253,7 +1272,8 @@ void generic_PRE_sys_getpeername ( ThreadId tid,
                            "socketcall.getpeername(namelen_in)" );
 }
 
-void generic_POST_sys_getpeername ( ThreadId tid,
+void 
+VG_(generic_POST_sys_getpeername) ( ThreadId tid,
                                     UWord res,
                                     UWord arg0, UWord arg1, UWord arg2 )
 {
@@ -1265,7 +1285,8 @@ void generic_POST_sys_getpeername ( ThreadId tid,
 
 /* ------ */
 
-void generic_PRE_sys_sendmsg ( ThreadId tid,
+void 
+VG_(generic_PRE_sys_sendmsg) ( ThreadId tid,
                                UWord arg0, UWord arg1 )
 {
    /* int sendmsg(int s, const struct msghdr *msg, int flags); */
@@ -1275,7 +1296,8 @@ void generic_PRE_sys_sendmsg ( ThreadId tid,
 
 /* ------ */
 
-void generic_PRE_sys_recvmsg ( ThreadId tid,
+void
+VG_(generic_PRE_sys_recvmsg) ( ThreadId tid,
                                UWord arg0, UWord arg1 )
 {
    /* int recvmsg(int s, struct msghdr *msg, int flags); */
@@ -1283,7 +1305,8 @@ void generic_PRE_sys_recvmsg ( ThreadId tid,
    msghdr_foreachfield ( tid, msg, pre_mem_write_recvmsg );
 }
 
-void generic_POST_sys_recvmsg ( ThreadId tid,
+void 
+VG_(generic_POST_sys_recvmsg) ( ThreadId tid,
                                 UWord res,
                                 UWord arg0, UWord arg1 )
 {
@@ -4536,7 +4559,7 @@ PRE(sys_socketcall, MayBlock)
    case VKI_SYS_SOCKETPAIR:
       /* int socketpair(int d, int type, int protocol, int sv[2]); */
       PRE_MEM_READ( "socketcall.socketpair(args)", ARG2, 4*sizeof(Addr) );
-      generic_PRE_sys_socketpair( tid, ARG2_0, ARG2_1, ARG2_2, ARG2_3 );
+      VG_(generic_PRE_sys_socketpair)( tid, ARG2_0, ARG2_1, ARG2_2, ARG2_3 );
       break;
 
    case VKI_SYS_SOCKET:
@@ -4548,7 +4571,7 @@ PRE(sys_socketcall, MayBlock)
       /* int bind(int sockfd, struct sockaddr *my_addr, 
         int addrlen); */
       PRE_MEM_READ( "socketcall.bind(args)", ARG2, 3*sizeof(Addr) );
-      generic_PRE_sys_bind( tid, ARG2_0, ARG2_1, ARG2_2 );
+      VG_(generic_PRE_sys_bind)( tid, ARG2_0, ARG2_1, ARG2_2 );
       break;
                
    case VKI_SYS_LISTEN:
@@ -4559,7 +4582,7 @@ PRE(sys_socketcall, MayBlock)
    case VKI_SYS_ACCEPT: {
       /* int accept(int s, struct sockaddr *addr, int *addrlen); */
       PRE_MEM_READ( "socketcall.accept(args)", ARG2, 3*sizeof(Addr) );
-      generic_PRE_sys_accept( tid, ARG2_0, ARG2_1, ARG2_2 );
+      VG_(generic_PRE_sys_accept)( tid, ARG2_0, ARG2_1, ARG2_2 );
       break;
    }
 
@@ -4568,21 +4591,21 @@ PRE(sys_socketcall, MayBlock)
                     unsigned int flags, 
                     const struct sockaddr *to, int tolen); */
       PRE_MEM_READ( "socketcall.sendto(args)", ARG2, 6*sizeof(Addr) );
-      generic_PRE_sys_sendto( tid, ARG2_0, ARG2_1, ARG2_2, 
+      VG_(generic_PRE_sys_sendto)( tid, ARG2_0, ARG2_1, ARG2_2, 
                                    ARG2_3, ARG2_4, ARG2_5 );
       break;
 
    case VKI_SYS_SEND:
       /* int send(int s, const void *msg, size_t len, int flags); */
       PRE_MEM_READ( "socketcall.send(args)", ARG2, 4*sizeof(Addr) );
-      generic_PRE_sys_send( tid, ARG2_0, ARG2_1, ARG2_2 );
+      VG_(generic_PRE_sys_send)( tid, ARG2_0, ARG2_1, ARG2_2 );
       break;
 
    case VKI_SYS_RECVFROM:
       /* int recvfrom(int s, void *buf, int len, unsigned int flags,
         struct sockaddr *from, int *fromlen); */
       PRE_MEM_READ( "socketcall.recvfrom(args)", ARG2, 6*sizeof(Addr) );
-      generic_PRE_sys_recvfrom( tid, ARG2_0, ARG2_1, ARG2_2, 
+      VG_(generic_PRE_sys_recvfrom)( tid, ARG2_0, ARG2_1, ARG2_2, 
                                      ARG2_3, ARG2_4, ARG2_5 );
       break;
    
@@ -4594,21 +4617,21 @@ PRE(sys_socketcall, MayBlock)
         from parameter.
       */
       PRE_MEM_READ( "socketcall.recv(args)", ARG2, 4*sizeof(Addr) );
-      generic_PRE_sys_recv( tid, ARG2_0, ARG2_1, ARG2_2 );
+      VG_(generic_PRE_sys_recv)( tid, ARG2_0, ARG2_1, ARG2_2 );
       break;
 
    case VKI_SYS_CONNECT:
       /* int connect(int sockfd, 
                      struct sockaddr *serv_addr, int addrlen ); */
       PRE_MEM_READ( "socketcall.connect(args)", ARG2, 3*sizeof(Addr) );
-      generic_PRE_sys_connect( tid, ARG2_0, ARG2_1, ARG2_2 );
+      VG_(generic_PRE_sys_connect)( tid, ARG2_0, ARG2_1, ARG2_2 );
       break;
 
    case VKI_SYS_SETSOCKOPT:
       /* int setsockopt(int s, int level, int optname, 
                         const void *optval, int optlen); */
       PRE_MEM_READ( "socketcall.setsockopt(args)", ARG2, 5*sizeof(Addr) );
-      generic_PRE_sys_setsockopt( tid, ARG2_0, ARG2_1, ARG2_2, 
+      VG_(generic_PRE_sys_setsockopt)( tid, ARG2_0, ARG2_1, ARG2_2, 
                                        ARG2_3, ARG2_4 );
       break;
 
@@ -4616,20 +4639,20 @@ PRE(sys_socketcall, MayBlock)
       /* int getsockopt(int s, int level, int optname, 
                         void *optval, socklen_t *optlen); */
       PRE_MEM_READ( "socketcall.getsockopt(args)", ARG2, 5*sizeof(Addr) );
-      generic_PRE_sys_getsockopt( tid, ARG2_0, ARG2_1, ARG2_2, 
+      VG_(generic_PRE_sys_getsockopt)( tid, ARG2_0, ARG2_1, ARG2_2, 
                                        ARG2_3, ARG2_4 );
       break;
 
    case VKI_SYS_GETSOCKNAME:
       /* int getsockname(int s, struct sockaddr* name, int* namelen) */
       PRE_MEM_READ( "socketcall.getsockname(args)", ARG2, 3*sizeof(Addr) );
-      generic_PRE_sys_getsockname( tid, ARG2_0, ARG2_1, ARG2_2 );
+      VG_(generic_PRE_sys_getsockname)( tid, ARG2_0, ARG2_1, ARG2_2 );
       break;
 
    case VKI_SYS_GETPEERNAME:
       /* int getpeername(int s, struct sockaddr* name, int* namelen) */
       PRE_MEM_READ( "socketcall.getpeername(args)", ARG2, 3*sizeof(Addr) );
-      generic_PRE_sys_getpeername( tid, ARG2_0, ARG2_1, ARG2_2 );
+      VG_(generic_PRE_sys_getpeername)( tid, ARG2_0, ARG2_1, ARG2_2 );
       break;
 
    case VKI_SYS_SHUTDOWN:
@@ -4644,7 +4667,7 @@ PRE(sys_socketcall, MayBlock)
        * (after all it's glibc providing the arguments array)
        PRE_MEM_READ( "socketcall.sendmsg(args)", ARG2, 3*sizeof(Addr) );
       */
-      generic_PRE_sys_sendmsg( tid, ARG2_0, ARG2_1 );
+      VG_(generic_PRE_sys_sendmsg)( tid, ARG2_0, ARG2_1 );
       break;
    }
       
@@ -4655,7 +4678,7 @@ PRE(sys_socketcall, MayBlock)
        * (after all it's glibc providing the arguments array)
        PRE_MEM_READ("socketcall.recvmsg(args)", ARG2, 3*sizeof(Addr) );
       */
-      generic_PRE_sys_recvmsg( tid, ARG2_0, ARG2_1 );
+      VG_(generic_PRE_sys_recvmsg)( tid, ARG2_0, ARG2_1 );
       break;
    }
 
@@ -4685,12 +4708,12 @@ POST(sys_socketcall)
    switch (ARG1 /* request */) {
 
    case VKI_SYS_SOCKETPAIR:
-      generic_POST_sys_socketpair( tid, RES, ARG2_0, 
+      VG_(generic_POST_sys_socketpair)( tid, RES, ARG2_0, 
                                         ARG2_1, ARG2_2, ARG2_3 );
       break;
 
    case VKI_SYS_SOCKET:
-     r = generic_POST_sys_socket( tid, RES );
+     r = VG_(generic_POST_sys_socket)( tid, RES );
      SET_RESULT(r);
      break;
 
@@ -4705,7 +4728,7 @@ POST(sys_socketcall)
 
    case VKI_SYS_ACCEPT:
       /* int accept(int s, struct sockaddr *addr, int *addrlen); */
-     r = generic_POST_sys_accept( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
+     r = VG_(generic_POST_sys_accept)( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
      SET_RESULT(r);
      break;
 
@@ -4716,12 +4739,12 @@ POST(sys_socketcall)
       break;
 
    case VKI_SYS_RECVFROM:
-      generic_POST_sys_recvfrom( tid, RES, ARG2_0, ARG2_1, ARG2_2,
+      VG_(generic_POST_sys_recvfrom)( tid, RES, ARG2_0, ARG2_1, ARG2_2,
                                            ARG2_3, ARG2_4, ARG2_5 );
       break;
 
    case VKI_SYS_RECV:
-      generic_POST_sys_recv( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
+      VG_(generic_POST_sys_recv)( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
       break;
 
    case VKI_SYS_CONNECT:
@@ -4731,16 +4754,16 @@ POST(sys_socketcall)
       break;
 
    case VKI_SYS_GETSOCKOPT:
-      generic_POST_sys_getsockopt( tid, RES, ARG2_0, ARG2_1, 
+      VG_(generic_POST_sys_getsockopt)( tid, RES, ARG2_0, ARG2_1, 
                                              ARG2_2, ARG2_3, ARG2_4 );
       break;
 
    case VKI_SYS_GETSOCKNAME:
-      generic_POST_sys_getsockname( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
+      VG_(generic_POST_sys_getsockname)( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
       break;
 
    case VKI_SYS_GETPEERNAME:
-      generic_POST_sys_getpeername( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
+      VG_(generic_POST_sys_getpeername)( tid, RES, ARG2_0, ARG2_1, ARG2_2 );
       break;
 
    case VKI_SYS_SHUTDOWN:
@@ -4750,7 +4773,7 @@ POST(sys_socketcall)
       break;
 
    case VKI_SYS_RECVMSG:
-     generic_POST_sys_recvmsg( tid, RES, ARG2_0, ARG2_1 );
+     VG_(generic_POST_sys_recvmsg)( tid, RES, ARG2_0, ARG2_1 );
      break;
 
    default: