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