|
From: <sv...@va...> - 2005-11-16 00:09:18
|
Author: tom
Date: 2005-11-16 00:09:15 +0000 (Wed, 16 Nov 2005)
New Revision: 5140
Log:
Reinstate code to extent SegInfo ranges to cover all PT_LOAD segments
when VG_(needs_data_syms) has been called by the tool.
Modified:
trunk/coregrind/m_debuginfo/symtab.c
Modified: trunk/coregrind/m_debuginfo/symtab.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_debuginfo/symtab.c 2005-11-16 00:05:58 UTC (rev 513=
9)
+++ trunk/coregrind/m_debuginfo/symtab.c 2005-11-16 00:09:15 UTC (rev 514=
0)
@@ -1525,11 +1525,8 @@
else
si->bss_size =3D 0;
}
-#if 0
- /* 20050228: disabled this until VG_(next_segment) can be
- reinstated in some clean incarnation of the low level
- memory manager. */
- mapped =3D mapped & ~(VKI_PAGE_SIZE-1);
+
+ mapped =3D mapped & ~(VKI_PAGE_SIZE-1);
mapped_end =3D (mapped_end + VKI_PAGE_SIZE - 1) & ~(VKI_PAGE_SIZE-1);
=20
if (VG_(needs).data_syms &&
@@ -1537,36 +1534,14 @@
(mapped_end > (si->start+si->size))) {
UInt newsz =3D mapped_end - si->start;
if (newsz > si->size) {
- Segment *seg;
-
if (0)
VG_(printf)("extending mapping %p..%p %d -> ..%p %d\n",=20
si->start, si->start+si->size, si->size,
si->start+newsz, newsz);
=20
- for(seg =3D VG_(find_segment_containing)(si->start);
- seg !=3D NULL && VG_(seg_overlaps)(seg, si->start, si->size);=20
- seg =3D VG_(next_segment)(seg)) {
- if (seg->symtab =3D=3D si)
- continue;
-
- if (seg->symtab !=3D NULL)
- VG_(seginfo_decref)(seg->symtab, seg->addr);
-
- VG_(seginfo_incref)(si);
- seg->symtab =3D si;
- =20
- if (0)
- VG_(printf)("adding symtab %p (%p-%p) to segment %p (%p-%p)\n",
- si, si->start, si->start+newsz,
- seg, seg->addr, seg->addr+seg->len);
- }
- =20
si->size =3D newsz;
}
}
-#endif
-
}
}
=20
@@ -1863,21 +1838,6 @@
VGP_POPCC(VgpReadSyms);
}
=20
-//static void seginfo_decref(SegInfo *si, Addr start)
-//{
-// vg_assert(si);
-// vg_assert(si->ref >=3D 1);
-// if (--si->ref =3D=3D 0)
-// unload_symbols(si->start, si->size);
-//}
-//
-//static void seginfo_incref(SegInfo *si)
-//{
-// vg_assert(si);
-// vg_assert(si->ref > 0);
-// si->ref++;
-//}
-
/*------------------------------------------------------------*/
/*--- Use of symbol table & location info to create ---*/
/*--- plausible-looking stack dumps. ---*/
|