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
(6) |
2
(7) |
|
3
(12) |
4
(9) |
5
(12) |
6
(9) |
7
(18) |
8
(10) |
9
(17) |
|
10
(15) |
11
(22) |
12
(16) |
13
(18) |
14
(9) |
15
(14) |
16
(18) |
|
17
(24) |
18
(11) |
19
(15) |
20
(29) |
21
(19) |
22
(20) |
23
(9) |
|
24
(25) |
25
(25) |
26
(38) |
27
(22) |
28
(16) |
29
(17) |
|
|
From: <sv...@va...> - 2008-02-14 16:55:05
|
Author: sewardj
Date: 2008-02-14 16:55:01 +0000 (Thu, 14 Feb 2008)
New Revision: 7408
Log:
More performance tuning (mostly pointless).
Modified:
branches/DATASYMS/coregrind/m_debuginfo/misc.c
branches/DATASYMS/coregrind/m_debuginfo/priv_misc.h
branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c
branches/DATASYMS/coregrind/m_debuginfo/tytypes.c
branches/DATASYMS/coregrind/m_xarray.c
branches/DATASYMS/include/pub_tool_xarray.h
Modified: branches/DATASYMS/coregrind/m_debuginfo/misc.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/misc.c 2008-02-14 12:09:04 UTC (rev 7407)
+++ branches/DATASYMS/coregrind/m_debuginfo/misc.c 2008-02-14 16:55:01 UTC (rev 7408)
@@ -60,14 +60,6 @@
}
-void ML_(copy_bytes_into_XA) ( XArray* /* of UChar */ xa,
- void* bytes, Word nbytes ) {
- Word i;
- for (i = 0; i < nbytes; i++)
- VG_(addToXA)( xa, & ((UChar*)bytes)[i] );
-}
-
-
/*--------------------------------------------------------------------*/
/*--- end misc.c ---*/
/*--------------------------------------------------------------------*/
Modified: branches/DATASYMS/coregrind/m_debuginfo/priv_misc.h
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/priv_misc.h 2008-02-14 12:09:04 UTC (rev 7407)
+++ branches/DATASYMS/coregrind/m_debuginfo/priv_misc.h 2008-02-14 16:55:01 UTC (rev 7408)
@@ -51,10 +51,6 @@
void ML_(dinfo_free)( void* v );
UChar* ML_(dinfo_strdup)( const UChar* str );
-/* Copy bytes into an XArray of what are assumed to be, well,
- bytes. */
-void ML_(copy_bytes_into_XA) ( XArray* /* of UChar */ xa,
- void* bytes, Word nbytes );
#endif /* ndef __PRIV_MISC_H */
Modified: branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c 2008-02-14 12:09:04 UTC (rev 7407)
+++ branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c 2008-02-14 16:55:01 UTC (rev 7408)
@@ -499,7 +499,7 @@
xa = VG_(newXA)( ML_(dinfo_zalloc), ML_(dinfo_free),
sizeof(UChar) );
- { UChar c = 1; /*biasMe*/ VG_(addToXA)( xa, &c ); }
+ { UChar c = 1; /*biasMe*/ VG_(addBytesToXA)( xa, &c, sizeof(c) ); }
base = 0;
while (True) {
@@ -536,26 +536,26 @@
UShort s;
UChar c;
c = 0; /* !isEnd*/
- VG_(addToXA)( xa, &c );
+ VG_(addBytesToXA)( xa, &c, sizeof(c) );
w = w1 + base + svma_of_referencing_CU;
- ML_(copy_bytes_into_XA)( xa, &w, sizeof(w) );
+ VG_(addBytesToXA)( xa, &w, sizeof(w) );
w = w2 -1 + base + svma_of_referencing_CU;
- ML_(copy_bytes_into_XA)( xa, &w, sizeof(w) );
+ VG_(addBytesToXA)( xa, &w, sizeof(w) );
s = (UShort)len;
- ML_(copy_bytes_into_XA)( xa, &s, sizeof(s) );
+ VG_(addBytesToXA)( xa, &s, sizeof(s) );
}
while (len > 0) {
UChar byte = get_UChar( &loc );
TRACE_D3("%02x", (UInt)byte);
if (acquire)
- VG_(addToXA)( xa, &byte );
+ VG_(addBytesToXA)( xa, &byte, 1 );
len--;
}
TRACE_D3("\n");
}
- { UChar c = 1; /*isEnd*/ VG_(addToXA)( xa, &c ); }
+ { UChar c = 1; /*isEnd*/ VG_(addBytesToXA)( xa, &c, sizeof(c) ); }
nbytes = VG_(sizeXA)( xa );
vg_assert(nbytes >= 1);
Modified: branches/DATASYMS/coregrind/m_debuginfo/tytypes.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/tytypes.c 2008-02-14 12:09:04 UTC (rev 7407)
+++ branches/DATASYMS/coregrind/m_debuginfo/tytypes.c 2008-02-14 16:55:01 UTC (rev 7408)
@@ -402,7 +402,7 @@
UChar buf[32];
VG_(memset)(buf, 0, sizeof(buf));
VG_(sprintf)(buf, "%lu", uw);
- ML_(copy_bytes_into_XA)( xa, buf, VG_(strlen)(buf));
+ VG_(addBytesToXA)( xa, buf, VG_(strlen)(buf));
}
/* Describe where in the type 'offset' falls. Caller must
@@ -455,9 +455,9 @@
goto done; /* No. Give up. */
/* Yes. 'field' is it. */
if (!field->name) goto done;
- ML_(copy_bytes_into_XA)( xa, ".", 1 );
- ML_(copy_bytes_into_XA)( xa, field->name,
- VG_(strlen)(field->name) );
+ VG_(addBytesToXA)( xa, ".", 1 );
+ VG_(addBytesToXA)( xa, field->name,
+ VG_(strlen)(field->name) );
offset -= offMin;
ty = field->typeR;
if (!ty) goto done;
@@ -484,9 +484,9 @@
eszB = ML_(sizeOfType)( ty->Ty.Array.typeR );
if (eszB == 0) goto done;
ix = offset / eszB;
- ML_(copy_bytes_into_XA)( xa, "[", 1 );
+ VG_(addBytesToXA)( xa, "[", 1 );
copy_UWord_into_XA( xa, ix );
- ML_(copy_bytes_into_XA)( xa, "]", 1 );
+ VG_(addBytesToXA)( xa, "]", 1 );
ty = ty->Ty.Array.typeR;
offset -= ix * eszB;
/* keep going; look inside the array element. */
@@ -516,7 +516,7 @@
done:
*residual_offset = offset;
- ML_(copy_bytes_into_XA)( xa, "\0", 1 );
+ VG_(addBytesToXA)( xa, "\0", 1 );
return xa;
}
Modified: branches/DATASYMS/coregrind/m_xarray.c
===================================================================
--- branches/DATASYMS/coregrind/m_xarray.c 2008-02-14 12:09:04 UTC (rev 7407)
+++ branches/DATASYMS/coregrind/m_xarray.c 2008-02-14 16:55:01 UTC (rev 7408)
@@ -104,13 +104,8 @@
return ((char*)xa->arr) + n * xa->elemSzB;
}
-Int VG_(addToXA) ( XArray* xao, void* elem )
+static inline void ensureSpaceXA ( struct _XArray* xa )
{
- struct _XArray* xa = (struct _XArray*)xao;
- vg_assert(xa);
- vg_assert(elem);
- vg_assert(xa->totsizeE >= 0);
- vg_assert(xa->usedsizeE >= 0 && xa->usedsizeE <= xa->totsizeE);
if (xa->usedsizeE == xa->totsizeE) {
void* tmp;
Word newsz;
@@ -142,20 +137,46 @@
xa->arr = tmp;
xa->totsizeE = newsz;
}
+}
+
+Int VG_(addToXA) ( XArray* xao, void* elem )
+{
+ struct _XArray* xa = (struct _XArray*)xao;
+ vg_assert(xa);
+ vg_assert(elem);
+ vg_assert(xa->totsizeE >= 0);
+ vg_assert(xa->usedsizeE >= 0 && xa->usedsizeE <= xa->totsizeE);
+ ensureSpaceXA( xa );
vg_assert(xa->usedsizeE < xa->totsizeE);
vg_assert(xa->arr);
- if (xa->elemSzB == 1) {
- /* calling memcpy is just stupid, hence */
- * (((UChar*)xa->arr) + xa->usedsizeE) = * ((UChar*) elem);
- } else {
- VG_(memcpy)( ((UChar*)xa->arr) + xa->usedsizeE * xa->elemSzB,
- elem, xa->elemSzB );
- }
+ VG_(memcpy)( ((UChar*)xa->arr) + xa->usedsizeE * xa->elemSzB,
+ elem, xa->elemSzB );
xa->usedsizeE++;
xa->sorted = False;
return xa->usedsizeE-1;
}
+Int VG_(addBytesToXA) ( XArray* xao, void* bytesV, Int nbytes )
+{
+ Int r, i;
+ struct _XArray* xa = (struct _XArray*)xao;
+ vg_assert(xa);
+ vg_assert(xa->elemSzB == 1);
+ vg_assert(nbytes >= 0);
+ vg_assert(xa->totsizeE >= 0);
+ vg_assert(xa->usedsizeE >= 0 && xa->usedsizeE <= xa->totsizeE);
+ r = xa->usedsizeE;
+ for (i = 0; i < nbytes; i++) {
+ ensureSpaceXA( xa );
+ vg_assert(xa->usedsizeE < xa->totsizeE);
+ vg_assert(xa->arr);
+ * (((UChar*)xa->arr) + xa->usedsizeE) = ((UChar*)bytesV)[i];
+ xa->usedsizeE++;
+ }
+ xa->sorted = False;
+ return r;
+}
+
void VG_(sortXA) ( XArray* xao )
{
struct _XArray* xa = (struct _XArray*)xao;
Modified: branches/DATASYMS/include/pub_tool_xarray.h
===================================================================
--- branches/DATASYMS/include/pub_tool_xarray.h 2008-02-14 12:09:04 UTC (rev 7407)
+++ branches/DATASYMS/include/pub_tool_xarray.h 2008-02-14 16:55:01 UTC (rev 7408)
@@ -66,6 +66,11 @@
invalidated if the array is later sortXA'd. */
extern Int VG_(addToXA) ( XArray*, void* elem );
+/* Add a sequence of bytes to an XArray of bytes. Asserts if nbytes
+ is negative or the array's element size is not 1. Returns the
+ index at which the first byte was added. */
+extern Int VG_(addBytesToXA) ( XArray* xao, void* bytesV, Int nbytes );
+
/* Sort an XArray using its comparison function, if set; else bomb.
Probably not a stable sort w.r.t. equal elements module cmpFn. */
extern void VG_(sortXA) ( XArray* );
|
|
From: <sv...@va...> - 2008-02-14 12:09:03
|
Author: sewardj
Date: 2008-02-14 12:09:04 +0000 (Thu, 14 Feb 2008)
New Revision: 7407
Log:
Improve storage management: put all names and D3Expr blocks from
Dwarf3 .debug_info reading, into the DebugInfo's string table. This
avoids bazillions of tiny allocations, and makes it easy to free all
those strings at munmap time.
Modified:
branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
branches/DATASYMS/coregrind/m_debuginfo/misc.c
branches/DATASYMS/coregrind/m_debuginfo/priv_misc.h
branches/DATASYMS/coregrind/m_debuginfo/priv_storage.h
branches/DATASYMS/coregrind/m_debuginfo/priv_tytypes.h
branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c
branches/DATASYMS/coregrind/m_debuginfo/storage.c
branches/DATASYMS/coregrind/m_debuginfo/tytypes.c
Modified: branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-02-14 00:44:17 UTC (rev 7406)
+++ branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-02-14 12:09:04 UTC (rev 7407)
@@ -192,6 +192,7 @@
/* Free a DebugInfo, and also all the stuff hanging off it. */
static void free_DebugInfo ( DebugInfo* di )
{
+ Word i, j;
struct strchunk *chunk, *next;
vg_assert(di != NULL);
if (di->filename) ML_(dinfo_free)(di->filename);
@@ -206,19 +207,17 @@
}
{ TyAdmin *admin1, *admin2;
+ GExpr *gexpr1, *gexpr2;
for (admin1 = di->tyadmins; admin1; admin1 = admin2) {
admin2 = admin1->next;
- //ML_(dinfo_free)(admin1);
ML_(delete_TyAdmin_and_payload)(admin1);
}
- GExpr *gexpr1, *gexpr2;
for (gexpr1 = di->gexprs; gexpr1; gexpr1 = gexpr2) {
gexpr2 = gexpr1->next;
ML_(dinfo_free)(gexpr1);
}
}
- Word i, j;
if (di->varinfo) {
for (i = 0; i < VG_(sizeXA)(di->varinfo); i++) {
OSet* scope = *(OSet**)VG_(indexXA)(di->varinfo, i);
@@ -233,13 +232,11 @@
for (j = 0; j < VG_(sizeXA)( arange->vars ); j++) {
DiVariable* var = (DiVariable*)VG_(indexXA)(arange->vars,j);
vg_assert(var);
- /////////////////////////////
- //if (var->name && 0xDD != *(var->name))
- // ML_(dinfo_free)(var->name);
- // var->name gets used more than once .. can't free it
- /////////////////////////////
+ /* Nothing to free in var: all the pointer fields refer
+ to stuff either on an admin list, or in .strchunks */
}
- ML_(dinfo_free)(arange->vars);
+ VG_(deleteXA)(arange->vars);
+ /* Don't free arange itself, as OSetGen_Destroy does that */
}
VG_(OSetGen_Destroy)(scope);
}
@@ -1021,7 +1018,7 @@
Bool show = False;
vg_assert(var->name);
vg_assert(var->type);
- vg_assert(var->gexprV);
+ vg_assert(var->gexpr);
var_szB = ML_(sizeOfType)(var->type);
if (show) {
@@ -1030,7 +1027,7 @@
VG_(printf)("\n");
}
- res = ML_(evaluate_GX)( var->gexprV, var->fbGXv, regs );
+ res = ML_(evaluate_GX)( var->gexpr, var->fbGX, regs );
if (show) VG_(printf)("VVVV: -> 0x%lx %s\n", res.res,
res.failure ? res.failure : "(success)");
Modified: branches/DATASYMS/coregrind/m_debuginfo/misc.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/misc.c 2008-02-14 00:44:17 UTC (rev 7406)
+++ branches/DATASYMS/coregrind/m_debuginfo/misc.c 2008-02-14 12:09:04 UTC (rev 7407)
@@ -59,14 +59,7 @@
return VG_(arena_strdup)( VG_AR_DINFO, str );
}
-UChar* ML_(dinfo_memdup)( UChar* mem, UWord nbytes ) {
- UChar* r = VG_(arena_malloc)( VG_AR_DINFO, nbytes );
- if (nbytes > 0)
- VG_(memcpy)( r, mem, nbytes );
- return r;
-}
-
void ML_(copy_bytes_into_XA) ( XArray* /* of UChar */ xa,
void* bytes, Word nbytes ) {
Word i;
Modified: branches/DATASYMS/coregrind/m_debuginfo/priv_misc.h
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/priv_misc.h 2008-02-14 00:44:17 UTC (rev 7406)
+++ branches/DATASYMS/coregrind/m_debuginfo/priv_misc.h 2008-02-14 12:09:04 UTC (rev 7407)
@@ -50,7 +50,6 @@
void* ML_(dinfo_zalloc)( SizeT szB );
void ML_(dinfo_free)( void* v );
UChar* ML_(dinfo_strdup)( const UChar* str );
-UChar* ML_(dinfo_memdup)( UChar* mem, UWord nbytes );
/* Copy bytes into an XArray of what are assumed to be, well,
bytes. */
Modified: branches/DATASYMS/coregrind/m_debuginfo/priv_storage.h
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/priv_storage.h 2008-02-14 00:44:17 UTC (rev 7406)
+++ branches/DATASYMS/coregrind/m_debuginfo/priv_storage.h 2008-02-14 12:09:04 UTC (rev 7407)
@@ -220,11 +220,12 @@
typedef
struct {
- UChar* name; /* freestanding, in AR_DINFO */
- Type* type;
- void* gexprV; /* FIXME: make this GExpr* */
- void* fbGXv; /* FIXME: make this GExpr*. SHARED. */
- UChar* fileName; /* where declared; may be NULL. */
+ UChar* name; /* in DebugInfo.strchunks */
+ Type* type; /* on DebugInfo.admin list */
+ GExpr* gexpr; /* on DebugInfo.gexprs list */
+ GExpr* fbGX; /* SHARED. */
+ UChar* fileName; /* where declared; may be NULL. in
+ DebugInfo.strchunks */
Int lineNo; /* where declared; may be zero. */
}
DiVariable;
@@ -416,8 +417,8 @@
Addr aMax,
UChar* name,
Type* type,
- void* gexpr, /* actually GExpr* */
- void* fbGXv, /* actually GExpr*. SHARED. */
+ GExpr* gexpr,
+ GExpr* fbGX, /* SHARED. */
UChar* fileName, /* where decl'd - may be NULL */
Int lineNo, /* where decl'd - may be zero */
Bool show );
Modified: branches/DATASYMS/coregrind/m_debuginfo/priv_tytypes.h
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/priv_tytypes.h 2008-02-14 00:44:17 UTC (rev 7406)
+++ branches/DATASYMS/coregrind/m_debuginfo/priv_tytypes.h 2008-02-14 12:09:04 UTC (rev 7407)
@@ -58,12 +58,12 @@
/* an enumeration value */
struct _TyAtom {
- UChar* name; /* AR_DINFO, unshared */
+ UChar* name; /* in DebugInfo.strchunks */
Long value;
};
struct _TyField {
- UChar* name; /* AR_DINFO, unshared */
+ UChar* name; /* in DebugInfo.strchunks */
Type* typeR;
D3Expr* loc;
Bool isStruct;
@@ -78,7 +78,7 @@
};
struct _D3Expr {
- UChar* bytes; /* AR_DINFO, unshared */
+ UChar* bytes; /* in DebugInfo.strchunks */
UWord nbytes;
};
@@ -87,7 +87,7 @@
Ty_Enum, Ty_Array, Ty_Fn, Ty_Qual, Ty_Void } tag;
union {
struct {
- UChar* name; /* AR_DINFO, unshared */
+ UChar* name; /* in DebugInfo.strchunks */
Int szB;
UChar enc; /* S:signed U:unsigned F:floating */
} Base;
@@ -97,18 +97,18 @@
Bool isPtr;
} PorR;
struct {
- UChar* name; /* AR_DINFO, unshared */
+ UChar* name; /* in DebugInfo.strchunks */
Type* typeR; /* MAY BE NULL, denoting unknown */
} TyDef;
struct {
- UChar* name; /* AR_DINFO, unshared */
+ UChar* name; /* in DebugInfo.strchunks */
UWord szB;
XArray* /* of TyField* */ fields;
Bool complete;
Bool isStruct;
} StOrUn;
struct {
- UChar* name; /* AR_DINFO, unshared */
+ UChar* name; /* in DebugInfo.strchunks */
Int szB;
XArray* /* of TyAtom* */ atomRs;
} Enum;
Modified: branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c 2008-02-14 00:44:17 UTC (rev 7406)
+++ branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c 2008-02-14 12:09:04 UTC (rev 7407)
@@ -55,7 +55,7 @@
#include "pub_core_libcprint.h"
#include "pub_core_options.h"
#include "pub_core_xarray.h"
-#include "priv_misc.h" /* dinfo_zalloc/free/strdup */
+#include "priv_misc.h" /* dinfo_zalloc/free */
#include "priv_tytypes.h"
#include "priv_d3basics.h"
#include "priv_storage.h"
@@ -224,10 +224,10 @@
/* Assume 'c' points to the start of a string. Return the absolute
address of whatever it points at, and advance it past the
- terminating zero. This makes it safe for the caller to then strdup
- the returned value, since (w.r.t. image overruns) the process of
- advancing past the terminating zero will already have "vetted" the
- string. */
+ terminating zero. This makes it safe for the caller to then copy
+ the string with ML_(addStr), since (w.r.t. image overruns) the
+ process of advancing past the terminating zero will already have
+ "vetted" the string. */
static UChar* get_AsciiZ ( Cursor* c ) {
UChar uc;
UChar* res = get_address_of_Cursor(c);
@@ -299,6 +299,8 @@
/* Where is .debug_line? */
UChar* debug_line_img;
UWord debug_line_sz;
+ /* --- Needed so we can add stuff to the string table. --- */
+ struct _DebugInfo* di;
/* --- a cache for set_abbv_Cursor --- */
/* abbv_code == (ULong)-1 for an unused entry. */
struct { ULong abbv_code; UWord posn; } saC_cache[N_ABBV_CACHE];
@@ -1143,13 +1145,13 @@
vg_assert( VG_(sizeXA)( parser->filenameTable ) == 0 );
/* Add a dummy index-zero entry. DWARF3 numbers its files
from 1, for some reason. */
- str = ML_(dinfo_strdup)( "<unknown>" );;
+ str = ML_(addStr)( cc->di, "<unknown>", -1 );
VG_(addToXA)( parser->filenameTable, &str );
while (peek_UChar(&c) != 0) {
str = get_AsciiZ(&c);
TRACE_D3(" read_filename_table: %ld %s\n",
VG_(sizeXA)(parser->filenameTable), str);
- str = ML_(dinfo_strdup)( str );
+ str = ML_(addStr)( cc->di, str, -1 );
VG_(addToXA)( parser->filenameTable, &str );
(void)get_ULEB128( &c ); /* skip directory index # */
(void)get_ULEB128( &c ); /* skip last mod time */
@@ -1357,7 +1359,7 @@
cc, c_die, False/*td3*/, form );
n_attrs++;
if (attr == DW_AT_name && ctsMemSzB > 0) {
- name = ML_(dinfo_strdup)( (UChar*)(UWord)cts );
+ name = ML_(addStr)( cc->di, (UChar*)(UWord)cts, -1 );
}
if (attr == DW_AT_location
&& ((ctsMemSzB > 0 && ctsSzB == 0)
@@ -1408,9 +1410,10 @@
vg_assert(parser->sp >= 0);
if (!name)
- name = ML_(dinfo_strdup)(
- dtag == DW_TAG_variable ? "<anon_variable>"
- : "<anon_formal>" );
+ name = ML_(addStr)(
+ cc->di, dtag == DW_TAG_variable
+ ? "<anon_variable>"
+ : "<anon_formal>", -1 );
/* If this is a local variable (non-external), try to find
the GExpr for the DW_AT_frame_base of the containing
@@ -1775,7 +1778,7 @@
cc, c_die, False/*td3*/, form );
if (attr == DW_AT_name && ctsMemSzB > 0) {
type->Ty.Base.name
- = ML_(dinfo_strdup)( (UChar*)(UWord)cts );
+ = ML_(addStr)( cc->di, (UChar*)(UWord)cts, -1 );
}
if (attr == DW_AT_byte_size && ctsSzB > 0) {
type->Ty.Base.szB = cts;
@@ -1850,7 +1853,7 @@
cc, c_die, False/*td3*/, form );
if (attr == DW_AT_name && ctsMemSzB > 0) {
type->Ty.Enum.name
- = ML_(dinfo_strdup)( (UChar*)(UWord)cts );
+ = ML_(addStr)( cc->di, (UChar*)(UWord)cts, -1 );
}
if (attr == DW_AT_byte_size && ctsSzB > 0) {
type->Ty.Enum.szB = cts;
@@ -1875,7 +1878,7 @@
get_Form_contents( &cts, &ctsSzB, &ctsMemSzB,
cc, c_die, False/*td3*/, form );
if (attr == DW_AT_name && ctsMemSzB > 0) {
- atom->name = ML_(dinfo_strdup)( (UChar*)(UWord)cts );
+ atom->name = ML_(addStr)( cc->di, (UChar*)(UWord)cts, -1 );
}
if (attr == DW_AT_const_value && ctsSzB > 0) {
atom->value = cts;
@@ -1918,7 +1921,7 @@
cc, c_die, False/*td3*/, form );
if (attr == DW_AT_name && ctsMemSzB > 0) {
type->Ty.StOrUn.name
- = ML_(dinfo_strdup)( (UChar*)(UWord)cts );
+ = ML_(addStr)( cc->di, (UChar*)(UWord)cts, -1 );
}
if (attr == DW_AT_byte_size && ctsSzB >= 0) {
type->Ty.StOrUn.szB = cts;
@@ -1971,14 +1974,14 @@
get_Form_contents( &cts, &ctsSzB, &ctsMemSzB,
cc, c_die, False/*td3*/, form );
if (attr == DW_AT_name && ctsMemSzB > 0) {
- field->name = ML_(dinfo_strdup)( (UChar*)(UWord)cts );
+ field->name = ML_(addStr)( cc->di, (UChar*)(UWord)cts, -1 );
}
if (attr == DW_AT_type && ctsSzB > 0) {
field->typeR = (Type*)(UWord)cts;
}
if (attr == DW_AT_data_member_location && ctsMemSzB > 0) {
- UChar* copy = ML_(dinfo_memdup)( (UChar*)(UWord)cts,
- (UWord)ctsMemSzB );
+ UChar* copy = ML_(addStr)( cc->di, (UChar*)(UWord)cts,
+ (Int)ctsMemSzB );
expr = ML_(new_D3Expr)( copy, (UWord)ctsMemSzB );
}
}
@@ -1993,7 +1996,7 @@
parent_is_struct
= parser->qparent[parser->sp]->Ty.StOrUn.isStruct;
if (!field->name)
- field->name = ML_(dinfo_strdup)("<anon_field>");
+ field->name = ML_(addStr)(cc->di, "<anon_field>", -1);
if ((!field->name) || (field->typeR == D3_INVALID_CUOFF))
goto bad_DIE;
if (parent_is_struct && (!expr))
@@ -2119,7 +2122,7 @@
cc, c_die, False/*td3*/, form );
if (attr == DW_AT_name && ctsMemSzB > 0) {
type->Ty.TyDef.name
- = ML_(dinfo_strdup)( (UChar*)(UWord)cts );
+ = ML_(addStr)( cc->di, (UChar*)(UWord)cts, -1 );
}
if (attr == DW_AT_type && ctsSzB > 0) {
type->Ty.TyDef.typeR = (Type*)(UWord)cts;
@@ -2810,6 +2813,7 @@
cc.debug_line_img = debug_line_img;
cc.debug_line_sz = debug_line_sz;
cc.cu_start_offset = cu_start_offset;
+ cc.di = di;
/* The CU's svma can be deduced by looking at the AT_low_pc
value in the top level TAG_compile_unit, which is the topmost
DIE. We'll leave it for the 'varparser' to acquire that info
Modified: branches/DATASYMS/coregrind/m_debuginfo/storage.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/storage.c 2008-02-14 00:44:17 UTC (rev 7406)
+++ branches/DATASYMS/coregrind/m_debuginfo/storage.c 2008-02-14 12:09:04 UTC (rev 7407)
@@ -170,8 +170,11 @@
Int space_needed;
UChar* p;
- if (len == -1)
+ if (len == -1) {
len = VG_(strlen)(str);
+ } else {
+ vg_assert(len >= 0);
+ }
space_needed = 1 + len;
@@ -571,8 +574,8 @@
Addr aMax,
UChar* name,
Type* type,
- void* gexprV, /* actually GExpr* */
- void* fbGXv, /* actually GExpr*. SHARED. */
+ GExpr* gexpr,
+ GExpr* fbGX,
UChar* fileName, /* where decl'd - may be NULL */
Int lineNo, /* where decl'd - may be zero */
Bool show )
@@ -586,11 +589,11 @@
level, aMin, aMax, name );
ML_(pp_Type_C_ishly)( type );
VG_(printf)("\n Var=");
- ML_(pp_GX)(gexprV);
+ ML_(pp_GX)(gexpr);
VG_(printf)("\n");
- if (fbGXv) {
+ if (fbGX) {
VG_(printf)(" FrB=");
- ML_(pp_GX)( fbGXv );
+ ML_(pp_GX)( fbGX );
VG_(printf)("\n");
} else {
VG_(printf)(" FrB=none\n");
@@ -602,7 +605,7 @@
vg_assert(aMin <= aMax);
vg_assert(name);
vg_assert(type);
- vg_assert(gexprV);
+ vg_assert(gexpr);
if (!di->varinfo) {
di->varinfo = VG_(newXA)( ML_(dinfo_zalloc), ML_(dinfo_free),
@@ -630,8 +633,8 @@
/* DiVariable var; */
var.name = name;
var.type = type;
- var.gexprV = gexprV;
- var.fbGXv = fbGXv;
+ var.gexpr = gexpr;
+ var.fbGX = fbGX;
var.fileName = fileName;
var.lineNo = lineNo;
vg_assert(range);
Modified: branches/DATASYMS/coregrind/m_debuginfo/tytypes.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/tytypes.c 2008-02-14 00:44:17 UTC (rev 7406)
+++ branches/DATASYMS/coregrind/m_debuginfo/tytypes.c 2008-02-14 12:09:04 UTC (rev 7407)
@@ -81,13 +81,11 @@
}
void ML_(delete_TyAtom)( TyAtom* atom ) {
- if (atom->name)
- ML_(dinfo_free)(atom->name);
+ /* .name is in DebugInfo.strchunks */
ML_(dinfo_free)(atom);
}
void ML_(delete_TyField)( TyField* field ) {
- if (field->name)
- ML_(dinfo_free)(field->name);
+ /* .name is in DebugInfo.strchunks */
/* typeR and loc will be on the admin list; no need to free */
ML_(dinfo_free)(field);
}
@@ -95,35 +93,31 @@
ML_(dinfo_free)(bounds);
}
void ML_(delete_D3Expr)( D3Expr* expr ) {
- if (expr->bytes)
- ML_(dinfo_free)(expr->bytes);
+ /* .bytes is in DebugInfo.strchunks */
ML_(dinfo_free)(expr);
}
+__attribute__((noinline))
void ML_(delete_Type)( Type* ty ) {
switch (ty->tag) {
case Ty_Base:
- if (ty->Ty.Base.name)
- ML_(dinfo_free)(ty->Ty.Base.name);
+ /* .name is in DebugInfo.strchunks */
break;
case Ty_PorR:
/* typeR will be on the admin list */
break;
case Ty_TyDef:
- if (ty->Ty.TyDef.name)
- ML_(dinfo_free)(ty->Ty.TyDef.name);
+ /* .name is in DebugInfo.strchunks */
/* typeR will be on the admin list */
break;
case Ty_StOrUn:
- if (ty->Ty.StOrUn.name)
- ML_(dinfo_free)(ty->Ty.StOrUn.name);
+ /* .name is in DebugInfo.strchunks */
/* Just dump the containing XArray. The fields themselves
will be on the admin list. */
if (ty->Ty.StOrUn.fields)
VG_(deleteXA)(ty->Ty.StOrUn.fields);
break;
case Ty_Enum:
- if (ty->Ty.Enum.name)
- ML_(dinfo_free)(ty->Ty.Enum.name);
+ /* .name is in DebugInfo.strchunks */
if (ty->Ty.Enum.atomRs)
VG_(deleteXA)( ty->Ty.Enum.atomRs);
/* Just dump the containing XArray. The atoms themselves
|
|
From: Tom H. <th...@cy...> - 2008-02-14 05:04:08
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-02-14 03:15:03 GMT 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 == 338 tests, 83 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/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) 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/tc04_free_lock (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/tc10_rec_lock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc13_laog1 (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) exp-drd/tests/fp_race (stderr) exp-drd/tests/fp_race2 (stderr) exp-drd/tests/matinv (stderr) exp-drd/tests/pth_barrier (stderr) exp-drd/tests/pth_broadcast (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/pth_cond_race2 (stderr) exp-drd/tests/pth_create_chain (stderr) exp-drd/tests/pth_detached (stderr) exp-drd/tests/pth_detached2 (stderr) exp-drd/tests/sem_as_mutex (stderr) exp-drd/tests/sem_as_mutex2 (stderr) exp-drd/tests/sigalrm (stderr) exp-drd/tests/tc17_sembar (stderr) exp-drd/tests/tc18_semabuse (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 == 338 tests, 84 stderr failures, 3 stdout failures, 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/supp_unknown (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/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) 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/tc04_free_lock (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/tc10_rec_lock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc13_laog1 (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) exp-drd/tests/fp_race (stderr) exp-drd/tests/fp_race2 (stderr) exp-drd/tests/matinv (stderr) exp-drd/tests/pth_barrier (stderr) exp-drd/tests/pth_broadcast (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/pth_cond_race2 (stderr) exp-drd/tests/pth_create_chain (stderr) exp-drd/tests/pth_detached (stderr) exp-drd/tests/pth_detached2 (stderr) exp-drd/tests/sem_as_mutex (stderr) exp-drd/tests/sem_as_mutex2 (stderr) exp-drd/tests/sigalrm (stderr) exp-drd/tests/tc17_sembar (stderr) exp-drd/tests/tc18_semabuse (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Feb 14 04:15:01 2008 --- new.short Thu Feb 14 05:04:15 2008 *************** *** 8,10 **** ! == 338 tests, 84 stderr failures, 3 stdout failures, 29 post failures == memcheck/tests/addressable (stderr) --- 8,10 ---- ! == 338 tests, 83 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) *************** *** 35,37 **** memcheck/tests/stack_changes (stderr) - memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/bug152022 (stderr) --- 35,36 ---- *************** *** 77,80 **** none/tests/blockfault (stderr) - none/tests/cmdline1 (stdout) - none/tests/cmdline2 (stdout) none/tests/mremap (stderr) --- 76,77 ---- |
|
From: Tom H. <th...@cy...> - 2008-02-14 04:03:04
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-02-14 03:05:06 GMT 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 == 372 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (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 == 372 tests, 7 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) 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 Thu Feb 14 03:32:11 2008 --- new.short Thu Feb 14 04:03:06 2008 *************** *** 8,10 **** ! == 372 tests, 7 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 372 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 14,17 **** memcheck/tests/xml1 (stderr) - none/tests/cmdline1 (stdout) - none/tests/cmdline2 (stdout) none/tests/mremap (stderr) --- 14,15 ---- |
|
From: Tom H. <th...@cy...> - 2008-02-14 03:46:17
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-02-14 03:20:06 GMT 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 == 378 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc08_hbl2 (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 == 378 tests, 13 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) 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 Thu Feb 14 03:33:50 2008 --- new.short Thu Feb 14 03:46:20 2008 *************** *** 8,17 **** ! == 378 tests, 13 stderr failures, 3 stdout failures, 0 post failures == ! memcheck/tests/addressable (stderr) ! memcheck/tests/badjump (stderr) ! memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) - memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) - memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) --- 8,12 ---- ! == 378 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) *************** *** 19,24 **** none/tests/blockfault (stderr) - none/tests/cmdline1 (stdout) - none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) --- 14,18 ---- none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) + helgrind/tests/tc08_hbl2 (stdout) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-14 03:41:52
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-02-14 03:25:17 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 376 tests, 6 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/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-14 03:27:43
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-02-14 03:10:05 GMT 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 == 372 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc18_semabuse (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 == 372 tests, 9 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc18_semabuse (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Feb 14 03:19:01 2008 --- new.short Thu Feb 14 03:27:44 2008 *************** *** 8,10 **** ! == 372 tests, 9 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 372 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 14,17 **** memcheck/tests/xml1 (stderr) - none/tests/cmdline1 (stdout) - none/tests/cmdline2 (stdout) none/tests/mremap (stderr) --- 14,15 ---- |
|
From: Tom H. <th...@cy...> - 2008-02-14 03:14:40
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-02-14 03:00:03 GMT 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 == 378 tests, 29 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/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 == 378 tests, 34 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/supp_unknown (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/cmdline1 (stdout) none/tests/cmdline2 (stdout) 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 Thu Feb 14 03:07:29 2008 --- new.short Thu Feb 14 03:14:40 2008 *************** *** 8,18 **** ! == 378 tests, 34 stderr failures, 5 stdout failures, 0 post failures == ! memcheck/tests/addressable (stderr) ! memcheck/tests/badjump (stderr) ! memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) - memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) - memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) --- 8,13 ---- ! == 378 tests, 29 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/x86/scalar (stderr) *************** *** 23,26 **** none/tests/blockfault (stderr) - none/tests/cmdline1 (stdout) - none/tests/cmdline2 (stdout) none/tests/fdleak_fcntl (stderr) --- 18,19 ---- |
|
From: <sv...@va...> - 2008-02-14 00:44:29
|
Author: sewardj
Date: 2008-02-14 00:44:17 +0000 (Thu, 14 Feb 2008)
New Revision: 7406
Log:
Primarily, try and free up at least some of the variable type info at
munmap time. Only partially successful. Also, a bit more removal of
duplicated code.
Modified:
branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
branches/DATASYMS/coregrind/m_debuginfo/misc.c
branches/DATASYMS/coregrind/m_debuginfo/priv_misc.h
branches/DATASYMS/coregrind/m_debuginfo/priv_storage.h
branches/DATASYMS/coregrind/m_debuginfo/priv_tytypes.h
branches/DATASYMS/coregrind/m_debuginfo/readdwarf.c
branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c
branches/DATASYMS/coregrind/m_debuginfo/readelf.c
branches/DATASYMS/coregrind/m_debuginfo/readstabs.c
branches/DATASYMS/coregrind/m_debuginfo/tytypes.c
Modified: branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-02-13 05:05:58 UTC (rev 7405)
+++ branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-02-14 00:44:17 UTC (rev 7406)
@@ -204,6 +204,48 @@
next = chunk->next;
ML_(dinfo_free)(chunk);
}
+
+ { TyAdmin *admin1, *admin2;
+ for (admin1 = di->tyadmins; admin1; admin1 = admin2) {
+ admin2 = admin1->next;
+ //ML_(dinfo_free)(admin1);
+ ML_(delete_TyAdmin_and_payload)(admin1);
+ }
+ GExpr *gexpr1, *gexpr2;
+ for (gexpr1 = di->gexprs; gexpr1; gexpr1 = gexpr2) {
+ gexpr2 = gexpr1->next;
+ ML_(dinfo_free)(gexpr1);
+ }
+ }
+
+ Word i, j;
+ if (di->varinfo) {
+ for (i = 0; i < VG_(sizeXA)(di->varinfo); i++) {
+ OSet* scope = *(OSet**)VG_(indexXA)(di->varinfo, i);
+ if (!scope) continue;
+ // iterate over all entries in 'scope'
+ VG_(OSetGen_ResetIter)(scope);
+ while (True) {
+ DiAddrRange* arange = VG_(OSetGen_Next)(scope);
+ if (!arange) break;
+ // for each var in 'arange'
+ vg_assert(arange->vars);
+ for (j = 0; j < VG_(sizeXA)( arange->vars ); j++) {
+ DiVariable* var = (DiVariable*)VG_(indexXA)(arange->vars,j);
+ vg_assert(var);
+ /////////////////////////////
+ //if (var->name && 0xDD != *(var->name))
+ // ML_(dinfo_free)(var->name);
+ // var->name gets used more than once .. can't free it
+ /////////////////////////////
+ }
+ ML_(dinfo_free)(arange->vars);
+ }
+ VG_(OSetGen_Destroy)(scope);
+ }
+ VG_(deleteXA)(di->varinfo);
+ }
+
ML_(dinfo_free)(di);
}
@@ -1531,7 +1573,8 @@
Therefore specify "*" to search all the objects. On TOC-afflicted
platforms, a symbol is deemed to be found only if it has a nonzero
TOC pointer. */
-Bool VG_(lookup_symbol_SLOW)(UChar* sopatt, UChar* name, Addr* pEnt, Addr* pToc)
+Bool VG_(lookup_symbol_SLOW)(UChar* sopatt, UChar* name,
+ Addr* pEnt, Addr* pToc)
{
Bool require_pToc = False;
Int i;
Modified: branches/DATASYMS/coregrind/m_debuginfo/misc.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/misc.c 2008-02-13 05:05:58 UTC (rev 7405)
+++ branches/DATASYMS/coregrind/m_debuginfo/misc.c 2008-02-14 00:44:17 UTC (rev 7406)
@@ -37,6 +37,8 @@
#include "pub_core_libcbase.h"
#include "pub_core_libcassert.h"
#include "pub_core_mallocfree.h"
+#include "pub_core_xarray.h"
+
#include "priv_misc.h" /* self */
@@ -48,12 +50,15 @@
VG_(memset)(v, 0, szB);
return v;
}
+
void ML_(dinfo_free) ( void* v ) {
VG_(arena_free)( VG_AR_DINFO, v );
}
+
UChar* ML_(dinfo_strdup) ( const UChar* str ) {
return VG_(arena_strdup)( VG_AR_DINFO, str );
}
+
UChar* ML_(dinfo_memdup)( UChar* mem, UWord nbytes ) {
UChar* r = VG_(arena_malloc)( VG_AR_DINFO, nbytes );
if (nbytes > 0)
@@ -61,6 +66,15 @@
return r;
}
+
+void ML_(copy_bytes_into_XA) ( XArray* /* of UChar */ xa,
+ void* bytes, Word nbytes ) {
+ Word i;
+ for (i = 0; i < nbytes; i++)
+ VG_(addToXA)( xa, & ((UChar*)bytes)[i] );
+}
+
+
/*--------------------------------------------------------------------*/
/*--- end misc.c ---*/
/*--------------------------------------------------------------------*/
Modified: branches/DATASYMS/coregrind/m_debuginfo/priv_misc.h
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/priv_misc.h 2008-02-13 05:05:58 UTC (rev 7405)
+++ branches/DATASYMS/coregrind/m_debuginfo/priv_misc.h 2008-02-14 00:44:17 UTC (rev 7406)
@@ -52,6 +52,11 @@
UChar* ML_(dinfo_strdup)( const UChar* str );
UChar* ML_(dinfo_memdup)( UChar* mem, UWord nbytes );
+/* Copy bytes into an XArray of what are assumed to be, well,
+ bytes. */
+void ML_(copy_bytes_into_XA) ( XArray* /* of UChar */ xa,
+ void* bytes, Word nbytes );
+
#endif /* ndef __PRIV_MISC_H */
/*--------------------------------------------------------------------*/
Modified: branches/DATASYMS/coregrind/m_debuginfo/priv_storage.h
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/priv_storage.h 2008-02-13 05:05:58 UTC (rev 7405)
+++ branches/DATASYMS/coregrind/m_debuginfo/priv_storage.h 2008-02-14 00:44:17 UTC (rev 7406)
@@ -351,7 +351,7 @@
UInt cfsi_size;
Addr cfsi_minaddr;
Addr cfsi_maxaddr;
- XArray* cfsi_exprs; /* XArray of CfSiExpr */
+ XArray* cfsi_exprs; /* XArray of CfiExpr */
/* Expandable arrays of characters -- the string table. Pointers
into this are stable (the arrays are not reallocated). */
@@ -383,6 +383,10 @@
range pair, one that covers the entire address space.
*/
XArray* /* of OSet of DiAddrRange */varinfo;
+
+ /* For the purposes of deletion: */
+ TyAdmin* tyadmins;
+ GExpr* gexprs;
};
/* --------------------- functions --------------------- */
Modified: branches/DATASYMS/coregrind/m_debuginfo/priv_tytypes.h
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/priv_tytypes.h 2008-02-13 05:05:58 UTC (rev 7405)
+++ branches/DATASYMS/coregrind/m_debuginfo/priv_tytypes.h 2008-02-14 00:44:17 UTC (rev 7406)
@@ -58,12 +58,12 @@
/* an enumeration value */
struct _TyAtom {
- UChar* name;
+ UChar* name; /* AR_DINFO, unshared */
Long value;
};
struct _TyField {
- UChar* name;
+ UChar* name; /* AR_DINFO, unshared */
Type* typeR;
D3Expr* loc;
Bool isStruct;
@@ -78,7 +78,7 @@
};
struct _D3Expr {
- UChar* bytes;
+ UChar* bytes; /* AR_DINFO, unshared */
UWord nbytes;
};
@@ -87,7 +87,7 @@
Ty_Enum, Ty_Array, Ty_Fn, Ty_Qual, Ty_Void } tag;
union {
struct {
- UChar* name;
+ UChar* name; /* AR_DINFO, unshared */
Int szB;
UChar enc; /* S:signed U:unsigned F:floating */
} Base;
@@ -97,18 +97,18 @@
Bool isPtr;
} PorR;
struct {
- UChar* name;
+ UChar* name; /* AR_DINFO, unshared */
Type* typeR; /* MAY BE NULL, denoting unknown */
} TyDef;
struct {
- UChar* name;
+ UChar* name; /* AR_DINFO, unshared */
UWord szB;
XArray* /* of TyField* */ fields;
Bool complete;
Bool isStruct;
} StOrUn;
struct {
- UChar* name;
+ UChar* name; /* AR_DINFO, unshared */
Int szB;
XArray* /* of TyAtom* */ atomRs;
} Enum;
@@ -135,6 +135,8 @@
Type* ML_(new_Type) ( void );
D3Expr* ML_(new_D3Expr) ( UChar* bytes, UWord nbytes );
+void ML_(delete_TyAdmin_and_payload) ( TyAdmin* ad );
+
void ML_(pp_TyAdmin) ( TyAdmin* admin );
void ML_(pp_TyAtom) ( TyAtom* atom );
void ML_(pp_TyField) ( TyField* field );
Modified: branches/DATASYMS/coregrind/m_debuginfo/readdwarf.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/readdwarf.c 2008-02-13 05:05:58 UTC (rev 7405)
+++ branches/DATASYMS/coregrind/m_debuginfo/readdwarf.c 2008-02-14 00:44:17 UTC (rev 7406)
@@ -40,6 +40,7 @@
#include "pub_core_options.h"
#include "pub_core_xarray.h"
#include "priv_misc.h" /* dinfo_zalloc/free/strdup */
+#include "priv_d3basics.h"
#include "priv_tytypes.h"
#include "priv_storage.h"
#include "priv_readdwarf.h" /* self */
@@ -2444,175 +2445,6 @@
/* ------------ Run/show DWARF3 expressions ---------- */
-/* Taken from binutils-2.17/include/elf/dwarf2.h */
-enum dwarf_location_atom
- {
- DW_OP_addr = 0x03,
- DW_OP_deref = 0x06,
- DW_OP_const1u = 0x08,
- DW_OP_const1s = 0x09,
- DW_OP_const2u = 0x0a,
- DW_OP_const2s = 0x0b,
- DW_OP_const4u = 0x0c,
- DW_OP_const4s = 0x0d,
- DW_OP_const8u = 0x0e,
- DW_OP_const8s = 0x0f,
- DW_OP_constu = 0x10,
- DW_OP_consts = 0x11,
- DW_OP_dup = 0x12,
- DW_OP_drop = 0x13,
- DW_OP_over = 0x14,
- DW_OP_pick = 0x15,
- DW_OP_swap = 0x16,
- DW_OP_rot = 0x17,
- DW_OP_xderef = 0x18,
- DW_OP_abs = 0x19,
- DW_OP_and = 0x1a,
- DW_OP_div = 0x1b,
- DW_OP_minus = 0x1c,
- DW_OP_mod = 0x1d,
- DW_OP_mul = 0x1e,
- DW_OP_neg = 0x1f,
- DW_OP_not = 0x20,
- DW_OP_or = 0x21,
- DW_OP_plus = 0x22,
- DW_OP_plus_uconst = 0x23,
- DW_OP_shl = 0x24,
- DW_OP_shr = 0x25,
- DW_OP_shra = 0x26,
- DW_OP_xor = 0x27,
- DW_OP_bra = 0x28,
- DW_OP_eq = 0x29,
- DW_OP_ge = 0x2a,
- DW_OP_gt = 0x2b,
- DW_OP_le = 0x2c,
- DW_OP_lt = 0x2d,
- DW_OP_ne = 0x2e,
- DW_OP_skip = 0x2f,
- DW_OP_lit0 = 0x30,
- DW_OP_lit1 = 0x31,
- DW_OP_lit2 = 0x32,
- DW_OP_lit3 = 0x33,
- DW_OP_lit4 = 0x34,
- DW_OP_lit5 = 0x35,
- DW_OP_lit6 = 0x36,
- DW_OP_lit7 = 0x37,
- DW_OP_lit8 = 0x38,
- DW_OP_lit9 = 0x39,
- DW_OP_lit10 = 0x3a,
- DW_OP_lit11 = 0x3b,
- DW_OP_lit12 = 0x3c,
- DW_OP_lit13 = 0x3d,
- DW_OP_lit14 = 0x3e,
- DW_OP_lit15 = 0x3f,
- DW_OP_lit16 = 0x40,
- DW_OP_lit17 = 0x41,
- DW_OP_lit18 = 0x42,
- DW_OP_lit19 = 0x43,
- DW_OP_lit20 = 0x44,
- DW_OP_lit21 = 0x45,
- DW_OP_lit22 = 0x46,
- DW_OP_lit23 = 0x47,
- DW_OP_lit24 = 0x48,
- DW_OP_lit25 = 0x49,
- DW_OP_lit26 = 0x4a,
- DW_OP_lit27 = 0x4b,
- DW_OP_lit28 = 0x4c,
- DW_OP_lit29 = 0x4d,
- DW_OP_lit30 = 0x4e,
- DW_OP_lit31 = 0x4f,
- DW_OP_reg0 = 0x50,
- DW_OP_reg1 = 0x51,
- DW_OP_reg2 = 0x52,
- DW_OP_reg3 = 0x53,
- DW_OP_reg4 = 0x54,
- DW_OP_reg5 = 0x55,
- DW_OP_reg6 = 0x56,
- DW_OP_reg7 = 0x57,
- DW_OP_reg8 = 0x58,
- DW_OP_reg9 = 0x59,
- DW_OP_reg10 = 0x5a,
- DW_OP_reg11 = 0x5b,
- DW_OP_reg12 = 0x5c,
- DW_OP_reg13 = 0x5d,
- DW_OP_reg14 = 0x5e,
- DW_OP_reg15 = 0x5f,
- DW_OP_reg16 = 0x60,
- DW_OP_reg17 = 0x61,
- DW_OP_reg18 = 0x62,
- DW_OP_reg19 = 0x63,
- DW_OP_reg20 = 0x64,
- DW_OP_reg21 = 0x65,
- DW_OP_reg22 = 0x66,
- DW_OP_reg23 = 0x67,
- DW_OP_reg24 = 0x68,
- DW_OP_reg25 = 0x69,
- DW_OP_reg26 = 0x6a,
- DW_OP_reg27 = 0x6b,
- DW_OP_reg28 = 0x6c,
- DW_OP_reg29 = 0x6d,
- DW_OP_reg30 = 0x6e,
- DW_OP_reg31 = 0x6f,
- DW_OP_breg0 = 0x70,
- DW_OP_breg1 = 0x71,
- DW_OP_breg2 = 0x72,
- DW_OP_breg3 = 0x73,
- DW_OP_breg4 = 0x74,
- DW_OP_breg5 = 0x75,
- DW_OP_breg6 = 0x76,
- DW_OP_breg7 = 0x77,
- DW_OP_breg8 = 0x78,
- DW_OP_breg9 = 0x79,
- DW_OP_breg10 = 0x7a,
- DW_OP_breg11 = 0x7b,
- DW_OP_breg12 = 0x7c,
- DW_OP_breg13 = 0x7d,
- DW_OP_breg14 = 0x7e,
- DW_OP_breg15 = 0x7f,
- DW_OP_breg16 = 0x80,
- DW_OP_breg17 = 0x81,
- DW_OP_breg18 = 0x82,
- DW_OP_breg19 = 0x83,
- DW_OP_breg20 = 0x84,
- DW_OP_breg21 = 0x85,
- DW_OP_breg22 = 0x86,
- DW_OP_breg23 = 0x87,
- DW_OP_breg24 = 0x88,
- DW_OP_breg25 = 0x89,
- DW_OP_breg26 = 0x8a,
- DW_OP_breg27 = 0x8b,
- DW_OP_breg28 = 0x8c,
- DW_OP_breg29 = 0x8d,
- DW_OP_breg30 = 0x8e,
- DW_OP_breg31 = 0x8f,
- DW_OP_regx = 0x90,
- DW_OP_fbreg = 0x91,
- DW_OP_bregx = 0x92,
- DW_OP_piece = 0x93,
- DW_OP_deref_size = 0x94,
- DW_OP_xderef_size = 0x95,
- DW_OP_nop = 0x96,
- /* DWARF 3 extensions. */
- DW_OP_push_object_address = 0x97,
- DW_OP_call2 = 0x98,
- DW_OP_call4 = 0x99,
- DW_OP_call_ref = 0x9a,
- DW_OP_form_tls_address = 0x9b,
- DW_OP_call_frame_cfa = 0x9c,
- DW_OP_bit_piece = 0x9d,
- /* GNU extensions. */
- DW_OP_GNU_push_tls_address = 0xe0,
- /* HP extensions. */
- DW_OP_HP_unknown = 0xe0, /* Ouch, the same as GNU_push_tls_address. */
- DW_OP_HP_is_value = 0xe1,
- DW_OP_HP_fltconst4 = 0xe2,
- DW_OP_HP_fltconst8 = 0xe3,
- DW_OP_HP_mod_range = 0xe4,
- DW_OP_HP_unmod_range = 0xe5,
- DW_OP_HP_tls = 0xe6
- };
-
-
/* Convert the DWARF3 expression in expr[0 .. exprlen-1] into a dag
(of CfiExprs) stored in ctx->exprs, and return the index in
ctx->exprs of the root node. Or fail in which case return -1. */
Modified: branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c 2008-02-13 05:05:58 UTC (rev 7405)
+++ branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c 2008-02-14 00:44:17 UTC (rev 7406)
@@ -57,8 +57,8 @@
#include "pub_core_xarray.h"
#include "priv_misc.h" /* dinfo_zalloc/free/strdup */
#include "priv_tytypes.h"
+#include "priv_d3basics.h"
#include "priv_storage.h"
-#include "priv_d3basics.h"
#include "priv_readdwarf3.h" /* self */
@@ -387,12 +387,6 @@
location list. Zero length ranges, with aMax == aMin-1, are not
allowed.
*/
-static void copy_bytes_into_XA ( XArray* /* of UChar */ xa,
- void* bytes, Word nbytes ) {
- Word i;
- for (i = 0; i < nbytes; i++)
- VG_(addToXA)( xa, & ((UChar*)bytes)[i] );
-}
void ML_(pp_GX) ( GExpr* gx ) {
Addr aMin, aMax;
UChar uc;
@@ -542,11 +536,11 @@
c = 0; /* !isEnd*/
VG_(addToXA)( xa, &c );
w = w1 + base + svma_of_referencing_CU;
- copy_bytes_into_XA( xa, &w, sizeof(w) );
+ ML_(copy_bytes_into_XA)( xa, &w, sizeof(w) );
w = w2 -1 + base + svma_of_referencing_CU;
- copy_bytes_into_XA( xa, &w, sizeof(w) );
+ ML_(copy_bytes_into_XA)( xa, &w, sizeof(w) );
s = (UShort)len;
- copy_bytes_into_XA( xa, &s, sizeof(s) );
+ ML_(copy_bytes_into_XA)( xa, &s, sizeof(s) );
}
while (len > 0) {
@@ -2750,7 +2744,7 @@
have at least one type entry to refer to. D3_FAKEVOID_CUOFF is
huge and presumably will not occur in any valid DWARF3 file --
it would need to have a .debug_info section 4GB long for that to
- happen. */
+ happen. These type entries end up in the DebugInfo. */
admin = NULL;
{ Type* tVoid = ML_(new_Type)();
tVoid->tag = Ty_Void;
@@ -2760,7 +2754,13 @@
admin->tag = TyA_Type;
}
+ /* List of variables we're accumulating. These don't end up in the
+ DebugInfo; instead their contents are handed to ML_(addVar) and
+ the list elements are then deleted. */
tempvars = NULL;
+
+ /* List of GExprs we're accumulating. These wind up in the
+ DebugInfo. */
gexprs = NULL;
/* We need a D3TypeParser to keep track of partially constructed
@@ -2968,7 +2968,12 @@
}
tempvars = NULL;
- /* FIXME: record adminp in di so it can be freed later */
+ /* record the TyAdmins and the GExprs in di so they can be freed
+ later */
+ vg_assert(!di->tyadmins);
+ di->tyadmins = admin;
+ vg_assert(!di->gexprs);
+ di->gexprs = gexprs;
}
Modified: branches/DATASYMS/coregrind/m_debuginfo/readelf.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/readelf.c 2008-02-13 05:05:58 UTC (rev 7405)
+++ branches/DATASYMS/coregrind/m_debuginfo/readelf.c 2008-02-14 00:44:17 UTC (rev 7406)
@@ -47,6 +47,7 @@
#include "pub_core_tooliface.h" /* VG_(needs) */
#include "pub_core_xarray.h"
#include "priv_misc.h" /* dinfo_zalloc/free/strdup */
+#include "priv_d3basics.h"
#include "priv_tytypes.h"
#include "priv_storage.h"
#include "priv_readelf.h" /* self */
Modified: branches/DATASYMS/coregrind/m_debuginfo/readstabs.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/readstabs.c 2008-02-13 05:05:58 UTC (rev 7405)
+++ branches/DATASYMS/coregrind/m_debuginfo/readstabs.c 2008-02-14 00:44:17 UTC (rev 7406)
@@ -41,6 +41,7 @@
#include "pub_core_xarray.h"
#include "priv_misc.h" /* dinfo_zalloc/free/strdup */
#include "priv_tytypes.h"
+#include "priv_d3basics.h"
#include "priv_storage.h"
#include "priv_readstabs.h" /* self */
Modified: branches/DATASYMS/coregrind/m_debuginfo/tytypes.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/tytypes.c 2008-02-13 05:05:58 UTC (rev 7405)
+++ branches/DATASYMS/coregrind/m_debuginfo/tytypes.c 2008-02-14 00:44:17 UTC (rev 7406)
@@ -80,6 +80,88 @@
return type;
}
+void ML_(delete_TyAtom)( TyAtom* atom ) {
+ if (atom->name)
+ ML_(dinfo_free)(atom->name);
+ ML_(dinfo_free)(atom);
+}
+void ML_(delete_TyField)( TyField* field ) {
+ if (field->name)
+ ML_(dinfo_free)(field->name);
+ /* typeR and loc will be on the admin list; no need to free */
+ ML_(dinfo_free)(field);
+}
+void ML_(delete_TyBounds)( TyBounds* bounds ) {
+ ML_(dinfo_free)(bounds);
+}
+void ML_(delete_D3Expr)( D3Expr* expr ) {
+ if (expr->bytes)
+ ML_(dinfo_free)(expr->bytes);
+ ML_(dinfo_free)(expr);
+}
+void ML_(delete_Type)( Type* ty ) {
+ switch (ty->tag) {
+ case Ty_Base:
+ if (ty->Ty.Base.name)
+ ML_(dinfo_free)(ty->Ty.Base.name);
+ break;
+ case Ty_PorR:
+ /* typeR will be on the admin list */
+ break;
+ case Ty_TyDef:
+ if (ty->Ty.TyDef.name)
+ ML_(dinfo_free)(ty->Ty.TyDef.name);
+ /* typeR will be on the admin list */
+ break;
+ case Ty_StOrUn:
+ if (ty->Ty.StOrUn.name)
+ ML_(dinfo_free)(ty->Ty.StOrUn.name);
+ /* Just dump the containing XArray. The fields themselves
+ will be on the admin list. */
+ if (ty->Ty.StOrUn.fields)
+ VG_(deleteXA)(ty->Ty.StOrUn.fields);
+ break;
+ case Ty_Enum:
+ if (ty->Ty.Enum.name)
+ ML_(dinfo_free)(ty->Ty.Enum.name);
+ if (ty->Ty.Enum.atomRs)
+ VG_(deleteXA)( ty->Ty.Enum.atomRs);
+ /* Just dump the containing XArray. The atoms themselves
+ will be on the admin list. */
+ break;
+ case Ty_Array:
+ if (ty->Ty.Array.bounds)
+ VG_(deleteXA)( ty->Ty.Array.bounds);
+ /* Just dump the containing XArray. The bounds themselves
+ will be on the admin list. */
+ break;
+ case Ty_Fn:
+ break;
+ case Ty_Qual:
+ /* typeR will be on the admin list */
+ break;
+ case Ty_Void:
+ break;
+ default:
+ vg_assert(0);
+ }
+}
+
+void ML_(delete_TyAdmin_and_payload) ( TyAdmin* ad ) {
+ vg_assert(ad->payload);
+ switch (ad->tag) {
+ case TyA_Type: ML_(delete_Type)(ad->payload); break;
+ case TyA_Atom: ML_(delete_TyAtom)(ad->payload); break;
+ case TyA_Expr: ML_(delete_D3Expr)(ad->payload); break;
+ case TyA_Field: ML_(delete_TyField)(ad->payload); break;
+ case TyA_Bounds: ML_(delete_TyBounds)(ad->payload); break;
+ default: vg_assert(0);
+ }
+ ML_(dinfo_free)(ad);
+}
+
+
+
static void pp_XArray_of_pointersOrRefs ( XArray* xa ) {
Word i;
VG_(printf)("{");
@@ -321,21 +403,14 @@
}
-static void copy_bytes_into_XA ( XArray* /* of UChar */ xa,
- void* bytes, Word nbytes ) {
- Word i;
- for (i = 0; i < nbytes; i++)
- VG_(addToXA)( xa, & ((UChar*)bytes)[i] );
-}
static void copy_UWord_into_XA ( XArray* /* of UChar */ xa,
UWord uw ) {
UChar buf[32];
VG_(memset)(buf, 0, sizeof(buf));
VG_(sprintf)(buf, "%lu", uw);
- copy_bytes_into_XA( xa, buf, VG_(strlen)(buf));
+ ML_(copy_bytes_into_XA)( xa, buf, VG_(strlen)(buf));
}
-
/* Describe where in the type 'offset' falls. Caller must
deallocate the resulting XArray. */
XArray* /*UChar*/ ML_(describe_type)( /*OUT*/OffT* residual_offset,
@@ -386,9 +461,9 @@
goto done; /* No. Give up. */
/* Yes. 'field' is it. */
if (!field->name) goto done;
- copy_bytes_into_XA( xa, ".", 1 );
- copy_bytes_into_XA( xa, field->name,
- VG_(strlen)(field->name) );
+ ML_(copy_bytes_into_XA)( xa, ".", 1 );
+ ML_(copy_bytes_into_XA)( xa, field->name,
+ VG_(strlen)(field->name) );
offset -= offMin;
ty = field->typeR;
if (!ty) goto done;
@@ -415,9 +490,9 @@
eszB = ML_(sizeOfType)( ty->Ty.Array.typeR );
if (eszB == 0) goto done;
ix = offset / eszB;
- copy_bytes_into_XA( xa, "[", 1 );
+ ML_(copy_bytes_into_XA)( xa, "[", 1 );
copy_UWord_into_XA( xa, ix );
- copy_bytes_into_XA( xa, "]", 1 );
+ ML_(copy_bytes_into_XA)( xa, "]", 1 );
ty = ty->Ty.Array.typeR;
offset -= ix * eszB;
/* keep going; look inside the array element. */
@@ -447,7 +522,7 @@
done:
*residual_offset = offset;
- copy_bytes_into_XA( xa, "\0", 1 );
+ ML_(copy_bytes_into_XA)( xa, "\0", 1 );
return xa;
}
|