You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
1
(8) |
2
(8) |
3
(15) |
4
(14) |
5
(12) |
6
(40) |
7
(9) |
|
8
(5) |
9
(12) |
10
(9) |
11
(13) |
12
(7) |
13
(7) |
14
(19) |
|
15
(18) |
16
(13) |
17
(16) |
18
(8) |
19
(16) |
20
(16) |
21
(12) |
|
22
(21) |
23
(39) |
24
(27) |
25
(33) |
26
(41) |
27
(17) |
28
(15) |
|
From: Nicholas N. <n.n...@gm...> - 2009-02-28 23:16:42
|
On Sun, Mar 1, 2009 at 7:15 AM, xinran wang <xin...@gm...> wrote: > Hi, > > I tried to pass the condition value of IRExpr Iex_Mux0X to a helper > function, but failed with following errors: > > vex: priv/host-x86/isel.c:530 (doHelperCall): Assertion > `typeOfIRExpr(env->type_env, args[i]) == Ity_I32' failed. Vex is strongly-typed, and C call arguments have to be word-sized. I think you need to convert it; try wrapping it in either an Iop_8Uto32 or Iop8Sto32 operation (assuming you're on a 32-bit machine). Nick |
|
From: <sv...@va...> - 2009-02-28 22:18:07
|
Author: sewardj
Date: 2009-02-28 22:18:01 +0000 (Sat, 28 Feb 2009)
New Revision: 9297
Log:
Symbols obtained from nlist symbol tables have overlapping tails (only
the start addresses are defined). Don't lean on canonicaliseSymtab to
fix this; instead sort and trim the tails ourselves, in the same way
that the XCOFF symbol reader does.
Modified:
branches/DARWIN/coregrind/m_debuginfo/readmacho.c
Modified: branches/DARWIN/coregrind/m_debuginfo/readmacho.c
===================================================================
--- branches/DARWIN/coregrind/m_debuginfo/readmacho.c 2009-02-28 22:15:13 UTC (rev 9296)
+++ branches/DARWIN/coregrind/m_debuginfo/readmacho.c 2009-02-28 22:18:01 UTC (rev 9297)
@@ -86,16 +86,22 @@
}
-/* Read a symbol table (nlist) */
+/* Read a symbol table (nlist). Add the resulting candidate symbols
+ to 'syms'; the caller will post-process them and hand them off to
+ ML_(addSym) itself. */
static
-void read_symtab( struct _DebugInfo* di,
+void read_symtab( /*OUT*/XArray* /* DiSym */ syms,
+ struct _DebugInfo* di,
struct NLIST* o_symtab, UInt o_symtab_count,
UChar* o_strtab, UInt o_strtab_sz )
{
- Int i;
- Addr sym_addr;
- DiSym risym;
+ Int i;
+ Addr sym_addr;
+ DiSym risym;
+ UChar* name;
+ static UChar* s_a_t_v = NULL; /* do not make non-static */
+
for (i = 0; i < o_symtab_count; i++) {
struct NLIST *nl = o_symtab+i;
if ((nl->n_type & N_TYPE) == N_SECT) {
@@ -107,6 +113,10 @@
continue;
}
+ if (di->trace_symtab)
+ VG_(printf)("nlist raw: avma %010lx %s\n",
+ sym_addr, o_strtab + nl->n_un.n_strx );
+
/* If no part of the symbol falls within the mapped range,
ignore it. */
if (sym_addr <= di->text_avma
@@ -114,11 +124,22 @@
continue;
}
+ /* skip names which point outside the string table;
+ following these risks segfaulting Valgrind */
+ name = o_strtab + nl->n_un.n_strx;
+ if (name < o_strtab || name >= o_strtab + o_strtab_sz)
+ continue;
+
+ /* skip nameless symbols; these appear to be common, but
+ useless */
+ if (*name == 0)
+ continue;
+
risym.tocptr = 0;
risym.addr = sym_addr;
risym.size = // let canonicalize fix it
di->text_avma+di->text_size - sym_addr;
- risym.name = ML_(addStr)(di, o_strtab + nl->n_un.n_strx, -1);
+ risym.name = ML_(addStr)(di, name, -1);
risym.isText = True;
// Lots of user function names get prepended with an underscore. Eg. the
// function 'f' becomes the symbol '_f'. And the "below main"
@@ -129,13 +150,110 @@
if (risym.name[0] == '_') {
risym.name++;
} else if (!VG_(clo_show_below_main) && VG_STREQ(risym.name, "start")) {
- risym.name = "start_according_to_valgrind";
+ if (s_a_t_v == NULL)
+ s_a_t_v = ML_(addStr)(di, "start_according_to_valgrind", -1);
+ vg_assert(s_a_t_v);
+ risym.name = s_a_t_v;
}
- ML_(addSym)(di, &risym);
+
+ vg_assert(risym.name);
+ VG_(addToXA)( syms, &risym );
}
}
+/* Compare DiSyms by their start address, and for equal addresses, use
+ the name as a secondary sort key. */
+static Int cmp_DiSym_by_start_then_name ( void* v1, void* v2 )
+{
+ DiSym* s1 = (DiSym*)v1;
+ DiSym* s2 = (DiSym*)v2;
+ if (s1->addr < s2->addr) return -1;
+ if (s1->addr > s2->addr) return 1;
+ return VG_(strcmp)(s1->name, s2->name);
+}
+
+/* 'cand' is a bunch of candidate symbols obtained by reading
+ nlist-style symbol table entries. Their ends may overlap, so sort
+ them and truncate them accordingly. The code in this routine is
+ copied almost verbatim from read_symbol_table() in readxcoff.c. */
+static void tidy_up_cand_syms ( /*MOD*/XArray* /* of DiSym */ syms,
+ Bool trace_symtab )
+{
+ Word nsyms, i, j, k, m;
+
+ nsyms = VG_(sizeXA)(syms);
+
+ VG_(setCmpFnXA)(syms, cmp_DiSym_by_start_then_name);
+ VG_(sortXA)(syms);
+
+ /* We only know for sure the start addresses (actual VMAs) of
+ symbols, and an overestimation of their end addresses. So sort
+ by start address, then clip each symbol so that its end address
+ does not overlap with the next one along.
+
+ There is a small refinement: if a group of symbols have the same
+ address, treat them as a group: find the next symbol along that
+ has a higher start address, and clip all of the group
+ accordingly. This clips the group as a whole so as not to
+ overlap following symbols. This leaves prefersym() in
+ storage.c, which is not nlist-specific, to later decide which of
+ the symbols in the group to keep.
+
+ Another refinement is that we need to get rid of symbols which,
+ after clipping, have identical starts, ends, and names. So the
+ sorting uses the name as a secondary key.
+ */
+
+ for (i = 0; i < nsyms; i++) {
+ for (k = i+1;
+ k < nsyms
+ && ((DiSym*)VG_(indexXA)(syms,i))->addr
+ == ((DiSym*)VG_(indexXA)(syms,k))->addr;
+ k++)
+ ;
+ /* So now [i .. k-1] is a group all with the same start address.
+ Clip their ending addresses so they don't overlap [k]. In
+ the normal case (no overlaps), k == i+1. */
+ if (k < nsyms) {
+ DiSym* next = (DiSym*)VG_(indexXA)(syms,k);
+ for (m = i; m < k; m++) {
+ DiSym* here = (DiSym*)VG_(indexXA)(syms,m);
+ vg_assert(here->addr < next->addr);
+ if (here->addr + here->size > next->addr)
+ here->size = next->addr - here->addr;
+ }
+ }
+ i = k-1;
+ vg_assert(i <= nsyms);
+ }
+
+ j = 0;
+ if (nsyms > 0) {
+ j = 1;
+ for (i = 1; i < nsyms; i++) {
+ DiSym *s_j1, *s_j, *s_i;
+ vg_assert(j <= i);
+ s_j1 = (DiSym*)VG_(indexXA)(syms, j-1);
+ s_j = (DiSym*)VG_(indexXA)(syms, j);
+ s_i = (DiSym*)VG_(indexXA)(syms, i);
+ if (s_i->addr != s_j1->addr
+ || s_i->size != s_j1->size
+ || 0 != VG_(strcmp)(s_i->name, s_j1->name)) {
+ *s_j = *s_i;
+ j++;
+ } else {
+ if (trace_symtab)
+ VG_(printf)("nlist cleanup: dump duplicate avma %010lx %s\n",
+ s_i->addr, s_i->name );
+ }
+ }
+ }
+ vg_assert(j >= 0 && j <= nsyms);
+ VG_(dropTailXA)(syms, nsyms - j);
+}
+
+
#if !defined(APPLE_DSYM_EXT_AND_SUBDIRECTORY)
#define APPLE_DSYM_EXT_AND_SUBDIRECTORY ".dSYM/Contents/Resources/DWARF/"
#endif
@@ -358,7 +476,7 @@
{
struct MACH_HEADER *mh = (struct MACH_HEADER *)base;
struct load_command *cmd;
- int c;
+ Int c;
for (c = 0, cmd = (struct load_command *)(mh+1);
c < mh->ncmds;
@@ -368,7 +486,7 @@
struct SEGMENT_COMMAND *seg = (struct SEGMENT_COMMAND *)cmd;
if (0 == VG_(strncmp(seg->segname, segname, sizeof(seg->segname)))) {
struct SECTION *sects = (struct SECTION *)(seg+1);
- int s;
+ Int s;
for (s = 0; s < seg->nsects; s++) {
if (0 == VG_(strncmp(sects[s].sectname, sectname,
sizeof(sects[s].sectname))))
@@ -399,7 +517,7 @@
Bool got_nlist = False;
Bool got_dwarf = False;
Bool got_uuid = False;
- unsigned char uuid[16];
+ UChar uuid[16];
/* mmap the object file to look for di->soname and di->text_bias
and uuid and nlist and STABS */
@@ -598,7 +716,9 @@
/* Read nlist symbol table and STABS debug info */
struct NLIST *syms;
UChar *strs;
-
+ XArray* /* DiSym */ candSyms = NULL;
+ Word i, nCandSyms;
+
if (ob_n_oimage < symcmd->stroff + symcmd->strsize ||
ob_n_oimage < symcmd->symoff + symcmd->nsyms*sizeof(struct NLIST))
{
@@ -619,19 +739,48 @@
VG_(message)(Vg_DebugMsg,
" reading syms from primary file (%d %d)",
dysymcmd->nextdefsym, dysymcmd->nlocalsym );
+
+ /* Read candidate symbols into 'candSyms', so we can truncate
+ overlapping ends and generally tidy up, before presenting
+ them to ML_(addSym). */
+ candSyms = VG_(newXA)(
+ ML_(dinfo_zalloc), "di.readmacho.candsyms.1",
+ ML_(dinfo_free), sizeof(DiSym)
+ );
+ vg_assert(candSyms);
+
// extern symbols
- read_symtab(di,
+ read_symtab(candSyms,
+ di,
syms + dysymcmd->iextdefsym, dysymcmd->nextdefsym,
strs, symcmd->strsize);
// static and private_extern symbols
- read_symtab(di,
+ read_symtab(candSyms,
+ di,
syms + dysymcmd->ilocalsym, dysymcmd->nlocalsym,
strs, symcmd->strsize);
+
+ /* tidy up the cand syms -- trim overlapping ends. May resize
+ candSyms. */
+ tidy_up_cand_syms( candSyms, di->trace_symtab );
+
+ /* and finally present them to ML_(addSym) */
+ nCandSyms = VG_(sizeXA)( candSyms );
+ for (i = 0; i < nCandSyms; i++) {
+ DiSym* cand = (DiSym*) VG_(indexXA)( candSyms, i );
+ if (di->trace_symtab)
+ VG_(printf)("nlist final: acquire avma %010lx-%010lx %s\n",
+ cand->addr, cand->addr + cand->size - 1, cand->name );
+ ML_(addSym)( di, cand );
+ }
+ VG_(deleteXA)( candSyms );
+
if (!got_dwarf) {
// debug info
- VG_(message)(Vg_DebugMsg,
- " reading stabs from primary file (%d %d)",
- dysymcmd->nextdefsym, dysymcmd->nlocalsym );
+ if (VG_(clo_verbosity) > 1)
+ VG_(message)(Vg_DebugMsg,
+ " reading stabs from primary file (%d %d)",
+ dysymcmd->nextdefsym, dysymcmd->nlocalsym );
ML_(read_debuginfo_stabs) ( di,
(UChar *)syms,
symcmd->nsyms * sizeof(struct NLIST),
|
|
From: <sv...@va...> - 2009-02-28 22:15:20
|
Author: sewardj
Date: 2009-02-28 22:15:13 +0000 (Sat, 28 Feb 2009)
New Revision: 9296
Log:
Cosmetic changes (2 x layout, 1 x control of debug printing).
Modified:
branches/DARWIN/coregrind/m_debuginfo/readstabs.c
Modified: branches/DARWIN/coregrind/m_debuginfo/readstabs.c
===================================================================
--- branches/DARWIN/coregrind/m_debuginfo/readstabs.c 2009-02-28 21:30:51 UTC (rev 9295)
+++ branches/DARWIN/coregrind/m_debuginfo/readstabs.c 2009-02-28 22:15:13 UTC (rev 9296)
@@ -46,14 +46,16 @@
#include "priv_readstabs.h" /* self */
/* --- !!! --- EXTERNAL HEADERS start --- !!! --- */
-#if !defined(VGO_darwin)
+#if defined(VGO_linux)
# include <a.out.h> /* stabs defns */
-#else
+#elif defined(VGO_darwin)
# include <mach-o/nlist.h>
# define n_other n_sect
# if VG_WORDSIZE == 8
# define nlist nlist_64
# endif
+#else
+# error "Unknown OS"
#endif
/* --- !!! --- EXTERNAL HEADERS end --- !!! --- */
@@ -137,11 +139,12 @@
const struct nlist *st = &stab[i];
Char *string;
- if (debug && 1) {
- VG_(printf) ( "%2d type=%d othr=%d desc=%d value=0x%x strx=%d %s\n", i,
+ if (di->trace_symtab) {
+ VG_(printf) ( "%2d type=%d othr=%d desc=%d "
+ "value=0x%x strx=%d %s\n", i,
st->n_type, st->n_other, st->n_desc,
- (int)st->n_value,
- (int)st->n_un.n_strx,
+ (Int)st->n_value,
+ (Int)st->n_un.n_strx,
stabstr + st->n_un.n_strx );
}
|
|
From: <sv...@va...> - 2009-02-28 21:30:56
|
Author: sewardj
Date: 2009-02-28 21:30:51 +0000 (Sat, 28 Feb 2009)
New Revision: 9295
Log:
Merge from trunk
r9294: Get rid of the second argument to ML_(read_debuginfo_stabs)
Modified:
branches/DARWIN/coregrind/m_debuginfo/priv_readstabs.h
branches/DARWIN/coregrind/m_debuginfo/readelf.c
branches/DARWIN/coregrind/m_debuginfo/readmacho.c
branches/DARWIN/coregrind/m_debuginfo/readstabs.c
Modified: branches/DARWIN/coregrind/m_debuginfo/priv_readstabs.h
===================================================================
--- branches/DARWIN/coregrind/m_debuginfo/priv_readstabs.h 2009-02-28 21:23:11 UTC (rev 9294)
+++ branches/DARWIN/coregrind/m_debuginfo/priv_readstabs.h 2009-02-28 21:30:51 UTC (rev 9295)
@@ -41,7 +41,7 @@
Stabs reader
-------------------- */
extern
-void ML_(read_debuginfo_stabs) ( struct _DebugInfo* di, PtrdiffT debug_offset,
+void ML_(read_debuginfo_stabs) ( struct _DebugInfo* di,
UChar* stabC, Int stab_sz,
UChar* stabstr, Int stabstr_sz );
Modified: branches/DARWIN/coregrind/m_debuginfo/readelf.c
===================================================================
--- branches/DARWIN/coregrind/m_debuginfo/readelf.c 2009-02-28 21:23:11 UTC (rev 9294)
+++ branches/DARWIN/coregrind/m_debuginfo/readelf.c 2009-02-28 21:30:51 UTC (rev 9295)
@@ -1896,7 +1896,7 @@
we ignore it. */
# if !defined(VGP_amd64_linux)
if (stab_img && stabstr_img) {
- ML_(read_debuginfo_stabs) ( di, di->text_bias, stab_img, stab_sz,
+ ML_(read_debuginfo_stabs) ( di, stab_img, stab_sz,
stabstr_img, stabstr_sz );
}
# endif
Modified: branches/DARWIN/coregrind/m_debuginfo/readmacho.c
===================================================================
--- branches/DARWIN/coregrind/m_debuginfo/readmacho.c 2009-02-28 21:23:11 UTC (rev 9294)
+++ branches/DARWIN/coregrind/m_debuginfo/readmacho.c 2009-02-28 21:30:51 UTC (rev 9295)
@@ -632,7 +632,7 @@
VG_(message)(Vg_DebugMsg,
" reading stabs from primary file (%d %d)",
dysymcmd->nextdefsym, dysymcmd->nlocalsym );
- ML_(read_debuginfo_stabs) ( di, di->text_bias,
+ ML_(read_debuginfo_stabs) ( di,
(UChar *)syms,
symcmd->nsyms * sizeof(struct NLIST),
strs, symcmd->strsize);
Modified: branches/DARWIN/coregrind/m_debuginfo/readstabs.c
===================================================================
--- branches/DARWIN/coregrind/m_debuginfo/readstabs.c 2009-02-28 21:23:11 UTC (rev 9294)
+++ branches/DARWIN/coregrind/m_debuginfo/readstabs.c 2009-02-28 21:30:51 UTC (rev 9295)
@@ -88,7 +88,7 @@
/* Read stabs-format debug info. This is all rather horrible because
stabs is a underspecified, kludgy hack.
*/
-void ML_(read_debuginfo_stabs) ( DebugInfo* di, PtrdiffT debug_offset,
+void ML_(read_debuginfo_stabs) ( DebugInfo* di,
UChar* stabC, Int stab_sz,
UChar* stabstr, Int stabstr_sz )
{
@@ -344,7 +344,7 @@
line.first = True;
/* line ends at start of next function */
- addr = debug_offset + st->n_value;
+ addr = di->text_bias + st->n_value;
func.start = addr;
}
|
|
From: <sv...@va...> - 2009-02-28 21:23:24
|
Author: sewardj
Date: 2009-02-28 21:23:11 +0000 (Sat, 28 Feb 2009)
New Revision: 9294
Log:
Get rid of the second argument ("PtrdiffT debug_offset") to
ML_(read_debuginfo_stabs) since it's always equal to di->text_bias.
Modified:
trunk/coregrind/m_debuginfo/priv_readstabs.h
trunk/coregrind/m_debuginfo/readelf.c
trunk/coregrind/m_debuginfo/readstabs.c
Modified: trunk/coregrind/m_debuginfo/priv_readstabs.h
===================================================================
--- trunk/coregrind/m_debuginfo/priv_readstabs.h 2009-02-28 09:51:50 UTC (rev 9293)
+++ trunk/coregrind/m_debuginfo/priv_readstabs.h 2009-02-28 21:23:11 UTC (rev 9294)
@@ -41,7 +41,7 @@
Stabs reader
-------------------- */
extern
-void ML_(read_debuginfo_stabs) ( struct _DebugInfo* di, PtrdiffT debug_offset,
+void ML_(read_debuginfo_stabs) ( struct _DebugInfo* di,
UChar* stabC, Int stab_sz,
UChar* stabstr, Int stabstr_sz );
Modified: trunk/coregrind/m_debuginfo/readelf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readelf.c 2009-02-28 09:51:50 UTC (rev 9293)
+++ trunk/coregrind/m_debuginfo/readelf.c 2009-02-28 21:23:11 UTC (rev 9294)
@@ -1896,7 +1896,7 @@
we ignore it. */
# if !defined(VGP_amd64_linux)
if (stab_img && stabstr_img) {
- ML_(read_debuginfo_stabs) ( di, di->text_bias, stab_img, stab_sz,
+ ML_(read_debuginfo_stabs) ( di, stab_img, stab_sz,
stabstr_img, stabstr_sz );
}
# endif
Modified: trunk/coregrind/m_debuginfo/readstabs.c
===================================================================
--- trunk/coregrind/m_debuginfo/readstabs.c 2009-02-28 09:51:50 UTC (rev 9293)
+++ trunk/coregrind/m_debuginfo/readstabs.c 2009-02-28 21:23:11 UTC (rev 9294)
@@ -80,7 +80,7 @@
/* Read stabs-format debug info. This is all rather horrible because
stabs is a underspecified, kludgy hack.
*/
-void ML_(read_debuginfo_stabs) ( DebugInfo* di, PtrdiffT debug_offset,
+void ML_(read_debuginfo_stabs) ( DebugInfo* di,
UChar* stabC, Int stab_sz,
UChar* stabstr, Int stabstr_sz )
{
@@ -336,7 +336,7 @@
line.first = True;
/* line ends at start of next function */
- addr = debug_offset + st->n_value;
+ addr = di->text_bias + st->n_value;
func.start = addr;
}
|
|
From: xinran w. <xin...@gm...> - 2009-02-28 20:16:00
|
Hi,
I tried to pass the condition value of IRExpr Iex_Mux0X to a helper
function, but failed with following errors:
vex: priv/host-x86/isel.c:530 (doHelperCall): Assertion
`typeOfIRExpr(env->type_env, args[i]) == Ity_I32' failed.
vex storage: T total 9484900 bytes allocated
vex storage: P total 576 bytes allocated
valgrind: the 'impossible' happened:
LibVEX called failure_exit().
==24283== at 0x3800AFAD: report_and_quit (m_libcassert.c:140)
==24283== by 0x3800B0BB: panic (m_libcassert.c:210)
==24283== by 0x3800B152: vgPlain_core_panic_at (m_libcassert.c:215)
==24283== by 0x3800B190: vgPlain_core_panic (m_libcassert.c:220)
==24283== by 0x3801D8B6: failure_exit (m_translate.c:588)
==24283== by 0x3807F433: vex_assert_fail (vex_util.c:220)
==24283== by 0x38096DBF: doHelperCall (isel.c:530)
==24283== by 0x3809C0ED: iselSB_X86 (isel.c:3809)
==24283== by 0x3807DD69: LibVEX_Translate (vex_main.c:570)
==24283== by 0x3801C1CE: vgPlain_translate (m_translate.c:1417)
==24283== by 0x38025C7F: vgPlain_scheduler (scheduler.c:762)
==24283== by 0x3803A108: run_a_thread_NORETURN (syswrap-linux.c:89)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Here is my helper function:
static VG_REGPARM(3) void mux0x_handler0(Bool cond, IRTemp doffset,
IRTemp cond_var)
{
tl_assert(cond_var <=MAX_TEMP_MAP);
tl_assert(doffset <=MAX_TEMP_MAP);
temp_map.v[doffset] = 0;
}
with instrument code:
case Iex_Mux0X:
cond = data->Iex.Mux0X.cond; /* Condition */
expr0 = data->Iex.Mux0X.expr0; /* True expression */
exprX = data->Iex.Mux0X.exprX; /* False expression */
tl_assert(cond->tag == Iex_RdTmp);
tmp1 = cond->Iex.RdTmp.tmp;
if (exprX->tag == Iex_RdTmp && expr0->tag == Iex_RdTmp ) {
tmp2 = expr0->Iex.RdTmp.tmp;
tmp3 = exprX->Iex.RdTmp.tmp;
argv = mkIRExprVec_4( cond, mkIRExpr_HWord(
st->Ist.WrTmp.tmp ),
mkIRExpr_HWord(tmp2),mkIRExpr_HWord(tmp3) );
di = unsafeIRDirty_0_N( 0,
"mux0x_handler3",
VG_(fnptr_to_fnentry)( mux0x_handler3 ),
argv );
}
addStmtToIRSB( sbOut, IRStmt_Dirty(di) );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Also tried to pass args in stack, but failed either with the following errors.
vex: the `impossible' happened:
pushArg(x86): can't handle arg of this type
vex storage: T total 9484900 bytes allocated
vex storage: P total 576 bytes allocated
valgrind: the 'impossible' happened:
LibVEX called failure_exit().
==23569== at 0x3800AFAD: report_and_quit (m_libcassert.c:140)
==23569== by 0x3800B0BB: panic (m_libcassert.c:210)
==23569== by 0x3800B152: vgPlain_core_panic_at (m_libcassert.c:215)
==23569== by 0x3800B190: vgPlain_core_panic (m_libcassert.c:220)
==23569== by 0x3801D8B6: failure_exit (m_translate.c:588)
==23569== by 0x3807F3FE: vpanic (vex_util.c:227)
==23569== by 0x38096D70: doHelperCall (isel.c:353)
==23569== by 0x3809C0ED: iselSB_X86 (isel.c:3809)
==23569== by 0x3807DD69: LibVEX_Translate (vex_main.c:570)
==23569== by 0x3801C1CE: vgPlain_translate (m_translate.c:1417)
==23569== by 0x38025C7F: vgPlain_scheduler (scheduler.c:762)
==23569== by 0x3803A108: run_a_thread_NORETURN (syswrap-linux.c:89)
~~~~~~~~~~~~~~~~~~~~~``
Really appreciate your help. Thank you very much.
-Xinran
|
|
From: Nicholas N. <n.n...@gm...> - 2009-02-28 11:02:30
|
On Sat, Feb 28, 2009 at 8:40 PM, Julian Seward <js...@ac...> wrote: > >> I tried to pass more than three parameters to a helper function, but >> got the following error during runtime: >> vex: priv/ir/irdefs.c:927 (mkIRCallee): Assertion `regparms >= 0 && >> regparms <= 3' failed. > > "regparms" is not the number of parameters. It is the number of > parameters passed in registers on x86. > >> static VG_REGPARM(5) > > use VG_REGPARM(3) > >> di = unsafeIRDirty_0_N( /*regparms*/5, > > use /*regparms*/3, Because 3 is the maximum number of args passed in registers on x86. Any remaining arguments are passed on the stack. Look up GCC's "regparms" attribute for more details. Nick |
|
From: <sv...@va...> - 2009-02-28 09:52:04
|
Author: sewardj
Date: 2009-02-28 09:51:50 +0000 (Sat, 28 Feb 2009)
New Revision: 9293
Log:
Finalise 3.4.1.
Modified:
branches/VALGRIND_3_4_BRANCH/NEWS
branches/VALGRIND_3_4_BRANCH/configure.in
Modified: branches/VALGRIND_3_4_BRANCH/NEWS
===================================================================
--- branches/VALGRIND_3_4_BRANCH/NEWS 2009-02-27 15:47:36 UTC (rev 9292)
+++ branches/VALGRIND_3_4_BRANCH/NEWS 2009-02-28 09:51:50 UTC (rev 9293)
@@ -1,5 +1,5 @@
-Release 3.4.1 (XX February 2009)
+Release 3.4.1 (28 February 2009)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.4.1 is a bug-fix release that fixes some regressions and assertion
failures in debug info reading in 3.4.0, most notably incorrect stack
@@ -7,7 +7,7 @@
other debug info problems are also fixed. A number of bugs in the
exp-ptrcheck tool introduced in 3.4.0 have been fixed.
-In view of the fact that 3.4.0 contains some user-visible regressions
+In view of the fact that 3.4.0 contains user-visible regressions
relative to 3.3.x, upgrading to 3.4.1 is recommended. Packagers are
encouraged to ship 3.4.1 in preference to 3.4.0.
@@ -21,6 +21,8 @@
n-i-bz Fix various bugs reading icc-11 generated debug info
n-i-bz Fix various bugs reading gcc-4.4 generated debug info
n-i-bz Preliminary support for glibc-2.10 / Fedora 11
+n-i-bz Cachegrind and Callgrind: handle non-power-of-two cache sizes,
+ so as to support (eg) 24k Atom D1 and Core2 with 3/6/12MB L2.
179618 exp-ptrcheck crashed / exit prematurely
179624 helgrind: false positive races with pthread_create and
recv/open/close/read
@@ -35,6 +37,7 @@
185359 exp-ptrcheck unhandled syscall getresuid()
(3.4.1.RC1: 24 Feb 2008, vex r1884, valgrind r9253).
+(3.4.1: 28 Feb 2008, vex r1884, valgrind r9293).
Modified: branches/VALGRIND_3_4_BRANCH/configure.in
===================================================================
--- branches/VALGRIND_3_4_BRANCH/configure.in 2009-02-27 15:47:36 UTC (rev 9292)
+++ branches/VALGRIND_3_4_BRANCH/configure.in 2009-02-28 09:51:50 UTC (rev 9293)
@@ -8,7 +8,7 @@
##------------------------------------------------------------##
# Process this file with autoconf to produce a configure script.
-AC_INIT(Valgrind, 3.4.1.RC1, val...@li...)
+AC_INIT(Valgrind, 3.4.1, val...@li...)
AC_CONFIG_SRCDIR(coregrind/m_main.c)
AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE([foreign])
|
|
From: Julian S. <js...@ac...> - 2009-02-28 09:45:03
|
> You could mention that cachegrind and callgrind now can cope with > non-power-of-two cache sizes, Done. Ta. J |
|
From: Julian S. <js...@ac...> - 2009-02-28 09:40:57
|
> I tried to pass more than three parameters to a helper function, but > got the following error during runtime: > vex: priv/ir/irdefs.c:927 (mkIRCallee): Assertion `regparms >= 0 && > regparms <= 3' failed. "regparms" is not the number of parameters. It is the number of parameters passed in registers on x86. > static VG_REGPARM(5) use VG_REGPARM(3) > di = unsafeIRDirty_0_N( /*regparms*/5, use /*regparms*/3, J |
|
From: Bart V. A. <bar...@gm...> - 2009-02-28 08:34:20
|
Nightly build on georgia-tech-cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) started at 2009-02-28 02:00:01 EST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 406 tests, 38 stderr failures, 9 stdout failures, 0 post failures == exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (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/wrap8 (stderr) none/tests/linux/mremap (stderr) none/tests/linux/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) |
|
From: xinran w. <xin...@gm...> - 2009-02-28 05:53:12
|
Hi,
I tried to pass more than three parameters to a helper function, but
got the following error during runtime:
vex: priv/ir/irdefs.c:927 (mkIRCallee): Assertion `regparms >= 0 &&
regparms <= 3' failed.
It's seem that this is not allowed by Valgrind.
Any suggestion ?
Below is the helper function:
~~~~~~~~~~~~~~~~~~~~
static VG_REGPARM(5) void fop_handler(IRTemp doffset, IRTemp s1offset,
IRTemp s2offset, IRTemp s3offset, IRTemp s4offset)
{
}
~~~~~~~~~~~~~~~~~~~~~~~
and instrument code:
~~~~~~~~~~~~~~~~~~~~~~~
arg1 = data->Iex.Qop.arg1;
arg2 = data->Iex.Qop.arg2;
arg3 = data->Iex.Qop.arg3;
arg4 = data->Iex.Qop.arg4;
tmp1 = arg1->Iex.RdTmp.tmp;
tmp2 = arg2->Iex.RdTmp.tmp;
tmp3 = arg3->Iex.RdTmp.tmp;
tmp4 = arg4->Iex.RdTmp.tmp;
argv = mkIRExprVec_5( mkIRExpr_HWord( st->Ist.WrTmp.tmp ),
mkIRExpr_HWord(tmp1),
mkIRExpr_HWord(tmp2),mkIRExpr_HWord(tmp3),mkIRExpr_HWord(tmp4) );
di = unsafeIRDirty_0_N( /*regparms*/5,
"fop_handler", VG_(fnptr_to_fnentry)(
fop_handler ),
argv );
~~~~~~~~~~~~~~~~~~~~~~~~~~
Thanks
-Xinran
|
|
From: Tom H. <th...@cy...> - 2009-02-28 03:48:40
|
Nightly build on vauxhall ( x86_64, Fedora 10 ) started at 2009-02-28 03:20:04 GMT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... done
Regression test results follow
== 486 tests, 0 stderr failures, 0 stdout failures, 0 post failures ==
=================================================
== 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
== 486 tests, 0 stderr failures, 1 stdout failure, 0 post failures ==
none/tests/vgprintf (stdout)
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Sat Feb 28 03:34:18 2009
--- new.short Sat Feb 28 03:48:34 2009
***************
*** 4,6 ****
Building valgrind ... done
! Running regression tests ... failed
--- 4,6 ----
Building valgrind ... done
! Running regression tests ... done
***************
*** 8,11 ****
! == 486 tests, 0 stderr failures, 1 stdout failure, 0 post failures ==
! none/tests/vgprintf (stdout)
--- 8,10 ----
! == 486 tests, 0 stderr failures, 0 stdout failures, 0 post failures ==
|
|
From: Tom H. <th...@cy...> - 2009-02-28 03:44:49
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2009-02-28 03:05:07 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 == 477 tests, 5 stderr failures, 0 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) helgrind/tests/tc20_verifywrap (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 == 477 tests, 5 stderr failures, 1 stdout failure, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) helgrind/tests/tc20_verifywrap (stderr) none/tests/vgprintf (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Feb 28 03:24:54 2009 --- new.short Sat Feb 28 03:44:41 2009 *************** *** 8,10 **** ! == 477 tests, 5 stderr failures, 1 stdout failure, 0 post failures == exp-ptrcheck/tests/ccc (stderr) --- 8,10 ---- ! == 477 tests, 5 stderr failures, 0 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) *************** *** 14,16 **** helgrind/tests/tc20_verifywrap (stderr) - none/tests/vgprintf (stdout) --- 14,15 ---- |
|
From: Tom H. <th...@cy...> - 2009-02-28 03:32:10
|
Nightly build on mg ( x86_64, Fedora 9 ) started at 2009-02-28 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 == 483 tests, 4 stderr failures, 2 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) memcheck/tests/linux/timerfd-syscall (stdout) none/tests/linux/mremap2 (stdout) ================================================= == 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 == 483 tests, 4 stderr failures, 3 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) memcheck/tests/linux/timerfd-syscall (stdout) none/tests/linux/mremap2 (stdout) none/tests/vgprintf (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Feb 28 03:21:10 2009 --- new.short Sat Feb 28 03:32:04 2009 *************** *** 8,10 **** ! == 483 tests, 4 stderr failures, 3 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) --- 8,10 ---- ! == 483 tests, 4 stderr failures, 2 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) *************** *** 15,17 **** none/tests/linux/mremap2 (stdout) - none/tests/vgprintf (stdout) --- 15,16 ---- |