From 9eb0aa979e720c40f3e123c7f1a1bf59e2ac9454ccabcc453e0fbf94b4ec157d Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Fri, 7 Nov 2008 14:52:12 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/valgrind?expand=0&rev=23 --- r8730.diff | 182 +++++++++++++++++++++++++++++++++++++++++++++++ valgrind.changes | 5 ++ valgrind.spec | 26 ++++--- 3 files changed, 203 insertions(+), 10 deletions(-) create mode 100644 r8730.diff diff --git a/r8730.diff b/r8730.diff new file mode 100644 index 0000000..71397ed --- /dev/null +++ b/r8730.diff @@ -0,0 +1,182 @@ +------------------------------------------------------------------------ +r8730 | sewardj | 2008-11-05 12:20:59 +0100 (Mi, 05 Nov 2008) | 3 lines + +Support sys_pipe2 on {amd64,x86}-linux. Also, update syscall numbers +for all supported Linuxes to those in linux-2.6.28-rc3. + +------------------------------------------------------------------------ +Index: include/vki/vki-scnums-amd64-linux.h +=================================================================== +--- include/vki/vki-scnums-amd64-linux.h (revision 8729) ++++ include/vki/vki-scnums-amd64-linux.h (revision 8730) +@@ -369,6 +369,13 @@ + #define __NR_fallocate 285 + #define __NR_timerfd_settime 286 + #define __NR_timerfd_gettime 287 ++#define __NR_paccept 288 ++#define __NR_signalfd4 289 ++#define __NR_eventfd2 290 ++#define __NR_epoll_create1 291 ++#define __NR_dup3 292 ++#define __NR_pipe2 293 ++#define __NR_inotify_init1 294 + + #endif /* __VKI_SCNUMS_AMD64_LINUX_H */ + +Index: include/vki/vki-scnums-x86-linux.h +=================================================================== +--- include/vki/vki-scnums-x86-linux.h (revision 8729) ++++ include/vki/vki-scnums-x86-linux.h (revision 8730) +@@ -361,6 +361,12 @@ + #define __NR_fallocate 324 + #define __NR_timerfd_settime 325 + #define __NR_timerfd_gettime 326 ++#define __NR_signalfd4 327 ++#define __NR_eventfd2 328 ++#define __NR_epoll_create1 329 ++#define __NR_dup3 330 ++#define __NR_pipe2 331 ++#define __NR_inotify_init1 332 + + #endif /* __VKI_SCNUMS_X86_LINUX_H */ + +Index: include/vki/vki-scnums-ppc32-linux.h +=================================================================== +--- include/vki/vki-scnums-ppc32-linux.h (revision 8729) ++++ include/vki/vki-scnums-ppc32-linux.h (revision 8730) +@@ -355,6 +355,12 @@ + #define __NR_subpage_prot 310 + #define __NR_timerfd_settime 311 + #define __NR_timerfd_gettime 312 ++#define __NR_signalfd4 313 ++#define __NR_eventfd2 314 ++#define __NR_epoll_create1 315 ++#define __NR_dup3 316 ++#define __NR_pipe2 317 ++#define __NR_inotify_init1 318 + + #endif /* __VKI_SCNUMS_PPC32_LINUX_H */ + +Index: include/vki/vki-scnums-ppc64-linux.h +=================================================================== +--- include/vki/vki-scnums-ppc64-linux.h (revision 8729) ++++ include/vki/vki-scnums-ppc64-linux.h (revision 8730) +@@ -347,6 +347,12 @@ + #define __NR_subpage_prot 310 + #define __NR_timerfd_settime 311 + #define __NR_timerfd_gettime 312 ++#define __NR_signalfd4 313 ++#define __NR_eventfd2 314 ++#define __NR_epoll_create1 315 ++#define __NR_dup3 316 ++#define __NR_pipe2 317 ++#define __NR_inotify_init1 318 + + #endif /* __VKI_SCNUMS_PPC64_LINUX_H */ + +Index: coregrind/m_syswrap/syswrap-linux.c +=================================================================== +--- coregrind/m_syswrap/syswrap-linux.c (revision 8729) ++++ coregrind/m_syswrap/syswrap-linux.c (revision 8730) +@@ -2235,12 +2235,38 @@ PRE(sys_pipe) + POST(sys_pipe) + { + Int *p = (Int *)ARG1; +- + if (!ML_(fd_allowed)(p[0], "pipe", tid, True) || + !ML_(fd_allowed)(p[1], "pipe", tid, True)) { + VG_(close)(p[0]); + VG_(close)(p[1]); + SET_STATUS_Failure( VKI_EMFILE ); ++ } else { ++ POST_MEM_WRITE( ARG1, 2*sizeof(int) ); ++ if (VG_(clo_track_fds)) { ++ ML_(record_fd_open_nameless)(tid, p[0]); ++ ML_(record_fd_open_nameless)(tid, p[1]); ++ } ++ } ++} ++ ++/* pipe2 (a kernel 2.6.twentysomething invention) is like pipe, except ++ there's a second arg containing flags to be applied to the new file ++ descriptors. It hardly seems worth the effort to factor out the ++ duplicated code, hence: */ ++PRE(sys_pipe2) ++{ ++ PRINT("sys_pipe2 ( %#lx, %#lx )", ARG1, ARG2); ++ PRE_REG_READ2(int, "pipe", int *, filedes, long, flags); ++ PRE_MEM_WRITE( "pipe2(filedes)", ARG1, 2*sizeof(int) ); ++} ++POST(sys_pipe2) ++{ ++ Int *p = (Int *)ARG1; ++ if (!ML_(fd_allowed)(p[0], "pipe2", tid, True) || ++ !ML_(fd_allowed)(p[1], "pipe2", tid, True)) { ++ VG_(close)(p[0]); ++ VG_(close)(p[1]); ++ SET_STATUS_Failure( VKI_EMFILE ); + } else { + POST_MEM_WRITE( ARG1, 2*sizeof(int) ); + if (VG_(clo_track_fds)) { +Index: coregrind/m_syswrap/priv_syswrap-linux.h +=================================================================== +--- coregrind/m_syswrap/priv_syswrap-linux.h (revision 8729) ++++ coregrind/m_syswrap/priv_syswrap-linux.h (revision 8730) +@@ -206,6 +206,7 @@ DECL_TEMPLATE(linux, sys_sched_getaffini + // Also, some archs on Linux do not match the generic wrapper for sys_pipe. + DECL_TEMPLATE(linux, sys_munlockall); + DECL_TEMPLATE(linux, sys_pipe); ++DECL_TEMPLATE(linux, sys_pipe2); + DECL_TEMPLATE(linux, sys_quotactl); + DECL_TEMPLATE(linux, sys_waitid); + +Index: coregrind/m_syswrap/syswrap-amd64-linux.c +=================================================================== +--- coregrind/m_syswrap/syswrap-amd64-linux.c (revision 8729) ++++ coregrind/m_syswrap/syswrap-amd64-linux.c (revision 8730) +@@ -1350,14 +1350,24 @@ 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_create, sys_timerfd_create), // 283 + LINX_(__NR_eventfd, sys_eventfd), // 284 ++ + // LINX_(__NR_fallocate, sys_ni_syscall), // 285 + LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 286 + LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 287 ++ // (__NR_paccept, sys_ni_syscall) // 288 ++ // (__NR_signalfd4, sys_ni_syscall) // 289 ++ ++ // (__NR_eventfd2, sys_ni_syscall) // 290 ++ // (__NR_epoll_create1, sys_ni_syscall) // 291 ++ // (__NR_dup3, sys_ni_syscall) // 292 ++ LINXY(__NR_pipe2, sys_pipe2) // 293 ++ // (__NR_inotify_init1, sys_ni_syscall) // 294 + }; + + const UInt ML_(syscall_table_size) = +Index: coregrind/m_syswrap/syswrap-x86-linux.c +=================================================================== +--- coregrind/m_syswrap/syswrap-x86-linux.c (revision 8729) ++++ coregrind/m_syswrap/syswrap-x86-linux.c (revision 8730) +@@ -2231,8 +2231,16 @@ const SyscallTableEntry ML_(syscall_tabl + LINXY(__NR_timerfd_create, sys_timerfd_create), // 322 + LINX_(__NR_eventfd, sys_eventfd), // 323 + // LINX_(__NR_fallocate, sys_ni_syscall), // 324 ++ + LINXY(__NR_timerfd_settime, sys_timerfd_settime), // 325 + LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 326 ++ // (__NR_signalfd4, sys_ni_syscall) // 327 ++ // (__NR_eventfd2, sys_ni_syscall) // 328 ++ // (__NR_epoll_create1, sys_ni_syscall) // 329 ++ ++ // (__NR_dup3, sys_ni_syscall) // 330 ++ LINXY(__NR_pipe2, sys_pipe2) // 331 ++ // (__NR_inotify_init1, sys_ni_syscall) // 332 + }; + + const UInt ML_(syscall_table_size) = diff --git a/valgrind.changes b/valgrind.changes index d82a452..9f92bcf 100644 --- a/valgrind.changes +++ b/valgrind.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Wed Nov 5 13:58:49 CET 2008 - dmueller@suse.de + +- add syscall wrappers for pipe2 + ------------------------------------------------------------------- Tue Jun 24 20:42:50 CEST 2008 - schwab@suse.de diff --git a/valgrind.spec b/valgrind.spec index 9b4cd2f..faedadb 100644 --- a/valgrind.spec +++ b/valgrind.spec @@ -2,9 +2,16 @@ # spec file for package valgrind (Version 3.3.1) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. -# This file and all modifications and additions to the pristine -# package are under the same license as the package itself. # +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + # Please submit bugfixes or comments via http://bugs.opensuse.org/ # @@ -13,20 +20,15 @@ Name: valgrind BuildRequires: gcc-c++ glibc-devel-32bit xorg-x11-devel %ifarch x86_64 ppc64 -%if %suse_version > 1010 BuildRequires: gcc-32bit %endif -%if %suse_version < 1010 -BuildRequires: gcc-32bit glibc-32bit -%endif -%endif Url: http://valgrind.org/ License: GPL v2 only Group: Development/Tools/Debuggers Summary: Valgrind Suite of Tools for Debugging and Profiling BuildRoot: %{_tmppath}/%{name}-%{version}-build Version: 3.3.1 -Release: 2 +Release: 31 Source0: %{name}-%{version}.tar.bz2 # svn di svn://svn.valgrind.org/valgrind/tags/VALGRIND_3_2_1 svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_2_BRANCH > 3_2_BRANCH.diff # svn di svn://svn.valgrind.org/vex/tags/VEX_3_2_1 svn://svn.valgrind.org/vex/branches/VEX_3_2_BRANCH > VEX_3_2_BRANCH.diff @@ -35,6 +37,7 @@ Patch9: deprecated.diff Patch10: update-suppressions.diff Patch12: xcb-update.diff Patch13: fadvice64.diff +Patch14: r8730.diff Provides: callgrind = %version Obsoletes: callgrind < %version ExclusiveArch: %ix86 x86_64 ppc ppc64 @@ -122,6 +125,7 @@ cd .. %patch10 %patch12 %patch13 +%patch14 %build export CFLAGS="$RPM_OPT_FLAGS" @@ -151,6 +155,8 @@ mv $RPM_BUILD_ROOT/usr/share/doc/valgrind $RPM_BUILD_ROOT/usr/share/doc/packages %_libdir/valgrind/*/*.a %changelog +* Wed Nov 05 2008 dmueller@suse.de +- add syscall wrappers for pipe2 * Tue Jun 24 2008 schwab@suse.de - Add fadvice64 wrapper. * Sun Jun 22 2008 dmueller@suse.de @@ -194,7 +200,7 @@ mv $RPM_BUILD_ROOT/usr/share/doc/valgrind $RPM_BUILD_ROOT/usr/share/doc/packages 162386 ms_print typo in milliseconds time unit for massif 161036 exp-drd: client allocated memory was never freed 162663 signalfd_wrapper fails on 64bit linux -* Mon Apr 28 2008 dmueller@suse.de +* Sun Apr 27 2008 dmueller@suse.de - update glibc 2.8 support * Sun Dec 16 2007 dmueller@suse.de - readd deprecated #define's (#348337) @@ -221,7 +227,7 @@ mv $RPM_BUILD_ROOT/usr/share/doc/valgrind $RPM_BUILD_ROOT/usr/share/doc/packages - update suppressions * Fri Aug 24 2007 dmueller@suse.de - fix valgrind on x86_64 (#296803) -* Wed Aug 22 2007 dmueller@suse.de +* Tue Aug 21 2007 dmueller@suse.de - suppression update * Tue Jul 24 2007 dmueller@suse.de - update suppression file