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
(16) |
2
(7) |
3
(9) |
4
(12) |
5
(20) |
|
6
(24) |
7
(10) |
8
(7) |
9
(17) |
10
(9) |
11
(7) |
12
(8) |
|
13
(12) |
14
(17) |
15
(15) |
16
(15) |
17
(21) |
18
(9) |
19
(17) |
|
20
(16) |
21
(12) |
22
(18) |
23
(8) |
24
(2) |
25
(17) |
26
(23) |
|
27
(30) |
28
(19) |
29
(14) |
30
(11) |
|
|
|
|
From: <sv...@va...> - 2008-04-20 22:55:14
|
Author: sewardj
Date: 2008-04-20 23:55:14 +0100 (Sun, 20 Apr 2008)
New Revision: 7897
Log:
Minor fiddling with the origin-tag cache to try and improve
performance a bit.
Modified:
branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c
Modified: branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c 2008-04-20 10:27:59 UTC (rev 7896)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c 2008-04-20 22:55:14 UTC (rev 7897)
@@ -1710,6 +1710,7 @@
static UWord stats__ocacheline_found_at_1 = 0;
static UWord stats__ocacheline_found_at_N = 0;
static UWord stats__ocacheline_misses = 0;
+static UWord stats__ocacheline_movefwds = 0;
/* Cache of 32-bit values, one every 32 bits of address space */
@@ -1754,7 +1755,7 @@
static OCache ocache;
static UWord ocache_event_ctr = 0;
-#define OC_MOVE_FORWARDS_EVERY 1024
+#define OC_MOVE_FORWARDS_EVERY_BITS 7
static void init_OCache ( void ) {
UWord line, set;
@@ -1768,9 +1769,8 @@
static void moveLineForwards ( OCacheSet* set, UWord lineno )
{
OCacheLine tmp;
- tl_assert(lineno >= 0 && lineno < OC_LINES_PER_SET);
- if (lineno == 0)
- return;
+ stats__ocacheline_movefwds++;
+ tl_assert(lineno > 0 && lineno < OC_LINES_PER_SET);
tmp = set->line[lineno-1];
set->line[lineno-1] = set->line[lineno];
set->line[lineno] = tmp;
@@ -1803,7 +1803,8 @@
stats__ocacheline_found_at_1++;
else
stats__ocacheline_found_at_N++;
- if (0 == (ocache_event_ctr++ & OC_MOVE_FORWARDS_EVERY)) {
+ if (UNLIKELY(0 == (ocache_event_ctr++
+ & ((1<<OC_MOVE_FORWARDS_EVERY_BITS)-1)))) {
moveLineForwards( &ocache.set[setno], line );
line--;
}
@@ -1824,8 +1825,7 @@
return &ocache.set[setno].line[line];
}
-inline
-static OCacheLine* find_OCacheLine ( Addr a )
+static INLINE OCacheLine* find_OCacheLine ( Addr a )
{
UWord setno = (a % (OC_W32S_PER_LINE * OC_N_SETS * 4))
/ (OC_W32S_PER_LINE * 4);
@@ -1842,7 +1842,7 @@
return find_OCacheLine_SLOW( a );
}
-static inline void set_aligned_word64_Origin_to_undef ( Addr a, UInt otag )
+static INLINE void set_aligned_word64_Origin_to_undef ( Addr a, UInt otag )
{
//// BEGIN inlined, specialised version of MC_(helperc_b_store8)
//// Set the origins for a+0 .. a+7
@@ -6271,7 +6271,7 @@
max_shmem_szB / 1024, max_shmem_szB / (1024 * 1024));
VG_(message)(Vg_DebugMsg,
- " ocache: %,12lu finds %,12lu misses",
+ " ocache: %,12lu refs %,12lu misses",
stats__ocacheline_find,
stats__ocacheline_misses );
VG_(message)(Vg_DebugMsg,
@@ -6282,6 +6282,10 @@
stats__ocacheline_found_at_1,
stats__ocacheline_found_at_N );
VG_(message)(Vg_DebugMsg,
+ " ocache: %,12lu sizeB %,12lu move-line-forwards",
+ (UWord)sizeof(OCache),
+ stats__ocacheline_movefwds);
+ VG_(message)(Vg_DebugMsg,
" niacache: %,12lu finds %,12lu misses",
stats__nia_cache_queries, stats__nia_cache_misses);
}
|
|
From: Nicholas N. <nj...@cs...> - 2008-04-20 22:48:32
|
On Sun, 20 Apr 2008, Bart Van Assche wrote: > On Thursday April 17 Eugene Toder filed a Valgrind bug report because > there was not yet a mallinfo() implementation in Valgrind. The first > patch attached to the bug report looked to me like an easy to maintain > basic mallinfo() implementation. I verified the implementation against > the behavior documented in the glibc manual and the Solaris mallinfo() > man page, and I also verified with Google Code Search that the > implemented behavior is what is expected by some mallinfo() users. > Since the implementation looked OK to me, I added it on the trunk. > > By this time Eugene was kind enough to supply a full mallinfo() > implementation and regression test. Since there is no recent standard > defining the mallinfo() behavior, and since it's not clear to me how > mallinfo() behaves on e.g. AIX, I decided to throw this issue on the > Valgrind developers mailing list. What is the opinion of the other > Valgrind developers about adding a full mallinfo() implementation to > Valgrind ? It seems ok to me. People have asked for this before. IIRC he only bothered to fill in the field that holds the total number of bytes, no? Since it's rare and poorly specified I'm not that worried by what Valgrind does... N |
|
From: <sv...@va...> - 2008-04-20 20:01:01
|
Author: sewardj
Date: 2008-04-20 21:01:03 +0100 (Sun, 20 Apr 2008)
New Revision: 1825
Log:
Make this compile again.
Modified:
branches/OTRACK_BY_INSTRUMENTATION/test_main.c
Modified: branches/OTRACK_BY_INSTRUMENTATION/test_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/test_main.c 2008-04-14 10:17:36 UTC (rev 1824)
+++ branches/OTRACK_BY_INSTRUMENTATION/test_main.c 2008-04-20 20:01:03 UTC (rev 1825)
@@ -48,9 +48,13 @@
static Bool verbose = True;
/* Forwards */
-#if 0 /* UNUSED */
+#if 1 /* UNUSED */
static IRSB* ac_instrument ( IRSB*, VexGuestLayout*, IRType );
-static IRSB* mc_instrument ( IRSB*, VexGuestLayout*, IRType, IRType );
+static
+IRSB* mc_instrument ( void* closureV,
+ IRSB* bb_in, VexGuestLayout* layout,
+ VexGuestExtents* vge,
+ IRType gWordTy, IRType hWordTy );
#endif
static Bool chase_into_not_ok ( void* opaque, Addr64 dst ) { return False; }
@@ -167,7 +171,7 @@
vta.host_bytes = transbuf;
vta.host_bytes_size = N_TRANSBUF;
vta.host_bytes_used = &trans_used;
-#if 1 /* no instrumentation */
+#if 0 /* no instrumentation */
vta.instrument1 = NULL;
vta.instrument2 = NULL;
#endif
@@ -175,7 +179,7 @@
vta.instrument1 = ac_instrument;
vta.instrument2 = NULL;
#endif
-#if 0 /* memcheck */
+#if 1 /* memcheck */
vta.instrument1 = mc_instrument;
vta.instrument2 = NULL;
#endif
@@ -379,8 +383,16 @@
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
-#if 0 /* UNUSED */
+#if 1 /* UNUSED */
+static
+__attribute((noreturn))
+void panic ( HChar* s )
+{
+ printf("\npanic: %s\n", s);
+ failure_exit();
+}
+
#define tl_assert(xxx) assert(xxx)
#define VG_(xxxx) xxxx
#define tool_panic(zzz) panic(zzz)
@@ -560,7 +572,7 @@
{
if (a1->tag == Iex_Const)
return True;
- if (a1->tag == Iex_Tmp && a1->Iex.Tmp.tmp < mce->n_originalTmps)
+ if (a1->tag == Iex_RdTmp && a1->Iex.RdTmp.tmp < mce->n_originalTmps)
return True;
return False;
}
@@ -571,7 +583,7 @@
{
if (a1->tag == Iex_Const)
return True;
- if (a1->tag == Iex_Tmp && a1->Iex.Tmp.tmp >= mce->n_originalTmps)
+ if (a1->tag == Iex_RdTmp && a1->Iex.RdTmp.tmp >= mce->n_originalTmps)
return True;
return False;
}
@@ -580,7 +592,7 @@
are identically-kinded. */
static Bool sameKindedAtoms ( IRAtom* a1, IRAtom* a2 )
{
- if (a1->tag == Iex_Tmp && a1->tag == Iex_Tmp)
+ if (a1->tag == Iex_RdTmp && a1->tag == Iex_RdTmp)
return True;
if (a1->tag == Iex_Const && a1->tag == Iex_Const)
return True;
@@ -634,7 +646,7 @@
/* assign value to tmp */
#define assign(_bb,_tmp,_expr) \
- addStmtToIRSB((_bb), IRStmt_Tmp((_tmp),(_expr)))
+ addStmtToIRSB((_bb), IRStmt_WrTmp((_tmp),(_expr)))
/* add stmt to a bb */
#define stmt(_bb,_stmt) \
@@ -648,7 +660,7 @@
#define mkU32(_n) IRExpr_Const(IRConst_U32(_n))
#define mkU64(_n) IRExpr_Const(IRConst_U64(_n))
#define mkV128(_n) IRExpr_Const(IRConst_V128(_n))
-#define mkexpr(_tmp) IRExpr_Tmp((_tmp))
+#define mkexpr(_tmp) IRExpr_RdTmp((_tmp))
/* bind the given expression to a new temporary, and return the
temporary. This effectively converts an arbitrary expression into
@@ -1029,10 +1041,10 @@
getting a new value. */
tl_assert(isIRAtom(vatom));
/* sameKindedAtoms ... */
- if (vatom->tag == Iex_Tmp) {
- tl_assert(atom->tag == Iex_Tmp);
- newShadowTmp(mce, atom->Iex.Tmp.tmp);
- assign(mce->bb, findShadowTmp(mce, atom->Iex.Tmp.tmp),
+ if (vatom->tag == Iex_RdTmp) {
+ tl_assert(atom->tag == Iex_RdTmp);
+ newShadowTmp(mce, atom->Iex.RdTmp.tmp);
+ assign(mce->bb, findShadowTmp(mce, atom->Iex.RdTmp.tmp),
definedOfType(ty));
}
}
@@ -1110,7 +1122,7 @@
*/
static
void do_shadow_PUTI ( MCEnv* mce,
- IRArray* descr, IRAtom* ix, Int bias, IRAtom* atom )
+ IRRegArray* descr, IRAtom* ix, Int bias, IRAtom* atom )
{
IRAtom* vatom;
IRType ty, tyS;
@@ -1132,8 +1144,8 @@
} else {
/* Do a cloned version of the Put that refers to the shadow
area. */
- IRArray* new_descr
- = mkIRArray( descr->base + mce->layout->total_sizeB,
+ IRRegArray* new_descr
+ = mkIRRegArray( descr->base + mce->layout->total_sizeB,
tyS, descr->nElems);
stmt( mce->bb, IRStmt_PutI( new_descr, ix, bias, vatom ));
}
@@ -1163,7 +1175,7 @@
given GETI (passed in in pieces).
*/
static
-IRExpr* shadow_GETI ( MCEnv* mce, IRArray* descr, IRAtom* ix, Int bias )
+IRExpr* shadow_GETI ( MCEnv* mce, IRRegArray* descr, IRAtom* ix, Int bias )
{
IRType ty = descr->elemTy;
IRType tyS = shadowType(ty);
@@ -1177,8 +1189,8 @@
} else {
/* return a cloned version of the Get that refers to the shadow
area. */
- IRArray* new_descr
- = mkIRArray( descr->base + mce->layout->total_sizeB,
+ IRRegArray* new_descr
+ = mkIRRegArray( descr->base + mce->layout->total_sizeB,
tyS, descr->nElems);
return IRExpr_GetI( new_descr, ix, bias );
}
@@ -1684,7 +1696,7 @@
/* Scalar floating point */
- case Iop_RoundF64:
+ // case Iop_RoundF64:
case Iop_F64toI64:
case Iop_I64toF64:
/* First arg is I32 (rounding mode), second is F64 or I64
@@ -2068,8 +2080,8 @@
return shadow_GETI( mce, e->Iex.GetI.descr,
e->Iex.GetI.ix, e->Iex.GetI.bias );
- case Iex_Tmp:
- return IRExpr_Tmp( findShadowTmp(mce, e->Iex.Tmp.tmp) );
+ case Iex_RdTmp:
+ return IRExpr_RdTmp( findShadowTmp(mce, e->Iex.RdTmp.tmp) );
case Iex_Const:
return definedOfType(shadowType(typeOfIRExpr(mce->bb->tyenv, e)));
@@ -2084,9 +2096,9 @@
case Iex_Unop:
return expr2vbits_Unop( mce, e->Iex.Unop.op, e->Iex.Unop.arg );
- case Iex_LDle:
- return expr2vbits_LDle( mce, e->Iex.LDle.ty,
- e->Iex.LDle.addr, 0/*addr bias*/ );
+ case Iex_Load:
+ return expr2vbits_LDle( mce, e->Iex.Load.ty,
+ e->Iex.Load.addr, 0/*addr bias*/ );
case Iex_CCall:
return mkLazyN( mce, e->Iex.CCall.args,
@@ -2154,7 +2166,7 @@
IRAtom *vdataLo64, *vdataHi64;
IRAtom *eBias, *eBias0, *eBias8;
void* helper = NULL;
- Char* hname = NULL;
+ HChar* hname = NULL;
tyAddr = mce->hWordTy;
mkAdd = tyAddr==Ity_I32 ? Iop_Add32 : Iop_Add64;
@@ -2447,7 +2459,7 @@
ULong n = 0;
IRConst* con;
tl_assert(isIRAtom(at));
- if (at->tag == Iex_Tmp)
+ if (at->tag == Iex_RdTmp)
return False;
tl_assert(at->tag == Iex_Const);
con = at->Iex.Const.con;
@@ -2470,11 +2482,11 @@
Int i;
IRExpr* e;
switch (st->tag) {
- case Ist_Tmp:
- e = st->Ist.Tmp.data;
+ case Ist_WrTmp:
+ e = st->Ist.WrTmp.data;
switch (e->tag) {
case Iex_Get:
- case Iex_Tmp:
+ case Iex_RdTmp:
return False;
case Iex_Unop:
return isBogusAtom(e->Iex.Unop.arg);
@@ -2485,8 +2497,8 @@
return isBogusAtom(e->Iex.Mux0X.cond)
|| isBogusAtom(e->Iex.Mux0X.expr0)
|| isBogusAtom(e->Iex.Mux0X.exprX);
- case Iex_LDle:
- return isBogusAtom(e->Iex.LDle.addr);
+ case Iex_Load:
+ return isBogusAtom(e->Iex.Load.addr);
case Iex_CCall:
for (i = 0; e->Iex.CCall.args[i]; i++)
if (isBogusAtom(e->Iex.CCall.args[i]))
@@ -2497,9 +2509,9 @@
}
case Ist_Put:
return isBogusAtom(st->Ist.Put.data);
- case Ist_STle:
- return isBogusAtom(st->Ist.STle.addr)
- || isBogusAtom(st->Ist.STle.data);
+ case Ist_Store:
+ return isBogusAtom(st->Ist.Store.addr)
+ || isBogusAtom(st->Ist.Store.data);
case Ist_Exit:
return isBogusAtom(st->Ist.Exit.guard);
default:
@@ -2509,7 +2521,9 @@
}
}
-IRSB* mc_instrument ( IRSB* bb_in, VexGuestLayout* layout,
+IRSB* mc_instrument ( void* closureV,
+ IRSB* bb_in, VexGuestLayout* layout,
+ VexGuestExtents* vge,
IRType gWordTy, IRType hWordTy )
{
Bool verboze = False; //True;
@@ -2522,8 +2536,8 @@
/* Set up BB */
IRSB* bb = emptyIRSB();
- bb->tyenv = dopyIRTypeEnv(bb_in->tyenv);
- bb->next = dopyIRExpr(bb_in->next);
+ bb->tyenv = deepCopyIRTypeEnv(bb_in->tyenv);
+ bb->next = deepCopyIRExpr(bb_in->next);
bb->jumpkind = bb_in->jumpkind;
/* Set up the running environment. Only .bb is modified as we go
@@ -2563,9 +2577,9 @@
switch (st->tag) {
- case Ist_Tmp:
- assign( bb, findShadowTmp(&mce, st->Ist.Tmp.tmp),
- expr2vbits( &mce, st->Ist.Tmp.data) );
+ case Ist_WrTmp:
+ assign( bb, findShadowTmp(&mce, st->Ist.WrTmp.tmp),
+ expr2vbits( &mce, st->Ist.WrTmp.data) );
break;
case Ist_Put:
@@ -2583,9 +2597,9 @@
st->Ist.PutI.data );
break;
- case Ist_STle:
- do_shadow_STle( &mce, st->Ist.STle.addr, 0/* addr bias */,
- st->Ist.STle.data,
+ case Ist_Store:
+ do_shadow_STle( &mce, st->Ist.Store.addr, 0/* addr bias */,
+ st->Ist.Store.data,
NULL /* shadow data */ );
break;
|
|
From: Bart V. A. <bar...@gm...> - 2008-04-20 18:28:42
|
On Thursday April 17 Eugene Toder filed a Valgrind bug report because there was not yet a mallinfo() implementation in Valgrind. The first patch attached to the bug report looked to me like an easy to maintain basic mallinfo() implementation. I verified the implementation against the behavior documented in the glibc manual and the Solaris mallinfo() man page, and I also verified with Google Code Search that the implemented behavior is what is expected by some mallinfo() users. Since the implementation looked OK to me, I added it on the trunk. By this time Eugene was kind enough to supply a full mallinfo() implementation and regression test. Since there is no recent standard defining the mallinfo() behavior, and since it's not clear to me how mallinfo() behaves on e.g. AIX, I decided to throw this issue on the Valgrind developers mailing list. What is the opinion of the other Valgrind developers about adding a full mallinfo() implementation to Valgrind ? See also http://bugs.kde.org/show_bug.cgi?id=160956. Bart. |
|
From: Nuno L. <nun...@sa...> - 2008-04-20 12:07:19
|
> On Wed, 16 Apr 2008, Nuno Lopes wrote: > >> Sorry for the delay, but we have been working on other school projects.. >> I was thinking in going ahead and trying to implement block chaining. I >> have two questions (for now): >> - How did valgrind handle the case when a block is removed from the cache >> and it has other blocks that jump directly into it (i.e. blocks that were >> previously patched)? Did valgrind purged the whole cache? Did it scanned >> the remaining blocks for references and "unpatched" blocks? >> - Other question is what changes need to be done to the blocks in order >> to implement the block chaining? I assume I would need to add some >> prologue to blocks to check for e.g. thread time-slice end and signal >> handling stuff? > > Section 2.3.6 of my dissertation > (http://www.valgrind.org/docs/phd2004.pdf) has a brief description of > chaining, but it doesn't talk about flushing. The 2.4.0 code is the best > thing to look at for definitive answers... Ok, thank you! Nuno |
|
From: <sv...@va...> - 2008-04-20 10:27:55
|
Author: sewardj
Date: 2008-04-20 11:27:59 +0100 (Sun, 20 Apr 2008)
New Revision: 7896
Log:
In the core/tool interface, duplicate the new_mem_stack functions for
the case with & without origin tracking, and propagate this
everywhere.
Modified:
branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_main.c
branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_stacks.c
branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_tooliface.c
branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_translate.c
branches/OTRACK_BY_INSTRUMENTATION/coregrind/pub_core_tooliface.h
branches/OTRACK_BY_INSTRUMENTATION/exp-drd/drd_main.c
branches/OTRACK_BY_INSTRUMENTATION/helgrind/hg_main.c
branches/OTRACK_BY_INSTRUMENTATION/include/pub_tool_tooliface.h
branches/OTRACK_BY_INSTRUMENTATION/massif/ms_main.c
branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c
branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_translate.c
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_main.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_main.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -1556,16 +1556,8 @@
// p: setup_client_stack() [for 'VG_(client_arg[cv]']
// p: setup_file_descriptors() [for 'VG_(fd_xxx_limit)']
//--------------------------------------------------------------
- {
- Char* s;
- Bool ok;
- VG_(debugLog)(1, "main", "Initialise the tool part 1 (pre_clo_init)\n");
- (VG_(tool_info).tl_pre_clo_init)();
- ok = VG_(sanity_check_needs)( &s );
- if (!ok) {
- VG_(tool_panic)(s);
- }
- }
+ VG_(debugLog)(1, "main", "Initialise the tool part 1 (pre_clo_init)\n");
+ (VG_(tool_info).tl_pre_clo_init)();
//--------------------------------------------------------------
// If --tool and --help/--help-debug was given, now give the core+tool
@@ -1614,6 +1606,17 @@
//--------------------------------------------------------------
VG_(debugLog)(1, "main", "Initialise the tool part 2 (post_clo_init)\n");
VG_TDICT_CALL(tool_post_clo_init);
+ {
+ /* The tool's "needs" will by now be finalised, since it has no
+ further opportunity to specify them. So now sanity check
+ them. */
+ Char* s;
+ Bool ok;
+ ok = VG_(sanity_check_needs)( &s );
+ if (!ok) {
+ VG_(tool_panic)(s);
+ }
+ }
//--------------------------------------------------------------
// Initialise translation table and translation cache
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_stacks.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_stacks.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_stacks.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -315,7 +315,8 @@
"will not be shown.");
}
} else if (delta < 0) {
- VG_TRACK( new_mem_stack, new_SP, -delta, otag );
+ VG_TRACK( new_mem_stack_w_otag, new_SP, -delta, otag );
+ VG_TRACK( new_mem_stack, new_SP, -delta );
} else if (delta > 0) {
VG_TRACK( die_mem_stack, old_SP, delta );
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_tooliface.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_tooliface.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_tooliface.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -100,9 +100,13 @@
/* static */
Bool VG_(sanity_check_needs)(Char** failmsg)
{
+ Bool any_new_mem_stack_N, any_new_mem_stack_N_w_otag;
+ Bool any_new_mem_stack_w_conflicting_otags;
+ Bool any_die_mem_stack_N;
+
#define CHECK_NOT(var, value) \
if ((var)==(value)) { \
- *failmsg = "Tool error: '" #var "' not initialised\n"; \
+ *failmsg = "Tool error: '" #var "' not initialised\n"; \
return False; \
}
@@ -113,35 +117,82 @@
CHECK_NOT(VG_(details).copyright_author, NULL);
CHECK_NOT(VG_(details).bug_reports_to, NULL);
- if ( (VG_(tdict).track_new_mem_stack_4 ||
- VG_(tdict).track_new_mem_stack_8 ||
- VG_(tdict).track_new_mem_stack_12 ||
- VG_(tdict).track_new_mem_stack_16 ||
- VG_(tdict).track_new_mem_stack_32 ||
- VG_(tdict).track_new_mem_stack_112 ||
- VG_(tdict).track_new_mem_stack_128 ||
- VG_(tdict).track_new_mem_stack_144 ||
- VG_(tdict).track_new_mem_stack_160 ) &&
- ! VG_(tdict).track_new_mem_stack)
- {
- *failmsg = "Tool error: one of the specialised 'new_mem_stack_n'\n"
+ /* Check that new_mem_stack is defined if any new_mem_stack_N
+ are. */
+ any_new_mem_stack_N
+ = VG_(tdict).track_new_mem_stack_4 ||
+ VG_(tdict).track_new_mem_stack_8 ||
+ VG_(tdict).track_new_mem_stack_12 ||
+ VG_(tdict).track_new_mem_stack_16 ||
+ VG_(tdict).track_new_mem_stack_32 ||
+ VG_(tdict).track_new_mem_stack_112 ||
+ VG_(tdict).track_new_mem_stack_128 ||
+ VG_(tdict).track_new_mem_stack_144 ||
+ VG_(tdict).track_new_mem_stack_160;
+
+ if (any_new_mem_stack_N && ! VG_(tdict).track_new_mem_stack) {
+ *failmsg = "Tool error: one of the specialised 'new_mem_stack_N'\n"
" events tracked, but not the generic 'new_mem_stack' one.\n"
" 'new_mem_stack' should be defined\n";
return False;
}
- if ( (VG_(tdict).track_die_mem_stack_4 ||
- VG_(tdict).track_die_mem_stack_8 ||
- VG_(tdict).track_die_mem_stack_12 ||
- VG_(tdict).track_die_mem_stack_16 ||
- VG_(tdict).track_die_mem_stack_32 ||
- VG_(tdict).track_die_mem_stack_112 ||
- VG_(tdict).track_die_mem_stack_128 ||
- VG_(tdict).track_die_mem_stack_144 ||
- VG_(tdict).track_die_mem_stack_160 ) &&
- ! VG_(tdict).track_die_mem_stack)
- {
- *failmsg = "Tool error: one of the specialised 'die_mem_stack_n'\n"
+ /* Check that new_mem_stack_w_otag is defined if any
+ new_mem_stack_N_w_otag are. */
+ any_new_mem_stack_N_w_otag
+ = VG_(tdict).track_new_mem_stack_4_w_otag ||
+ VG_(tdict).track_new_mem_stack_8_w_otag ||
+ VG_(tdict).track_new_mem_stack_12_w_otag ||
+ VG_(tdict).track_new_mem_stack_16_w_otag ||
+ VG_(tdict).track_new_mem_stack_32_w_otag ||
+ VG_(tdict).track_new_mem_stack_112_w_otag ||
+ VG_(tdict).track_new_mem_stack_128_w_otag ||
+ VG_(tdict).track_new_mem_stack_144_w_otag ||
+ VG_(tdict).track_new_mem_stack_160_w_otag;
+
+ if (any_new_mem_stack_N_w_otag && ! VG_(tdict).track_new_mem_stack_w_otag) {
+ *failmsg = "Tool error: one of the specialised 'new_mem_stack_N_w_otag'\n"
+ " events tracked, but not the generic 'new_mem_stack_w_otag' one.\n"
+ " 'new_mem_stack_w_otag' should be defined\n";
+ return False;
+ }
+
+ /* Check that in no cases are both with- and without-otag versions of the
+ same new_mem_stack_ function defined. */
+ any_new_mem_stack_w_conflicting_otags
+ = (VG_(tdict).track_new_mem_stack_4 && VG_(tdict).track_new_mem_stack_4_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_8 && VG_(tdict).track_new_mem_stack_8_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_12 && VG_(tdict).track_new_mem_stack_12_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_16 && VG_(tdict).track_new_mem_stack_16_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_32 && VG_(tdict).track_new_mem_stack_32_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_112 && VG_(tdict).track_new_mem_stack_112_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_128 && VG_(tdict).track_new_mem_stack_128_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_144 && VG_(tdict).track_new_mem_stack_144_w_otag) ||
+ (VG_(tdict).track_new_mem_stack_160 && VG_(tdict).track_new_mem_stack_160_w_otag) ||
+ (VG_(tdict).track_new_mem_stack && VG_(tdict).track_new_mem_stack_w_otag);
+
+ if (any_new_mem_stack_w_conflicting_otags) {
+ *failmsg = "Tool error: tool supplies both a 'new_mem_stack_N' and a\n"
+ " 'new_mem_stack_N_w_otag' function for some N (or none),\n"
+ " but you can only have one or the other (not both)\n";
+ return False;
+ }
+
+ /* Check that die_mem_stack is defined if any die_mem_stack_N
+ are. */
+ any_die_mem_stack_N
+ = VG_(tdict).track_die_mem_stack_4 ||
+ VG_(tdict).track_die_mem_stack_8 ||
+ VG_(tdict).track_die_mem_stack_12 ||
+ VG_(tdict).track_die_mem_stack_16 ||
+ VG_(tdict).track_die_mem_stack_32 ||
+ VG_(tdict).track_die_mem_stack_112 ||
+ VG_(tdict).track_die_mem_stack_128 ||
+ VG_(tdict).track_die_mem_stack_144 ||
+ VG_(tdict).track_die_mem_stack_160;
+
+ if (any_die_mem_stack_N && ! VG_(tdict).track_die_mem_stack) {
+ *failmsg = "Tool error: one of the specialised 'die_mem_stack_N'\n"
" events tracked, but not the generic 'die_mem_stack' one.\n"
" 'die_mem_stack' should be defined\n";
return False;
@@ -300,17 +351,28 @@
DEF0(track_die_mem_brk, Addr, SizeT)
DEF0(track_die_mem_munmap, Addr, SizeT)
-DEF2(track_new_mem_stack_4, Addr, UInt)
-DEF2(track_new_mem_stack_8, Addr, UInt)
-DEF2(track_new_mem_stack_12, Addr, UInt)
-DEF2(track_new_mem_stack_16, Addr, UInt)
-DEF2(track_new_mem_stack_32, Addr, UInt)
-DEF2(track_new_mem_stack_112, Addr, UInt)
-DEF2(track_new_mem_stack_128, Addr, UInt)
-DEF2(track_new_mem_stack_144, Addr, UInt)
-DEF2(track_new_mem_stack_160, Addr, UInt)
-DEF0(track_new_mem_stack, Addr, SizeT, UInt)
+DEF2(track_new_mem_stack_4_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_8_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_12_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_16_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_32_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_112_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_128_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_144_w_otag, Addr, UInt)
+DEF2(track_new_mem_stack_160_w_otag, Addr, UInt)
+DEF0(track_new_mem_stack_w_otag, Addr, SizeT, UInt)
+DEF1(track_new_mem_stack_4, Addr)
+DEF1(track_new_mem_stack_8, Addr)
+DEF1(track_new_mem_stack_12, Addr)
+DEF1(track_new_mem_stack_16, Addr)
+DEF1(track_new_mem_stack_32, Addr)
+DEF1(track_new_mem_stack_112, Addr)
+DEF1(track_new_mem_stack_128, Addr)
+DEF1(track_new_mem_stack_144, Addr)
+DEF1(track_new_mem_stack_160, Addr)
+DEF0(track_new_mem_stack, Addr, SizeT)
+
DEF1(track_die_mem_stack_4, Addr)
DEF1(track_die_mem_stack_8, Addr)
DEF1(track_die_mem_stack_12, Addr)
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_translate.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_translate.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/m_translate.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -275,20 +275,34 @@
# define DO_NEW(syze, tmpp) \
do { \
+ Bool vanilla, w_otag; \
vg_assert(curr_IP_known); \
- if (!VG_(tdict).track_new_mem_stack_##syze) \
+ vanilla = NULL != VG_(tdict).track_new_mem_stack_##syze; \
+ w_otag = NULL != VG_(tdict).track_new_mem_stack_##syze##_w_otag; \
+ vg_assert(!(vanilla && w_otag)); /* can't have both */ \
+ if (!(vanilla || w_otag)) \
goto generic; \
\
/* I don't know if it's really necessary to say that the */ \
/* call reads the stack pointer. But anyway, we do. */ \
- dcall = unsafeIRDirty_0_N( \
- 2/*regparms*/, \
- "track_new_mem_stack_" #syze, \
- VG_(fnptr_to_fnentry)( \
- VG_(tdict).track_new_mem_stack_##syze ), \
- mkIRExprVec_2(IRExpr_RdTmp(tmpp), \
- mk_otag_Expr(curr_IP)) \
- ); \
+ if (w_otag) { \
+ dcall = unsafeIRDirty_0_N( \
+ 2/*regparms*/, \
+ "track_new_mem_stack_" #syze "_w_otag", \
+ VG_(fnptr_to_fnentry)( \
+ VG_(tdict).track_new_mem_stack_##syze##_w_otag ), \
+ mkIRExprVec_2(IRExpr_RdTmp(tmpp), \
+ mk_otag_Expr(curr_IP)) \
+ ); \
+ } else { \
+ dcall = unsafeIRDirty_0_N( \
+ 1/*regparms*/, \
+ "track_new_mem_stack_" #syze , \
+ VG_(fnptr_to_fnentry)( \
+ VG_(tdict).track_new_mem_stack_##syze ), \
+ mkIRExprVec_1(IRExpr_RdTmp(tmpp)) \
+ ); \
+ } \
dcall->nFxState = 1; \
dcall->fxState[0].fx = Ifx_Read; \
dcall->fxState[0].offset = layout->offset_SP; \
@@ -456,14 +470,15 @@
we must assume it can be anything allowed in flat IR (tmp
or const).
*/
- IRTemp old_SP;
+ IRTemp old_SP;
n_SP_updates_generic_unknown++;
// Nb: if all is well, this generic case will typically be
// called something like every 1000th SP update. If it's more than
// that, the above code may be missing some cases.
generic:
- /* Pass both the old and new SP values to this helper. */
+ /* Pass both the old and new SP values to this helper. Also,
+ pass an origin tag, even if it isn't needed. */
old_SP = newIRTemp(bb->tyenv, typeof_SP);
addStmtToIRSB(
bb,
@@ -517,7 +532,7 @@
VG_(fnptr_to_fnentry)( &VG_(unknown_SP_update) ),
mkIRExprVec_3( IRExpr_RdTmp(old_SP),
IRExpr_RdTmp(new_SP),
- mk_otag_Expr(curr_IP))
+ mk_otag_Expr(curr_IP) )
);
addStmtToIRSB( bb, IRStmt_Dirty(dcall) );
/* 5 */
Modified: branches/OTRACK_BY_INSTRUMENTATION/coregrind/pub_core_tooliface.h
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/coregrind/pub_core_tooliface.h 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/coregrind/pub_core_tooliface.h 2008-04-20 10:27:59 UTC (rev 7896)
@@ -172,17 +172,28 @@
void (*track_die_mem_brk) (Addr, SizeT);
void (*track_die_mem_munmap) (Addr, SizeT);
- void VG_REGPARM(2) (*track_new_mem_stack_4) (Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_8) (Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_12) (Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_16) (Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_32) (Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_112)(Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_128)(Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_144)(Addr,UInt);
- void VG_REGPARM(2) (*track_new_mem_stack_160)(Addr,UInt);
- void (*track_new_mem_stack)(Addr,SizeT,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_4_w_otag) (Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_8_w_otag) (Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_12_w_otag) (Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_16_w_otag) (Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_32_w_otag) (Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_112_w_otag)(Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_128_w_otag)(Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_144_w_otag)(Addr,UInt);
+ void VG_REGPARM(2) (*track_new_mem_stack_160_w_otag)(Addr,UInt);
+ void (*track_new_mem_stack_w_otag)(Addr,SizeT,UInt);
+ void VG_REGPARM(1) (*track_new_mem_stack_4) (Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_8) (Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_12) (Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_16) (Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_32) (Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_112)(Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_128)(Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_144)(Addr);
+ void VG_REGPARM(1) (*track_new_mem_stack_160)(Addr);
+ void (*track_new_mem_stack)(Addr,SizeT);
+
void VG_REGPARM(1) (*track_die_mem_stack_4) (Addr);
void VG_REGPARM(1) (*track_die_mem_stack_8) (Addr);
void VG_REGPARM(1) (*track_die_mem_stack_12) (Addr);
Modified: branches/OTRACK_BY_INSTRUMENTATION/exp-drd/drd_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/exp-drd/drd_main.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/exp-drd/drd_main.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -511,12 +511,11 @@
/* Called by the core when the stack of a thread grows, to indicate that */
/* the addresses in range [ a, a + len [ may now be used by the client. */
/* Assumption: stacks grow downward. */
-static void drd_start_using_mem_stack(const Addr a, const SizeT len,
- UInt ec_uniq)
+static void drd_start_using_mem_stack(const Addr a, const SizeT len)
{
thread_set_stack_min(thread_get_running_tid(), a - VG_STACK_REDZONE_SZB);
- drd_start_using_mem_w_otag(a - VG_STACK_REDZONE_SZB,
- len + VG_STACK_REDZONE_SZB, ec_uniq);
+ drd_start_using_mem(a - VG_STACK_REDZONE_SZB,
+ len + VG_STACK_REDZONE_SZB);
}
/* Called by the core when the stack of a thread shrinks, to indicate that */
Modified: branches/OTRACK_BY_INSTRUMENTATION/helgrind/hg_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/helgrind/hg_main.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/helgrind/hg_main.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -5416,12 +5416,12 @@
}
static
-void evh__new_mem_w_otag ( Addr a, SizeT len, UInt ec_uniq ) {
+void evh__new_mem ( Addr a, SizeT len ) {
if (SHOW_EVENTS >= 2)
- VG_(printf)("evh__new_mem_w_otag(%p, %lu)\n", (void*)a, len );
+ VG_(printf)("evh__new_mem(%p, %lu)\n", (void*)a, len );
shadow_mem_make_New( get_current_Thread(), a, len );
if (len >= SCE_BIGRANGE_T && (clo_sanity_flags & SCE_BIGRANGE))
- all__sanity_check("evh__new_mem_w_otag-post");
+ all__sanity_check("evh__new_mem-post");
}
static
@@ -7524,7 +7524,7 @@
if (args[2] > 0) { /* length */
evh__die_mem(args[1], args[2]);
/* and then set it to New */
- evh__new_mem_w_otag(args[1], args[2], 0/*ec_uniq*/);
+ evh__new_mem(args[1], args[2]);
}
break;
@@ -8833,7 +8833,7 @@
VG_(track_new_mem_stack_signal)( evh__new_mem_w_tid );
VG_(track_new_mem_brk) ( evh__new_mem_w_tid );
VG_(track_new_mem_mmap) ( evh__new_mem_w_perms );
- VG_(track_new_mem_stack) ( evh__new_mem_w_otag );
+ VG_(track_new_mem_stack) ( evh__new_mem );
// FIXME: surely this isn't thread-aware
VG_(track_copy_mem_remap) ( shadow_mem_copy_range );
Modified: branches/OTRACK_BY_INSTRUMENTATION/include/pub_tool_tooliface.h
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/include/pub_tool_tooliface.h 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/include/pub_tool_tooliface.h 2008-04-20 10:27:59 UTC (rev 7896)
@@ -497,19 +497,39 @@
specialised cases are defined, the general case must be defined too.
Nb: all the specialised ones must use the VG_REGPARM(n) attribute.
- */
-void VG_(track_new_mem_stack_4) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_8) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_12) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_16) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_32) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_112)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_128)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_144)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack_160)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
-void VG_(track_new_mem_stack) (void(*f)(Addr a, SizeT len,
- UInt otag));
+ For the _new functions, a tool may specify with with-otag or
+ without-otag version for each size, but not both. If the with-otag
+ version is supplied, then the core will arrange to pass, as the
+ otag argument, a 32-bit int which uniquely identifies the
+ instruction moving the stack pointer down.
+ VG_(get_ExeContext_from_uniq) can then be used to retrieve the
+ associated depth-1 ExeContext for the location. All this
+ complexity is provided to support origin tracking in Memcheck.
+*/
+void VG_(track_new_mem_stack_4_w_otag) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_8_w_otag) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_12_w_otag) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_16_w_otag) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_32_w_otag) (VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_112_w_otag)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_128_w_otag)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_144_w_otag)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_160_w_otag)(VG_REGPARM(2) void(*f)(Addr new_ESP, UInt otag));
+void VG_(track_new_mem_stack_w_otag) (void(*f)(Addr a, SizeT len,
+ UInt otag));
+
+void VG_(track_new_mem_stack_4) (VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_8) (VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_12) (VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_16) (VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_32) (VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_112)(VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_128)(VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_144)(VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack_160)(VG_REGPARM(1) void(*f)(Addr new_ESP));
+void VG_(track_new_mem_stack) (void(*f)(Addr a, SizeT len));
+
void VG_(track_die_mem_stack_4) (VG_REGPARM(1) void(*f)(Addr die_ESP));
void VG_(track_die_mem_stack_8) (VG_REGPARM(1) void(*f)(Addr die_ESP));
void VG_(track_die_mem_stack_12) (VG_REGPARM(1) void(*f)(Addr die_ESP));
Modified: branches/OTRACK_BY_INSTRUMENTATION/massif/ms_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/massif/ms_main.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/massif/ms_main.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -1722,7 +1722,7 @@
}
}
-static void new_mem_stack(Addr a, SizeT len, UInt ec_uniq)
+static void new_mem_stack(Addr a, SizeT len)
{
new_mem_stack_2(a, len, "stk-new");
}
@@ -1732,7 +1732,7 @@
die_mem_stack_2(a, len, "stk-die");
}
-static void new_mem_stack_signal(Addr a, SizeT len, UInt ec_uniq)
+static void new_mem_stack_signal(Addr a, SizeT len, ThreadId tid)
{
new_mem_stack_2(a, len, "sig-new");
}
Modified: branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c 2008-04-20 08:33:10 UTC (rev 7895)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c 2008-04-20 10:27:59 UTC (rev 7896)
@@ -1561,6 +1561,13 @@
ocache_sarp_Clear_Origins ( a, len );
}
+static void make_mem_undefined ( Addr a, SizeT len )
+{
+ PROF_EVENT(41, "make_mem_undefined");
+ DEBUG("make_mem_undefined(%p, %lu)\n", a, len);
+ set_address_range_perms ( a, len, VA_BITS16_UNDEFINED, SM_DIST_UNDEFINED );
+}
+
void MC_(make_mem_undefined_w_otag) ( Addr a, SizeT len, UInt otag )
{
PROF_EVENT(41, "MC_(make_mem_undefined)");
@@ -1835,11 +1842,34 @@
return find_OCacheLine_SLOW( a );
}
+static inline void set_aligned_word64_Origin_to_undef ( Addr a, UInt otag )
+{
+ //// BEGIN inlined, specialised version of MC_(helperc_b_store8)
+ //// Set the origins for a+0 .. a+7
+ { OCacheLine* line;
+ UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
+ tl_assert(lineoff >= 0
+ && lineoff < OC_W32S_PER_LINE -1/*'cos 8-aligned*/);
+ line = find_OCacheLine( a );
+ line->descr[lineoff+0] = 0xF;
+ line->descr[lineoff+1] = 0xF;
+ line->w32[lineoff+0] = otag;
+ line->w32[lineoff+1] = otag;
+ }
+ //// END inlined, specialised version of MC_(helperc_b_store8)
+}
-/* --- Fast case permission setters, for dealing with stacks. --- */
-static INLINE
-void make_aligned_word32_undefined ( Addr a, UInt otag )
+/*------------------------------------------------------------*/
+/*--- Aligned fast case permission setters, ---*/
+/*--- for dealing with stacks ---*/
+/*------------------------------------------------------------*/
+
+/*--------------------- 32-bit ---------------------*/
+
+/* Nb: by "aligned" here we mean 4-byte aligned */
+
+static INLINE void make_aligned_word32_undefined ( Addr a )
{
UWord sm_off;
SecMap* sm;
@@ -1847,21 +1877,26 @@
PROF_EVENT(300, "make_aligned_word32_undefined");
#ifndef PERF_FAST_STACK2
- MC_(make_mem_undefined)(a, 4);
+ make_mem_undefined(a, 4);
#else
if (UNLIKELY(a > MAX_PRIMARY_ADDRESS)) {
PROF_EVENT(301, "make_aligned_word32_undefined-slow1");
- MC_(make_mem_undefined_w_otag)(a, 4, otag);
+ make_mem_undefined(a, 4);
return;
}
sm = get_secmap_for_writing_low(a);
sm_off = SM_OFF(a);
sm->vabits8[sm_off] = VA_BITS8_UNDEFINED;
+#endif
+}
+static INLINE
+void make_aligned_word32_undefined_w_otag ( Addr a, UInt otag )
+{
+ make_aligned_word32_undefined(a);
//// BEGIN inlined, specialised version of MC_(helperc_b_store4)
//// Set the origins for a+0 .. a+3
- if (UNLIKELY( MC_(clo_mc_level) == 3 ))
{ OCacheLine* line;
UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
tl_assert(lineoff >= 0 && lineoff < OC_W32S_PER_LINE);
@@ -1870,10 +1905,8 @@
line->w32[lineoff] = otag;
}
//// END inlined, specialised version of MC_(helperc_b_store4)
-#endif
}
-
static INLINE
void make_aligned_word32_noaccess ( Addr a )
{
@@ -1896,22 +1929,23 @@
sm->vabits8[sm_off] = VA_BITS8_NOACCESS;
//// BEGIN inlined, specialised version of MC_(helperc_b_store4)
- //// Set the origins for a+0 .. a+3. FIXME: is this necessary?
- if (UNLIKELY( MC_(clo_mc_level) == 3 ))
- { OCacheLine* line;
- UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
- tl_assert(lineoff >= 0 && lineoff < OC_W32S_PER_LINE);
- line = find_OCacheLine( a );
- line->descr[lineoff] = 0;
+ //// Set the origins for a+0 .. a+3.
+ if (UNLIKELY( MC_(clo_mc_level) == 3 )) {
+ OCacheLine* line;
+ UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
+ tl_assert(lineoff >= 0 && lineoff < OC_W32S_PER_LINE);
+ line = find_OCacheLine( a );
+ line->descr[lineoff] = 0;
}
//// END inlined, specialised version of MC_(helperc_b_store4)
#endif
}
+/*--------------------- 64-bit ---------------------*/
/* Nb: by "aligned" here we mean 8-byte aligned */
-static INLINE
-void make_aligned_word64_undefined ( Addr a, UInt otag )
+
+static INLINE void make_aligned_word64_undefined ( Addr a )
{
UWord sm_off16;
SecMap* sm;
@@ -1923,17 +1957,22 @@
#else
if (UNLIKELY(a > MAX_PRIMARY_ADDRESS)) {
PROF_EVENT(321, "make_aligned_word64_undefined-slow1");
- MC_(make_mem_undefined_w_otag)(a, 8, otag);
+ make_mem_undefined(a, 8);
return;
}
sm = get_secmap_for_writing_low(a);
sm_off16 = SM_OFF_16(a);
((UShort*)(sm->vabits8))[sm_off16] = VA_BITS16_UNDEFINED;
+#endif
+}
+static INLINE
+void make_aligned_word64_undefined_w_otag ( Addr a, UInt otag )
+{
+ make_aligned_word64_undefined(a);
//// BEGIN inlined, specialised version of MC_(helperc_b_store8)
//// Set the origins for a+0 .. a+7
- if (UNLIKELY( MC_(clo_mc_level) == 3 ))
{ OCacheLine* line;
UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
tl_assert(lineoff >= 0
@@ -1945,10 +1984,8 @@
line->w32[lineoff+1] = otag;
}
//// END inlined, specialised version of MC_(helperc_b_store8)
-#endif
}
-
static INLINE
void make_aligned_word64_noaccess ( Addr a )
{
@@ -1971,52 +2008,47 @@
((UShort*)(sm->vabits8))[sm_off16] = VA_BITS16_NOACCESS;
//// BEGIN inlined, specialised version of MC_(helperc_b_store8)
- //// Clear the origins for a+0 .. a+7. FIXME: is this necessary?
- if (UNLIKELY( MC_(clo_mc_level) == 3 ))
- { OCacheLine* line;
- UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
- tl_assert(lineoff >= 0
- && lineoff < OC_W32S_PER_LINE -1/*'cos 8-aligned*/);
- line = find_OCacheLine( a );
- line->descr[lineoff+0] = 0;
- line->descr[lineoff+1] = 0;
+ //// Clear the origins for a+0 .. a+7.
+ if (UNLIKELY( MC_(clo_mc_level) == 3 )) {
+ OCacheLine* line;
+ UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
+ tl_assert(lineoff >= 0
+ && lineoff < OC_W32S_PER_LINE -1/*'cos 8-aligned*/);
+ line = find_OCacheLine( a );
+ line->descr[lineoff+0] = 0;
+ line->descr[lineoff+1] = 0;
}
//// END inlined, specialised version of MC_(helperc_b_store8)
#endif
}
-static inline void set_aligned_word64_Origin_to_undef ( Addr a, UInt otag )
-{
- //// BEGIN inlined, specialised version of MC_(helperc_b_store8)
- //// Set the origins for a+0 .. a+7
- { OCacheLine* line;
- UWord lineoff = (a % (OC_W32S_PER_LINE * 4)) / 4;
- tl_assert(lineoff >= 0
- && lineoff < OC_W32S_PER_LINE -1/*'cos 8-aligned*/);
- line = find_OCacheLine( a );
- line->descr[lineoff+0] = 0xF;
- line->descr[lineoff+1] = 0xF;
- line->w32[lineoff+0] = otag;
- line->w32[lineoff+1] = otag;
- }
- //// END inlined, specialised version of MC_(helperc_b_store8)
-}
-
/*------------------------------------------------------------*/
/*--- Stack pointer adjustment ---*/
/*------------------------------------------------------------*/
-static void VG_REGPARM(2) mc_new_mem_stack_4(Addr new_SP, UInt otag)
+/*--------------- adjustment by 4 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_4_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(110, "new_mem_stack_4");
if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP, otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 4, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_4(Addr new_SP)
+{
+ PROF_EVENT(110, "new_mem_stack_4");
+ if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 4 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_4(Addr new_SP)
{
PROF_EVENT(120, "die_mem_stack_4");
@@ -2027,19 +2059,34 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_8(Addr new_SP, UInt otag)
+/*--------------- adjustment by 8 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_8_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(111, "new_mem_stack_8");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP, otag );
} else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4, otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+4, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 8, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_8(Addr new_SP)
+{
+ PROF_EVENT(111, "new_mem_stack_8");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ } else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 8 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_8(Addr new_SP)
{
PROF_EVENT(121, "die_mem_stack_8");
@@ -2053,23 +2100,42 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_12(Addr new_SP, UInt otag)
+/*--------------- adjustment by 12 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_12_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(112, "new_mem_stack_12");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
} else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
/* from previous test we don't have 8-alignment at offset +0,
hence must have 8 alignment at offsets +4/-4. Hence safe to
do 4 at +0 and then 8 at +4/. */
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4, otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+4, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 12, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_12(Addr new_SP)
+{
+ PROF_EVENT(112, "new_mem_stack_12");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 );
+ } else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ /* from previous test we don't have 8-alignment at offset +0,
+ hence must have 8 alignment at offsets +4/-4. Hence safe to
+ do 4 at +0 and then 8 at +4/. */
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 12 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_12(Addr new_SP)
{
PROF_EVENT(122, "die_mem_stack_12");
@@ -2090,24 +2156,44 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_16(Addr new_SP, UInt otag)
+/*--------------- adjustment by 16 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_16_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(113, "new_mem_stack_16");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
/* Have 8-alignment at +0, hence do 8 at +0 and 8 at +8. */
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
} else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
/* Have 4 alignment at +0 but not 8; hence 8 must be at +4.
Hence do 4 at +0, 8 at +4, 4 at +12. */
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4 , otag );
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+12, otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+4 , otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+12, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 16, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_16(Addr new_SP)
+{
+ PROF_EVENT(113, "new_mem_stack_16");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ /* Have 8-alignment at +0, hence do 8 at +0 and 8 at +8. */
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 );
+ } else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ /* Have 4 alignment at +0 but not 8; hence 8 must be at +4.
+ Hence do 4 at +0, 8 at +4, 4 at +12. */
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4 );
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+12 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 16 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_16(Addr new_SP)
{
PROF_EVENT(123, "die_mem_stack_16");
@@ -2125,28 +2211,52 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_32(Addr new_SP, UInt otag)
+/*--------------- adjustment by 32 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_32_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(114, "new_mem_stack_32");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
/* Straightforward */
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8 , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
} else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
/* 8 alignment must be at +4. Hence do 8 at +4,+12,+20 and 4 at
+0,+28. */
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4 , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+12, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+20, otag );
- make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+28, otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+4 , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+12, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+20, otag );
+ make_aligned_word32_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+28, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 32, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_32(Addr new_SP)
+{
+ PROF_EVENT(114, "new_mem_stack_32");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ /* Straightforward */
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24 );
+ } else if (VG_IS_4_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ /* 8 alignment must be at +4. Hence do 8 at +4,+12,+20 and 4 at
+ +0,+28. */
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+4 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+12 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+20 );
+ make_aligned_word32_undefined ( -VG_STACK_REDZONE_SZB + new_SP+28 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 32 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_32(Addr new_SP)
{
PROF_EVENT(124, "die_mem_stack_32");
@@ -2169,29 +2279,54 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_112(Addr new_SP, UInt otag)
+/*--------------- adjustment by 112 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_112_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(115, "new_mem_stack_112");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8 , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 112, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_112(Addr new_SP)
+{
+ PROF_EVENT(115, "new_mem_stack_112");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 112 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_112(Addr new_SP)
{
PROF_EVENT(125, "die_mem_stack_112");
@@ -2215,31 +2350,58 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_128(Addr new_SP, UInt otag)
+/*--------------- adjustment by 128 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_128_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(116, "new_mem_stack_128");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 , otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+112, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+120, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8 , otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+112, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+120, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 128, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_128(Addr new_SP)
+{
+ PROF_EVENT(116, "new_mem_stack_128");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+112 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+120 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 128 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_128(Addr new_SP)
{
PROF_EVENT(126, "die_mem_stack_128");
@@ -2265,33 +2427,62 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_144(Addr new_SP, UInt otag)
+/*--------------- adjustment by 144 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_144_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(117, "new_mem_stack_144");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+112, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+120, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+128, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+136, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+112, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+120, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+128, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+136, otag );
} else {
MC_(make_mem_undefined_w_otag) ( -VG_STACK_REDZONE_SZB + new_SP, 144, otag );
}
}
+static void VG_REGPARM(1) mc_new_mem_stack_144(Addr new_SP)
+{
+ PROF_EVENT(117, "new_mem_stack_144");
+ if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+112 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+120 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+128 );
+ make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+136 );
+ } else {
+ make_mem_undefined ( -VG_STACK_REDZONE_SZB + new_SP, 144 );
+ }
+}
+
static void VG_REGPARM(1) mc_die_mem_stack_144(Addr new_SP)
{
PROF_EVENT(127, "die_mem_stack_144");
@@ -2319,35 +2510,66 @@
}
}
-static void VG_REGPARM(2) mc_new_mem_stack_160(Addr new_SP, UInt otag)
+/*--------------- adjustment by 160 bytes ---------------*/
+
+static void VG_REGPARM(2) mc_new_mem_stack_160_w_otag(Addr new_SP, UInt otag)
{
PROF_EVENT(118, "new_mem_stack_160");
if (VG_IS_8_ALIGNED( -VG_STACK_REDZONE_SZB + new_SP )) {
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+32, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+40, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+48, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+56, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+64, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+72, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+80, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+88, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+96, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+104, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+112, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+120, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+128, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+136, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+144, otag );
- make_aligned_word64_undefined ( -VG_STACK_REDZONE_SZB + new_SP+152, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+8, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+16, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STACK_REDZONE_SZB + new_SP+24, otag );
+ make_aligned_word64_undefined_w_otag ( -VG_STA...
[truncated message content] |
|
From: <sv...@va...> - 2008-04-20 08:33:09
|
Author: bart
Date: 2008-04-20 09:33:10 +0100 (Sun, 20 Apr 2008)
New Revision: 7895
Log:
Added missing VG_(cli_free)() call.
Modified:
trunk/exp-drd/drd_malloc_wrappers.c
Modified: trunk/exp-drd/drd_malloc_wrappers.c
===================================================================
--- trunk/exp-drd/drd_malloc_wrappers.c 2008-04-20 08:29:04 UTC (rev 7894)
+++ trunk/exp-drd/drd_malloc_wrappers.c 2008-04-20 08:33:10 UTC (rev 7895)
@@ -39,7 +39,7 @@
/*------------------------------------------------------------*/
-/*--- Defns ---*/
+/*--- Definitions ---*/
/*------------------------------------------------------------*/
@@ -143,8 +143,10 @@
}
else
{
+ tl_assert(p == mc->data);
if (mc->size > 0)
s_stop_using_mem_callback(mc->data, mc->size);
+ VG_(cli_free)((void*)p);
VG_(free)(mc);
}
}
|
|
From: <sv...@va...> - 2008-04-20 08:29:01
|
Author: bart Date: 2008-04-20 09:29:04 +0100 (Sun, 20 Apr 2008) New Revision: 7894 Log: Added regression test for drd's memory allocation replacement functions. Added: trunk/exp-drd/tests/memory_allocation.c trunk/exp-drd/tests/memory_allocation.stderr.exp trunk/exp-drd/tests/memory_allocation.vgtest Modified: trunk/exp-drd/tests/Makefile.am Modified: trunk/exp-drd/tests/Makefile.am =================================================================== --- trunk/exp-drd/tests/Makefile.am 2008-04-19 15:20:01 UTC (rev 7893) +++ trunk/exp-drd/tests/Makefile.am 2008-04-20 08:29:04 UTC (rev 7894) @@ -40,6 +40,8 @@ matinv.stderr.exp \ matinv.stdout.exp \ matinv.vgtest \ + memory_allocation.stderr.exp \ + memory_allocation.vgtest \ omp_matinv.stderr.exp \ omp_matinv.stdout.exp \ omp_matinv.vgtest \ @@ -155,6 +157,7 @@ hg06_readshared \ linuxthreads_det \ matinv \ + memory_allocation \ pth_barrier \ pth_broadcast \ pth_cond_race \ @@ -228,6 +231,9 @@ matinv_SOURCES = matinv.c matinv_LDADD = -lpthread -lm +memory_allocation_SOURCES = memory_allocation.c +memory_allocation_LDADD = -lpthread -lm + pth_barrier_SOURCES = pth_barrier.c pth_barrier_LDADD = -lpthread Added: trunk/exp-drd/tests/memory_allocation.c =================================================================== --- trunk/exp-drd/tests/memory_allocation.c (rev 0) +++ trunk/exp-drd/tests/memory_allocation.c 2008-04-20 08:29:04 UTC (rev 7894) @@ -0,0 +1,15 @@ +/* Repeatedly allocate and free memory. Tests whether drd */ +/* really frees memory allocated by a client. See also */ +/* http://bugs.kde.org/show_bug.cgi?id=161036 */ + +#include <stdlib.h> + +int main() +{ + int i; + for (i = 0; i < 100000; i++) + { + free(malloc(40960)); + } + return 0; +} Added: trunk/exp-drd/tests/memory_allocation.stderr.exp =================================================================== --- trunk/exp-drd/tests/memory_allocation.stderr.exp (rev 0) +++ trunk/exp-drd/tests/memory_allocation.stderr.exp 2008-04-20 08:29:04 UTC (rev 7894) @@ -0,0 +1,3 @@ + + +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) Added: trunk/exp-drd/tests/memory_allocation.vgtest =================================================================== --- trunk/exp-drd/tests/memory_allocation.vgtest (rev 0) +++ trunk/exp-drd/tests/memory_allocation.vgtest 2008-04-20 08:29:04 UTC (rev 7894) @@ -0,0 +1 @@ +prog: memory-allocation |
|
From: Tom H. <th...@cy...> - 2008-04-20 03:33:43
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-04-20 03:15:08 BST 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 == 331 tests, 75 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (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 == 330 tests, 75 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Apr 20 04:50:53 2008 --- new.short Sun Apr 20 05:09:29 2008 *************** *** 8,10 **** ! == 330 tests, 75 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) --- 8,10 ---- ! == 331 tests, 75 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) |
|
From: Nicholas N. <nj...@cs...> - 2008-04-20 03:06:17
|
On Wed, 16 Apr 2008, Nuno Lopes wrote: > Sorry for the delay, but we have been working on other school projects.. > I was thinking in going ahead and trying to implement block chaining. I have > two questions (for now): > - How did valgrind handle the case when a block is removed from the cache and > it has other blocks that jump directly into it (i.e. blocks that were > previously patched)? Did valgrind purged the whole cache? Did it scanned the > remaining blocks for references and "unpatched" blocks? > - Other question is what changes need to be done to the blocks in order to > implement the block chaining? I assume I would need to add some prologue to > blocks to check for e.g. thread time-slice end and signal handling stuff? Section 2.3.6 of my dissertation (http://www.valgrind.org/docs/phd2004.pdf) has a brief description of chaining, but it doesn't talk about flushing. The 2.4.0 code is the best thing to look at for definitive answers... Nick |
|
From: Tom H. <th...@cy...> - 2008-04-20 03:05:44
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-04-20 03:15:03 BST 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 == 327 tests, 75 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (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 == 326 tests, 75 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Apr 20 03:40:19 2008 --- new.short Sun Apr 20 04:05:41 2008 *************** *** 8,10 **** ! == 326 tests, 75 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) --- 8,10 ---- ! == 327 tests, 75 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-20 02:55:04
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-04-20 03:05:05 BST 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 == 414 tests, 5 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (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 == 413 tests, 5 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Apr 20 03:28:15 2008 --- new.short Sun Apr 20 03:55:07 2008 *************** *** 8,10 **** ! == 413 tests, 5 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 414 tests, 5 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-20 02:54:39
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-04-20 03:20:09 BST 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 == 420 tests, 8 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (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 == 419 tests, 8 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Apr 20 03:37:50 2008 --- new.short Sun Apr 20 03:54:44 2008 *************** *** 8,10 **** ! == 419 tests, 8 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 420 tests, 8 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-20 02:40:32
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-04-20 03:25:05 BST 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 == 418 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (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 == 417 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Apr 20 03:32:52 2008 --- new.short Sun Apr 20 03:40:37 2008 *************** *** 8,10 **** ! == 417 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 418 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-20 02:35:48
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-04-20 03:10:03 BST 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 == 414 tests, 8 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_cvsimple (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (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 == 413 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Apr 20 03:22:57 2008 --- new.short Sun Apr 20 03:35:53 2008 *************** *** 8,10 **** ! == 413 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 414 tests, 8 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 15,16 **** --- 15,17 ---- none/tests/mremap2 (stdout) + none/tests/pth_cvsimple (stdout) helgrind/tests/tc18_semabuse (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-20 02:22:39
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-04-20 03:00:06 BST 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 == 420 tests, 30 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/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 == 419 tests, 30 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Apr 20 03:11:32 2008 --- new.short Sun Apr 20 03:22:43 2008 *************** *** 8,10 **** ! == 419 tests, 30 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 420 tests, 30 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) |