valgrind:update 3.11

This commit is contained in:
alihanozturk
2016-03-29 17:37:57 +03:00
parent 70b31a1603
commit 90bd53fe61
5 changed files with 152 additions and 98 deletions
+2 -1
View File
@@ -10,7 +10,8 @@ from pisi.actionsapi import shelltools
from pisi.actionsapi import get
def setup():
autotools.autoreconf("-vfi")
shelltools.export("CFLAGS", get.CFLAGS().replace("-fstack-protector",""))
shelltools.export("CPPFLAGS", get.CXXFLAGS().replace("-fstack-protector",""))
autotools.configure("--without-mpicc")
def build():
@@ -0,0 +1,140 @@
------------------------------------------------------------------------
r15766 | mjw | 2016-01-21 03:37:43 -0800 (Thu, 21 Jan 2016) | 13 lines
Changed paths:
M /trunk/NEWS
M /trunk/coregrind/m_libcproc.c
M /trunk/coregrind/m_main.c
M /trunk/coregrind/m_syswrap/syswrap-generic.c
M /trunk/coregrind/m_syswrap/syswrap-solaris.c
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 (revision 15765)
+++ coregrind/m_syswrap/syswrap-generic.c (revision 15766)
@@ -3014,9 +3014,6 @@
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 (revision 15765)
+++ coregrind/m_syswrap/syswrap-solaris.c (revision 15766)
@@ -1589,10 +1589,6 @@
#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);
@@ -1599,11 +1595,6 @@
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);
}
@@ -3794,9 +3785,6 @@
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 (revision 15765)
+++ coregrind/m_main.c (revision 15766)
@@ -1627,7 +1627,6 @@
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 @@
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 (revision 15765)
+++ coregrind/m_libcproc.c (revision 15766)
@@ -450,9 +450,6 @@
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 @@
# 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,37 +0,0 @@
diff -Naur valgrind-3.9.0-orig/configure valgrind-3.9.0/configure
--- valgrind-3.9.0-orig/configure 2013-11-01 09:33:32.000000000 +1000
+++ valgrind-3.9.0/configure 2014-02-08 09:28:06.063248544 +1000
@@ -6689,6 +6689,16 @@
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;
+ 2.19)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.19 family" >&5
+$as_echo "2.19 family" >&6; }
+
+$as_echo "#define GLIBC_2_19 1" >>confdefs.h
+
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;;
darwin)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5
$as_echo "Darwin" >&6; }
diff -Naur valgrind-3.9.0-orig/configure.ac valgrind-3.9.0/configure.ac
--- valgrind-3.9.0-orig/configure.ac 2013-11-01 09:28:16.000000000 +1000
+++ valgrind-3.9.0/configure.ac 2014-02-08 09:27:38.870385366 +1000
@@ -918,6 +918,13 @@
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;
+ 2.19)
+ AC_MSG_RESULT(2.19 family)
+ AC_DEFINE([GLIBC_2_19], 1, [Define to 1 if you're using glibc 2.19.x])
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;;
darwin)
AC_MSG_RESULT(Darwin)
AC_DEFINE([DARWIN_LIBC], 1, [Define to 1 if you're using Darwin])
@@ -1,54 +0,0 @@
diff -Naur valgrind-3.9.0-orig/configure valgrind-3.9.0/configure
--- valgrind-3.9.0-orig/configure 2013-11-01 09:33:32.000000000 +1000
+++ valgrind-3.9.0/configure 2014-02-08 09:28:06.063248544 +1000
@@ -6689,6 +6689,26 @@
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;
+ 2.20)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.20 family" >&5
+$as_echo "2.20 family" >&6; }
+
+$as_echo "#define GLIBC_2_20 1" >>confdefs.h
+
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;;
+ 2.21)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.21 family" >&5
+$as_echo "2.21 family" >&6; }
+
+$as_echo "#define GLIBC_2_21 1" >>confdefs.h
+
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;;
darwin)
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: Darwin" >&5
$as_echo "Darwin" >&6; }
diff -Naur valgrind-3.9.0-orig/configure.ac valgrind-3.9.0/configure.ac
--- valgrind-3.9.0-orig/configure.ac 2013-11-01 09:28:16.000000000 +1000
+++ valgrind-3.9.0/configure.ac 2014-02-08 09:27:38.870385366 +1000
@@ -918,6 +918,20 @@
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
;;
+ 2.20)
+ AC_MSG_RESULT(2.20 family)
+ AC_DEFINE([GLIBC_2_20], 1, [Define to 1 if you're using glibc 2.20.x])
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;;
+ 2.21)
+ AC_MSG_RESULT(2.21 family)
+ AC_DEFINE([GLIBC_2_21], 1, [Define to 1 if you're using glibc 2.21.x])
+ DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+ ;;
darwin)
AC_MSG_RESULT(Darwin)
AC_DEFINE([DARWIN_LIBC], 1, [Define to 1 if you're using Darwin])
+10 -6
View File
@@ -1,4 +1,3 @@
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
@@ -13,18 +12,23 @@
<IsA>app:console</IsA>
<Summary>Memory access debugger for X86 and PPC Linux platforms</Summary>
<Description>Valgrind is an award-winning suite of tools for debugging and profiling Linux programs. With the tools that come with Valgrind, you can automatically detect many memory management and threading bugs, avoiding hours of frustrating bug-hunting, making your programs more stable. You can also perform detailed profiling, to speed up and reduce memory use of your programs.</Description>
<Archive sha1sum="15518427de842547ffa84eff8b2b67f3b16581a8" type="tarbz2">http://www.valgrind.org/downloads/valgrind-3.10.1.tar.bz2</Archive>
<Archive sha1sum="340757e91d9e83591158fe8bb985c6b11bc53de5" type="tarbz2">http://www.valgrind.org/downloads/valgrind-3.11.0.tar.bz2</Archive>
<BuildDependencies>
<Dependency>glibc-devel</Dependency>
<Dependency>boost-devel</Dependency>
<Dependency>gdb-devel</Dependency>
</BuildDependencies>
<Patches>
<!--<Patch level="1">valgrind-3.9.0-glibc-2.19.patch</Patch>-->
<Patch level="1">valgrind-3.9.0-glibc-2.21.patch</Patch>
<Patch level="0">fix_rlimit.patch</Patch>
</Patches>
</Source>
<Package>
<Name>valgrind</Name>
<RuntimeDependencies>
<Dependency>glibc</Dependency>
<Dependency>perl</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="executable">/usr/bin</Path>
<Path fileType="header">/usr/include/valgrind</Path>
@@ -36,8 +40,8 @@
<History>
<Update release="1">
<Date>2015-07-21</Date>
<Version>3.10.1</Version>
<Date>2016-03-29</Date>
<Version>3.11.0</Version>
<Comment>First release</Comment>
<Name>Ayhan Yalçınsoy</Name>
<Email>ayhanyalcinsoy@pisilinux.org</Email>