- update to 3.6.0 snapshot:
- Valgrind runs much faster when the --smc-check=all option is given. - Cachegrind has a new processing script, cg_diff, which finds the difference between two profiles. It's very useful for evaluating the performance effects of a change in a program. Related to this change, the meaning of cg_annotate's (rarely-used) --threshold option has changed; this is unlikely to affect many people, if you do use it please see the user manual for details. - Callgrind now can do branch prediction simulation, similar to Cachegrind. In addition, it optionally can count the number of executed global bus events. Both can be used for a better approximation of a "Cycle Estimation" as derived event (you need to update the event formula in KCachegrind yourself). - Cachegrind and Callgrind now refer to the LL (last-level) cache rather than the L2 cache. This is to accommodate machines with three levels of caches -- if Cachegrind/Callgrind auto-detects the cache configuration of such a machine it will run the simulation as if the L2 cache isn't present. This means the results are less likely to match the true result for the machine, but Cachegrind/Callgrind's results are already only approximate, and should not be considered authoritative. The results are still useful for giving a general idea about a program's locality. - Massif has a new option, --pages-as-heap, which is disabled by default. When enabled, instead of tracking allocations at the level of heap blocks (as allocated with malloc/new/new[]), it instead tracks memory allocations at the level of memory pages (as mapped by mmap, brk, etc). Each mapped page is treated as its own block. Interpreting the page-level output is harder than the heap-level output, but this option is useful if you want to account for every byte of memory used by a program. - Added new memcheck command-line option --show-possibly-lost. OBS-URL: https://build.opensuse.org/package/show/devel:tools/valgrind?expand=0&rev=17
This commit is contained in:
parent
74442d7fd1
commit
a3155bc151
@ -1,101 +0,0 @@
|
|||||||
------------------------------------------------------------------------
|
|
||||||
r11215 | sewardj | 2010-07-21 11:49:27 +0200 (Mi, 21. Jul 2010) | 6 Zeilen
|
|
||||||
|
|
||||||
Increase Valgrind's (per-thread) stack size from 64kB to 1MB,
|
|
||||||
so as to avoid demangler crashes on very long names. Fixes
|
|
||||||
#197988 (possibly only temporary; the demangler could overflow
|
|
||||||
the stack again, given extremely long names.)
|
|
||||||
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
Index: coregrind/pub_core_aspacemgr.h
|
|
||||||
===================================================================
|
|
||||||
--- coregrind/pub_core_aspacemgr.h (Revision 11214)
|
|
||||||
+++ coregrind/pub_core_aspacemgr.h (Revision 11215)
|
|
||||||
@@ -373,10 +373,10 @@ extern Bool VG_(am_relocate_nooverlap_cl
|
|
||||||
|
|
||||||
#if defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
|
|
||||||
# define VG_STACK_GUARD_SZB 65536 // 1 or 16 pages
|
|
||||||
-# define VG_STACK_ACTIVE_SZB 131072 // 2 or 32 pages
|
|
||||||
+# define VG_STACK_ACTIVE_SZB (4096 * 256) // 1Mb
|
|
||||||
#else
|
|
||||||
# define VG_STACK_GUARD_SZB 8192 // 2 pages
|
|
||||||
-# define VG_STACK_ACTIVE_SZB 65536 // 16 pages
|
|
||||||
+# define VG_STACK_ACTIVE_SZB (4096 * 256) // 1Mb
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
r11343 | sewardj | 2010-09-08 10:30:31 +0200 (Mi, 08. Sep 2010) | 7 Zeilen
|
|
||||||
|
|
||||||
Don't scan the entire Valgrind stack to check for impending
|
|
||||||
stack-overflow situations. This causes an immense number of L2 misses
|
|
||||||
which are completely pointless, and the recent increase of the
|
|
||||||
Valgrind per-thread stack size from 64k to 1M greatly aggravates the
|
|
||||||
situation.
|
|
||||||
|
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
Index: coregrind/m_aspacemgr/aspacemgr-common.c
|
|
||||||
===================================================================
|
|
||||||
--- coregrind/m_aspacemgr/aspacemgr-common.c (Revision 11342)
|
|
||||||
+++ coregrind/m_aspacemgr/aspacemgr-common.c (Revision 11343)
|
|
||||||
@@ -432,15 +432,18 @@ VgStack* VG_(am_alloc_VgStack)( /*OUT*/A
|
|
||||||
/* Figure out how many bytes of the stack's active area have not
|
|
||||||
been used. Used for estimating if we are close to overflowing it. */
|
|
||||||
|
|
||||||
-Int VG_(am_get_VgStack_unused_szB)( VgStack* stack )
|
|
||||||
+SizeT VG_(am_get_VgStack_unused_szB)( VgStack* stack, SizeT limit )
|
|
||||||
{
|
|
||||||
- Int i;
|
|
||||||
+ SizeT i;
|
|
||||||
UInt* p;
|
|
||||||
|
|
||||||
p = (UInt*)&stack->bytes[VG_STACK_GUARD_SZB];
|
|
||||||
- for (i = 0; i < VG_STACK_ACTIVE_SZB/sizeof(UInt); i++)
|
|
||||||
+ for (i = 0; i < VG_STACK_ACTIVE_SZB/sizeof(UInt); i++) {
|
|
||||||
if (p[i] != 0xDEADBEEF)
|
|
||||||
break;
|
|
||||||
+ if (i * sizeof(UInt) >= limit)
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
|
|
||||||
return i * sizeof(UInt);
|
|
||||||
}
|
|
||||||
Index: coregrind/m_scheduler/scheduler.c
|
|
||||||
===================================================================
|
|
||||||
--- coregrind/m_scheduler/scheduler.c (Revision 11342)
|
|
||||||
+++ coregrind/m_scheduler/scheduler.c (Revision 11343)
|
|
||||||
@@ -1753,9 +1753,11 @@ void VG_(sanity_check_general) ( Bool fo
|
|
||||||
stack
|
|
||||||
= (VgStack*)
|
|
||||||
VG_(get_ThreadState)(tid)->os_state.valgrind_stack_base;
|
|
||||||
+ SizeT limit
|
|
||||||
+ = 4096; // Let's say. Checking more causes lots of L2 misses.
|
|
||||||
remains
|
|
||||||
- = VG_(am_get_VgStack_unused_szB)(stack);
|
|
||||||
- if (remains < VKI_PAGE_SIZE)
|
|
||||||
+ = VG_(am_get_VgStack_unused_szB)(stack, limit);
|
|
||||||
+ if (remains < limit)
|
|
||||||
VG_(message)(Vg_DebugMsg,
|
|
||||||
"WARNING: Thread %d is within %ld bytes "
|
|
||||||
"of running out of stack!\n",
|
|
||||||
Index: coregrind/pub_core_aspacemgr.h
|
|
||||||
===================================================================
|
|
||||||
--- coregrind/pub_core_aspacemgr.h (Revision 11342)
|
|
||||||
+++ coregrind/pub_core_aspacemgr.h (Revision 11343)
|
|
||||||
@@ -396,10 +396,10 @@ typedef
|
|
||||||
|
|
||||||
extern VgStack* VG_(am_alloc_VgStack)( /*OUT*/Addr* initial_sp );
|
|
||||||
|
|
||||||
-/* Figure out how many bytes of the stack's active area have not
|
|
||||||
- been used. Used for estimating if we are close to overflowing it. */
|
|
||||||
-
|
|
||||||
-extern Int VG_(am_get_VgStack_unused_szB)( VgStack* stack );
|
|
||||||
+/* Figure out how many bytes of the stack's active area have not been
|
|
||||||
+ used. Used for estimating if we are close to overflowing it. If
|
|
||||||
+ the free area is larger than 'limit', just return 'limit'. */
|
|
||||||
+extern SizeT VG_(am_get_VgStack_unused_szB)( VgStack* stack, SizeT limit );
|
|
||||||
|
|
||||||
// DDD: this is ugly
|
|
||||||
#if defined(VGO_darwin)
|
|
@ -1,89 +0,0 @@
|
|||||||
--- coregrind/m_syswrap/priv_syswrap-linux.h
|
|
||||||
+++ coregrind/m_syswrap/priv_syswrap-linux.h
|
|
||||||
@@ -116,6 +116,7 @@
|
|
||||||
DECL_TEMPLATE(linux, sys_get_mempolicy);
|
|
||||||
|
|
||||||
DECL_TEMPLATE(linux, sys_inotify_init);
|
|
||||||
+DECL_TEMPLATE(linux, sys_inotify_init1);
|
|
||||||
DECL_TEMPLATE(linux, sys_inotify_add_watch);
|
|
||||||
DECL_TEMPLATE(linux, sys_inotify_rm_watch);
|
|
||||||
|
|
||||||
--- coregrind/m_syswrap/syswrap-amd64-linux.c
|
|
||||||
+++ coregrind/m_syswrap/syswrap-amd64-linux.c
|
|
||||||
@@ -1374,8 +1374,8 @@
|
|
||||||
LINX_(__NR_eventfd2, sys_eventfd2), // 290
|
|
||||||
LINXY(__NR_epoll_create1, sys_epoll_create1), // 291
|
|
||||||
// (__NR_dup3, sys_ni_syscall) // 292
|
|
||||||
- LINXY(__NR_pipe2, sys_pipe2) // 293
|
|
||||||
- // (__NR_inotify_init1, sys_ni_syscall) // 294
|
|
||||||
+ LINXY(__NR_pipe2, sys_pipe2), // 293
|
|
||||||
+ LINXY(__NR_inotify_init1, sys_inotify_init1) // 294
|
|
||||||
};
|
|
||||||
|
|
||||||
const UInt ML_(syscall_table_size) =
|
|
||||||
--- coregrind/m_syswrap/syswrap-linux.c
|
|
||||||
+++ coregrind/m_syswrap/syswrap-linux.c
|
|
||||||
@@ -1526,6 +1526,24 @@
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+PRE(sys_inotify_init1)
|
|
||||||
+{
|
|
||||||
+ PRINT("sys_inotify_init ( %ld )", ARG1);
|
|
||||||
+ PRE_REG_READ1(long, "inotify_init", int, flag);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+POST(sys_inotify_init1)
|
|
||||||
+{
|
|
||||||
+ vg_assert(SUCCESS);
|
|
||||||
+ if (!ML_(fd_allowed)(RES, "inotify_init", tid, True)) {
|
|
||||||
+ VG_(close)(RES);
|
|
||||||
+ SET_STATUS_Failure( VKI_EMFILE );
|
|
||||||
+ } else {
|
|
||||||
+ if (VG_(clo_track_fds))
|
|
||||||
+ ML_(record_fd_open_nameless) (tid, RES);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
PRE(sys_inotify_add_watch)
|
|
||||||
{
|
|
||||||
PRINT( "sys_inotify_add_watch ( %ld, %#lx, %lx )", ARG1,ARG2,ARG3);
|
|
||||||
--- coregrind/m_syswrap/syswrap-ppc32-linux.c
|
|
||||||
+++ coregrind/m_syswrap/syswrap-ppc32-linux.c
|
|
||||||
@@ -1866,8 +1866,8 @@
|
|
||||||
LINX_(__NR_eventfd2, sys_eventfd2), // 314
|
|
||||||
LINXY(__NR_epoll_create1, sys_epoll_create1), // 315
|
|
||||||
// (__NR_dup3, sys_ni_syscall) // 316
|
|
||||||
- LINXY(__NR_pipe2, sys_pipe2) // 317
|
|
||||||
- // (__NR_inotify_init1, sys_ni_syscall) // 318
|
|
||||||
+ LINXY(__NR_pipe2, sys_pipe2), // 317
|
|
||||||
+ LINXY(__NR_inotify_init1, sys_inotify_init1), // 318
|
|
||||||
};
|
|
||||||
|
|
||||||
const UInt ML_(syscall_table_size) =
|
|
||||||
--- coregrind/m_syswrap/syswrap-ppc64-linux.c
|
|
||||||
+++ coregrind/m_syswrap/syswrap-ppc64-linux.c
|
|
||||||
@@ -1506,8 +1506,8 @@
|
|
||||||
LINX_(__NR_eventfd2, sys_eventfd2), // 314
|
|
||||||
LINXY(__NR_epoll_create1, sys_epoll_create1), // 315
|
|
||||||
// (__NR_dup3, sys_ni_syscall) // 316
|
|
||||||
- LINXY(__NR_pipe2, sys_pipe2) // 317
|
|
||||||
- // (__NR_inotify_init1, sys_ni_syscall) // 318
|
|
||||||
+ LINXY(__NR_pipe2, sys_pipe2), // 317
|
|
||||||
+ LINXY(__NR_inotify_init1, sys_inotify_init1), // 318
|
|
||||||
};
|
|
||||||
|
|
||||||
const UInt ML_(syscall_table_size) =
|
|
||||||
--- coregrind/m_syswrap/syswrap-x86-linux.c
|
|
||||||
+++ coregrind/m_syswrap/syswrap-x86-linux.c
|
|
||||||
@@ -2253,8 +2253,8 @@
|
|
||||||
LINXY(__NR_epoll_create1, sys_epoll_create1), // 329
|
|
||||||
|
|
||||||
// (__NR_dup3, sys_ni_syscall) // 330
|
|
||||||
- LINXY(__NR_pipe2, sys_pipe2) // 331
|
|
||||||
- // (__NR_inotify_init1, sys_ni_syscall) // 332
|
|
||||||
+ LINXY(__NR_pipe2, sys_pipe2), // 331
|
|
||||||
+ LINXY(__NR_inotify_init1, sys_inotify_init1), // 332
|
|
||||||
};
|
|
||||||
|
|
||||||
const UInt ML_(syscall_table_size) =
|
|
@ -1,43 +0,0 @@
|
|||||||
--- configure.in
|
|
||||||
+++ configure.in
|
|
||||||
@@ -656,6 +656,17 @@
|
|
||||||
],
|
|
||||||
GLIBC_VERSION="2.10")
|
|
||||||
|
|
||||||
+AC_EGREP_CPP([GLIBC_211], [
|
|
||||||
+#include <features.h>
|
|
||||||
+#ifdef __GNU_LIBRARY__
|
|
||||||
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ == 11)
|
|
||||||
+ GLIBC_211
|
|
||||||
+ #endif
|
|
||||||
+#endif
|
|
||||||
+],
|
|
||||||
+GLIBC_VERSION="2.11")
|
|
||||||
+
|
|
||||||
+
|
|
||||||
AC_EGREP_CPP([AIX5_LIBC], [
|
|
||||||
#include <standards.h>
|
|
||||||
#if defined(_AIXVERSION_510) || defined(_AIXVERSION_520) || defined(_AIXVERSION_530)
|
|
||||||
@@ -742,6 +753,13 @@
|
|
||||||
DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
|
|
||||||
DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
|
|
||||||
;;
|
|
||||||
+ 2.11)
|
|
||||||
+ AC_MSG_RESULT(2.11 family)
|
|
||||||
+ AC_DEFINE([GLIBC_2_11], 1, [Define to 1 if you're using glibc 2.11.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}"
|
|
||||||
+ ;;
|
|
||||||
aix5)
|
|
||||||
AC_MSG_RESULT(AIX 5.1 or 5.2 or 5.3)
|
|
||||||
AC_DEFINE([AIX5_LIBC], 1, [Define to 1 if you're using AIX 5.1 or 5.2 or 5.3])
|
|
||||||
@@ -755,7 +773,7 @@
|
|
||||||
|
|
||||||
*)
|
|
||||||
AC_MSG_RESULT(unsupported version)
|
|
||||||
- AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.10])
|
|
||||||
+ AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.11])
|
|
||||||
AC_MSG_ERROR([or AIX 5.1 or 5.2 or 5.3 GLIBC_VERSION])
|
|
||||||
AC_MSG_ERROR([or Darwin libc])
|
|
||||||
;;
|
|
@ -1,22 +1,21 @@
|
|||||||
Index: include/valgrind.h
|
--- include/valgrind.h
|
||||||
===================================================================
|
+++ include/valgrind.h
|
||||||
--- include/valgrind.h (revision 10894)
|
@@ -4306,7 +4306,12 @@ typedef
|
||||||
+++ include/valgrind.h (working copy)
|
VG_USERREQ__LOAD_PDB_DEBUGINFO = 0x1601,
|
||||||
@@ -3648,7 +3648,11 @@
|
|
||||||
VG_USERREQ__STACK_CHANGE = 0x1503,
|
|
||||||
|
|
||||||
/* Wine support */
|
/* Querying of debug info. */
|
||||||
- VG_USERREQ__LOAD_PDB_DEBUGINFO = 0x1601
|
- VG_USERREQ__MAP_IP_TO_SRCLOC = 0x1701
|
||||||
+ VG_USERREQ__LOAD_PDB_DEBUGINFO = 0x1601,
|
+ VG_USERREQ__MAP_IP_TO_SRCLOC = 0x1701,
|
||||||
+
|
+
|
||||||
+ /* JIT support */
|
+ /* JIT support */
|
||||||
+ VG_USERREQ__JIT_REGISTER_MAP = 0x1701,
|
+ VG_USERREQ__JIT_REGISTER_MAP = 0x1702,
|
||||||
+ VG_USERREQ__JIT_UNREGISTER_MAP = 0x1702
|
+ VG_USERREQ__JIT_UNREGISTER_MAP = 0x1703
|
||||||
|
+
|
||||||
} Vg_ClientRequest;
|
} Vg_ClientRequest;
|
||||||
|
|
||||||
#if !defined(__GNUC__)
|
#if !defined(__GNUC__)
|
||||||
@@ -4009,7 +4013,21 @@
|
@@ -4758,6 +4763,19 @@ VALGRIND_PRINTF_BACKTRACE(const char *fo
|
||||||
fd, ptr, total_size, delta, 0); \
|
addr, buf64, 0, 0, 0); \
|
||||||
}
|
}
|
||||||
|
|
||||||
+#define VALGRIND_JIT_REGISTER_MAP(name, start, end) \
|
+#define VALGRIND_JIT_REGISTER_MAP(name, start, end) \
|
||||||
@ -25,23 +24,19 @@ Index: include/valgrind.h
|
|||||||
+ VG_USERREQ__JIT_REGISTER_MAP, \
|
+ VG_USERREQ__JIT_REGISTER_MAP, \
|
||||||
+ name, start, end, 0, 0); \
|
+ name, start, end, 0, 0); \
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
+#define VALGRIND_JIT_UNREGISTER_MAP(name, start) \
|
+#define VALGRIND_JIT_UNREGISTER_MAP(name, start) \
|
||||||
+ {unsigned int _qzz_res; \
|
+ {unsigned int _qzz_res; \
|
||||||
+ VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
|
+ VALGRIND_DO_CLIENT_REQUEST(_qzz_res, 0, \
|
||||||
+ VG_USERREQ__JIT_REGISTER_MAP, \
|
+ VG_USERREQ__JIT_REGISTER_MAP, \
|
||||||
+ start, 0, 0, 0, 0); \
|
+ start, 0, 0, 0, 0); \
|
||||||
+ }
|
+ }
|
||||||
+
|
|
||||||
+
|
|
||||||
#undef PLAT_x86_linux
|
#undef PLAT_x86_linux
|
||||||
#undef PLAT_amd64_linux
|
#undef PLAT_amd64_linux
|
||||||
#undef PLAT_ppc32_linux
|
--- coregrind/m_debuginfo/debuginfo.c
|
||||||
Index: coregrind/m_debuginfo/debuginfo.c
|
+++ coregrind/m_debuginfo/debuginfo.c
|
||||||
===================================================================
|
@@ -48,6 +48,7 @@
|
||||||
--- coregrind/m_debuginfo/debuginfo.c (revision 10894)
|
|
||||||
+++ coregrind/m_debuginfo/debuginfo.c (working copy)
|
|
||||||
@@ -47,6 +47,7 @@
|
|
||||||
#include "pub_core_oset.h"
|
#include "pub_core_oset.h"
|
||||||
#include "pub_core_stacktrace.h" // VG_(get_StackTrace) XXX: circular dependency
|
#include "pub_core_stacktrace.h" // VG_(get_StackTrace) XXX: circular dependency
|
||||||
#include "pub_core_ume.h"
|
#include "pub_core_ume.h"
|
||||||
@ -49,7 +44,7 @@ Index: coregrind/m_debuginfo/debuginfo.c
|
|||||||
|
|
||||||
#include "priv_misc.h" /* dinfo_zalloc/free */
|
#include "priv_misc.h" /* dinfo_zalloc/free */
|
||||||
#include "priv_d3basics.h" /* ML_(pp_GX) */
|
#include "priv_d3basics.h" /* ML_(pp_GX) */
|
||||||
@@ -1131,6 +1132,132 @@
|
@@ -1201,6 +1202,132 @@ ULong VG_(di_aix5_notify_segchange)(
|
||||||
#endif /* defined(VGO_aix5) */
|
#endif /* defined(VGO_aix5) */
|
||||||
|
|
||||||
|
|
||||||
@ -182,7 +177,7 @@ Index: coregrind/m_debuginfo/debuginfo.c
|
|||||||
/*------------------------------------------------------------*/
|
/*------------------------------------------------------------*/
|
||||||
/*--- ---*/
|
/*--- ---*/
|
||||||
/*--- TOP LEVEL: QUERYING EXISTING DEBUG INFO ---*/
|
/*--- TOP LEVEL: QUERYING EXISTING DEBUG INFO ---*/
|
||||||
@@ -1263,8 +1390,19 @@
|
@@ -1336,8 +1463,19 @@ Bool get_sym_name ( Bool do_cxx_demangli
|
||||||
PtrdiffT offset;
|
PtrdiffT offset;
|
||||||
|
|
||||||
search_all_symtabs ( a, &di, &sno, match_anywhere_in_sym, findText );
|
search_all_symtabs ( a, &di, &sno, match_anywhere_in_sym, findText );
|
||||||
@ -203,26 +198,24 @@ Index: coregrind/m_debuginfo/debuginfo.c
|
|||||||
|
|
||||||
VG_(demangle) ( do_cxx_demangling, do_z_demangling,
|
VG_(demangle) ( do_cxx_demangling, do_z_demangling,
|
||||||
di->symtab[sno].name, buf, nbuf );
|
di->symtab[sno].name, buf, nbuf );
|
||||||
Index: coregrind/pub_core_debuginfo.h
|
--- coregrind/pub_core_debuginfo.h
|
||||||
===================================================================
|
+++ coregrind/pub_core_debuginfo.h
|
||||||
--- coregrind/pub_core_debuginfo.h (revision 10894)
|
@@ -106,6 +106,12 @@ Bool VG_(get_fnname_raw) ( Addr a, Char*
|
||||||
+++ coregrind/pub_core_debuginfo.h (working copy)
|
|
||||||
@@ -106,6 +106,10 @@
|
|
||||||
extern
|
extern
|
||||||
Bool VG_(get_fnname_no_cxx_demangle) ( Addr a, Char* buf, Int nbuf );
|
Bool VG_(get_fnname_no_cxx_demangle) ( Addr a, Char* buf, Int nbuf );
|
||||||
|
|
||||||
+/* Register/deregister symbols created by JITs. */
|
+/* Register/deregister symbols created by JITs. */
|
||||||
+extern void VG_(register_jited_code)( Char* name, Addr start, SizeT len );
|
+extern
|
||||||
+extern void VG_(unregister_jited_code)( Addr start );
|
+void VG_(register_jited_code)( Char* name, Addr start, SizeT len );
|
||||||
+
|
+
|
||||||
/* Use DWARF2/3 CFA information to do one step of stack unwinding. */
|
+extern
|
||||||
extern Bool VG_(use_CF_info) ( /*MOD*/Addr* ipP,
|
+void VG_(unregister_jited_code)( Addr start );
|
||||||
/*MOD*/Addr* spP,
|
|
||||||
Index: coregrind/m_scheduler/scheduler.c
|
/* Use DWARF2/3 CFA information to do one step of stack unwinding.
|
||||||
===================================================================
|
D3UnwindRegs holds the current register values, and is
|
||||||
--- coregrind/m_scheduler/scheduler.c (revision 10894)
|
--- coregrind/m_scheduler/scheduler.c
|
||||||
+++ coregrind/m_scheduler/scheduler.c (working copy)
|
+++ coregrind/m_scheduler/scheduler.c
|
||||||
@@ -1478,6 +1478,16 @@
|
@@ -1585,6 +1585,16 @@ void do_client_request ( ThreadId tid )
|
||||||
goto my_default;
|
goto my_default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
--- coregrind/m_stacktrace.c
|
|
||||||
+++ coregrind/m_stacktrace.c
|
|
||||||
@@ -153,11 +153,18 @@
|
|
||||||
/* Try to derive a new (ip,sp,fp) triple from the current
|
|
||||||
set. */
|
|
||||||
|
|
||||||
- /* On x86, first try the old-fashioned method of following the
|
|
||||||
- %ebp-chain. Code which doesn't use this (that is, compiled
|
|
||||||
- with -fomit-frame-pointer) is not ABI compliant and so
|
|
||||||
- relatively rare. Besides, trying the CFI first almost always
|
|
||||||
- fails, and is expensive. */
|
|
||||||
+ /* That didn't work out, so see if there is any CF info to hand
|
|
||||||
+ which can be used. */
|
|
||||||
+ if ( VG_(use_CF_info)( &ip, &sp, &fp, fp_min, fp_max ) ) {
|
|
||||||
+ if (0 == ip || 1 == ip) break;
|
|
||||||
+ if (sps) sps[i] = sp;
|
|
||||||
+ if (fps) fps[i] = fp;
|
|
||||||
+ ips[i++] = ip - 1; /* -1: refer to calling insn, not the RA */
|
|
||||||
+ if (debug)
|
|
||||||
+ VG_(printf)(" ipsC[%d]=0x%08lx\n", i-1, ips[i-1]);
|
|
||||||
+ ip = ip - 1; /* as per comment at the head of this loop */
|
|
||||||
+ continue;
|
|
||||||
+ }
|
|
||||||
/* Deal with frames resulting from functions which begin "pushl%
|
|
||||||
ebp ; movl %esp, %ebp" which is the ABI-mandated preamble. */
|
|
||||||
if (fp_min <= fp &&
|
|
||||||
@@ -183,19 +190,6 @@
|
|
||||||
ip = ip - 1; /* as per comment at the head of this loop */
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- /* That didn't work out, so see if there is any CF info to hand
|
|
||||||
- which can be used. */
|
|
||||||
- if ( VG_(use_CF_info)( &ip, &sp, &fp, fp_min, fp_max ) ) {
|
|
||||||
- if (0 == ip || 1 == ip) break;
|
|
||||||
- if (sps) sps[i] = sp;
|
|
||||||
- if (fps) fps[i] = fp;
|
|
||||||
- ips[i++] = ip - 1; /* -1: refer to calling insn, not the RA */
|
|
||||||
- if (debug)
|
|
||||||
- VG_(printf)(" ipsC[%d]=0x%08lx\n", i-1, ips[i-1]);
|
|
||||||
- ip = ip - 1; /* as per comment at the head of this loop */
|
|
||||||
- continue;
|
|
||||||
- }
|
|
||||||
|
|
||||||
/* And, similarly, try for MSVC FPO unwind info. */
|
|
||||||
if ( VG_(use_FPO_info)( &ip, &sp, &fp, fp_min, fp_max ) ) {
|
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:743a5132bbebc247169aefae6e17657677fdf0961aba1668dd4ee7028d27ba80
|
|
||||||
size 5482423
|
|
3
valgrind-3.5.90.svn11414.tar.bz2
Normal file
3
valgrind-3.5.90.svn11414.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:457913240401bf61b8b72d5b4d7573d589553dec43a5d5724bc012a95282c736
|
||||||
|
size 5187901
|
@ -1,3 +1,59 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Oct 13 13:42:05 CEST 2010 - dmueller@suse.de
|
||||||
|
|
||||||
|
- update to 3.6.0 snapshot:
|
||||||
|
- Valgrind runs much faster when the --smc-check=all option is given.
|
||||||
|
|
||||||
|
- Cachegrind has a new processing script, cg_diff, which finds the
|
||||||
|
difference between two profiles. It's very useful for evaluating the
|
||||||
|
performance effects of a change in a program.
|
||||||
|
|
||||||
|
Related to this change, the meaning of cg_annotate's (rarely-used)
|
||||||
|
--threshold option has changed; this is unlikely to affect many people, if
|
||||||
|
you do use it please see the user manual for details.
|
||||||
|
|
||||||
|
- Callgrind now can do branch prediction simulation, similar to Cachegrind.
|
||||||
|
In addition, it optionally can count the number of executed global bus events.
|
||||||
|
Both can be used for a better approximation of a "Cycle Estimation" as
|
||||||
|
derived event (you need to update the event formula in KCachegrind yourself).
|
||||||
|
|
||||||
|
- Cachegrind and Callgrind now refer to the LL (last-level) cache rather
|
||||||
|
than the L2 cache. This is to accommodate machines with three levels of
|
||||||
|
caches -- if Cachegrind/Callgrind auto-detects the cache configuration of
|
||||||
|
such a machine it will run the simulation as if the L2 cache isn't
|
||||||
|
present. This means the results are less likely to match the true result
|
||||||
|
for the machine, but Cachegrind/Callgrind's results are already only
|
||||||
|
approximate, and should not be considered authoritative. The results are
|
||||||
|
still useful for giving a general idea about a program's locality.
|
||||||
|
|
||||||
|
- Massif has a new option, --pages-as-heap, which is disabled by default.
|
||||||
|
When enabled, instead of tracking allocations at the level of heap blocks
|
||||||
|
(as allocated with malloc/new/new[]), it instead tracks memory allocations
|
||||||
|
at the level of memory pages (as mapped by mmap, brk, etc). Each mapped
|
||||||
|
page is treated as its own block. Interpreting the page-level output is
|
||||||
|
harder than the heap-level output, but this option is useful if you want
|
||||||
|
to account for every byte of memory used by a program.
|
||||||
|
|
||||||
|
- Added new memcheck command-line option --show-possibly-lost.
|
||||||
|
|
||||||
|
- Support for analyzing programs running under Wine with has been improved.
|
||||||
|
The header files <valgrind/valgrind.h>, <valgrind/memcheck.h> and
|
||||||
|
<valgrind/drd.h> can now be used in Windows-programs compiled with MinGW
|
||||||
|
or one of the Microsoft Visual Studio compilers.
|
||||||
|
|
||||||
|
- DRD does now have two new command-line options: --free-is-write and
|
||||||
|
--trace-alloc. The former allows to detect reading from already freed
|
||||||
|
memory, and the latter allows to trace all memory allocations and
|
||||||
|
deallocations.
|
||||||
|
|
||||||
|
- Several new annotations have been added in DRD: custom barrier
|
||||||
|
implementations can now be annotated and benign races on static variables
|
||||||
|
too.
|
||||||
|
|
||||||
|
- The happens before / happens after annotations in DRD have been made more
|
||||||
|
powerful such that these can now also be used to annotate e.g. a smart
|
||||||
|
pointer implementation.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Sep 23 13:16:16 CEST 2010 - dmueller@suse.de
|
Thu Sep 23 13:16:16 CEST 2010 - dmueller@suse.de
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
|
|
||||||
Name: valgrind
|
Name: valgrind
|
||||||
BuildRequires: gcc-c++ glibc-devel-32bit xorg-x11-devel
|
BuildRequires: gcc-c++ glibc-devel-32bit xorg-x11-devel docbook-xsl-stylesheets docbook_4 libxslt
|
||||||
%ifarch x86_64 ppc64
|
%ifarch x86_64 ppc64
|
||||||
BuildRequires: gcc-32bit
|
BuildRequires: gcc-32bit
|
||||||
%endif
|
%endif
|
||||||
@ -27,17 +27,13 @@ License: GPLv2
|
|||||||
Group: Development/Tools/Debuggers
|
Group: Development/Tools/Debuggers
|
||||||
Summary: Valgrind Suite of Tools for Debugging and Profiling
|
Summary: Valgrind Suite of Tools for Debugging and Profiling
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
Version: 3.5.0
|
Version: 3.5.90.svn11414
|
||||||
Release: 12
|
Release: 1
|
||||||
Source0: %{name}-%{version}.tar.bz2
|
Source0: %{name}-%{version}.tar.bz2
|
||||||
# svn di svn://svn.valgrind.org/valgrind/tags/VALGRIND_3_5_0 svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_5_BRANCH > 3_5_BRANCH.diff
|
# svn di svn://svn.valgrind.org/valgrind/tags/VALGRIND_3_5_0 svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_5_BRANCH > 3_5_BRANCH.diff
|
||||||
# svn di svn://svn.valgrind.org/vex/tags/VEX_3_5_0 svn://svn.valgrind.org/vex/branches/VEX_3_5_BRANCH > VEX_3_5_BRANCH.diff
|
# svn di svn://svn.valgrind.org/vex/tags/VEX_3_5_0 svn://svn.valgrind.org/vex/branches/VEX_3_5_BRANCH > VEX_3_5_BRANCH.diff
|
||||||
Patch1: jit-register-unregister.diff
|
Patch1: jit-register-unregister.diff
|
||||||
Patch2: deprecated.diff
|
Patch2: deprecated.diff
|
||||||
Patch3: glibc-211.diff
|
|
||||||
Patch4: bnc558964.diff
|
|
||||||
Patch5: prefer-cfi.diff
|
|
||||||
Patch6: bigger-default-stack.diff
|
|
||||||
Provides: callgrind = %version
|
Provides: callgrind = %version
|
||||||
Obsoletes: callgrind < %version
|
Obsoletes: callgrind < %version
|
||||||
ExclusiveArch: %ix86 x86_64 ppc ppc64
|
ExclusiveArch: %ix86 x86_64 ppc ppc64
|
||||||
@ -121,13 +117,8 @@ Authors:
|
|||||||
cd VEX
|
cd VEX
|
||||||
cd ..
|
cd ..
|
||||||
%patch1
|
%patch1
|
||||||
%patch2
|
# probably no longer needed, kept around already for a long time (2010-10-12)
|
||||||
%patch3
|
#%patch2
|
||||||
%patch4
|
|
||||||
%if %suse_version >= 1120
|
|
||||||
%patch5
|
|
||||||
%endif
|
|
||||||
%patch6
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
export CFLAGS="$RPM_OPT_FLAGS"
|
export CFLAGS="$RPM_OPT_FLAGS"
|
||||||
@ -136,6 +127,10 @@ autoreconf -fi
|
|||||||
export GDB=/usr/bin/gdb
|
export GDB=/usr/bin/gdb
|
||||||
%configure
|
%configure
|
||||||
make %{?jobs:-j%jobs}
|
make %{?jobs:-j%jobs}
|
||||||
|
pushd docs
|
||||||
|
#make all-docs
|
||||||
|
make FAQ.txt man-pages html-docs
|
||||||
|
popd
|
||||||
|
|
||||||
%install
|
%install
|
||||||
make DESTDIR=$RPM_BUILD_ROOT install
|
make DESTDIR=$RPM_BUILD_ROOT install
|
||||||
@ -147,7 +142,7 @@ mv $RPM_BUILD_ROOT/usr/share/doc/valgrind $RPM_BUILD_ROOT/usr/share/doc/packages
|
|||||||
%doc README* NEWS AUTHORS COPYING COPYING.DOCS
|
%doc README* NEWS AUTHORS COPYING COPYING.DOCS
|
||||||
/usr/bin/*
|
/usr/bin/*
|
||||||
%_libdir/valgrind
|
%_libdir/valgrind
|
||||||
%doc %_mandir/*/*
|
%doc %_mandir/*/*
|
||||||
|
|
||||||
%files devel
|
%files devel
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
|
Loading…
Reference in New Issue
Block a user