rpms/valgrind/F-12 valgrind-3.5.0-preadv.patch, NONE, 1.1 valgrind.spec, 1.73, 1.74
Jakub Jelinek
jakub at fedoraproject.org
Wed Oct 28 08:44:45 UTC 2009
Author: jakub
Update of /cvs/pkgs/rpms/valgrind/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv2875
Modified Files:
valgrind.spec
Added Files:
valgrind-3.5.0-preadv.patch
Log Message:
3.5.0-8
valgrind-3.5.0-preadv.patch:
priv_syswrap-linux.h | 3 +
syswrap-amd64-linux.c | 4 +-
syswrap-linux.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++
syswrap-ppc32-linux.c | 6 +--
syswrap-ppc64-linux.c | 6 +--
syswrap-x86-linux.c | 4 +-
6 files changed, 90 insertions(+), 10 deletions(-)
--- NEW FILE valgrind-3.5.0-preadv.patch ---
--- valgrind/coregrind/m_syswrap/syswrap-amd64-linux.c.jj 2009-10-27 22:07:26.000000000 +0100
+++ valgrind/coregrind/m_syswrap/syswrap-amd64-linux.c 2009-10-28 09:24:57.307058551 +0100
@@ -1377,8 +1377,8 @@ const SyscallTableEntry ML_(syscall_tabl
LINXY(__NR_pipe2, sys_pipe2), // 293
LINXY(__NR_inotify_init1, sys_inotify_init1), // 294
- // (__NR_preadv, sys_ni_syscall) // 295
- // (__NR_pwritev, sys_ni_syscall) // 296
+ LINXY(__NR_preadv, sys_preadv), // 295
+ LINX_(__NR_pwritev, sys_pwritev), // 296
// (__NR_rt_tgsigqueueinfo, sys_ni_syscall) // 297
LINXY(__NR_perf_counter_open, sys_perf_counter_open) // 298
};
--- valgrind/coregrind/m_syswrap/syswrap-x86-linux.c.jj 2009-10-27 22:07:26.000000000 +0100
+++ valgrind/coregrind/m_syswrap/syswrap-x86-linux.c 2009-10-28 09:24:08.631308771 +0100
@@ -2255,8 +2255,8 @@ const SyscallTableEntry ML_(syscall_tabl
// (__NR_dup3, sys_ni_syscall) // 330
LINXY(__NR_pipe2, sys_pipe2), // 331
LINXY(__NR_inotify_init1, sys_inotify_init1), // 332
- // (__NR_preadv, sys_ni_syscall) // 333
- // (__NR_pwritev, sys_ni_syscall) // 334
+ LINXY(__NR_preadv, sys_preadv), // 333
+ LINX_(__NR_pwritev, sys_pwritev), // 334
// (__NR_rt_tgsigqueueinfo, sys_ni_syscall) // 335
LINXY(__NR_perf_counter_open, sys_perf_counter_open) // 336
--- valgrind/coregrind/m_syswrap/syswrap-ppc64-linux.c.jj 2009-10-27 22:07:26.000000000 +0100
+++ valgrind/coregrind/m_syswrap/syswrap-ppc64-linux.c 2009-10-28 09:28:43.563071713 +0100
@@ -1508,9 +1508,9 @@ const SyscallTableEntry ML_(syscall_tabl
// (__NR_dup3, sys_ni_syscall) // 316
LINXY(__NR_pipe2, sys_pipe2), // 317
LINXY(__NR_inotify_init1, sys_inotify_init1), // 318
- LINXY(__NR_perf_counter_open, sys_perf_counter_open) // 319
- // (__NR_preadv, sys_ni_syscall) // 320
- // (__NR_pwritev, sys_ni_syscall) // 321
+ LINXY(__NR_perf_counter_open, sys_perf_counter_open),// 319
+ LINXY(__NR_preadv, sys_preadv), // 320
+ LINX_(__NR_pwritev, sys_pwritev) // 321
// (__NR_rt_tgsigqueueinfo, sys_ni_syscall) // 322
};
--- valgrind/coregrind/m_syswrap/syswrap-linux.c.jj 2009-10-27 22:07:26.000000000 +0100
+++ valgrind/coregrind/m_syswrap/syswrap-linux.c 2009-10-28 09:40:32.276183692 +0100
@@ -3009,6 +3009,83 @@ PRE(sys_faccessat)
PRE_MEM_RASCIIZ( "faccessat(pathname)", ARG2 );
}
+PRE(sys_preadv)
+{
+ Int i;
+ struct vki_iovec * vec;
+ ULong off = (ULong)ARG4;
+#if VG_WORDSIZE == 4
+ off |= (ULong)ARG5 << 32;
+#endif
+ *flags |= SfMayBlock;
+ PRINT("sys_preadv ( %ld, %#lx, %llu, %llu )",ARG1,ARG2,(ULong)ARG3,off);
+ PRE_REG_READ5(ssize_t, "preadv",
+ unsigned long, fd, const struct iovec *, vector,
+ unsigned long, count, unsigned long, off_lo,
+ unsigned long, off_hi);
+ if (!ML_(fd_allowed)(ARG1, "preadv", tid, False)) {
+ SET_STATUS_Failure( VKI_EBADF );
+ } else {
+ PRE_MEM_READ( "preadv(vector)", ARG2, ARG3 * sizeof(struct vki_iovec) );
+
+ if (ARG2 != 0) {
+ /* ToDo: don't do any of the following if the vector is invalid */
+ vec = (struct vki_iovec *)ARG2;
+ for (i = 0; i < (Int)ARG3; i++)
+ PRE_MEM_WRITE( "preadv(vector[...])",
+ (Addr)vec[i].iov_base, vec[i].iov_len );
+ }
+ }
+}
+
+POST(sys_preadv)
+{
+ vg_assert(SUCCESS);
+ if (RES > 0) {
+ Int i;
+ struct vki_iovec * vec = (struct vki_iovec *)ARG2;
+ Int remains = RES;
+
+ /* RES holds the number of bytes read. */
+ for (i = 0; i < (Int)ARG3; i++) {
+ Int nReadThisBuf = vec[i].iov_len;
+ if (nReadThisBuf > remains) nReadThisBuf = remains;
+ POST_MEM_WRITE( (Addr)vec[i].iov_base, nReadThisBuf );
+ remains -= nReadThisBuf;
+ if (remains < 0) VG_(core_panic)("preadv: remains < 0");
+ }
+ }
+}
+
+PRE(sys_pwritev)
+{
+ Int i;
+ struct vki_iovec * vec;
+ ULong off = (ULong)ARG4;
+#if VG_WORDSIZE == 4
+ off |= (ULong)ARG5 << 32;
+#endif
+ *flags |= SfMayBlock;
+ PRINT("sys_pwritev ( %ld, %#lx, %llu, %llu )",ARG1,ARG2,(ULong)ARG3,off);
+ PRE_REG_READ5(ssize_t, "pwritev",
+ unsigned long, fd, const struct iovec *, vector,
+ unsigned long, count, unsigned long, off_lo,
+ unsigned long, off_hi);
+ if (!ML_(fd_allowed)(ARG1, "pwritev", tid, False)) {
+ SET_STATUS_Failure( VKI_EBADF );
+ } else {
+ PRE_MEM_READ( "pwritev(vector)",
+ ARG2, ARG3 * sizeof(struct vki_iovec) );
+ if (ARG2 != 0) {
+ /* ToDo: don't do any of the following if the vector is invalid */
+ vec = (struct vki_iovec *)ARG2;
+ for (i = 0; i < (Int)ARG3; i++)
+ PRE_MEM_READ( "pwritev(vector[...])",
+ (Addr)vec[i].iov_base, vec[i].iov_len );
+ }
+ }
+}
+
/* ---------------------------------------------------------------------
key retention service wrappers
------------------------------------------------------------------ */
--- valgrind/coregrind/m_syswrap/priv_syswrap-linux.h.jj 2009-10-27 22:07:26.000000000 +0100
+++ valgrind/coregrind/m_syswrap/priv_syswrap-linux.h 2009-10-28 09:22:42.735058008 +0100
@@ -163,6 +163,9 @@ DECL_TEMPLATE(linux, sys_fchmodat);
DECL_TEMPLATE(linux, sys_faccessat);
DECL_TEMPLATE(linux, sys_utimensat);
+DECL_TEMPLATE(linux, sys_preadv);
+DECL_TEMPLATE(linux, sys_pwritev);
+
DECL_TEMPLATE(linux, sys_add_key);
DECL_TEMPLATE(linux, sys_request_key);
DECL_TEMPLATE(linux, sys_keyctl);
--- valgrind/coregrind/m_syswrap/syswrap-ppc32-linux.c.jj 2009-10-27 22:07:26.000000000 +0100
+++ valgrind/coregrind/m_syswrap/syswrap-ppc32-linux.c 2009-10-28 09:28:12.173183524 +0100
@@ -1868,9 +1868,9 @@ const SyscallTableEntry ML_(syscall_tabl
// (__NR_dup3, sys_ni_syscall) // 316
LINXY(__NR_pipe2, sys_pipe2), // 317
LINXY(__NR_inotify_init1, sys_inotify_init1), // 318
- LINXY(__NR_perf_counter_open, sys_perf_counter_open) // 319
- // (__NR_preadv, sys_ni_syscall) // 320
- // (__NR_pwritev, sys_ni_syscall) // 321
+ LINXY(__NR_perf_counter_open, sys_perf_counter_open),// 319
+ LINXY(__NR_preadv, sys_preadv), // 320
+ LINX_(__NR_pwritev, sys_pwritev) // 321
// (__NR_rt_tgsigqueueinfo, sys_ni_syscall) // 322
};
Index: valgrind.spec
===================================================================
RCS file: /cvs/pkgs/rpms/valgrind/F-12/valgrind.spec,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -p -r1.73 -r1.74
--- valgrind.spec 27 Oct 2009 21:19:42 -0000 1.73
+++ valgrind.spec 28 Oct 2009 08:44:44 -0000 1.74
@@ -1,7 +1,7 @@
Summary: Tool for finding memory management bugs in programs
Name: valgrind
Version: 3.5.0
-Release: 7
+Release: 8
Epoch: 1
Source0: http://www.valgrind.org/downloads/valgrind-%{version}.tar.bz2
Patch1: valgrind-3.5.0-cachegrind-improvements.patch
@@ -18,6 +18,7 @@ Patch11: valgrind-3.5.0-amd64-loopnel.pa
Patch12: valgrind-3.5.0-ppc-dwarf3.patch
Patch13: valgrind-3.5.0-amd64-adcsbb.patch
Patch14: valgrind-3.5.0-syscalls.patch
+Patch15: valgrind-3.5.0-preadv.patch
License: GPLv2
URL: http://www.valgrind.org/
Group: Development/Debuggers
@@ -85,6 +86,7 @@ or valgrind plugins.
%patch12 -p1
%patch13 -p1
%patch14 -p1
+%patch15 -p1
%build
%ifarch x86_64 ppc64
@@ -170,6 +172,9 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/pkgconfig/*
%changelog
+* Wed Oct 28 2009 Jakub Jelinek <jakub at redhat.com> 3.5.0-8
+- add preadv/pwritev syscall support
+
* Tue Oct 27 2009 Jakub Jelinek <jakub at redhat.com> 3.5.0-7
- add perf_counter_open syscall support (#531271)
- add handling of some sbb/adc insn forms on x86_64 (KDE#211410)
More information about the fedora-extras-commits
mailing list