Jakub Jelinek 836340
--- valgrind-3.3.0/coregrind/m_syswrap/syswrap-linux.c.jj	2008-04-16 11:48:14.000000000 +0200
Jakub Jelinek 836340
+++ valgrind-3.3.0/coregrind/m_syswrap/syswrap-linux.c	2008-04-16 14:45:32.000000000 +0200
Jakub Jelinek 836340
@@ -985,7 +985,7 @@ PRE(sys_ppoll)
Jakub Jelinek 836340
    UInt i;
Jakub Jelinek 836340
    struct vki_pollfd* ufds = (struct vki_pollfd *)ARG1;
Jakub Jelinek 836340
    *flags |= SfMayBlock;
Jakub Jelinek 836340
-   PRINT("sys_ppoll ( %p, %d, %p, %p, %llu )\n", ARG1,ARG2,ARG3,ARG4,ARG5);
Jakub Jelinek 836340
+   PRINT("sys_ppoll ( %p, %d, %p, %p, %llu )\n", ARG1,ARG2,ARG3,ARG4,(ULong)ARG5);
Jakub Jelinek 836340
    PRE_REG_READ5(long, "ppoll",
Jakub Jelinek 836340
                  struct vki_pollfd *, ufds, unsigned int, nfds,
Jakub Jelinek 836340
                  struct vki_timespec *, tsp, vki_sigset_t *, sigmask,
Jakub Jelinek 836340
@@ -1069,6 +1069,41 @@ POST(sys_epoll_wait)
Jakub Jelinek 836340
       POST_MEM_WRITE( ARG2, sizeof(struct vki_epoll_event)*RES ) ;
Jakub Jelinek 836340
 }
Jakub Jelinek 836340
 
Jakub Jelinek 836340
+PRE(sys_epoll_pwait)
Jakub Jelinek 836340
+{
Jakub Jelinek 836340
+   *flags |= SfMayBlock;
Jakub Jelinek 836340
+   PRINT("sys_epoll_pwait ( %d, %p, %d, %d, %p, %llu )", ARG1,ARG2,ARG3,ARG4,ARG5,(ULong)ARG6);
Jakub Jelinek 836340
+   PRE_REG_READ6(long, "epoll_pwait",
Jakub Jelinek 836340
+                 int, epfd, struct vki_epoll_event *, events,
Jakub Jelinek 836340
+                 int, maxevents, int, timeout, vki_sigset_t *, sigmask,
Jakub Jelinek 836340
+                 vki_size_t, sigsetsize);
Jakub Jelinek 836340
+   PRE_MEM_WRITE( "epoll_pwait(events)", ARG2, sizeof(struct vki_epoll_event)*ARG3);
Jakub Jelinek 836340
+   if (ARG4)
Jakub Jelinek 836340
+      PRE_MEM_READ( "epoll_pwait(sigmask)", ARG5, sizeof(vki_sigset_t) );
Jakub Jelinek 836340
+}
Jakub Jelinek 836340
+POST(sys_epoll_pwait)
Jakub Jelinek 836340
+{
Jakub Jelinek 836340
+   vg_assert(SUCCESS);
Jakub Jelinek 836340
+   if (RES > 0)
Jakub Jelinek 836340
+      POST_MEM_WRITE( ARG2, sizeof(struct vki_epoll_event)*RES ) ;
Jakub Jelinek 836340
+}
Jakub Jelinek 836340
+
Jakub Jelinek 836340
+PRE(sys_eventfd)
Jakub Jelinek 836340
+{
Jakub Jelinek 836340
+   PRINT("sys_eventfd ( %u )", ARG1);
Jakub Jelinek 836340
+   PRE_REG_READ1(long, "sys_eventfd", unsigned int, count);
Jakub Jelinek 836340
+}
Jakub Jelinek 836340
+POST(sys_eventfd)
Jakub Jelinek 836340
+{
Jakub Jelinek 836340
+   if (!ML_(fd_allowed)(RES, "eventfd", tid, True)) {
Jakub Jelinek 836340
+      VG_(close)(RES);
Jakub Jelinek 836340
+      SET_STATUS_Failure( VKI_EMFILE );
Jakub Jelinek 836340
+   } else {
Jakub Jelinek 836340
+      if (VG_(clo_track_fds))
Jakub Jelinek 836340
+         ML_(record_fd_open_nameless) (tid, RES);
Jakub Jelinek 836340
+   }
Jakub Jelinek 836340
+}
Jakub Jelinek 836340
+
Jakub Jelinek 836340
 /* ---------------------------------------------------------------------
Jakub Jelinek 836340
    tid-related wrappers
Jakub Jelinek 836340
    ------------------------------------------------------------------ */
Jakub Jelinek 836340
@@ -1669,6 +1704,27 @@ PRE(sys_timer_delete)
Jakub Jelinek 836340
    PRE_REG_READ1(long, "timer_delete", vki_timer_t, timerid);
Jakub Jelinek 836340
 }
Jakub Jelinek 836340
 
Jakub Jelinek 836340
+PRE(sys_timerfd)
Jakub Jelinek 836340
+{
Jakub Jelinek 836340
+   PRINT("sys_timerfd ( %d, %d, %p )", ARG1, ARG2, ARG3);
Jakub Jelinek 836340
+   PRE_REG_READ3(long, "sys_timerfd",
Jakub Jelinek 836340
+                 int, fd, int, clockid, const struct itimerspec *, tmr);
Jakub Jelinek 836340
+   PRE_MEM_READ( "timerfd(tmr)", ARG3,
Jakub Jelinek 836340
+                  sizeof(struct vki_itimerspec) );
Jakub Jelinek 836340
+   if (ARG1 != -1 && !ML_(fd_allowed)(ARG1, "timerfd", tid, False))
Jakub Jelinek 836340
+      SET_STATUS_Failure( VKI_EBADF );
Jakub Jelinek 836340
+}
Jakub Jelinek 836340
+POST(sys_timerfd)
Jakub Jelinek 836340
+{
Jakub Jelinek 836340
+   if (!ML_(fd_allowed)(RES, "timerfd", tid, True)) {
Jakub Jelinek 836340
+      VG_(close)(RES);
Jakub Jelinek 836340
+      SET_STATUS_Failure( VKI_EMFILE );
Jakub Jelinek 836340
+   } else {
Jakub Jelinek 836340
+      if (VG_(clo_track_fds))
Jakub Jelinek 836340
+         ML_(record_fd_open_nameless) (tid, RES);
Jakub Jelinek 836340
+   }
Jakub Jelinek 836340
+}
Jakub Jelinek 836340
+
Jakub Jelinek 836340
 /* ---------------------------------------------------------------------
Jakub Jelinek 836340
    capabilities wrappers
Jakub Jelinek 836340
    ------------------------------------------------------------------ */
Jakub Jelinek 836340
@@ -2217,6 +2273,27 @@ POST(sys_sigprocmask)
Jakub Jelinek 836340
 }
Jakub Jelinek 836340
 #endif
Jakub Jelinek 836340
 
Jakub Jelinek 836340
+PRE(sys_signalfd)
Jakub Jelinek 836340
+{
Jakub Jelinek 836340
+   PRINT("sys_signalfd ( %d, %p, %llu )", ARG1, ARG2, (ULong) ARG3);
Jakub Jelinek 836340
+   PRE_REG_READ3(long, "sys_signalfd",
Jakub Jelinek 836340
+                 int, fd, vki_sigset_t *, sigmask, vki_size_t, sigsetsize);
Jakub Jelinek 836340
+   PRE_MEM_READ( "signalfd(sigmask)", ARG2, sizeof(vki_sigset_t) );
Jakub Jelinek 836340
+   if (ARG1 != -1 && !ML_(fd_allowed)(ARG1, "signalfd", tid, False))
Jakub Jelinek 836340
+      SET_STATUS_Failure( VKI_EBADF );
Jakub Jelinek 836340
+}
Jakub Jelinek 836340
+POST(sys_signalfd)
Jakub Jelinek 836340
+{
Jakub Jelinek 836340
+   if (!ML_(fd_allowed)(RES, "signalfd", tid, True)) {
Jakub Jelinek 836340
+      VG_(close)(RES);
Jakub Jelinek 836340
+      SET_STATUS_Failure( VKI_EMFILE );
Jakub Jelinek 836340
+   } else {
Jakub Jelinek 836340
+      if (VG_(clo_track_fds))
Jakub Jelinek 836340
+         ML_(record_fd_open_nameless) (tid, RES);
Jakub Jelinek 836340
+   }
Jakub Jelinek 836340
+}
Jakub Jelinek 836340
+
Jakub Jelinek 836340
+
Jakub Jelinek 836340
 /* ---------------------------------------------------------------------
Jakub Jelinek 836340
    rt_sig* wrappers
Jakub Jelinek 836340
    ------------------------------------------------------------------ */
Jakub Jelinek 836340
@@ -2544,7 +2621,17 @@ PRE(sys_futimesat)
Jakub Jelinek 836340
                  int, dfd, char *, filename, struct timeval *, tvp);
Jakub Jelinek 836340
    PRE_MEM_RASCIIZ( "futimesat(filename)", ARG2 );
Jakub Jelinek 836340
    if (ARG3 != 0)
Jakub Jelinek 836340
-      PRE_MEM_READ( "futimesat(tvp)", ARG3, sizeof(struct vki_timeval) );
Jakub Jelinek 836340
+      PRE_MEM_READ( "futimesat(tvp)", ARG3, 2 * sizeof(struct vki_timeval) );
Jakub Jelinek 836340
+}
Jakub Jelinek 836340
+
Jakub Jelinek 836340
+PRE(sys_utimensat)
Jakub Jelinek 836340
+{
Jakub Jelinek 836340
+   PRINT("sys_utimensat ( %d, %p(%s), %p, 0x%x )", ARG1,ARG2,ARG2,ARG3,ARG4);
Jakub Jelinek 836340
+   PRE_REG_READ4(long, "utimensat",
Jakub Jelinek 836340
+                 int, dfd, char *, filename, struct timespec *, utimes, int, flags);
Jakub Jelinek 836340
+   PRE_MEM_RASCIIZ( "utimensat(filename)", ARG2 );
Jakub Jelinek 836340
+   if (ARG3 != 0)
Jakub Jelinek 836340
+      PRE_MEM_READ( "utimensat(tvp)", ARG3, 2 * sizeof(struct vki_timespec) );
Jakub Jelinek 836340
 }
Jakub Jelinek 836340
 
Jakub Jelinek 836340
 PRE(sys_newfstatat)
Jakub Jelinek 836340
@@ -2825,19 +2912,6 @@ PRE(sys_ioprio_set)
Jakub Jelinek 836340
    PRE_REG_READ3(int, "ioprio_set", int, which, int, who, int, ioprio);
Jakub Jelinek 836340
 }
Jakub Jelinek 836340
 
Jakub Jelinek 836340
-
Jakub Jelinek 836340
-/* XXX I don't think this is really the right place for this.
Jakub Jelinek 836340
-   Move it elsewhere in this file? */
Jakub Jelinek 836340
-PRE(sys_utimensat)
Jakub Jelinek 836340
-{
Jakub Jelinek 836340
-   PRINT("sys_utimensat ( %d, %p(%s), %p )", ARG1,ARG2,ARG2,ARG3);
Jakub Jelinek 836340
-   PRE_REG_READ3(long, "utimensat",
Jakub Jelinek 836340
-                 int, dfd, char *, filename, struct timespec *, tvp);
Jakub Jelinek 836340
-   PRE_MEM_RASCIIZ( "utimensat(filename)", ARG2 );
Jakub Jelinek 836340
-   if (ARG3 != 0)
Jakub Jelinek 836340
-      PRE_MEM_READ( "utimensat(tvp)", ARG3, sizeof(struct vki_timespec) );
Jakub Jelinek 836340
-}
Jakub Jelinek 836340
-
Jakub Jelinek 836340
 #undef PRE
Jakub Jelinek 836340
 #undef POST
Jakub Jelinek 836340
 
Jakub Jelinek 836340
--- valgrind-3.3.0/coregrind/m_syswrap/syswrap-generic.c.jj	2007-12-11 00:18:43.000000000 +0100
Jakub Jelinek 836340
+++ valgrind-3.3.0/coregrind/m_syswrap/syswrap-generic.c	2008-04-16 16:52:43.000000000 +0200
Jakub Jelinek 836340
@@ -5638,7 +5638,7 @@ PRE(sys_utimes)
Jakub Jelinek 836340
    PRE_REG_READ2(long, "utimes", char *, filename, struct timeval *, tvp);
Jakub Jelinek 836340
    PRE_MEM_RASCIIZ( "utimes(filename)", ARG1 );
Jakub Jelinek 836340
    if (ARG2 != 0)
Jakub Jelinek 836340
-      PRE_MEM_READ( "utimes(tvp)", ARG2, sizeof(struct vki_timeval) );
Jakub Jelinek 836340
+      PRE_MEM_READ( "utimes(tvp)", ARG2, 2 * sizeof(struct vki_timeval) );
Jakub Jelinek 836340
 }
Jakub Jelinek 836340
 
Jakub Jelinek 836340
 PRE(sys_acct)
Jakub Jelinek 836340
--- valgrind-3.3.0/coregrind/m_syswrap/syswrap-ppc64-linux.c.jj	2008-04-16 11:48:14.000000000 +0200
Jakub Jelinek 836340
+++ valgrind-3.3.0/coregrind/m_syswrap/syswrap-ppc64-linux.c	2008-04-16 15:55:19.000000000 +0200
Jakub Jelinek 836340
@@ -1478,7 +1478,15 @@ const SyscallTableEntry ML_(syscall_tabl
Jakub Jelinek 836340
    LINX_(__NR_faccessat,         sys_faccessat),          // 298
Jakub Jelinek 836340
    LINX_(__NR_set_robust_list,   sys_set_robust_list),    // 299
Jakub Jelinek 836340
    LINXY(__NR_get_robust_list,   sys_get_robust_list),    // 300
Jakub Jelinek 836340
-
Jakub Jelinek 836340
+//   LINX_(__NR_move_pages,        sys_ni_syscall),        // 301
Jakub Jelinek 836340
+//   LINX_(__NR_getcpu,            sys_ni_syscall),        // 302
Jakub Jelinek 836340
+   LINXY(__NR_epoll_pwait,       sys_epoll_pwait),       // 303
Jakub Jelinek 836340
+   LINX_(__NR_utimensat,         sys_utimensat),         // 304
Jakub Jelinek 836340
+   LINXY(__NR_signalfd,          sys_signalfd),          // 305
Jakub Jelinek 836340
+   LINXY(__NR_timerfd,           sys_timerfd),           // 306
Jakub Jelinek 836340
+   LINX_(__NR_eventfd,           sys_eventfd),           // 307
Jakub Jelinek 836340
+//   LINX_(__NR_sync_file_range2,   sys_ni_syscall),       // 308
Jakub Jelinek 836340
+//   LINX_(__NR_fallocate,        sys_ni_syscall),         // 309
Jakub Jelinek 836340
 };
Jakub Jelinek 836340
 
Jakub Jelinek 836340
 const UInt ML_(syscall_table_size) = 
Jakub Jelinek 836340
--- valgrind-3.3.0/coregrind/m_syswrap/syswrap-x86-linux.c.jj	2008-04-16 11:48:14.000000000 +0200
Jakub Jelinek 836340
+++ valgrind-3.3.0/coregrind/m_syswrap/syswrap-x86-linux.c	2008-04-16 14:51:31.000000000 +0200
Jakub Jelinek 836340
@@ -2224,9 +2224,13 @@ const SyscallTableEntry ML_(syscall_tabl
Jakub Jelinek 836340
 //   LINX_(__NR_vmsplice,          sys_ni_syscall),       // 316
Jakub Jelinek 836340
 //   LINX_(__NR_move_pages,        sys_ni_syscall),       // 317
Jakub Jelinek 836340
 //   LINX_(__NR_getcpu,            sys_ni_syscall),       // 318
Jakub Jelinek 836340
-//   LINX_(__NR_epoll_pwait,       sys_ni_syscall),       // 319
Jakub Jelinek 836340
+   LINXY(__NR_epoll_pwait,       sys_epoll_pwait),      // 319
Jakub Jelinek 836340
 
Jakub Jelinek 836340
    LINX_(__NR_utimensat,         sys_utimensat),        // 320
Jakub Jelinek 836340
+   LINXY(__NR_signalfd,          sys_signalfd),         // 321
Jakub Jelinek 836340
+   LINXY(__NR_timerfd,           sys_timerfd),          // 322
Jakub Jelinek 836340
+   LINX_(__NR_eventfd,           sys_eventfd),          // 323
Jakub Jelinek 836340
+//   LINX_(__NR_fallocate,        sys_ni_syscall),        // 324
Jakub Jelinek 836340
 };
Jakub Jelinek 836340
 
Jakub Jelinek 836340
 const UInt ML_(syscall_table_size) = 
Jakub Jelinek 836340
--- valgrind-3.3.0/coregrind/m_syswrap/priv_syswrap-linux.h.jj	2008-04-16 11:48:14.000000000 +0200
Jakub Jelinek 836340
+++ valgrind-3.3.0/coregrind/m_syswrap/priv_syswrap-linux.h	2008-04-16 14:49:09.000000000 +0200
Jakub Jelinek 836340
@@ -82,6 +82,8 @@ DECL_TEMPLATE(linux, sys_ppoll);
Jakub Jelinek 836340
 DECL_TEMPLATE(linux, sys_epoll_create);
Jakub Jelinek 836340
 DECL_TEMPLATE(linux, sys_epoll_ctl);
Jakub Jelinek 836340
 DECL_TEMPLATE(linux, sys_epoll_wait);
Jakub Jelinek 836340
+DECL_TEMPLATE(linux, sys_epoll_pwait);
Jakub Jelinek 836340
+DECL_TEMPLATE(linux, sys_eventfd);
Jakub Jelinek 836340
 
Jakub Jelinek 836340
 DECL_TEMPLATE(linux, sys_gettid);
Jakub Jelinek 836340
 DECL_TEMPLATE(linux, sys_set_tid_address);
Jakub Jelinek 836340
@@ -124,6 +126,9 @@ DECL_TEMPLATE(linux, sys_timer_settime);
Jakub Jelinek 836340
 DECL_TEMPLATE(linux, sys_timer_gettime);
Jakub Jelinek 836340
 DECL_TEMPLATE(linux, sys_timer_getoverrun);
Jakub Jelinek 836340
 DECL_TEMPLATE(linux, sys_timer_delete);
Jakub Jelinek 836340
+DECL_TEMPLATE(linux, sys_timerfd);
Jakub Jelinek 836340
+
Jakub Jelinek 836340
+DECL_TEMPLATE(linux, sys_signalfd);
Jakub Jelinek 836340
 
Jakub Jelinek 836340
 DECL_TEMPLATE(linux, sys_capget);
Jakub Jelinek 836340
 DECL_TEMPLATE(linux, sys_capset);
Jakub Jelinek 836340
--- valgrind-3.3.0/coregrind/m_syswrap/syswrap-ppc32-linux.c.jj	2008-04-16 11:48:14.000000000 +0200
Jakub Jelinek 836340
+++ valgrind-3.3.0/coregrind/m_syswrap/syswrap-ppc32-linux.c	2008-04-16 15:49:43.000000000 +0200
Jakub Jelinek 836340
@@ -1823,6 +1823,15 @@ const SyscallTableEntry ML_(syscall_tabl
Jakub Jelinek 836340
    LINX_(__NR_faccessat,         sys_faccessat),         // 298
Jakub Jelinek 836340
    LINX_(__NR_set_robust_list,   sys_set_robust_list),   // 299
Jakub Jelinek 836340
    LINXY(__NR_get_robust_list,   sys_get_robust_list),   // 300
Jakub Jelinek 836340
+//   LINX_(__NR_move_pages,        sys_ni_syscall),        // 301
Jakub Jelinek 836340
+//   LINX_(__NR_getcpu,            sys_ni_syscall),        // 302
Jakub Jelinek 836340
+   LINXY(__NR_epoll_pwait,       sys_epoll_pwait),       // 303
Jakub Jelinek 836340
+   LINX_(__NR_utimensat,         sys_utimensat),         // 304
Jakub Jelinek 836340
+   LINXY(__NR_signalfd,          sys_signalfd),          // 305
Jakub Jelinek 836340
+   LINXY(__NR_timerfd,           sys_timerfd),           // 306
Jakub Jelinek 836340
+   LINX_(__NR_eventfd,           sys_eventfd),           // 307
Jakub Jelinek 836340
+//   LINX_(__NR_sync_file_range2,   sys_ni_syscall),       // 308
Jakub Jelinek 836340
+//   LINX_(__NR_fallocate,        sys_ni_syscall),         // 309
Jakub Jelinek 836340
 };
Jakub Jelinek 836340
 
Jakub Jelinek 836340
 const UInt ML_(syscall_table_size) = 
Jakub Jelinek 836340
--- valgrind-3.3.0/coregrind/m_syswrap/syswrap-amd64-linux.c.jj	2008-04-16 11:48:14.000000000 +0200
Jakub Jelinek 836340
+++ valgrind-3.3.0/coregrind/m_syswrap/syswrap-amd64-linux.c	2008-04-16 14:45:43.000000000 +0200
Jakub Jelinek 836340
@@ -1370,7 +1370,7 @@ const SyscallTableEntry ML_(syscall_tabl
Jakub Jelinek 836340
    LINX_(__NR_faccessat,	 sys_faccessat),        // 269
Jakub Jelinek 836340
 
Jakub Jelinek 836340
    LINX_(__NR_pselect6,		 sys_pselect6),         // 270
Jakub Jelinek 836340
-//   LINXY(__NR_ppoll,		 sys_ni_syscall),       // 271
Jakub Jelinek 836340
+   LINXY(__NR_ppoll,		 sys_ppoll),            // 271
Jakub Jelinek 836340
 //   LINX_(__NR_unshare,		 sys_unshare),          // 272
Jakub Jelinek 836340
    LINX_(__NR_set_robust_list,	 sys_set_robust_list),  // 273
Jakub Jelinek 836340
    LINXY(__NR_get_robust_list,	 sys_get_robust_list),  // 274
Jakub Jelinek 836340
@@ -1380,6 +1380,12 @@ const SyscallTableEntry ML_(syscall_tabl
Jakub Jelinek 836340
    LINX_(__NR_sync_file_range,   sys_sync_file_range),  // 277
Jakub Jelinek 836340
 //   LINX_(__NR_vmsplice,          sys_ni_syscall),       // 278
Jakub Jelinek 836340
 //   LINX_(__NR_move_pages,        sys_ni_syscall),       // 279
Jakub Jelinek 836340
+   LINX_(__NR_utimensat,         sys_utimensat),        // 280
Jakub Jelinek 836340
+   LINXY(__NR_epoll_pwait,       sys_epoll_pwait),      // 281
Jakub Jelinek 836340
+   LINXY(__NR_signalfd,          sys_signalfd),         // 282
Jakub Jelinek 836340
+   LINXY(__NR_timerfd,           sys_timerfd),          // 283
Jakub Jelinek 836340
+   LINX_(__NR_eventfd,           sys_eventfd),          // 284
Jakub Jelinek 836340
+//   LINX_(__NR_fallocate,        sys_ni_syscall),        // 285
Jakub Jelinek 836340
 };
Jakub Jelinek 836340
 
Jakub Jelinek 836340
 const UInt ML_(syscall_table_size) =