- update to 3.11.0:
* 3.11.0 is a feature release with many improvements and the usual collection of bug fixes. - replace gcc-version.patch with gcc5.patch: This is the upstream version - drop valgrind-linux-4.0.patch: merged upstream - add svn-r15766.patch: Fix valgrind with recent kernels - jit-register-unregister.diff commented out, needs porting OBS-URL: https://build.opensuse.org/package/show/devel:tools/valgrind?expand=0&rev=134
This commit is contained in:
parent
58980af62d
commit
fe2176acc0
@ -1,6 +1,8 @@
|
||||
--- configure.ac
|
||||
Index: configure.ac
|
||||
===================================================================
|
||||
--- configure.ac.orig
|
||||
+++ configure.ac
|
||||
@@ -190,7 +190,7 @@
|
||||
@@ -234,7 +234,7 @@ case "${host_cpu}" in
|
||||
ARCH_MAX="s390x"
|
||||
;;
|
||||
|
||||
|
@ -1,13 +0,0 @@
|
||||
Index: configure.ac
|
||||
===================================================================
|
||||
--- configure.ac.orig
|
||||
+++ configure.ac
|
||||
@@ -138,7 +138,7 @@ case "${is_clang}-${gcc_version}" in
|
||||
notclang-4.*)
|
||||
AC_MSG_RESULT([ok (${gcc_version})])
|
||||
;;
|
||||
- notclang-5.*)
|
||||
+ notclang-5*)
|
||||
AC_MSG_RESULT([ok (${gcc_version})])
|
||||
;;
|
||||
clang-2.9|clang-3.*|clang-4.*)
|
58
gcc5.patch
Normal file
58
gcc5.patch
Normal file
@ -0,0 +1,58 @@
|
||||
------------------------------------------------------------------------
|
||||
r15773 | bart | 2016-01-25 05:27:25 +0100 (Mo, 25. Jan 2016) | 7 Zeilen
|
||||
|
||||
configure.ac: Port to gcc 5
|
||||
|
||||
Apparently gcc 5 behaves as follows:
|
||||
$ gcc -dumpversion
|
||||
5
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Index: configure.ac
|
||||
===================================================================
|
||||
--- configure.ac (Revision 15772)
|
||||
+++ configure.ac (Revision 15773)
|
||||
@@ -160,7 +160,7 @@ case "${is_clang}-${gcc_version}" in
|
||||
icc-1[[3-9]].*)
|
||||
AC_MSG_RESULT([ok (ICC version ${gcc_version})])
|
||||
;;
|
||||
- notclang-[[3-9]].*|notclang-[[1-9][0-9]]*)
|
||||
+ notclang-[[3-9]]|notclang-[[3-9]].*|notclang-[[1-9][0-9]]*)
|
||||
AC_MSG_RESULT([ok (${gcc_version})])
|
||||
;;
|
||||
clang-2.9|clang-[[3-9]].*|clang-[[1-9][0-9]]*)
|
||||
Index: drd/tests/std_thread2.cpp
|
||||
===================================================================
|
||||
--- drd/tests/std_thread2.cpp (Revision 15772)
|
||||
+++ drd/tests/std_thread2.cpp (Revision 15773)
|
||||
@@ -26,6 +26,7 @@ int main(int argc, char** argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+#if defined(__GNUC__) && __GNUC__ -0 < 6
|
||||
//
|
||||
// From libstdc++-v3/src/c++11/thread.cc
|
||||
//
|
||||
@@ -70,3 +71,4 @@ namespace std
|
||||
}
|
||||
}
|
||||
}
|
||||
+#endif
|
||||
Index: drd/tests/std_thread.cpp
|
||||
===================================================================
|
||||
--- drd/tests/std_thread.cpp (Revision 15772)
|
||||
+++ drd/tests/std_thread.cpp (Revision 15773)
|
||||
@@ -21,6 +21,7 @@ int main(int argc, char** argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
+#if defined(__GNUC__) && __GNUC__ -0 < 6
|
||||
//
|
||||
// From libstdc++-v3/src/c++11/thread.cc
|
||||
//
|
||||
@@ -65,3 +66,4 @@ namespace std
|
||||
}
|
||||
}
|
||||
}
|
||||
+#endif
|
@ -1,8 +1,8 @@
|
||||
Index: valgrind-3.10.1/configure.ac
|
||||
Index: valgrind-3.11.0/configure.ac
|
||||
===================================================================
|
||||
--- valgrind-3.10.1.orig/configure.ac
|
||||
+++ valgrind-3.10.1/configure.ac
|
||||
@@ -1018,6 +1018,20 @@ case "${GLIBC_VERSION}" in
|
||||
--- valgrind-3.11.0.orig/configure.ac
|
||||
+++ valgrind-3.11.0/configure.ac
|
||||
@@ -1049,6 +1049,20 @@ case "${GLIBC_VERSION}" in
|
||||
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
||||
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
||||
;;
|
||||
|
@ -2,7 +2,7 @@ Index: coregrind/m_debuginfo/debuginfo.c
|
||||
===================================================================
|
||||
--- coregrind/m_debuginfo/debuginfo.c.orig
|
||||
+++ coregrind/m_debuginfo/debuginfo.c
|
||||
@@ -50,6 +50,7 @@
|
||||
@@ -49,6 +49,7 @@
|
||||
#include "pub_core_oset.h"
|
||||
#include "pub_core_stacktrace.h" // VG_(get_StackTrace) XXX: circular dependency
|
||||
#include "pub_core_ume.h"
|
||||
@ -10,8 +10,8 @@ Index: coregrind/m_debuginfo/debuginfo.c
|
||||
|
||||
#include "priv_misc.h" /* dinfo_zalloc/free */
|
||||
#include "priv_image.h"
|
||||
@@ -1319,6 +1320,132 @@ void VG_(di_notify_pdb_debuginfo)( Int f
|
||||
#endif /* defined(VGO_linux) || defined(VGO_darwin) */
|
||||
@@ -1430,6 +1431,132 @@ void VG_(di_notify_pdb_debuginfo)( Int f
|
||||
#endif /* defined(VGO_linux) || defined(VGO_darwin) || defined(VGO_solaris) */
|
||||
|
||||
|
||||
+/* Storing and retrieving information caused by JITted code. TODO:
|
||||
@ -143,32 +143,31 @@ Index: coregrind/m_debuginfo/debuginfo.c
|
||||
/*------------------------------------------------------------*/
|
||||
/*--- ---*/
|
||||
/*--- TOP LEVEL: QUERYING EXISTING DEBUG INFO ---*/
|
||||
@@ -1638,8 +1765,19 @@ Bool get_sym_name ( Bool do_cxx_demangli
|
||||
@@ -1755,8 +1882,18 @@ Bool get_sym_name ( Bool do_cxx_demangli
|
||||
PtrdiffT offset;
|
||||
|
||||
search_all_symtabs ( a, &di, &sno, match_anywhere_in_sym, findText );
|
||||
- if (di == NULL)
|
||||
- if (di == NULL) {
|
||||
+ if (di == NULL)
|
||||
+ {
|
||||
*buf = "";
|
||||
+ if (findText)
|
||||
+ {
|
||||
+ JitEntry* je = jit_lookup (a, buf, nbuf);
|
||||
+ if (!je)
|
||||
+ return False;
|
||||
+ if (offsetP)
|
||||
+ *offsetP = a - je->start;
|
||||
+ return True;
|
||||
+ JitEntry* je = jit_lookup (a, buf, nbuf);
|
||||
+ if (!je)
|
||||
+ return False;
|
||||
+ if (offsetP)
|
||||
+ *offsetP = a - je->start;
|
||||
+ return True;
|
||||
+ }
|
||||
return False;
|
||||
+ }
|
||||
}
|
||||
|
||||
vg_assert(di->symtab[sno].pri_name);
|
||||
VG_(demangle) ( do_cxx_demangling, do_z_demangling,
|
||||
Index: coregrind/m_scheduler/scheduler.c
|
||||
===================================================================
|
||||
--- coregrind/m_scheduler/scheduler.c.orig
|
||||
+++ coregrind/m_scheduler/scheduler.c
|
||||
@@ -2062,6 +2062,16 @@ void do_client_request ( ThreadId tid )
|
||||
@@ -2087,6 +2087,16 @@ void do_client_request ( ThreadId tid )
|
||||
LibVEX_InitIRI ( (IRICB *)arg[1] );
|
||||
break;
|
||||
|
||||
@ -206,7 +205,7 @@ Index: include/valgrind.h
|
||||
===================================================================
|
||||
--- include/valgrind.h.orig
|
||||
+++ include/valgrind.h
|
||||
@@ -6170,6 +6170,10 @@ typedef
|
||||
@@ -6706,6 +6706,10 @@ typedef
|
||||
/* Querying of debug info. */
|
||||
VG_USERREQ__MAP_IP_TO_SRCLOC = 0x1701,
|
||||
|
||||
@ -217,7 +216,7 @@ Index: include/valgrind.h
|
||||
/* Disable/enable error reporting level. Takes a single
|
||||
Word arg which is the delta to this thread's error
|
||||
disablement indicator. Hence 1 disables or further
|
||||
@@ -6337,6 +6341,19 @@ VALGRIND_PRINTF_BACKTRACE(const char *fo
|
||||
@@ -6873,6 +6877,19 @@ VALGRIND_PRINTF_BACKTRACE(const char *fo
|
||||
_qyy_arg1, _qyy_arg2, \
|
||||
_qyy_arg3, 0)
|
||||
|
||||
|
133
svn-r15766.patch
Normal file
133
svn-r15766.patch
Normal file
@ -0,0 +1,133 @@
|
||||
------------------------------------------------------------------------
|
||||
r15766 | mjw | 2016-01-21 12:37:43 +0100 (Do, 21. Jan 2016) | 13 Zeilen
|
||||
|
||||
Bug #357833 Setting RLIMIT_DATA to zero breaks with linux 4.5+
|
||||
|
||||
We used to set the process datasize rlimit to zero to prevent
|
||||
any internal use of brk() from having any effect. But later
|
||||
linux kernels redefine RLIMIT_DATA as the size of any data
|
||||
areas, including some dynamic mmap memory allocations.
|
||||
|
||||
See bug #357833 for the commit that went into linux 4.5
|
||||
changing the definition of RLIMIT_DATA. So don't mess with
|
||||
RLIMIT_DATA anymore. Just remember it for use in the syscall
|
||||
wrappers.
|
||||
|
||||
This also cleans up some hacks around the execv and spawn wrappers.
|
||||
------------------------------------------------------------------------
|
||||
Index: coregrind/m_syswrap/syswrap-generic.c
|
||||
===================================================================
|
||||
--- coregrind/m_syswrap/syswrap-generic.c.orig
|
||||
+++ coregrind/m_syswrap/syswrap-generic.c
|
||||
@@ -3014,9 +3014,6 @@ PRE(sys_execve)
|
||||
vg_assert(j == tot_args+1);
|
||||
}
|
||||
|
||||
- /* restore the DATA rlimit for the child */
|
||||
- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data));
|
||||
-
|
||||
/*
|
||||
Set the signal state up for exec.
|
||||
|
||||
Index: coregrind/m_syswrap/syswrap-solaris.c
|
||||
===================================================================
|
||||
--- coregrind/m_syswrap/syswrap-solaris.c.orig
|
||||
+++ coregrind/m_syswrap/syswrap-solaris.c
|
||||
@@ -1539,21 +1539,12 @@ PRE(sys_spawn)
|
||||
#undef COPY_CHAR_TO_ARGENV
|
||||
#undef COPY_STRING_TOARGENV
|
||||
|
||||
- /* HACK: Temporarily restore the DATA rlimit for spawned child.
|
||||
- This is a terrible hack to provide sensible brk limit for child. */
|
||||
- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data));
|
||||
-
|
||||
/* Actual spawn() syscall. */
|
||||
SysRes res = VG_(do_syscall5)(__NR_spawn, (UWord) path, (UWord) attrs,
|
||||
attrs_size, (UWord) argenv, argenv_size);
|
||||
SET_STATUS_from_SysRes(res);
|
||||
VG_(free)(argenv);
|
||||
|
||||
- /* Restore DATA rlimit back to its previous value set in m_main.c. */
|
||||
- struct vki_rlimit zero = { 0, 0 };
|
||||
- zero.rlim_max = VG_(client_rlimit_data).rlim_max;
|
||||
- VG_(setrlimit)(VKI_RLIMIT_DATA, &zero);
|
||||
-
|
||||
if (SUCCESS) {
|
||||
PRINT(" spawn: process %d spawned child %ld\n", VG_(getpid)(), RES);
|
||||
}
|
||||
@@ -3619,9 +3610,6 @@ PRE(sys_execve)
|
||||
VG_(sigprocmask)(VKI_SIG_SETMASK, &tst->sig_mask, NULL);
|
||||
}
|
||||
|
||||
- /* Restore the DATA rlimit for the child. */
|
||||
- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data));
|
||||
-
|
||||
/* Debug-only printing. */
|
||||
if (0) {
|
||||
HChar **cpp;
|
||||
Index: coregrind/m_main.c
|
||||
===================================================================
|
||||
--- coregrind/m_main.c.orig
|
||||
+++ coregrind/m_main.c
|
||||
@@ -1627,7 +1627,6 @@ Int valgrind_main ( Int argc, HChar **ar
|
||||
Bool logging_to_fd = False;
|
||||
const HChar* xml_fname_unexpanded = NULL;
|
||||
Int loglevel, i;
|
||||
- struct vki_rlimit zero = { 0, 0 };
|
||||
XArray* addr2dihandle = NULL;
|
||||
|
||||
//============================================================
|
||||
@@ -1800,13 +1799,15 @@ Int valgrind_main ( Int argc, HChar **ar
|
||||
VG_(debugLog)(1, "main", "... %s\n", VG_(name_of_launcher));
|
||||
|
||||
//--------------------------------------------------------------
|
||||
- // Get the current process datasize rlimit, and set it to zero.
|
||||
- // This prevents any internal uses of brk() from having any effect.
|
||||
- // We remember the old value so we can restore it on exec, so that
|
||||
- // child processes will have a reasonable brk value.
|
||||
+ // We used to set the process datasize rlimit to zero to prevent
|
||||
+ // any internal use of brk() from having any effect. But later
|
||||
+ // linux kernels redefine RLIMIT_DATA as the size of any data
|
||||
+ // areas, including some dynamic mmap memory allocations.
|
||||
+ // See bug #357833 for the commit that went into linux 4.5
|
||||
+ // changing the definition of RLIMIT_DATA. So don't mess with
|
||||
+ // RLIMIT_DATA here now anymore. Just remember it for use in
|
||||
+ // the syscall wrappers.
|
||||
VG_(getrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data));
|
||||
- zero.rlim_max = VG_(client_rlimit_data).rlim_max;
|
||||
- VG_(setrlimit)(VKI_RLIMIT_DATA, &zero);
|
||||
|
||||
// Get the current process stack rlimit.
|
||||
VG_(getrlimit)(VKI_RLIMIT_STACK, &VG_(client_rlimit_stack));
|
||||
Index: coregrind/m_libcproc.c
|
||||
===================================================================
|
||||
--- coregrind/m_libcproc.c.orig
|
||||
+++ coregrind/m_libcproc.c
|
||||
@@ -450,9 +450,6 @@ void VG_(execv) ( const HChar* filename,
|
||||
HChar** envp;
|
||||
SysRes res;
|
||||
|
||||
- /* restore the DATA rlimit for the child */
|
||||
- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data));
|
||||
-
|
||||
envp = VG_(env_clone)(VG_(client_envp));
|
||||
VG_(env_remove_valgrind_env_stuff)( envp, True /*ro_strings*/, NULL );
|
||||
|
||||
@@ -511,17 +508,9 @@ Int VG_(spawn) ( const HChar *filename,
|
||||
# undef COPY_CHAR_TO_ARGENV
|
||||
# undef COPY_STRING_TOARGENV
|
||||
|
||||
- /* HACK: Temporarily restore the DATA rlimit for spawned child. */
|
||||
- VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data));
|
||||
-
|
||||
SysRes res = VG_(do_syscall5)(__NR_spawn, (UWord) filename, (UWord) NULL, 0,
|
||||
(UWord) argenv, argenv_size);
|
||||
|
||||
- /* Restore DATA rlimit back to its previous value set in m_main.c. */
|
||||
- struct vki_rlimit zero = { 0, 0 };
|
||||
- zero.rlim_max = VG_(client_rlimit_data).rlim_max;
|
||||
- VG_(setrlimit)(VKI_RLIMIT_DATA, &zero);
|
||||
-
|
||||
VG_(free)(argenv);
|
||||
for (HChar **p = envp; *p != NULL; p++) {
|
||||
VG_(free)(*p);
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fa253dc26ddb661b6269df58144eff607ea3f76a9bcfe574b0c7726e1dfcb997
|
||||
size 10967905
|
3
valgrind-3.11.0.tar.bz2
Normal file
3
valgrind-3.11.0.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6c396271a8c1ddd5a6fb9abe714ea1e8a86fce85b30ab26b4266aeb4c2413b42
|
||||
size 11910809
|
@ -1,31 +0,0 @@
|
||||
Index: configure.ac
|
||||
===================================================================
|
||||
--- configure.ac (revision 14954)
|
||||
+++ configure.ac (revision 14955)
|
||||
@@ -325,20 +325,14 @@
|
||||
kernel=`uname -r`
|
||||
|
||||
case "${kernel}" in
|
||||
- 2.6.*|3.*)
|
||||
- AC_MSG_RESULT([2.6.x/3.x family (${kernel})])
|
||||
- AC_DEFINE([KERNEL_2_6], 1, [Define to 1 if you're using Linux 2.6.x or Linux 3.x])
|
||||
+ 0.*|1.*|2.0.*|2.1.*|2.2.*|2.3.*|2.4.*|2.5.*)
|
||||
+ AC_MSG_RESULT([unsupported (${kernel})])
|
||||
+ AC_MSG_ERROR([Valgrind needs a Linux kernel >= 2.6])
|
||||
;;
|
||||
|
||||
- 2.4.*)
|
||||
- AC_MSG_RESULT([2.4 family (${kernel})])
|
||||
- AC_DEFINE([KERNEL_2_4], 1, [Define to 1 if you're using Linux 2.4.x])
|
||||
- ;;
|
||||
-
|
||||
- *)
|
||||
- AC_MSG_RESULT([unsupported (${kernel})])
|
||||
- AC_MSG_ERROR([Valgrind works on kernels 2.4, 2.6])
|
||||
- ;;
|
||||
+ *)
|
||||
+ AC_MSG_RESULT([2.6 or later (${kernel})])
|
||||
+ ;;
|
||||
esac
|
||||
|
||||
;;
|
@ -1,3 +1,15 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Feb 15 16:04:59 UTC 2016 - dmueller@suse.com
|
||||
|
||||
- update to 3.11.0:
|
||||
* 3.11.0 is a feature release with many improvements and the usual
|
||||
collection of bug fixes.
|
||||
- replace gcc-version.patch with gcc5.patch: This is the upstream
|
||||
version
|
||||
- drop valgrind-linux-4.0.patch: merged upstream
|
||||
- add svn-r15766.patch: Fix valgrind with recent kernels
|
||||
- jit-register-unregister.diff commented out, needs porting
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 6 12:09:47 UTC 2015 - schwab@suse.de
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
#
|
||||
# spec file for package valgrind
|
||||
#
|
||||
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@ -25,7 +25,7 @@
|
||||
%define building_docs 0
|
||||
%endif
|
||||
Name: valgrind
|
||||
Version: 3.10.1
|
||||
Version: 3.11.0
|
||||
Release: 0
|
||||
Summary: Memory Management Debugger
|
||||
License: GPL-2.0+
|
||||
@ -37,8 +37,8 @@ Source0: http://valgrind.org/downloads/%{name}-%{version}.tar.bz2
|
||||
Patch1: jit-register-unregister.diff
|
||||
Patch2: armv6-support.diff
|
||||
Patch3: glibc-version.patch
|
||||
Patch4: gcc-version.patch
|
||||
Patch5: valgrind-linux-4.0.patch
|
||||
Patch4: gcc5.patch
|
||||
Patch5: svn-r15766.patch
|
||||
BuildRequires: automake
|
||||
BuildRequires: docbook-xsl-stylesheets
|
||||
BuildRequires: docbook_4
|
||||
@ -110,22 +110,25 @@ but it has been successfully used to optimize several KDE applications.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch1
|
||||
#%patch1
|
||||
%patch2
|
||||
%patch3 -p1
|
||||
%patch4
|
||||
%patch5
|
||||
|
||||
%build
|
||||
export FLAGS="%{optflags}"
|
||||
%ifarch %arm
|
||||
# Valgrind doesn't support compiling for Thumb yet. Remove when it gets
|
||||
# native thumb support.
|
||||
RPM_OPT_FLAGS=${RPM_OPT_FLAGS/-mthumb/-mthumb-interwork -marm}
|
||||
FLAGS=${FLAGS/-mthumb/-mthumb-interwork -marm}
|
||||
%endif
|
||||
# not a good idea to build valgrind with fortify, as it does not link glibc
|
||||
RPM_OPT_FLAGS="${RPM_OPT_FLAGS/-D_FORTIFY_SOURCE=2/}"
|
||||
export CFLAGS="%{optflags}"
|
||||
export CXXFLAGS="%{optflags}"
|
||||
FLAGS="${FLAGS/-D_FORTIFY_SOURCE=2/}"
|
||||
FLAGS="${FLAGS/-fstack-protector/}"
|
||||
export CFLAGS="$FLAGS"
|
||||
export CXXFLAGS="$FLAGS"
|
||||
export FFLAGS="$FLAGS"
|
||||
%if 0%{?suse_version} > 1100
|
||||
autoreconf -fi
|
||||
%endif
|
||||
|
Loading…
Reference in New Issue
Block a user