You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
1
(8) |
2
(7) |
3
|
4
|
5
(2) |
6
|
|
7
(1) |
8
(18) |
9
(11) |
10
(9) |
11
(16) |
12
(20) |
13
(17) |
|
14
(11) |
15
(16) |
16
(11) |
17
(11) |
18
(12) |
19
(12) |
20
(9) |
|
21
(5) |
22
(3) |
23
(6) |
24
(12) |
25
(6) |
26
(2) |
27
(1) |
|
28
|
29
(1) |
30
(3) |
31
(7) |
|
|
|
|
From: <sv...@va...> - 2011-08-16 22:45:16
|
Author: sewardj
Date: 2011-08-16 23:31:45 +0100 (Tue, 16 Aug 2011)
New Revision: 11986
Log:
Un-break the build on OSX following r11985.
Modified:
trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
Modified: trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
===================================================================
--- trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2011-08-16 21:45:28 UTC (rev 11985)
+++ trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2011-08-16 22:31:45 UTC (rev 11986)
@@ -482,9 +482,10 @@
if (ptrV == NULL) \
/* We need to call a malloc-like function; so let's use \
one which we know exists. GrP fixme use zonemalloc instead? */ \
- return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,malloc) (new_size); \
+ return VG_REPLACE_FUNCTION_EZU(1001,VG_Z_LIBC_SONAME,malloc) \
+ (new_size); \
if (new_size <= 0) { \
- VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,free)(ptrV); \
+ VG_REPLACE_FUNCTION_EZU(1005,VG_Z_LIBC_SONAME,free)(ptrV); \
MALLOC_TRACE(" = 0\n"); \
return NULL; \
} \
@@ -608,7 +609,7 @@
static int pszB = 0; \
if (pszB == 0) \
pszB = my_getpagesize(); \
- return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,memalign) \
+ return VG_REPLACE_FUNCTION_EZU(1011,VG_Z_LIBC_SONAME,memalign) \
((SizeT)pszB, size); \
}
@@ -786,11 +787,11 @@
NULL, // reserved
NULL, // reserved
NULL, // GrP fixme malloc_size
- (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_malloc),
- (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_calloc),
- (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_valloc),
- (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_free),
- (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_realloc),
+ (void*)VG_REPLACE_FUNCTION_EZU(1002,VG_Z_LIBC_SONAME,malloc_zone_malloc),
+ (void*)VG_REPLACE_FUNCTION_EZU(1006,VG_Z_LIBC_SONAME,malloc_zone_calloc),
+ (void*)VG_REPLACE_FUNCTION_EZU(1013,VG_Z_LIBC_SONAME,malloc_zone_valloc),
+ (void*)VG_REPLACE_FUNCTION_EZU(1004,VG_Z_LIBC_SONAME,malloc_zone_free),
+ (void*)VG_REPLACE_FUNCTION_EZU(1008,VG_Z_LIBC_SONAME,malloc_zone_realloc),
NULL, // GrP fixme destroy
"ValgrindMallocZone",
NULL, // batch_malloc
|
|
From: <sv...@va...> - 2011-08-16 21:50:18
|
Author: sewardj
Date: 2011-08-16 22:45:28 +0100 (Tue, 16 Aug 2011)
New Revision: 11985
Log:
Fix for #275284 (initial fix, at least). Will break OSX; fix
to follow.
* add behavioural eclass tags for most functions in
mc_replace_strmem.c and vg_replace_malloc.c.
* add a wrapper for strspn() (see bug 270925)
* coregrind/m_redir.c: add logic to use eclass tags for
resolving conflicting redirections. Improve debug
printing in that situation.
* mc_replace_strmem.c: add a wrapper for "__GI___strcasecmp_l".
Gark. Is this correct? Does __GI___strcasecmp_l behave the
same as __GI_strcasecmp_l and strcasecmp_l ?
Modified:
trunk/coregrind/m_redir.c
trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
trunk/memcheck/mc_replace_strmem.c
Modified: trunk/coregrind/m_redir.c
===================================================================
--- trunk/coregrind/m_redir.c 2011-08-16 09:54:00 UTC (rev 11984)
+++ trunk/coregrind/m_redir.c 2011-08-16 21:45:28 UTC (rev 11985)
@@ -708,7 +708,7 @@
static void maybe_add_active ( Active act )
{
HChar* what = NULL;
- Active* old;
+ Active* old = NULL;
/* Complain and ignore manifestly bogus 'from' addresses.
@@ -735,10 +735,24 @@
/* Dodgy. Conflicting binding. */
vg_assert(old->from_addr == act.from_addr);
if (old->to_addr != act.to_addr) {
- /* we have to ignore it -- otherwise activeSet would contain
- conflicting bindings. */
- what = "new redirection conflicts with existing -- ignoring it";
- goto bad;
+ /* We've got a conflicting binding -- that is, from_addr is
+ specified to redirect to two different destinations,
+ old->to_addr and act.to_addr. If we can prove that they
+ are behaviourally equivalent then that's no problem. So
+ we can look at the behavioural eclass tags for both
+ functions to see if that's so. If they are equal, and
+ nonzero, then that's fine. But if not, we can't show they
+ are equivalent, so we have to complain, and ignore the new
+ binding. */
+ vg_assert(old->becTag >= 0 && old->becTag <= 9999);
+ vg_assert(act.becTag >= 0 && act.becTag <= 9999);
+ if (old->becTag != 0 && act.becTag != 0 && old->becTag == act.becTag) {
+ /* the replacements are behaviourally equivalent, so we can
+ safely ignore this conflict, and not add the new one. */
+ } else {
+ what = "new redirection conflicts with existing -- ignoring it";
+ goto bad;
+ }
} else {
/* This appears to be a duplicate of an existing binding.
Safe(ish) -- ignore. */
@@ -765,6 +779,9 @@
vg_assert(what);
if (VG_(clo_verbosity) > 1) {
VG_(message)(Vg_UserMsg, "WARNING: %s\n", what);
+ if (old) {
+ show_active( " old: ", old);
+ }
show_active( " new: ", &act);
}
}
Modified: trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
===================================================================
--- trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2011-08-16 09:54:00 UTC (rev 11984)
+++ trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2011-08-16 21:45:28 UTC (rev 11985)
@@ -70,7 +70,33 @@
#include "pub_core_redir.h" // for VG_REPLACE_FUNCTION_*
#include "pub_core_replacemalloc.h"
+/* Assignment of behavioural equivalence class tags: 1NNN is intended
+ to be reserved for the Valgrind core. Current usage:
+ 1001 ALLOC_or_NULL
+ 1002 ZONEALLOC_or_NULL
+ 1003 ALLOC_or_BOMB
+ 1004 ZONEFREE
+ 1005 FREE
+ 1006 ZONECALLOC
+ 1007 CALLOC
+ 1008 ZONEREALLOC
+ 1009 REALLOC
+ 1010 ZONEMEMALIGN
+ 1011 MEMALIGN
+ 1012 VALLOC
+ 1013 ZONEVALLOC
+ 1014 MALLOPT
+ 1015 MALLOC_TRIM
+ 1016 POSIX_MEMALIGN
+ 1017 MALLOC_USABLE_SIZE
+ 1018 PANIC
+ 1019 MALLOC_STATS
+ 1020 MALLINFO
+ 1021 DEFAULT_ZONE
+ 1022 ZONE_CHECK
+*/
+
/* 2 Apr 05: the Portland Group compiler, which uses cfront/ARM style
mangling, could be supported properly by the redirects in this
module. Except we can't because it doesn't put its allocation
@@ -172,8 +198,8 @@
*/
#define ALLOC_or_NULL(soname, fnname, vg_replacement) \
\
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (SizeT n); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (SizeT n) \
+ void* VG_REPLACE_FUNCTION_EZU(1001,soname,fnname) (SizeT n); \
+ void* VG_REPLACE_FUNCTION_EZU(1001,soname,fnname) (SizeT n) \
{ \
void* v; \
\
@@ -187,8 +213,8 @@
#define ZONEALLOC_or_NULL(soname, fnname, vg_replacement) \
\
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (void *zone, SizeT n); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (void *zone, SizeT n) \
+ void* VG_REPLACE_FUNCTION_EZU(1002,soname,fnname) (void *zone, SizeT n); \
+ void* VG_REPLACE_FUNCTION_EZU(1002,soname,fnname) (void *zone, SizeT n) \
{ \
void* v; \
\
@@ -207,8 +233,8 @@
*/
#define ALLOC_or_BOMB(soname, fnname, vg_replacement) \
\
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (SizeT n); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (SizeT n) \
+ void* VG_REPLACE_FUNCTION_EZU(1003,soname,fnname) (SizeT n); \
+ void* VG_REPLACE_FUNCTION_EZU(1003,soname,fnname) (SizeT n) \
{ \
void* v; \
\
@@ -316,8 +342,8 @@
*/
#define ZONEFREE(soname, fnname, vg_replacement) \
\
- void VG_REPLACE_FUNCTION_ZU(soname,fnname) (void *zone, void *p); \
- void VG_REPLACE_FUNCTION_ZU(soname,fnname) (void *zone, void *p) \
+ void VG_REPLACE_FUNCTION_EZU(1004,soname,fnname) (void *zone, void *p); \
+ void VG_REPLACE_FUNCTION_EZU(1004,soname,fnname) (void *zone, void *p) \
{ \
if (!init_done) init(); \
MALLOC_TRACE(#vg_replacement "(%p, %p)\n", zone, p ); \
@@ -328,8 +354,8 @@
#define FREE(soname, fnname, vg_replacement) \
\
- void VG_REPLACE_FUNCTION_ZU(soname,fnname) (void *p); \
- void VG_REPLACE_FUNCTION_ZU(soname,fnname) (void *p) \
+ void VG_REPLACE_FUNCTION_EZU(1005,soname,fnname) (void *p); \
+ void VG_REPLACE_FUNCTION_EZU(1005,soname,fnname) (void *p) \
{ \
if (!init_done) init(); \
MALLOC_TRACE(#vg_replacement "(%p)\n", p ); \
@@ -391,8 +417,10 @@
#define ZONECALLOC(soname, fnname) \
\
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( void *zone, SizeT nmemb, SizeT size ); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( void *zone, SizeT nmemb, SizeT size ) \
+ void* VG_REPLACE_FUNCTION_EZU(1006,soname,fnname) \
+ ( void *zone, SizeT nmemb, SizeT size ); \
+ void* VG_REPLACE_FUNCTION_EZU(1006,soname,fnname) \
+ ( void *zone, SizeT nmemb, SizeT size ) \
{ \
void* v; \
\
@@ -406,8 +434,10 @@
#define CALLOC(soname, fnname) \
\
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( SizeT nmemb, SizeT size ); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( SizeT nmemb, SizeT size ) \
+ void* VG_REPLACE_FUNCTION_EZU(1007,soname,fnname) \
+ ( SizeT nmemb, SizeT size ); \
+ void* VG_REPLACE_FUNCTION_EZU(1007,soname,fnname) \
+ ( SizeT nmemb, SizeT size ) \
{ \
void* v; \
\
@@ -439,8 +469,10 @@
#define ZONEREALLOC(soname, fnname) \
\
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( void *zone, void* ptrV, SizeT new_size );\
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( void *zone, void* ptrV, SizeT new_size ) \
+ void* VG_REPLACE_FUNCTION_EZU(1008,soname,fnname) \
+ ( void *zone, void* ptrV, SizeT new_size ); \
+ void* VG_REPLACE_FUNCTION_EZU(1008,soname,fnname) \
+ ( void *zone, void* ptrV, SizeT new_size ) \
{ \
void* v; \
\
@@ -463,8 +495,10 @@
#define REALLOC(soname, fnname) \
\
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( void* ptrV, SizeT new_size );\
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( void* ptrV, SizeT new_size ) \
+ void* VG_REPLACE_FUNCTION_EZU(1009,soname,fnname) \
+ ( void* ptrV, SizeT new_size );\
+ void* VG_REPLACE_FUNCTION_EZU(1009,soname,fnname) \
+ ( void* ptrV, SizeT new_size ) \
{ \
void* v; \
\
@@ -474,9 +508,10 @@
if (ptrV == NULL) \
/* We need to call a malloc-like function; so let's use \
one which we know exists. */ \
- return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,malloc) (new_size); \
+ return VG_REPLACE_FUNCTION_EZU(1001,VG_Z_LIBC_SONAME,malloc) \
+ (new_size); \
if (new_size <= 0) { \
- VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,free)(ptrV); \
+ VG_REPLACE_FUNCTION_EZU(1005,VG_Z_LIBC_SONAME,free)(ptrV); \
MALLOC_TRACE(" = 0\n"); \
return NULL; \
} \
@@ -495,8 +530,10 @@
#define ZONEMEMALIGN(soname, fnname) \
\
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( void *zone, SizeT alignment, SizeT n ); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( void *zone, SizeT alignment, SizeT n ) \
+ void* VG_REPLACE_FUNCTION_EZU(1010,soname,fnname) \
+ ( void *zone, SizeT alignment, SizeT n ); \
+ void* VG_REPLACE_FUNCTION_EZU(1010,soname,fnname) \
+ ( void *zone, SizeT alignment, SizeT n ) \
{ \
void* v; \
\
@@ -518,8 +555,10 @@
#define MEMALIGN(soname, fnname) \
\
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( SizeT alignment, SizeT n ); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( SizeT alignment, SizeT n ) \
+ void* VG_REPLACE_FUNCTION_EZU(1011,soname,fnname) \
+ ( SizeT alignment, SizeT n ); \
+ void* VG_REPLACE_FUNCTION_EZU(1011,soname,fnname) \
+ ( SizeT alignment, SizeT n ) \
{ \
void* v; \
\
@@ -549,20 +588,22 @@
#define VALLOC(soname, fnname) \
\
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( SizeT size ); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( SizeT size ) \
+ void* VG_REPLACE_FUNCTION_EZU(1012,soname,fnname) ( SizeT size ); \
+ void* VG_REPLACE_FUNCTION_EZU(1012,soname,fnname) ( SizeT size ) \
{ \
static int pszB = 0; \
if (pszB == 0) \
pszB = my_getpagesize(); \
- return VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,memalign) \
+ return VG_REPLACE_FUNCTION_EZU(1011,VG_Z_LIBC_SONAME,memalign) \
((SizeT)pszB, size); \
}
#define ZONEVALLOC(soname, fnname) \
\
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( void *zone, SizeT size ); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( void *zone, SizeT size ) \
+ void* VG_REPLACE_FUNCTION_EZU(1013,soname,fnname) \
+ ( void *zone, SizeT size ); \
+ void* VG_REPLACE_FUNCTION_EZU(1013,soname,fnname) \
+ ( void *zone, SizeT size ) \
{ \
static int pszB = 0; \
if (pszB == 0) \
@@ -583,8 +624,8 @@
#define MALLOPT(soname, fnname) \
\
- int VG_REPLACE_FUNCTION_ZU(soname, fnname) ( int cmd, int value ); \
- int VG_REPLACE_FUNCTION_ZU(soname, fnname) ( int cmd, int value ) \
+ int VG_REPLACE_FUNCTION_EZU(1014,soname,fnname) ( int cmd, int value ); \
+ int VG_REPLACE_FUNCTION_EZU(1014,soname,fnname) ( int cmd, int value ) \
{ \
/* In glibc-2.2.4, 1 denotes a successful return value for \
mallopt */ \
@@ -619,8 +660,8 @@
// For simplicity, we always return 0.
#define MALLOC_TRIM(soname, fnname) \
\
- int VG_REPLACE_FUNCTION_ZU(soname, fnname) ( SizeT pad ); \
- int VG_REPLACE_FUNCTION_ZU(soname, fnname) ( SizeT pad ) \
+ int VG_REPLACE_FUNCTION_EZU(1015,soname,fnname) ( SizeT pad ); \
+ int VG_REPLACE_FUNCTION_EZU(1015,soname,fnname) ( SizeT pad ) \
{ \
/* 0 denotes that malloc_trim() either wasn't able \
to do anything, or was not implemented */ \
@@ -634,10 +675,10 @@
#define POSIX_MEMALIGN(soname, fnname) \
\
- int VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void **memptr, \
- SizeT alignment, SizeT size ); \
- int VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void **memptr, \
- SizeT alignment, SizeT size ) \
+ int VG_REPLACE_FUNCTION_EZU(1016,soname,fnname) \
+ ( void **memptr, SizeT alignment, SizeT size ); \
+ int VG_REPLACE_FUNCTION_EZU(1016,soname,fnname) \
+ ( void **memptr, SizeT alignment, SizeT size ) \
{ \
void *mem; \
\
@@ -647,7 +688,8 @@
|| (alignment & (alignment - 1)) != 0) \
return VKI_EINVAL; \
\
- mem = VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME,memalign)(alignment, size); \
+ mem = VG_REPLACE_FUNCTION_EZU(1011,VG_Z_LIBC_SONAME,memalign) \
+ (alignment, size); \
\
if (mem != NULL) { \
*memptr = mem; \
@@ -664,8 +706,8 @@
#define MALLOC_USABLE_SIZE(soname, fnname) \
\
- SizeT VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void* p ); \
- SizeT VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void* p ) \
+ SizeT VG_REPLACE_FUNCTION_EZU(1017,soname,fnname) ( void* p ); \
+ SizeT VG_REPLACE_FUNCTION_EZU(1017,soname,fnname) ( void* p ) \
{ \
SizeT pszB; \
\
@@ -697,8 +739,8 @@
#define PANIC(soname, fnname) \
\
- void VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void ); \
- void VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void ) \
+ void VG_REPLACE_FUNCTION_EZU(1018,soname,fnname) ( void ); \
+ void VG_REPLACE_FUNCTION_EZU(1018,soname,fnname) ( void ) \
{ \
panic(#fnname); \
}
@@ -709,8 +751,8 @@
#define MALLOC_STATS(soname, fnname) \
\
- void VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void ); \
- void VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void ) \
+ void VG_REPLACE_FUNCTION_EZU(1019,soname,fnname) ( void ); \
+ void VG_REPLACE_FUNCTION_EZU(1019,soname,fnname) ( void ) \
{ \
/* Valgrind's malloc_stats implementation does nothing. */ \
}
@@ -725,8 +767,8 @@
// doesn't know that the call to mallinfo fills in mi.
#define MALLINFO(soname, fnname) \
\
- struct vg_mallinfo VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void ); \
- struct vg_mallinfo VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void ) \
+ struct vg_mallinfo VG_REPLACE_FUNCTION_EZU(1020,soname,fnname) ( void ); \
+ struct vg_mallinfo VG_REPLACE_FUNCTION_EZU(1020,soname,fnname) ( void ) \
{ \
static struct vg_mallinfo mi; \
if (!init_done) init(); \
@@ -763,8 +805,8 @@
#define DEFAULT_ZONE(soname, fnname) \
\
- void *VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void ); \
- void *VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void ) \
+ void *VG_REPLACE_FUNCTION_EZU(1021,soname,fnname) ( void ); \
+ void *VG_REPLACE_FUNCTION_EZU(1021,soname,fnname) ( void ) \
{ \
return &vg_default_zone; \
}
@@ -776,9 +818,9 @@
// GrP fixme bypass libc's use of zone->introspect->check
#define ZONE_CHECK(soname, fnname) \
- \
- int VG_REPLACE_FUNCTION_ZU(soname, fnname)(void* zone); \
- int VG_REPLACE_FUNCTION_ZU(soname, fnname)(void* zone) \
+ \
+ int VG_REPLACE_FUNCTION_EZU(1022,soname,fnname)(void* zone); \
+ int VG_REPLACE_FUNCTION_EZU(1022,soname,fnname)(void* zone) \
{ \
return 1; \
}
Modified: trunk/memcheck/mc_replace_strmem.c
===================================================================
--- trunk/memcheck/mc_replace_strmem.c 2011-08-16 09:54:00 UTC (rev 11984)
+++ trunk/memcheck/mc_replace_strmem.c 2011-08-16 21:45:28 UTC (rev 11985)
@@ -53,7 +53,46 @@
THEY RUN ON THE SIMD CPU!
------------------------------------------------------------------ */
+/* Assignment of behavioural equivalence class tags: 2NNN is intended
+ to be reserved for Memcheck. Current usage:
+ 2001 STRRCHR
+ 2002 STRCHR
+ 2003 STRCAT
+ 2004 STRNCAT
+ 2005 STRLCAT
+ 2006 STRNLEN
+ 2007 STRLEN
+ 2008 STRCPY
+ 2009 STRNCPY
+ 2010 STRLCPY
+ 2011 STRNCMP
+ 2012 STRCASECMP
+ 2013 STRNCASECMP
+ 2014 STRCASECMP_L
+ 2015 STRNCASECMP_L
+ 2016 STRCMP
+ 2017 MEMCHR
+ 2018 MEMMOVE
+ 2019 MEMCMP
+ 2020 STPCPY
+ 2021 MEMSET
+ 2022 MEMCPY
+ 2023 BCOPY
+ 2024 GLIBC25___MEMMOVE_CHK
+ 2025 GLIBC232_STRCHRNUL
+ 2026 GLIBC232_RAWMEMCHR
+ 2027 GLIBC25___STRCPY_CHK
+ 2028 GLIBC25___STPCPY_CHK
+ 2029 GLIBC25_MEMPCPY
+ 2030 GLIBC26___MEMCPY_CHK
+ 2031 STRSTR
+ 2032 STRPBRK
+ 2033 STRCSPN
+ 2034 STRSPN
+*/
+
+
/* Figure out if [dst .. dst+dstlen-1] overlaps with
[src .. src+srclen-1].
We assume that the address ranges do not wrap around
@@ -113,8 +152,8 @@
#define STRRCHR(soname, fnname) \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ); \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* s, int c ) \
+ char* VG_REPLACE_FUNCTION_EZU(2001,soname,fnname)( const char* s, int c ); \
+ char* VG_REPLACE_FUNCTION_EZU(2001,soname,fnname)( const char* s, int c ) \
{ \
UChar ch = (UChar)((UInt)c); \
UChar* p = (UChar*)s; \
@@ -139,8 +178,8 @@
#define STRCHR(soname, fnname) \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ); \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* s, int c ) \
+ char* VG_REPLACE_FUNCTION_EZU(2002,soname,fnname) ( const char* s, int c ); \
+ char* VG_REPLACE_FUNCTION_EZU(2002,soname,fnname) ( const char* s, int c ) \
{ \
UChar ch = (UChar)((UInt)c); \
UChar* p = (UChar*)s; \
@@ -167,8 +206,10 @@
#define STRCAT(soname, fnname) \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( char* dst, const char* src ); \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( char* dst, const char* src ) \
+ char* VG_REPLACE_FUNCTION_EZU(2003,soname,fnname) \
+ ( char* dst, const char* src ); \
+ char* VG_REPLACE_FUNCTION_EZU(2003,soname,fnname) \
+ ( char* dst, const char* src ) \
{ \
const Char* src_orig = src; \
Char* dst_orig = dst; \
@@ -193,9 +234,9 @@
#endif
#define STRNCAT(soname, fnname) \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ char* VG_REPLACE_FUNCTION_EZU(2004,soname,fnname) \
( char* dst, const char* src, SizeT n ); \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ char* VG_REPLACE_FUNCTION_EZU(2004,soname,fnname) \
( char* dst, const char* src, SizeT n ) \
{ \
const Char* src_orig = src; \
@@ -210,7 +251,7 @@
/* pre-counting lengths... should be ok */ \
if (is_overlap(dst_orig, \
src_orig, \
- (Addr)dst-(Addr)dst_orig+1, \
+ (Addr)dst-(Addr)dst_orig+1, \
(Addr)src-(Addr)src_orig+1)) \
RECORD_OVERLAP_ERROR("strncat", dst_orig, src_orig, n); \
\
@@ -229,15 +270,15 @@
Truncation occurred if retval >= n.
*/
#define STRLCAT(soname, fnname) \
- SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ SizeT VG_REPLACE_FUNCTION_EZU(2005,soname,fnname) \
( char* dst, const char* src, SizeT n ); \
- SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ SizeT VG_REPLACE_FUNCTION_EZU(2005,soname,fnname) \
( char* dst, const char* src, SizeT n ) \
{ \
const Char* src_orig = src; \
Char* dst_orig = dst; \
SizeT m = 0; \
-\
+ \
while (m < n && *dst) { m++; dst++; } \
if (m < n) { \
/* Fill as far as dst_orig[n-2], then nul-terminate. */ \
@@ -255,7 +296,7 @@
(Addr)dst-(Addr)dst_orig+1, \
(Addr)src-(Addr)src_orig+1)) \
RECORD_OVERLAP_ERROR("strlcat", dst_orig, src_orig, n); \
-\
+ \
return m; \
}
@@ -266,8 +307,10 @@
#define STRNLEN(soname, fnname) \
- SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ); \
- SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) ( const char* str, SizeT n ) \
+ SizeT VG_REPLACE_FUNCTION_EZU(2006,soname,fnname) \
+ ( const char* str, SizeT n ); \
+ SizeT VG_REPLACE_FUNCTION_EZU(2006,soname,fnname) \
+ ( const char* str, SizeT n ) \
{ \
SizeT i = 0; \
while (i < n && str[i] != 0) i++; \
@@ -285,8 +328,10 @@
// confusing if you aren't expecting it. Other small functions in this file
// may also be inline by gcc.
#define STRLEN(soname, fnname) \
- SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* str ); \
- SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname)( const char* str ) \
+ SizeT VG_REPLACE_FUNCTION_EZU(2007,soname,fnname) \
+ ( const char* str ); \
+ SizeT VG_REPLACE_FUNCTION_EZU(2007,soname,fnname) \
+ ( const char* str ) \
{ \
SizeT i = 0; \
while (str[i] != 0) i++; \
@@ -296,14 +341,14 @@
STRLEN(VG_Z_LIBC_SONAME, strlen)
#if defined(VGO_linux)
STRLEN(VG_Z_LIBC_SONAME, __GI_strlen)
-STRLEN(VG_Z_LD_LINUX_SO_2, strlen)
-STRLEN(VG_Z_LD_LINUX_X86_64_SO_2, strlen)
#endif
#define STRCPY(soname, fnname) \
- char* VG_REPLACE_FUNCTION_ZU(soname, fnname) ( char* dst, const char* src ); \
- char* VG_REPLACE_FUNCTION_ZU(soname, fnname) ( char* dst, const char* src ) \
+ char* VG_REPLACE_FUNCTION_EZU(2008,soname,fnname) \
+ ( char* dst, const char* src ); \
+ char* VG_REPLACE_FUNCTION_EZU(2008,soname,fnname) \
+ ( char* dst, const char* src ) \
{ \
const Char* src_orig = src; \
Char* dst_orig = dst; \
@@ -315,7 +360,7 @@
/* pre-counting length... should be ok */ \
if (is_overlap(dst_orig, \
src_orig, \
- (Addr)dst-(Addr)dst_orig+1, \
+ (Addr)dst-(Addr)dst_orig+1, \
(Addr)src-(Addr)src_orig+1)) \
RECORD_OVERLAP_ERROR("strcpy", dst_orig, src_orig, 0); \
\
@@ -331,9 +376,9 @@
#define STRNCPY(soname, fnname) \
- char* VG_REPLACE_FUNCTION_ZU(soname, fnname) \
+ char* VG_REPLACE_FUNCTION_EZU(2009,soname,fnname) \
( char* dst, const char* src, SizeT n ); \
- char* VG_REPLACE_FUNCTION_ZU(soname, fnname) \
+ char* VG_REPLACE_FUNCTION_EZU(2009,soname,fnname) \
( char* dst, const char* src, SizeT n ) \
{ \
const Char* src_orig = src; \
@@ -361,15 +406,15 @@
/* Copy up to n-1 bytes from src to dst. Then nul-terminate dst if n > 0.
Returns strlen(src). Does not zero-fill the remainder of dst. */
#define STRLCPY(soname, fnname) \
- SizeT VG_REPLACE_FUNCTION_ZU(soname, fnname) \
+ SizeT VG_REPLACE_FUNCTION_EZU(2010,soname,fnname) \
( char* dst, const char* src, SizeT n ); \
- SizeT VG_REPLACE_FUNCTION_ZU(soname, fnname) \
+ SizeT VG_REPLACE_FUNCTION_EZU(2010,soname,fnname) \
( char* dst, const char* src, SizeT n ) \
{ \
const char* src_orig = src; \
char* dst_orig = dst; \
SizeT m = 0; \
-\
+ \
while (m < n-1 && *src) { m++; *dst++ = *src++; } \
/* m non-nul bytes have now been copied, and m <= n-1. */ \
/* Check for overlap after copying; all n bytes of dst are relevant, */ \
@@ -390,9 +435,9 @@
#define STRNCMP(soname, fnname) \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ int VG_REPLACE_FUNCTION_EZU(2011,soname,fnname) \
( const char* s1, const char* s2, SizeT nmax ); \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ int VG_REPLACE_FUNCTION_EZU(2011,soname,fnname) \
( const char* s1, const char* s2, SizeT nmax ) \
{ \
SizeT n = 0; \
@@ -418,9 +463,9 @@
#define STRCASECMP(soname, fnname) \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ int VG_REPLACE_FUNCTION_EZU(2012,soname,fnname) \
( const char* s1, const char* s2 ); \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ int VG_REPLACE_FUNCTION_EZU(2012,soname,fnname) \
( const char* s1, const char* s2 ) \
{ \
extern int tolower(int); \
@@ -447,9 +492,9 @@
#define STRNCASECMP(soname, fnname) \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ int VG_REPLACE_FUNCTION_EZU(2013,soname,fnname) \
( const char* s1, const char* s2, SizeT nmax ); \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ int VG_REPLACE_FUNCTION_EZU(2013,soname,fnname) \
( const char* s1, const char* s2, SizeT nmax ) \
{ \
extern int tolower(int); \
@@ -460,8 +505,10 @@
if (*s1 == 0) return -1; \
if (*s2 == 0) return 1; \
\
- if (tolower(*(unsigned char*)s1) < tolower(*(unsigned char*)s2)) return -1; \
- if (tolower(*(unsigned char*)s1) > tolower(*(unsigned char*)s2)) return 1; \
+ if (tolower(*(unsigned char*)s1) \
+ < tolower(*(unsigned char*)s2)) return -1; \
+ if (tolower(*(unsigned char*)s1) \
+ > tolower(*(unsigned char*)s2)) return 1; \
\
s1++; s2++; n++; \
} \
@@ -478,9 +525,9 @@
#define STRCASECMP_L(soname, fnname) \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ int VG_REPLACE_FUNCTION_EZU(2014,soname,fnname) \
( const char* s1, const char* s2, void* locale ); \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ int VG_REPLACE_FUNCTION_EZU(2014,soname,fnname) \
( const char* s1, const char* s2, void* locale ) \
{ \
extern int tolower_l(int, void*) __attribute__((weak)); \
@@ -501,13 +548,14 @@
STRCASECMP_L(VG_Z_LIBC_SONAME, strcasecmp_l)
#if defined(VGO_linux)
STRCASECMP_L(VG_Z_LIBC_SONAME, __GI_strcasecmp_l)
+STRCASECMP_L(VG_Z_LIBC_SONAME, __GI___strcasecmp_l)
#endif
#define STRNCASECMP_L(soname, fnname) \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ int VG_REPLACE_FUNCTION_EZU(2015,soname,fnname) \
( const char* s1, const char* s2, SizeT nmax, void* locale ); \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ int VG_REPLACE_FUNCTION_EZU(2015,soname,fnname) \
( const char* s1, const char* s2, SizeT nmax, void* locale ) \
{ \
extern int tolower_l(int, void*) __attribute__((weak)); \
@@ -518,8 +566,10 @@
if (*s1 == 0) return -1; \
if (*s2 == 0) return 1; \
\
- if (tolower_l(*(unsigned char*)s1, locale) < tolower_l(*(unsigned char*)s2, locale)) return -1; \
- if (tolower_l(*(unsigned char*)s1, locale) > tolower_l(*(unsigned char*)s2, locale)) return 1; \
+ if (tolower_l(*(unsigned char*)s1, locale) \
+ < tolower_l(*(unsigned char*)s2, locale)) return -1; \
+ if (tolower_l(*(unsigned char*)s1, locale) \
+ > tolower_l(*(unsigned char*)s2, locale)) return 1; \
\
s1++; s2++; n++; \
} \
@@ -534,9 +584,9 @@
#define STRCMP(soname, fnname) \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ int VG_REPLACE_FUNCTION_EZU(2016,soname,fnname) \
( const char* s1, const char* s2 ); \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ int VG_REPLACE_FUNCTION_EZU(2016,soname,fnname) \
( const char* s1, const char* s2 ) \
{ \
register unsigned char c1; \
@@ -562,8 +612,10 @@
#define MEMCHR(soname, fnname) \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const void *s, int c, SizeT n); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const void *s, int c, SizeT n) \
+ void* VG_REPLACE_FUNCTION_EZU(2017,soname,fnname) \
+ (const void *s, int c, SizeT n); \
+ void* VG_REPLACE_FUNCTION_EZU(2017,soname,fnname) \
+ (const void *s, int c, SizeT n) \
{ \
SizeT i; \
UChar c0 = (UChar)c; \
@@ -579,13 +631,13 @@
#endif
-#define MEMCPY(soname, fnname) \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+#define MEMMOVE_OR_MEMCPY(becTag, soname, fnname, do_ol_check) \
+ void* VG_REPLACE_FUNCTION_EZU(becTag,soname,fnname) \
( void *dst, const void *src, SizeT len ); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ void* VG_REPLACE_FUNCTION_EZU(becTag,soname,fnname) \
( void *dst, const void *src, SizeT len ) \
{ \
- if (is_overlap(dst, src, len, len)) \
+ if (do_ol_check && is_overlap(dst, src, len, len)) \
RECORD_OVERLAP_ERROR("memcpy", dst, src, len); \
\
const Addr WS = sizeof(UWord); /* 8 or 4 */ \
@@ -650,11 +702,20 @@
return dst; \
}
-MEMCPY(VG_Z_LIBC_SONAME, memcpy)
+#define MEMMOVE(soname, fnname) \
+ MEMMOVE_OR_MEMCPY(2018, soname, fnname, 0)
+
+#define MEMCPY(soname, fnname) \
+ MEMMOVE_OR_MEMCPY(2022, soname, fnname, 1)
+
#if defined(VGO_linux)
-MEMCPY(VG_Z_LD_SO_1, memcpy) /* ld.so.1 */
-MEMCPY(VG_Z_LD64_SO_1, memcpy) /* ld64.so.1 */
+/* For older memcpy we have to use memmove-like semantics and skip the
+ overlap check; sigh; see #275284. */
+MEMMOVE(VG_Z_LIBC_SONAME, memcpy)
+MEMMOVE(VG_Z_LD_SO_1, memcpy) /* ld.so.1 */
+MEMMOVE(VG_Z_LD64_SO_1, memcpy) /* ld64.so.1 */
#elif defined(VGO_darwin)
+MEMCPY(VG_Z_LIBC_SONAME, memcpy)
MEMCPY(VG_Z_DYLD, memcpy)
#endif
/* icc9 blats these around all over the place. Not only in the main
@@ -669,10 +730,10 @@
#define MEMCMP(soname, fnname) \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ int VG_REPLACE_FUNCTION_EZU(2019,soname,fnname) \
( const void *s1V, const void *s2V, SizeT n ); \
- int VG_REPLACE_FUNCTION_ZU(soname,fnname) \
- ( const void *s1V, const void *s2V, SizeT n ) \
+ int VG_REPLACE_FUNCTION_EZU(2019,soname,fnname) \
+ ( const void *s1V, const void *s2V, SizeT n ) \
{ \
int res; \
unsigned char a0; \
@@ -706,8 +767,10 @@
/* Copy SRC to DEST, returning the address of the terminating '\0' in
DEST. (minor variant of strcpy) */
#define STPCPY(soname, fnname) \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( char* dst, const char* src ); \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) ( char* dst, const char* src ) \
+ char* VG_REPLACE_FUNCTION_EZU(2020,soname,fnname) \
+ ( char* dst, const char* src ); \
+ char* VG_REPLACE_FUNCTION_EZU(2020,soname,fnname) \
+ ( char* dst, const char* src ) \
{ \
const Char* src_orig = src; \
Char* dst_orig = dst; \
@@ -737,8 +800,10 @@
#define MEMSET(soname, fnname) \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname)(void *s, Int c, SizeT n); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname)(void *s, Int c, SizeT n) \
+ void* VG_REPLACE_FUNCTION_EZU(2021,soname,fnname) \
+ (void *s, Int c, SizeT n); \
+ void* VG_REPLACE_FUNCTION_EZU(2021,soname,fnname) \
+ (void *s, Int c, SizeT n) \
{ \
Addr a = (Addr)s; \
UInt c4 = (c & 0xFF); \
@@ -759,27 +824,7 @@
#endif
-#define MEMMOVE(soname, fnname) \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
- (void *dstV, const void *srcV, SizeT n); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
- (void *dstV, const void *srcV, SizeT n) \
- { \
- SizeT i; \
- Char* dst = (Char*)dstV; \
- Char* src = (Char*)srcV; \
- if (dst < src) { \
- for (i = 0; i < n; i++) \
- dst[i] = src[i]; \
- } \
- else \
- if (dst > src) { \
- for (i = 0; i < n; i++) \
- dst[n-i-1] = src[n-i-1]; \
- } \
- return dst; \
- }
-
+/* memmove -- use the MEMMOVE defn which also serves for memcpy. */
MEMMOVE(VG_Z_LIBC_SONAME, memmove)
#if defined(VGO_darwin)
MEMMOVE(VG_Z_DYLD, memmove)
@@ -787,9 +832,9 @@
#define BCOPY(soname, fnname) \
- void VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ void VG_REPLACE_FUNCTION_EZU(2023,soname,fnname) \
(const void *srcV, void *dstV, SizeT n); \
- void VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ void VG_REPLACE_FUNCTION_EZU(2023,soname,fnname) \
(const void *srcV, void *dstV, SizeT n) \
{ \
SizeT i; \
@@ -815,9 +860,9 @@
/* glibc 2.5 variant of memmove which checks the dest is big enough.
There is no specific part of glibc that this is copied from. */
#define GLIBC25___MEMMOVE_CHK(soname, fnname) \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ void* VG_REPLACE_FUNCTION_EZU(2024,soname,fnname) \
(void *dstV, const void *srcV, SizeT n, SizeT destlen); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ void* VG_REPLACE_FUNCTION_EZU(2024,soname,fnname) \
(void *dstV, const void *srcV, SizeT n, SizeT destlen) \
{ \
SizeT i; \
@@ -849,8 +894,10 @@
/* Find the first occurrence of C in S or the final NUL byte. */
#define GLIBC232_STRCHRNUL(soname, fnname) \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const char* s, int c_in); \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const char* s, int c_in) \
+ char* VG_REPLACE_FUNCTION_EZU(2025,soname,fnname) \
+ (const char* s, int c_in); \
+ char* VG_REPLACE_FUNCTION_EZU(2025,soname,fnname) \
+ (const char* s, int c_in) \
{ \
unsigned char c = (unsigned char) c_in; \
unsigned char* char_ptr = (unsigned char *)s; \
@@ -866,8 +913,10 @@
/* Find the first occurrence of C in S. */
#define GLIBC232_RAWMEMCHR(soname, fnname) \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const char* s, int c_in); \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) (const char* s, int c_in) \
+ char* VG_REPLACE_FUNCTION_EZU(2026,soname,fnname) \
+ (const char* s, int c_in); \
+ char* VG_REPLACE_FUNCTION_EZU(2026,soname,fnname) \
+ (const char* s, int c_in) \
{ \
unsigned char c = (unsigned char) c_in; \
unsigned char* char_ptr = (unsigned char *)s; \
@@ -885,10 +934,10 @@
/* glibc variant of strcpy that checks the dest is big enough.
Copied from glibc-2.5/debug/test-strcpy_chk.c. */
#define GLIBC25___STRCPY_CHK(soname,fnname) \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
- (char* dst, const char* src, SizeT len); \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
- (char* dst, const char* src, SizeT len) \
+ char* VG_REPLACE_FUNCTION_EZU(2027,soname,fnname) \
+ (char* dst, const char* src, SizeT len); \
+ char* VG_REPLACE_FUNCTION_EZU(2027,soname,fnname) \
+ (char* dst, const char* src, SizeT len) \
{ \
char* ret = dst; \
if (! len) \
@@ -912,10 +961,10 @@
/* glibc variant of stpcpy that checks the dest is big enough.
Copied from glibc-2.5/debug/test-stpcpy_chk.c. */
#define GLIBC25___STPCPY_CHK(soname,fnname) \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
- (char* dst, const char* src, SizeT len); \
- char* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
- (char* dst, const char* src, SizeT len) \
+ char* VG_REPLACE_FUNCTION_EZU(2028,soname,fnname) \
+ (char* dst, const char* src, SizeT len); \
+ char* VG_REPLACE_FUNCTION_EZU(2028,soname,fnname) \
+ (char* dst, const char* src, SizeT len) \
{ \
if (! len) \
goto badness; \
@@ -937,9 +986,9 @@
/* mempcpy */
#define GLIBC25_MEMPCPY(soname, fnname) \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ void* VG_REPLACE_FUNCTION_EZU(2029,soname,fnname) \
( void *dst, const void *src, SizeT len ); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ void* VG_REPLACE_FUNCTION_EZU(2029,soname,fnname) \
( void *dst, const void *src, SizeT len ) \
{ \
register char *d; \
@@ -975,9 +1024,9 @@
#define GLIBC26___MEMCPY_CHK(soname, fnname) \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ void* VG_REPLACE_FUNCTION_EZU(2030,soname,fnname) \
(void* dst, const void* src, SizeT len, SizeT dstlen ); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ void* VG_REPLACE_FUNCTION_EZU(2030,soname,fnname) \
(void* dst, const void* src, SizeT len, SizeT dstlen ) \
{ \
register char *d; \
@@ -1018,9 +1067,9 @@
#define STRSTR(soname, fnname) \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ void* VG_REPLACE_FUNCTION_EZU(2031,soname,fnname) \
(void* haystack, void* needle); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ void* VG_REPLACE_FUNCTION_EZU(2031,soname,fnname) \
(void* haystack, void* needle) \
{ \
UChar* h = (UChar*)haystack; \
@@ -1060,9 +1109,9 @@
#define STRPBRK(soname, fnname) \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ void* VG_REPLACE_FUNCTION_EZU(2032,soname,fnname) \
(void* sV, void* acceptV); \
- void* VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ void* VG_REPLACE_FUNCTION_EZU(2032,soname,fnname) \
(void* sV, void* acceptV) \
{ \
UChar* s = (UChar*)sV; \
@@ -1097,9 +1146,9 @@
#define STRCSPN(soname, fnname) \
- SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ SizeT VG_REPLACE_FUNCTION_EZU(2033,soname,fnname) \
(void* sV, void* rejectV); \
- SizeT VG_REPLACE_FUNCTION_ZU(soname,fnname) \
+ SizeT VG_REPLACE_FUNCTION_EZU(2033,soname,fnname) \
(void* sV, void* rejectV) \
{ \
UChar* s = (UChar*)sV; \
@@ -1134,42 +1183,55 @@
#endif
-// And here's a validated strspn replacement, should it
-// become necessary.
-//UWord mystrspn( UChar* s, UChar* accept )
-//{
-// /* find the length of 'accept', not including terminating zero */
-// UWord nacc = 0;
-// while (accept[nacc]) nacc++;
-// if (nacc == 0) return 0;
-//
-// UWord len = 0;
-// while (1) {
-// UWord i;
-// UChar sc = *s;
-// if (sc == 0)
-// break;
-// for (i = 0; i < nacc; i++) {
-// if (sc == accept[i])
-// break;
-// }
-// assert(i >= 0 && i <= nacc);
-// if (i == nacc)
-// break;
-// s++;
-// len++;
-// }
-//
-// return len;
-//}
+#define STRSPN(soname, fnname) \
+ SizeT VG_REPLACE_FUNCTION_EZU(2034,soname,fnname) \
+ (void* sV, void* acceptV); \
+ SizeT VG_REPLACE_FUNCTION_EZU(2034,soname,fnname) \
+ (void* sV, void* acceptV) \
+ { \
+ UChar* s = (UChar*)sV; \
+ UChar* accept = (UChar*)acceptV; \
+ \
+ /* find the length of 'accept', not including terminating zero */ \
+ UWord nacc = 0; \
+ while (accept[nacc]) nacc++; \
+ if (nacc == 0) return 0; \
+ \
+ UWord len = 0; \
+ while (1) { \
+ UWord i; \
+ UChar sc = *s; \
+ if (sc == 0) \
+ break; \
+ for (i = 0; i < nacc; i++) { \
+ if (sc == accept[i]) \
+ break; \
+ } \
+ /* assert(i >= 0 && i <= nacc); */ \
+ if (i == nacc) \
+ break; \
+ s++; \
+ len++; \
+ } \
+ \
+ return len; \
+ }
+#if defined(VGO_linux)
+STRSPN(VG_Z_LIBC_SONAME, strspn)
+#endif
+
/*------------------------------------------------------------*/
/*--- Improve definedness checking of process environment ---*/
/*------------------------------------------------------------*/
#if defined(VGO_linux)
+/* If these wind up getting generated via a macro, so that multiple
+ versions of each function exist (as above), use the _EZU variants
+ to assign equivalance class tags. */
+
/* putenv */
int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, putenv) (char* string);
int VG_WRAP_FUNCTION_ZU(VG_Z_LIBC_SONAME, putenv) (char* string)
|
|
From: Christian B. <bor...@de...> - 2011-08-16 21:33:52
|
Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2011-08-16 22:05:01 CEST Ended at 2011-08-16 22:26:35 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 495 tests, 16 stderr failures, 0 stdout failures, 6 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcclean_after_fork (stderrB) gdbserver_tests/mcinfcallWSRU (stderrB) gdbserver_tests/mcleak (stderrB) gdbserver_tests/mssnapshot (stderrB) gdbserver_tests/nlpasssigalrm (stderrB) memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/timerfd-syscall (stderr) none/tests/faultstatus (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) drd/tests/tc23_bogus_condwait (stderr) |
|
From: Christian B. <bor...@de...> - 2011-08-16 20:06:56
|
Nightly build on fedora390 ( Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) ) Started at 2011-08-16 21:45:01 CEST Ended at 2011-08-16 22:07:05 CEST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 496 tests, 15 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/timerfd-syscall (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) drd/tests/tc23_bogus_condwait (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 496 tests, 16 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/timerfd-syscall (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/annotate_rwlock (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) drd/tests/tc23_bogus_condwait (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Aug 16 21:55:11 2011 --- new.short Tue Aug 16 22:07:05 2011 *************** *** 8,10 **** ! == 496 tests, 16 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) --- 8,10 ---- ! == 496 tests, 15 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) *************** *** 21,23 **** helgrind/tests/tc23_bogus_condwait (stderr) - drd/tests/annotate_rwlock (stderr) drd/tests/tc04_free_lock (stderr) --- 21,22 ---- |
|
From: <sv...@va...> - 2011-08-16 09:58:50
|
Author: sewardj
Date: 2011-08-16 10:54:00 +0100 (Tue, 16 Aug 2011)
New Revision: 11984
Log:
Add more infrastructure to be used for fixing #275284 (Valgrind
memcpy/memmove redirection stopped working in glibc 2.14/x86_64), but
don't fix the problem yet. Should be no end-user visible change.
* in m_redir.c, when processing redirection specifications, consider
all the names associated with an address, not just the primary name.
* add plumbing to support the notion of "behavioural equivalence class
tags" of redirect/wrap functions. These can be used by m_redir to
resolve some situations in which the available set of redirect
specifications causes some address to get redirected to two
different functions. (Framework is in place, but such resolution is
not implemented yet.)
Modified:
trunk/coregrind/m_demangle/demangle.c
trunk/coregrind/m_redir.c
trunk/coregrind/pub_core_demangle.h
trunk/include/pub_tool_redir.h
trunk/include/valgrind.h
Modified: trunk/coregrind/m_demangle/demangle.c
===================================================================
--- trunk/coregrind/m_demangle/demangle.c 2011-08-15 11:11:41 UTC (rev 11983)
+++ trunk/coregrind/m_demangle/demangle.c 2011-08-16 09:54:00 UTC (rev 11984)
@@ -100,7 +100,7 @@
interested in that). */
if (do_z_demangling) {
if (VG_(maybe_Z_demangle)( orig, NULL,0,/*soname*/
- z_demangled, N_ZBUF, NULL)) {
+ z_demangled, N_ZBUF, NULL, NULL )) {
orig = z_demangled;
}
}
@@ -146,7 +146,8 @@
Bool VG_(maybe_Z_demangle) ( const HChar* sym,
/*OUT*/HChar* so, Int soLen,
/*OUT*/HChar* fn, Int fnLen,
- /*OUT*/Bool* isWrap )
+ /*OUT*/Bool* isWrap,
+ /*OUT*/Int* eclassTag )
{
# define EMITSO(ch) \
do { \
@@ -181,32 +182,50 @@
&& sym[1] == 'v'
&& sym[2] == 'g'
&& (sym[3] == 'r' || sym[3] == 'w' || sym[3] == 'n')
- && sym[4] == 'Z'
- && (sym[5] == 'Z' || sym[5] == 'U')
- && sym[6] == '_';
+ && VG_(isdigit)(sym[4])
+ && VG_(isdigit)(sym[5])
+ && VG_(isdigit)(sym[6])
+ && VG_(isdigit)(sym[7])
+ && sym[8] == 'Z'
+ && (sym[9] == 'Z' || sym[9] == 'U')
+ && sym[10] == '_';
+ if (valid && sym[3] == 'n') {
+ /* for _vgn (notify-on-load symbols), the equivalence class has
+ no meaning; hence ensure it is the default 0000 value. */
+ if (sym[4] != '0' || sym[5] != '0' || sym[6] != '0' || sym[7] != '0')
+ valid = False;
+ }
if (!valid)
return False;
- fn_is_encoded = sym[5] == 'Z';
+ fn_is_encoded = sym[9] == 'Z';
if (isWrap)
*isWrap = sym[3] == 'w';
+ if (eclassTag) {
+ *eclassTag = 1000 * ((Int)sym[4] - '0')
+ + 100 * ((Int)sym[5] - '0')
+ + 10 * ((Int)sym[6] - '0')
+ + 1 * ((Int)sym[7] - '0');
+ vg_assert(*eclassTag >= 0 && *eclassTag <= 9999);
+ }
+
/* Now check the soname prefix isn't "VG_Z_", as described in
pub_tool_redir.h. */
is_VG_Z_prefixed =
- sym[ 7] == 'V' &&
- sym[ 8] == 'G' &&
- sym[ 9] == '_' &&
- sym[10] == 'Z' &&
- sym[11] == '_';
+ sym[11] == 'V' &&
+ sym[12] == 'G' &&
+ sym[13] == '_' &&
+ sym[14] == 'Z' &&
+ sym[15] == '_';
if (is_VG_Z_prefixed) {
vg_assert2(0, "symbol with a 'VG_Z_' prefix: %s.\n"
"see pub_tool_redir.h for an explanation.", sym);
}
/* Now scan the Z-encoded soname. */
- i = 7;
+ i = 11;
while (True) {
if (sym[i] == '_')
Modified: trunk/coregrind/m_redir.c
===================================================================
--- trunk/coregrind/m_redir.c 2011-08-15 11:11:41 UTC (rev 11983)
+++ trunk/coregrind/m_redir.c 2011-08-16 09:54:00 UTC (rev 11984)
@@ -77,14 +77,18 @@
table).
Redirect specifications are really symbols with "funny" prefixes
- (_vgrZU_ and _vgrZZ_). These names tell m_redir that the
+ (_vgrNNNNZU_ and _vgrNNNNZZ_). These names tell m_redir that the
associated code should replace the standard entry point for some
set of functions. The set of functions is specified by a (soname
pattern, function name pattern) pair which is encoded in the symbol
name following the prefix. The names use a Z-encoding scheme so
that they may contain punctuation characters and wildcards (*).
The encoding scheme is described in pub_tool_redir.h and is decoded
- by VG_(maybe_Z_demangle).
+ by VG_(maybe_Z_demangle). The NNNN are behavioural equivalence
+ class tags, and are used to by code in this module to resolve
+ situations where one address appears to be redirected to more than
+ one replacement/wrapper. This is also described in
+ pub_tool_redir.h.
When a shared object is unloaded, this module learns of it via a
call to VG_(redir_notify_delete_DebugInfo). It then removes from
@@ -226,6 +230,9 @@
HChar* from_fnpatt; /* from fnname pattern */
Addr to_addr; /* where redirecting to */
Bool isWrap; /* wrap or replacement? */
+ Int becTag; /* 0 through 9999. Behavioural equivalance class tag.
+ If two wrappers have the same (non-zero) tag, they
+ are promising that they behave identically. */
const HChar** mandatory; /* non-NULL ==> abort V and print the
strings if from_sopatt is loaded but
from_fnpatt cannot be found */
@@ -270,6 +277,7 @@
Addr to_addr; /* where redirecting to */
TopSpec* parent_spec; /* the TopSpec which supplied the Spec */
TopSpec* parent_sym; /* the TopSpec which supplied the symbol */
+ Int becTag; /* behavioural eclass tag for ::to_addr */
Bool isWrap; /* wrap or replacement? */
Bool isIFunc; /* indirect function? */
}
@@ -314,6 +322,45 @@
TopSpec* parent_sym
);
+
+/* Copy all the names from a given symbol into an AR_DINFO allocated,
+ NULL terminated array, for easy iteration. Caller must pass also
+ the address of a 2-entry array which can be used in the common case
+ to avoid dynamic allocation. */
+static UChar** alloc_symname_array ( UChar* pri_name, UChar** sec_names,
+ UChar** twoslots )
+{
+ /* Special-case the common case: only one name. We expect the
+ caller to supply a stack-allocated 2-entry array for this. */
+ if (sec_names == NULL) {
+ twoslots[0] = pri_name;
+ twoslots[1] = NULL;
+ return twoslots;
+ }
+ /* Else must use dynamic allocation. Figure out size .. */
+ Word n_req = 1;
+ UChar** pp = sec_names;
+ while (*pp) { n_req++; pp++; }
+ /* .. allocate and copy in. */
+ UChar** arr = dinfo_zalloc( "redir.asa.1", (n_req+1) * sizeof(UChar*) );
+ Word i = 0;
+ arr[i++] = pri_name;
+ pp = sec_names;
+ while (*pp) { arr[i++] = *pp; pp++; }
+ tl_assert(i == n_req);
+ tl_assert(arr[n_req] == NULL);
+ return arr;
+}
+
+
+/* Free the array allocated by alloc_symname_array, if any. */
+static void free_symname_array ( UChar** names, UChar** twoslots )
+{
+ if (names != twoslots)
+ dinfo_free(names);
+}
+
+
/* Notify m_redir of the arrival of a new DebugInfo. This is fairly
complex, but the net effect is to (1) add a new entry to the
topspecs list, and (2) figure out what new binding are now active,
@@ -321,106 +368,126 @@
#define N_DEMANGLED 256
-void VG_(redir_notify_new_DebugInfo)( DebugInfo* newsi )
+void VG_(redir_notify_new_DebugInfo)( DebugInfo* newdi )
{
Bool ok, isWrap;
- Int i, nsyms;
+ Int i, nsyms, becTag;
Spec* specList;
Spec* spec;
TopSpec* ts;
TopSpec* newts;
UChar* sym_name_pri;
+ UChar** sym_names_sec;
Addr sym_addr, sym_toc;
HChar demangled_sopatt[N_DEMANGLED];
HChar demangled_fnpatt[N_DEMANGLED];
Bool check_ppcTOCs = False;
Bool isText;
- const UChar* newsi_soname;
+ const UChar* newdi_soname;
# if defined(VG_PLAT_USES_PPCTOC)
check_ppcTOCs = True;
# endif
- vg_assert(newsi);
- newsi_soname = VG_(DebugInfo_get_soname)(newsi);
- vg_assert(newsi_soname != NULL);
+ vg_assert(newdi);
+ newdi_soname = VG_(DebugInfo_get_soname)(newdi);
+ vg_assert(newdi_soname != NULL);
/* stay sane: we don't already have this. */
for (ts = topSpecs; ts; ts = ts->next)
- vg_assert(ts->seginfo != newsi);
+ vg_assert(ts->seginfo != newdi);
/* scan this DebugInfo's symbol table, pulling out and demangling
any specs found */
specList = NULL; /* the spec list we're building up */
- nsyms = VG_(DebugInfo_syms_howmany)( newsi );
+ nsyms = VG_(DebugInfo_syms_howmany)( newdi );
for (i = 0; i < nsyms; i++) {
- VG_(DebugInfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc,
- NULL, &sym_name_pri, NULL, &isText, NULL );
- ok = VG_(maybe_Z_demangle)( sym_name_pri, demangled_sopatt, N_DEMANGLED,
- demangled_fnpatt, N_DEMANGLED, &isWrap );
- /* ignore data symbols */
- if (!isText)
- continue;
- if (!ok) {
- /* It's not a full-scale redirect, but perhaps it is a load-notify
- fn? Let the load-notify department see it. */
- handle_maybe_load_notifier( newsi_soname, sym_name_pri, sym_addr );
- continue;
+ VG_(DebugInfo_syms_getidx)( newdi, i, &sym_addr, &sym_toc,
+ NULL, &sym_name_pri, &sym_names_sec,
+ &isText, NULL );
+ /* Set up to conveniently iterate over all names for this symbol. */
+ UChar* twoslots[2];
+ UChar** names_init = alloc_symname_array(sym_name_pri, sym_names_sec,
+ &twoslots[0]);
+ UChar** names;
+ for (names = names_init; *names; names++) {
+ ok = VG_(maybe_Z_demangle)( *names,
+ demangled_sopatt, N_DEMANGLED,
+ demangled_fnpatt, N_DEMANGLED,
+ &isWrap, &becTag );
+ /* ignore data symbols */
+ if (!isText)
+ continue;
+ if (!ok) {
+ /* It's not a full-scale redirect, but perhaps it is a load-notify
+ fn? Let the load-notify department see it. */
+ handle_maybe_load_notifier( newdi_soname, *names, sym_addr );
+ continue;
+ }
+ if (check_ppcTOCs && sym_toc == 0) {
+ /* This platform uses toc pointers, but none could be found
+ for this symbol, so we can't safely redirect/wrap to it.
+ Just skip it; we'll make a second pass over the symbols in
+ the following loop, and complain at that point. */
+ continue;
+ }
+ spec = dinfo_zalloc("redir.rnnD.1", sizeof(Spec));
+ vg_assert(spec);
+ spec->from_sopatt = dinfo_strdup("redir.rnnD.2", demangled_sopatt);
+ spec->from_fnpatt = dinfo_strdup("redir.rnnD.3", demangled_fnpatt);
+ vg_assert(spec->from_sopatt);
+ vg_assert(spec->from_fnpatt);
+ spec->to_addr = sym_addr;
+ spec->isWrap = isWrap;
+ spec->becTag = becTag;
+ /* check we're not adding manifestly stupid destinations */
+ vg_assert(is_plausible_guest_addr(sym_addr));
+ spec->next = specList;
+ spec->mark = False; /* not significant */
+ spec->done = False; /* not significant */
+ specList = spec;
}
- if (check_ppcTOCs && sym_toc == 0) {
- /* This platform uses toc pointers, but none could be found
- for this symbol, so we can't safely redirect/wrap to it.
- Just skip it; we'll make a second pass over the symbols in
- the following loop, and complain at that point. */
- continue;
- }
- spec = dinfo_zalloc("redir.rnnD.1", sizeof(Spec));
- vg_assert(spec);
- spec->from_sopatt = dinfo_strdup("redir.rnnD.2", demangled_sopatt);
- spec->from_fnpatt = dinfo_strdup("redir.rnnD.3", demangled_fnpatt);
- vg_assert(spec->from_sopatt);
- vg_assert(spec->from_fnpatt);
- spec->to_addr = sym_addr;
- spec->isWrap = isWrap;
- /* check we're not adding manifestly stupid destinations */
- vg_assert(is_plausible_guest_addr(sym_addr));
- spec->next = specList;
- spec->mark = False; /* not significant */
- spec->done = False; /* not significant */
- specList = spec;
+ free_symname_array(names_init, &twoslots[0]);
}
if (check_ppcTOCs) {
for (i = 0; i < nsyms; i++) {
- VG_(DebugInfo_syms_getidx)( newsi, i, &sym_addr, &sym_toc,
- NULL, &sym_name_pri, NULL,
+ VG_(DebugInfo_syms_getidx)( newdi, i, &sym_addr, &sym_toc,
+ NULL, &sym_name_pri, &sym_names_sec,
&isText, NULL );
- ok = isText
- && VG_(maybe_Z_demangle)(
- sym_name_pri, demangled_sopatt, N_DEMANGLED,
- demangled_fnpatt, N_DEMANGLED, &isWrap );
- if (!ok)
- /* not a redirect. Ignore. */
- continue;
- if (sym_toc != 0)
- /* has a valid toc pointer. Ignore. */
- continue;
+ UChar* twoslots[2];
+ UChar** names_init = alloc_symname_array(sym_name_pri, sym_names_sec,
+ &twoslots[0]);
+ UChar** names;
+ for (names = names_init; *names; names++) {
+ ok = isText
+ && VG_(maybe_Z_demangle)(
+ *names, demangled_sopatt, N_DEMANGLED,
+ demangled_fnpatt, N_DEMANGLED, &isWrap, NULL );
+ if (!ok)
+ /* not a redirect. Ignore. */
+ continue;
+ if (sym_toc != 0)
+ /* has a valid toc pointer. Ignore. */
+ continue;
- for (spec = specList; spec; spec = spec->next)
- if (0 == VG_(strcmp)(spec->from_sopatt, demangled_sopatt)
- && 0 == VG_(strcmp)(spec->from_fnpatt, demangled_fnpatt))
- break;
- if (spec)
- /* a redirect to some other copy of that symbol, which
- does have a TOC value, already exists */
- continue;
+ for (spec = specList; spec; spec = spec->next)
+ if (0 == VG_(strcmp)(spec->from_sopatt, demangled_sopatt)
+ && 0 == VG_(strcmp)(spec->from_fnpatt, demangled_fnpatt))
+ break;
+ if (spec)
+ /* a redirect to some other copy of that symbol, which
+ does have a TOC value, already exists */
+ continue;
- /* Complain */
- VG_(message)(Vg_DebugMsg,
- "WARNING: no TOC ptr for redir/wrap to %s %s\n",
- demangled_sopatt, demangled_fnpatt);
+ /* Complain */
+ VG_(message)(Vg_DebugMsg,
+ "WARNING: no TOC ptr for redir/wrap to %s %s\n",
+ demangled_sopatt, demangled_fnpatt);
+ }
+ free_symname_array(names_init, &twoslots[0]);
}
}
@@ -429,7 +496,7 @@
newts = dinfo_zalloc("redir.rnnD.4", sizeof(TopSpec));
vg_assert(newts);
newts->next = NULL; /* not significant */
- newts->seginfo = newsi;
+ newts->seginfo = newdi;
newts->specs = specList;
newts->mark = False; /* not significant */
@@ -439,10 +506,10 @@
(1) actives formed by matching the new specs in specList against
all symbols currently listed in topSpecs
- (2) actives formed by matching the new symbols in newsi against
+ (2) actives formed by matching the new symbols in newdi against
all specs currently listed in topSpecs
- (3) actives formed by matching the new symbols in newsi against
+ (3) actives formed by matching the new symbols in newdi against
the new specs in specList
This is necessary in order to maintain the invariant that
@@ -460,12 +527,12 @@
/* Case (2) */
for (ts = topSpecs; ts; ts = ts->next) {
generate_and_add_actives( ts->specs, ts,
- newsi, newts );
+ newdi, newts );
}
/* Case (3) */
generate_and_add_actives( specList, newts,
- newsi, newts );
+ newdi, newts );
/* Finally, add the new TopSpec. */
newts->next = topSpecs;
@@ -477,7 +544,7 @@
/* Really finally (quite unrelated to all the above) check the
names in the module against any --require-text-symbol=
specifications we might have. */
- handle_require_text_symbols(newsi);
+ handle_require_text_symbols(newdi);
}
#undef N_DEMANGLED
@@ -502,7 +569,8 @@
if (VG_(clo_trace_redir)) {
VG_(message)( Vg_DebugMsg,
- "Adding redirect for indirect function 0x%llx from 0x%llx -> 0x%llx\n",
+ "Adding redirect for indirect function "
+ "0x%llx from 0x%llx -> 0x%llx\n",
(ULong)old_from, (ULong)new_from, (ULong)new.to_addr );
}
}
@@ -522,12 +590,13 @@
TopSpec* parent_sym
)
{
- Spec* sp;
- Bool anyMark, isText, isIFunc;
- Active act;
- Int nsyms, i;
- Addr sym_addr;
- UChar* sym_name_pri;
+ Spec* sp;
+ Bool anyMark, isText, isIFunc;
+ Active act;
+ Int nsyms, i;
+ Addr sym_addr;
+ UChar* sym_name_pri;
+ UChar** sym_names_sec;
/* First figure out which of the specs match the seginfo's soname.
Also clear the 'done' bits, so that after the main loop below
@@ -548,28 +617,38 @@
of trashing the caches less. */
nsyms = VG_(DebugInfo_syms_howmany)( di );
for (i = 0; i < nsyms; i++) {
- VG_(DebugInfo_syms_getidx)( di, i, &sym_addr, NULL, NULL,
- &sym_name_pri, NULL, &isText, &isIFunc );
+ VG_(DebugInfo_syms_getidx)( di, i, &sym_addr, NULL,
+ NULL, &sym_name_pri, &sym_names_sec,
+ &isText, &isIFunc );
+ UChar* twoslots[2];
+ UChar** names_init = alloc_symname_array(sym_name_pri, sym_names_sec,
+ &twoslots[0]);
+ UChar** names;
+ for (names = names_init; *names; names++) {
- /* ignore data symbols */
- if (!isText)
- continue;
+ /* ignore data symbols */
+ if (!isText)
+ continue;
- for (sp = specs; sp; sp = sp->next) {
- if (!sp->mark)
- continue; /* soname doesn't match */
- if (VG_(string_match)( sp->from_fnpatt, sym_name_pri )) {
- /* got a new binding. Add to collection. */
- act.from_addr = sym_addr;
- act.to_addr = sp->to_addr;
- act.parent_spec = parent_spec;
- act.parent_sym = parent_sym;
- act.isWrap = sp->isWrap;
- act.isIFunc = isIFunc;
- sp->done = True;
- maybe_add_active( act );
- }
- } /* for (sp = specs; sp; sp = sp->next) */
+ for (sp = specs; sp; sp = sp->next) {
+ if (!sp->mark)
+ continue; /* soname doesn't match */
+ if (VG_(string_match)( sp->from_fnpatt, *names )) {
+ /* got a new binding. Add to collection. */
+ act.from_addr = sym_addr;
+ act.to_addr = sp->to_addr;
+ act.parent_spec = parent_spec;
+ act.parent_sym = parent_sym;
+ act.becTag = sp->becTag;
+ act.isWrap = sp->isWrap;
+ act.isIFunc = isIFunc;
+ sp->done = True;
+ maybe_add_active( act );
+ }
+ } /* for (sp = specs; sp; sp = sp->next) */
+
+ } /* iterating over names[] */
+ free_symname_array(names_init, &twoslots[0]);
} /* for (i = 0; i < nsyms; i++) */
/* Now, finally, look for Specs which were marked to be done, but
@@ -830,6 +909,7 @@
act.to_addr = to;
act.parent_spec = NULL;
act.parent_sym = NULL;
+ act.becTag = 0; /* "not equivalent to any other fn" */
act.isWrap = False;
act.isIFunc = False;
maybe_add_active( act );
@@ -1211,24 +1291,34 @@
This isn't terribly efficient but it happens rarely, so no big
deal. */
for (i = 0; i < fnpatts_used; i++) {
- Bool found = False;
+ Bool found = False;
HChar* fnpatt = fnpatts[i];
- Int nsyms = VG_(DebugInfo_syms_howmany)(di);
+ Int nsyms = VG_(DebugInfo_syms_howmany)(di);
for (j = 0; j < nsyms; j++) {
- Bool isText = False;
- UChar* sym_name_pri = NULL;
+ Bool isText = False;
+ UChar* sym_name_pri = NULL;
+ UChar** sym_names_sec = NULL;
VG_(DebugInfo_syms_getidx)( di, j, NULL, NULL,
- NULL, &sym_name_pri, NULL,
+ NULL, &sym_name_pri, &sym_names_sec,
&isText, NULL );
- /* ignore data symbols */
- if (0) VG_(printf)("QQQ %s\n", sym_name_pri);
- vg_assert(sym_name_pri);
- if (!isText)
- continue;
- if (VG_(string_match)(fnpatt, sym_name_pri)) {
- found = True;
+ UChar* twoslots[2];
+ UChar** names_init = alloc_symname_array(sym_name_pri, sym_names_sec,
+ &twoslots[0]);
+ UChar** names;
+ for (names = names_init; *names; names++) {
+ /* ignore data symbols */
+ if (0) VG_(printf)("QQQ %s\n", *names);
+ vg_assert(sym_name_pri);
+ if (!isText)
+ continue;
+ if (VG_(string_match)(fnpatt, *names)) {
+ found = True;
+ break;
+ }
+ }
+ free_symname_array(names_init, &twoslots[0]);
+ if (found)
break;
- }
}
if (!found) {
@@ -1265,10 +1355,11 @@
static void show_spec ( HChar* left, Spec* spec )
{
VG_(message)( Vg_DebugMsg,
- "%s%25s %30s %s-> 0x%08llx\n",
+ "%s%25s %30s %s-> (%04d) 0x%08llx\n",
left,
spec->from_sopatt, spec->from_fnpatt,
spec->isWrap ? "W" : "R",
+ spec->becTag,
(ULong)spec->to_addr );
}
@@ -1283,11 +1374,11 @@
ok = VG_(get_fnname_w_offset)(act->to_addr, name2, 64);
if (!ok) VG_(strcpy)(name2, "???");
- VG_(message)(Vg_DebugMsg, "%s0x%08llx (%20s) %s-> 0x%08llx %s\n",
+ VG_(message)(Vg_DebugMsg, "%s0x%08llx (%20s) %s-> (%04d) 0x%08llx %s\n",
left,
(ULong)act->from_addr, name1,
act->isWrap ? "W" : "R",
- (ULong)act->to_addr, name2 );
+ act->becTag, (ULong)act->to_addr, name2 );
}
static void show_redir_state ( HChar* who )
Modified: trunk/coregrind/pub_core_demangle.h
===================================================================
--- trunk/coregrind/pub_core_demangle.h 2011-08-15 11:11:41 UTC (rev 11983)
+++ trunk/coregrind/pub_core_demangle.h 2011-08-16 09:54:00 UTC (rev 11984)
@@ -59,7 +59,8 @@
Bool VG_(maybe_Z_demangle) ( const HChar* sym,
/*OUT*/HChar* so, Int soLen,
/*OUT*/HChar* fn, Int fnLen,
- /*OUT*/Bool* isWrap );
+ /*OUT*/Bool* isWrap,
+ /*OUT*/Int* eclassTag );
#endif // __PUB_CORE_DEMANGLE_H
Modified: trunk/include/pub_tool_redir.h
===================================================================
--- trunk/include/pub_tool_redir.h 2011-08-15 11:11:41 UTC (rev 11983)
+++ trunk/include/pub_tool_redir.h 2011-08-16 09:54:00 UTC (rev 11984)
@@ -51,6 +51,26 @@
sure you use the VG_REPLACE_FN_ macros and not the VG_WRAP_FN_
macros.
+ Finally there is the concept of behavioural equivalence tags. A
+ tag is a 4-digit decimal number (0001 to 9999) encoded in the name.
+ If two replacement functions have the same tag then the redirect
+ mechanism will assume that they have identical behaviour. If, when
+ processing redirections at library load time, the set of available
+ specifications yields more than one replacement or wrapper function
+ for a given address, the system will try to resolve the situation
+ by examining the tags on the replacements/wrappers. In particular,
+ if all of them have the same tag, then they are all claiming to
+ behave identically, so any of them may be chosen to be the actual
+ redirection target. Of course if not all of them have the same tag
+ then the redirection is ambiguous and the system will have to stop.
+
+ The tag is mandatory and must comprise 4 decimal digits. The tag
+ 0000 is special and means "does not have behaviour identical to any
+ other replacement/wrapper function". Hence if you wish to write a
+ wrap/replacement function that is not subject to the above
+ resolution rules, use 0000 for the tag.
+
+
Replacement
~~~~~~~~~~~
To write a replacement function, do this:
@@ -61,12 +81,16 @@
... body ...
}
- zEncodedSoname should be a Z-encoded soname (see below for Z-encoding
- details) and fnname should be an unencoded fn name. The resulting name is
+ zEncodedSoname should be a Z-encoded soname (see below for
+ Z-encoding details) and fnname should be an unencoded fn name. A
+ default-safe equivalence tag of 0000 is assumed (see comments
+ above). The resulting name is
- _vgrZU_zEncodedSoname_fnname
+ _vgr0000ZU_zEncodedSoname_fnname
- The "_vgrZU_" is a prefix that gets discarded upon decoding.
+ The "_vgr0000ZU_" is a prefix that gets discarded upon decoding.
+ It identifies this function as a replacement and specifies its
+ equivalence tag.
It is also possible to write
@@ -80,7 +104,7 @@
Z-encoded. This can sometimes be necessary. In this case the
resulting function name is
- _vgrZZ_zEncodedSoname_zEncodedFnname
+ _vgr0000ZZ_zEncodedSoname_zEncodedFnname
When it sees this either such name, the core's symbol-table reading
machinery and redirection machinery first Z-decode the soname and
@@ -112,6 +136,16 @@
underscores, since the intercept-handlers in m_redir.c detect the
end of the soname by looking for the first trailing underscore.
+ To write function names which explicitly state the equivalence class
+ tag, use
+ VG_REPLACE_FUNCTION_EZU(4-digit-tag,zEncodedSoname,fnname)
+ or
+ VG_REPLACE_FUNCTION_EZZ(4-digit-tag,zEncodedSoname,zEncodedFnname)
+
+ As per comments above, the tag must be a 4 digit decimal number,
+ padded with leading zeroes, in the range 0001 to 9999 inclusive.
+
+
Wrapping
~~~~~~~~
This is identical to replacement, except that you should use the
@@ -119,6 +153,8 @@
VG_WRAP_FUNCTION_ZU
VG_WRAP_FUNCTION_ZZ
+ VG_WRAP_FUNCTION_EZU
+ VG_WRAP_FUNCTION_EZZ
instead.
@@ -153,12 +189,35 @@
args are fully macro-expanded before pasting them together. */
#define VG_CONCAT4(_aa,_bb,_cc,_dd) _aa##_bb##_cc##_dd
-#define VG_REPLACE_FUNCTION_ZU(soname,fnname) VG_CONCAT4(_vgrZU_,soname,_,fnname)
-#define VG_REPLACE_FUNCTION_ZZ(soname,fnname) VG_CONCAT4(_vgrZZ_,soname,_,fnname)
+#define VG_CONCAT6(_aa,_bb,_cc,_dd,_ee,_ff) _aa##_bb##_cc##_dd##_ee##_ff
-#define VG_WRAP_FUNCTION_ZU(soname,fnname) VG_CONCAT4(_vgwZU_,soname,_,fnname)
-#define VG_WRAP_FUNCTION_ZZ(soname,fnname) VG_CONCAT4(_vgwZZ_,soname,_,fnname)
+/* The 4 basic macros. */
+#define VG_REPLACE_FUNCTION_EZU(_eclasstag,_soname,_fnname) \
+ VG_CONCAT6(_vgr,_eclasstag,ZU_,_soname,_,_fnname)
+#define VG_REPLACE_FUNCTION_EZZ(_eclasstag,_soname,_fnname) \
+ VG_CONCAT6(_vgr,_eclasstag,ZZ_,_soname,_,_fnname)
+
+#define VG_WRAP_FUNCTION_EZU(_eclasstag,_soname,_fnname) \
+ VG_CONCAT6(_vgw,_eclasstag,ZU_,_soname,_,_fnname)
+
+#define VG_WRAP_FUNCTION_EZZ(_eclasstag,_soname,_fnname) \
+ VG_CONCAT6(_vgw,_eclasstag,ZZ_,_soname,_,_fnname)
+
+/* Convenience macros defined in terms of the above 4. */
+#define VG_REPLACE_FUNCTION_ZU(_soname,_fnname) \
+ VG_CONCAT6(_vgr,0000,ZU_,_soname,_,_fnname)
+
+#define VG_REPLACE_FUNCTION_ZZ(_soname,_fnname) \
+ VG_CONCAT6(_vgr,0000,ZZ_,_soname,_,_fnname)
+
+#define VG_WRAP_FUNCTION_ZU(_soname,_fnname) \
+ VG_CONCAT6(_vgw,0000,ZU_,_soname,_,_fnname)
+
+#define VG_WRAP_FUNCTION_ZZ(_soname,_fnname) \
+ VG_CONCAT6(_vgw,0000,ZZ_,_soname,_,_fnname)
+
+
/* --------- Some handy Z-encoded names. --------- */
// Nb: ALL THESE NAMES MUST BEGIN WITH "VG_Z_". Why? If we applied
Modified: trunk/include/valgrind.h
===================================================================
--- trunk/include/valgrind.h 2011-08-15 11:11:41 UTC (rev 11983)
+++ trunk/include/valgrind.h 2011-08-16 09:54:00 UTC (rev 11984)
@@ -679,17 +679,20 @@
*/
/* Use these to write the name of your wrapper. NOTE: duplicates
- VG_WRAP_FUNCTION_Z{U,Z} in pub_tool_redir.h. */
+ VG_WRAP_FUNCTION_Z{U,Z} in pub_tool_redir.h. NOTE also: inserts
+ the default behaviour equivalance class tag "0000" into the name.
+ See pub_tool_redir.h for details -- normally you don't need to
+ think about this, though. */
/* Use an extra level of macroisation so as to ensure the soname/fnname
args are fully macro-expanded before pasting them together. */
#define VG_CONCAT4(_aa,_bb,_cc,_dd) _aa##_bb##_cc##_dd
#define I_WRAP_SONAME_FNNAME_ZU(soname,fnname) \
- VG_CONCAT4(_vgwZU_,soname,_,fnname)
+ VG_CONCAT4(_vgw0000ZU_,soname,_,fnname)
#define I_WRAP_SONAME_FNNAME_ZZ(soname,fnname) \
- VG_CONCAT4(_vgwZZ_,soname,_,fnname)
+ VG_CONCAT4(_vgw0000ZZ_,soname,_,fnname)
/* Use this macro from within a wrapper function to collect the
context (address and possibly other info) of the original function.
|
|
From: Tom H. <th...@cy...> - 2011-08-16 03:15:53
|
Nightly build on bristol ( x86_64, Fedora 9 ) Started at 2011-08-16 03:40:52 BST Ended at 2011-08-16 04:15:33 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 574 tests, 5 stderr failures, 4 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) none/tests/amd64/bug132918 (stdout) none/tests/amd64/fxtract (stdout) none/tests/amd64/sse4-64 (stdout) none/tests/x86/fxtract (stdout) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: Rich C. <rc...@wi...> - 2011-08-16 03:02:51
|
Nightly build on ultra ( gcc 4.5.1 Linux 2.6.37.1-1.2-desktop x86_64 )
Started at 2011-08-15 21:30:01 CDT
Ended at 2011-08-15 22:02:40 CDT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 584 tests, 12 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/err_disable3 (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/linux/stack_switch (stderr)
memcheck/tests/origin5-bz2 (stderr)
helgrind/tests/locked_vs_unlocked1_fwd (stderr)
helgrind/tests/locked_vs_unlocked1_rev (stderr)
helgrind/tests/locked_vs_unlocked2 (stderr)
helgrind/tests/locked_vs_unlocked3 (stderr)
helgrind/tests/pth_barrier3 (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
drd/tests/annotate_smart_pointer2 (stderr)
exp-sgcheck/tests/bad_percentify (stderr)
=================================================
== Results from 24 hours ago ==
=================================================
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 584 tests, 11 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/err_disable3 (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/linux/stack_switch (stderr)
memcheck/tests/origin5-bz2 (stderr)
helgrind/tests/locked_vs_unlocked1_fwd (stderr)
helgrind/tests/locked_vs_unlocked1_rev (stderr)
helgrind/tests/locked_vs_unlocked2 (stderr)
helgrind/tests/locked_vs_unlocked3 (stderr)
helgrind/tests/pth_barrier3 (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
exp-sgcheck/tests/bad_percentify (stderr)
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Mon Aug 15 21:46:31 2011
--- new.short Mon Aug 15 22:02:40 2011
***************
*** 8,10 ****
! == 584 tests, 11 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
--- 8,10 ----
! == 584 tests, 12 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
***************
*** 20,21 ****
--- 20,22 ----
helgrind/tests/tc06_two_races_xml (stderr)
+ drd/tests/annotate_smart_pointer2 (stderr)
exp-sgcheck/tests/bad_percentify (stderr)
=================================================
./valgrind-new/drd/tests/annotate_smart_pointer2.stderr.diff
=================================================
--- annotate_smart_pointer2.stderr.exp 2011-08-15 21:48:18.584089502 -0500
+++ annotate_smart_pointer2.stderr.out 2011-08-15 22:00:47.854978486 -0500
@@ -1,10 +1,4 @@
-Conflicting store by thread x at 0x........ size 4
- at 0x........: main (annotate_smart_pointer.cpp:?)
-Address 0x........ is at offset ... from 0x......... Allocation context:
- at 0x........: ...operator new... (vg_replace_malloc.c:...)
- by 0x........: main (annotate_smart_pointer.cpp:?)
-
Done.
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/exp-sgcheck/tests/bad_percentify.stderr.diff-glibc28-amd64
=================================================
--- bad_percentify.stderr.exp-glibc28-amd64 2011-08-15 21:47:20.270077243 -0500
+++ bad_percentify.stderr.out 2011-08-15 22:02:31.375477952 -0500
@@ -16,7 +16,7 @@
by 0x........: myvprintf_str (bad_percentify.c:187)
by 0x........: VG_debugLog_vprintf (bad_percentify.c:479)
by 0x........: vprintf_to_buf (bad_percentify.c:89)
- by 0x........: vprintf_WRK (bad_percentify.c:102)
+ by 0x........: vprintf_WRK (bad_percentify.c:101)
by 0x........: VG_vprintf (bad_percentify.c:115)
by 0x........: VG_printf (bad_percentify.c:124)
by 0x........: VG_print_translation_stats (bad_percentify.c:622)
=================================================
./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2011-08-15 21:46:41.442737644 -0500
+++ mssnapshot.stderrB.out 2011-08-15 21:55:43.414452153 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=b1d398a5cb1609e7ac1c51a26588e87fc20f753c"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=e23cbc772e670af00bea9874f925e2e61afda713"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=1493bf69b1d671cbad9be1d1b0284fbd9138444b"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked1_fwd.stderr.diff
=================================================
--- locked_vs_unlocked1_fwd.stderr.exp 2011-08-15 21:46:39.342665192 -0500
+++ locked_vs_unlocked1_fwd.stderr.out 2011-08-15 21:59:49.630964609 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked1_rev.stderr.diff
=================================================
--- locked_vs_unlocked1_rev.stderr.exp 2011-08-15 21:46:39.348665399 -0500
+++ locked_vs_unlocked1_rev.stderr.out 2011-08-15 21:59:50.915009018 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked2.stderr.diff
=================================================
--- locked_vs_unlocked2.stderr.exp 2011-08-15 21:46:39.348665399 -0500
+++ locked_vs_unlocked2.stderr.out 2011-08-15 21:59:52.204053600 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked3.stderr.diff
=================================================
--- locked_vs_unlocked3.stderr.exp 2011-08-15 21:46:39.333664883 -0500
+++ locked_vs_unlocked3.stderr.out 2011-08-15 21:59:53.494098219 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/pth_barrier3.stderr.diff
=================================================
--- pth_barrier3.stderr.exp 2011-08-15 21:46:39.337665020 -0500
+++ pth_barrier3.stderr.out 2011-08-15 21:59:54.339127443 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2011-08-15 21:46:39.349665433 -0500
+++ tc06_two_races_xml.stderr.out 2011-08-15 22:00:01.326369108 -0500
@@ -40,17 +40,16 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
- <dir>...</dir>
- <file>clone.S</file>
- <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>do_clone.clone.0</fn>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>pthread_create@@GLIBC_2.2.5</fn>
- <dir>...</dir>
- <file>createthread.c</file>
- <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -122,12 +121,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -177,12 +170,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -232,12 +219,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
@@ -287,12 +268,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
=================================================
./valgrind-new/memcheck/tests/err_disable3.stderr.diff
=================================================
--- err_disable3.stderr.exp 2011-08-15 21:46:45.819888651 -0500
+++ err_disable3.stderr.out 2011-08-15 21:56:18.294657687 -0500
@@ -11,8 +11,7 @@
Invalid read of size 1
at 0x........: err (err_disable3.c:25)
by 0x........: child_fn (err_disable3.c:31)
- by 0x........: start_thread (pthread_create.c:300)
- by 0x........: ???
+ by 0x........: start_thread (in /lib64/libpthread-2.11.3.so)
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable3.c:42)
=================================================
./valgrind-new/memcheck/tests/err_disable4.stderr.diff
=================================================
--- err_disable4.stderr.exp 2011-08-15 21:46:45.790887653 -0500
+++ err_disable4.stderr.out 2011-08-15 21:56:19.593702586 -0500
@@ -1503,1001 +1503,7 @@
at 0x........: err (err_disable4.c:41)
by 0x........: child_fn_2 (err_disable4.c:55)
by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable4.c:68)
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2011-08-15 21:46:44.931858014 -0500
+++ stack_switch.stderr.out 2011-08-15 21:56:33.420180497 -0500
@@ -0,0 +1,3 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
+
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2011-08-15 21:46:45.833889134 -0500
+++ origin5-bz2.stderr.out 2011-08-15 21:56:54.085894842 -0500
@@ -72,17 +72,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -128,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2011-08-15 21:46:45.787887548 -0500
+++ origin5-bz2.stderr.out 2011-08-15 21:56:54.085894842 -0500
@@ -117,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2011-08-15 21:46:45.846889585 -0500
+++ origin5-bz2.stderr.out 2011-08-15 21:56:54.085894842 -0500
@@ -11,7 +11,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -19,7 +19,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -27,8 +27,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -37,8 +38,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -47,8 +49,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2855)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -57,8 +60,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2859)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -67,8 +71,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -77,8 +82,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2964)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2964)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -87,7 +93,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2011-08-15 21:46:45.784887443 -0500
+++ origin5-bz2.stderr.out 2011-08-15 21:56:54.085894842 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -9,7 +9,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -17,7 +17,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -25,7 +25,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -36,7 +36,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -47,7 +47,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -58,7 +58,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -69,7 +69,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -80,7 +80,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -91,7 +91,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -102,7 +102,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
=================================================
./valgrind-old/exp-sgcheck/tests/bad_percentify.stderr.diff-glibc28-amd64
=================================================
--- bad_percentify.stderr.exp-glibc28-amd64 2011-08-15 21:32:59.790434845 -0500
+++ bad_percentify.stderr.out 2011-08-15 21:46:21.599053076 -0500
@@ -16,7 +16,7 @@
by 0x........: myvprintf_str (bad_percentify.c:187)
by 0x........: VG_debugLog_vprintf (bad_percentify.c:479)
by 0x........: vprintf_to_buf (bad_percentify.c:89)
- by 0x........: vprintf_WRK (bad_percentify.c:102)
+ by 0x........: vprintf_WRK (bad_percentify.c:101)
by 0x........: VG_vprintf (bad_percentify.c:115)
by 0x........: VG_printf (bad_percentify.c:124)
by 0x........: VG_print_translation_stats (bad_percentify.c:622)
=================================================
./valgrind-old/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2011-08-15 21:30:50.618993936 -0500
+++ mssnapshot.stderrB.out 2011-08-15 21:39:37.476122357 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=b1d398a5cb1609e7ac1c51a26588e87fc20f753c"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=e23cbc772e670af00bea9874f925e2e61afda713"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=1493bf69b1d671cbad9be1d1b0284fbd9138444b"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-old/helgrind/tests/locked_vs_unlocked1_fwd.stderr.diff
=================================================
--- locked_vs_unlocked1_fwd.stderr.exp 2011-08-15 21:30:30.748311006 -0500
+++ locked_vs_unlocked1_fwd.stderr.out 2011-08-15 21:43:39.480462119 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/locked_vs_unlocked1_rev.stderr.diff
=================================================
--- locked_vs_unlocked1_rev.stderr.exp 2011-08-15 21:30:30.755311247 -0500
+++ locked_vs_unlocked1_rev.stderr.out 2011-08-15 21:43:40.762506321 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/locked_vs_unlocked2.stderr.diff
=================================================
--- locked_vs_unlocked2.stderr.exp 2011-08-15 21:30:30.754311213 -0500
+++ locked_vs_unlocked2.stderr.out 2011-08-15 21:43:42.045550556 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/locked_vs_unlocked3.stderr.diff
=================================================
--- locked_vs_unlocked3.stderr.exp 2011-08-15 21:30:30.739310697 -0500
+++ locked_vs_unlocked3.stderr.out 2011-08-15 21:43:43.330594862 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/pth_barrier3.stderr.diff
=================================================
--- pth_barrier3.stderr.exp 2011-08-15 21:30:30.743310835 -0500
+++ pth_barrier3.stderr.out 2011-08-15 21:43:44.187624410 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2011-08-15 21:30:30.756311281 -0500
+++ tc06_two_races_xml.stderr.out 2011-08-15 21:43:51.053861143 -0500
@@ -40,17 +40,16 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
- <dir>...</dir>
- <file>clone.S</file>
- <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>do_clone.clone.0</fn>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>pthread_create@@GLIBC_2.2.5</fn>
- <dir>...</dir>
- <file>createthread.c</file>
- <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -122,12 +121,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -177,12 +170,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -232,12 +219,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
@@ -287,12 +268,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
=================================================
./valgrind-old/memcheck/tests/err_disable3.stderr.diff
=================================================
--- err_disable3.stderr.exp 2011-08-15 21:31:22.210079805 -0500
+++ err_disable3.stderr.out 2011-08-15 21:40:11.473293478 -0500
@@ -11,8 +11,7 @@
Invalid read of size 1
at 0x........: err (err_disable3.c:25)
by 0x........: child_fn (err_disable3.c:31)
- by 0x........: start_thread (pthread_create.c:300)
- by 0x........: ???
+ by 0x........: start_thread (in /lib64/libpthread-2.11.3.so)
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable3.c:42)
=================================================
./valgrind-old/memcheck/tests/err_disable4.stderr.diff
=================================================
--- err_disable4.stderr.exp 2011-08-15 21:31:22.181078809 -0500
+++ err_disable4.stderr.out 2011-08-15 21:40:12.789338816 -0500
@@ -1503,1001 +1503,7 @@
at 0x........: err (err_disable4.c:41)
by 0x........: child_fn_2 (err_disable4.c:55)
by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable4.c:68)
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2011-08-15 21:31:17.929932678 -0500
+++ stack_switch.stderr.out 2011-08-15 21:40:26.060796032 -0500
@@ -0,0 +1,3 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
+
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2011-08-15 21:31:22.224080286 -0500
+++ origin5-bz2.stderr.out 2011-08-15 21:40:46.663505859 -0500
@@ -72,17 +72,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -128,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2011-08-15 21:31:22.178078705 -0500
+++ origin5-bz2.stderr.out 2011-08-15 21:40:46.663505859 -0500
@@ -117,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2011-08-15 21:31:22.236080700 -0500
+++ origin5-bz2.stderr.out 2011-08-15 21:40:46.663505859 -0500
@@ -11,7 +11,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -19,7 +19,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -27,8 +27,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -37,8 +38,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -47,8 +49,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2855)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -57,8 +60,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2859)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -67,8 +71,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -77,8 +82,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2964)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2964)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -87,7 +93,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2011-08-15 21:31:22.175078603 -0500
+++ origin5-bz2.stderr.out 2011-08-15 21:40:46.663505859 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -9,7 +9,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -17,7 +17,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -25,7 +25,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -36,7 +36,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -47,7 +47,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -58,7 +58,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -69,7 +69,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -80,7 +80,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -91,7 +91,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -102,7 +102,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
|
|
From: Tom H. <th...@cy...> - 2011-08-16 02:59:47
|
Nightly build on bristol ( x86_64, Fedora 11 ) Started at 2011-08-16 03:30:28 BST Ended at 2011-08-16 03:59:26 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 574 tests, 10 stderr failures, 4 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/stack_switch (stderr) memcheck/tests/long_namespace_xml (stderr) none/tests/amd64/bug132918 (stdout) none/tests/amd64/fxtract (stdout) none/tests/amd64/sse4-64 (stdout) none/tests/x86/fxtract (stdout) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Tom H. <th...@cy...> - 2011-08-16 02:43:05
|
Nightly build on bristol ( x86_64, Fedora 13 ) Started at 2011-08-16 03:21:47 BST Ended at 2011-08-16 03:42:22 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 574 tests, 8 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/linux/stack_switch (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Tom H. <th...@cy...> - 2011-08-16 02:33:38
|
Nightly build on bristol ( x86_64, Fedora 14 ) Started at 2011-08-16 03:11:01 BST Ended at 2011-08-16 03:33:16 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 588 tests, 11 stderr failures, 0 stdout failures, 9 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcclean_after_fork (stderrB) gdbserver_tests/mcinfcallWSRU (stderrB) gdbserver_tests/mcleak (stderrB) gdbserver_tests/mcmain_pic (stderrB) gdbserver_tests/mcvabits (stderrB) gdbserver_tests/mssnapshot (stderrB) gdbserver_tests/nlpasssigalrm (stderrB) gdbserver_tests/nlsigvgdb (stderrB) memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/stack_switch (stderr) memcheck/tests/origin5-bz2 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) exp-sgcheck/tests/bad_percentify (stderr) |
|
From: Tom H. <th...@cy...> - 2011-08-16 02:24:26
|
Nightly build on bristol ( x86_64, Fedora 15 ) Started at 2011-08-16 03:02:06 BST Ended at 2011-08-16 03:24:09 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 588 tests, 13 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) none/tests/shell (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) exp-sgcheck/tests/bad_percentify (stderr) |