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
(20) |
2
(19) |
3
(7) |
|
4
(13) |
5
(24) |
6
(9) |
7
(12) |
8
(8) |
9
(34) |
10
(28) |
|
11
(20) |
12
(23) |
13
(12) |
14
(10) |
15
(15) |
16
(24) |
17
(26) |
|
18
(17) |
19
(14) |
20
(14) |
21
(8) |
22
(12) |
23
(22) |
24
(10) |
|
25
(21) |
26
(21) |
27
(18) |
28
(8) |
29
(13) |
30
(15) |
|
|
From: <sv...@va...> - 2007-11-16 22:29:26
|
Author: sewardj
Date: 2007-11-16 22:29:27 +0000 (Fri, 16 Nov 2007)
New Revision: 7168
Log:
Don't crap out when malloc_stats is called; instead just have a no-op
implementation of it. Fixes #145559.
Modified:
trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
Modified: trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
===================================================================
--- trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2007-11-16 19:39:49 UTC (rev 7167)
+++ trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2007-11-16 22:29:27 UTC (rev 7168)
@@ -593,11 +593,20 @@
}
PANIC(m_libc_soname, pvalloc);
-PANIC(m_libc_soname, malloc_stats);
PANIC(m_libc_soname, malloc_get_state);
PANIC(m_libc_soname, malloc_set_state);
+#define MALLOC_STATS(soname, fnname) \
+ \
+ void VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void ); \
+ void VG_REPLACE_FUNCTION_ZU(soname, fnname) ( void ) \
+ { \
+ /* Valgrind's malloc_stats implementation does nothing. */ \
+ }
+MALLOC_STATS(m_libc_soname, malloc_stats);
+
+
/*---------------------- mallinfo ----------------------*/
// mi must be static; if it is auto then Memcheck thinks it is
|
|
From: <sv...@va...> - 2007-11-16 19:39:47
|
Author: sewardj
Date: 2007-11-16 19:39:49 +0000 (Fri, 16 Nov 2007)
New Revision: 7167
Log:
Make one redirect mandatory for ppc64-linux.
Modified:
trunk/coregrind/m_redir.c
Modified: trunk/coregrind/m_redir.c
===================================================================
--- trunk/coregrind/m_redir.c 2007-11-16 18:45:40 UTC (rev 7166)
+++ trunk/coregrind/m_redir.c 2007-11-16 19:39:49 UTC (rev 7167)
@@ -870,8 +870,10 @@
/* If we're using memcheck, use these intercepts right from
the start, otherwise ld.so makes a lot of noise. */
if (0==VG_(strcmp)("Memcheck", VG_(details).name)) {
- const HChar* croakage = "Possible fix: install glibc's debuginfo "
- "package on this machine.";
+
+ static HChar* croakage = "Possible fix: install glibc's debuginfo "
+ "package on this machine.";
+
/* this is mandatory - can't sanely continue without it */
add_hardwired_spec(
"ld.so.1", "strlen",
@@ -897,16 +899,21 @@
the start, otherwise ld.so makes a lot of noise. */
if (0==VG_(strcmp)("Memcheck", VG_(details).name)) {
+ static HChar* croakage = "Possible fix: install glibc's debuginfo "
+ "package on this machine.";
+
+ /* this is mandatory - can't sanely continue without it */
add_hardwired_spec(
"ld64.so.1", "strlen",
(Addr)VG_(fnptr_to_fnentry)( &VG_(ppc64_linux_REDIR_FOR_strlen) ),
- NULL
+ croakage
);
add_hardwired_spec(
"ld64.so.1", "index",
(Addr)VG_(fnptr_to_fnentry)( &VG_(ppc64_linux_REDIR_FOR_strchr) ),
- NULL
+ NULL /* not mandatory - so why bother at all? */
+ /* glibc-2.5 (FC6, ppc64) seems fine without it */
);
}
|
|
From: <sv...@va...> - 2007-11-16 18:45:36
|
Author: sewardj
Date: 2007-11-16 18:45:40 +0000 (Fri, 16 Nov 2007)
New Revision: 7166
Log:
Make one of the ppc32-linux initial redirects mandatory, and add
further comments.
Modified:
trunk/coregrind/m_redir.c
Modified: trunk/coregrind/m_redir.c
===================================================================
--- trunk/coregrind/m_redir.c 2007-11-16 18:32:40 UTC (rev 7165)
+++ trunk/coregrind/m_redir.c 2007-11-16 18:45:40 UTC (rev 7166)
@@ -205,7 +205,15 @@
/* A specification of a redirection we want to do. Note that because
both the "from" soname and function name may contain wildcards, the
- spec can match an arbitrary number of times. */
+ spec can match an arbitrary number of times.
+
+ 16 Nov 2007: Comments re .mandatory field: The initial motivation
+ for this is making Memcheck work sanely on glibc-2.6.X ppc32-linux.
+ We really need to intercept 'strlen' in ld.so right from startup.
+ If ld.so does not have a visible 'strlen' symbol, Memcheck
+ generates an impossible number of errors resulting from highly
+ tuned strlen implementation in ld.so, and is completely unusable
+ -- the resulting undefinedness eventually seeps everywhere. */
typedef
struct _Spec {
struct _Spec* next; /* linked list */
@@ -863,21 +871,24 @@
the start, otherwise ld.so makes a lot of noise. */
if (0==VG_(strcmp)("Memcheck", VG_(details).name)) {
const HChar* croakage = "Possible fix: install glibc's debuginfo "
- "package on this machine";
+ "package on this machine.";
+ /* this is mandatory - can't sanely continue without it */
add_hardwired_spec(
"ld.so.1", "strlen",
(Addr)&VG_(ppc32_linux_REDIR_FOR_strlen),
- NULL
+ croakage
);
add_hardwired_spec(
"ld.so.1", "strcmp",
(Addr)&VG_(ppc32_linux_REDIR_FOR_strcmp),
- NULL
+ NULL /* not mandatory - so why bother at all? */
+ /* glibc-2.6.1 (openSUSE 10.3, ppc32) seems fine without it */
);
add_hardwired_spec(
"ld.so.1", "index",
(Addr)&VG_(ppc32_linux_REDIR_FOR_strchr),
- NULL
+ NULL /* not mandatory - so why bother at all? */
+ /* glibc-2.6.1 (openSUSE 10.3, ppc32) seems fine without it */
);
}
|
|
From: <sv...@va...> - 2007-11-16 18:32:38
|
Author: sewardj
Date: 2007-11-16 18:32:40 +0000 (Fri, 16 Nov 2007)
New Revision: 7165
Log:
Introduce the concept of a 'mandatory redirection'. A redirection
says (essentially) "I am the replacement for function foo in object w/
soname bar.so". Now, if a redirection is mandatory, and bar.so is
loaded but foo is not found in its symbol table, then V aborts.
The initial motivation for this is making Memcheck work sanely on
glibc-2.6.X ppc32-linux. We really need to intercept 'strlen' in
ld.so right from startup. If ld.so does not have a visible 'strlen'
symbol, Memcheck generates an impossible number of errors resulting
from highly tuned strlen implementation in ld.so, and is completely
unusable -- the resulting undefinedness eventually seeps everywhere.
Modified:
trunk/coregrind/m_redir.c
Modified: trunk/coregrind/m_redir.c
===================================================================
--- trunk/coregrind/m_redir.c 2007-11-16 12:31:27 UTC (rev 7164)
+++ trunk/coregrind/m_redir.c 2007-11-16 18:32:40 UTC (rev 7165)
@@ -209,11 +209,17 @@
typedef
struct _Spec {
struct _Spec* next; /* linked list */
+ /* FIXED PARTS -- set when created and not changed */
HChar* from_sopatt; /* from soname pattern */
HChar* from_fnpatt; /* from fnname pattern */
Addr to_addr; /* where redirecting to */
Bool isWrap; /* wrap or replacement? */
- Bool mark; /* transient temporary used during matching */
+ HChar* mandatory; /* non-NULL ==> abort V and print the
+ string if from_sopatt is loaded but
+ from_fnpatt cannot be found */
+ /* VARIABLE PARTS -- used transiently whilst processing redirections */
+ Bool mark; /* set if spec requires further processing */
+ Bool done; /* set if spec was successfully matched */
}
Spec;
@@ -266,7 +272,7 @@
static void maybe_add_active ( Active /*by value; callee copies*/ );
-static void* symtab_alloc(SizeT);
+static void* symtab_zalloc(SizeT);
static void symtab_free(void*);
static HChar* symtab_strdup(HChar*);
static Bool is_plausible_guest_addr(Addr);
@@ -351,7 +357,7 @@
the following loop, and complain at that point. */
continue;
}
- spec = symtab_alloc(sizeof(Spec));
+ spec = symtab_zalloc(sizeof(Spec));
vg_assert(spec);
spec->from_sopatt = symtab_strdup(demangled_sopatt);
spec->from_fnpatt = symtab_strdup(demangled_fnpatt);
@@ -363,6 +369,7 @@
vg_assert(is_plausible_guest_addr(sym_addr));
spec->next = specList;
spec->mark = False; /* not significant */
+ spec->done = False; /* not significant */
specList = spec;
}
@@ -384,9 +391,9 @@
&& 0 == VG_(strcmp)(spec->from_fnpatt, demangled_fnpatt))
break;
if (spec)
- /* a redirect to some other copy of that symbol, which does have
- a TOC value, already exists */
- continue;
+ /* a redirect to some other copy of that symbol, which
+ does have a TOC value, already exists */
+ continue;
/* Complain */
VG_(message)(Vg_DebugMsg,
@@ -397,7 +404,7 @@
/* Ok. Now specList holds the list of specs from the SegInfo.
Build a new TopSpec, but don't add it to topSpecs yet. */
- newts = symtab_alloc(sizeof(TopSpec));
+ newts = symtab_zalloc(sizeof(TopSpec));
vg_assert(newts);
newts->next = NULL; /* not significant */
newts->seginfo = newsi;
@@ -471,10 +478,12 @@
Addr sym_addr;
HChar* sym_name;
- /* First figure out which of the specs match the seginfo's
- soname. */
+ /* First figure out which of the specs match the seginfo's soname.
+ Also clear the 'done' bits, so that after the main loop below
+ tell which of the Specs really did get done. */
anyMark = False;
for (sp = specs; sp; sp = sp->next) {
+ sp->done = False;
sp->mark = VG_(string_match)( sp->from_sopatt,
VG_(seginfo_soname)(si) );
anyMark = anyMark || sp->mark;
@@ -510,10 +519,56 @@
act.parent_spec = parent_spec;
act.parent_sym = parent_sym;
act.isWrap = sp->isWrap;
+ sp->done = True;
maybe_add_active( act );
}
- }
+ } /* for (sp = specs; sp; sp = sp->next) */
+ } /* for (i = 0; i < nsyms; i++) */
+
+ /* Now, finally, look for Specs which were marked to be done, but
+ didn't get matched. If any such are mandatory we must abort the
+ system at this point. */
+ for (sp = specs; sp; sp = sp->next) {
+ if (!sp->mark)
+ continue;
+ if (sp->mark && (!sp->done) && sp->mandatory)
+ break;
}
+ if (sp) {
+ HChar* v = "valgrind: ";
+ vg_assert(sp->mark);
+ vg_assert(!sp->done);
+ vg_assert(sp->mandatory);
+ VG_(printf)("\n");
+ VG_(printf)(
+ "%sFatal error at startup: a function redirection\n", v);
+ VG_(printf)(
+ "%swhich is mandatory for this platform-tool combination\n", v);
+ VG_(printf)(
+ "%scannot be set up. Details of the redirection are:\n", v);
+ VG_(printf)(
+ "%s\n", v);
+ VG_(printf)(
+ "%sA must-be-redirected function\n", v);
+ VG_(printf)(
+ "%swhose name matches the pattern: %s\n", v, sp->from_fnpatt);
+ VG_(printf)(
+ "%sin an object with soname matching: %s\n", v, sp->from_sopatt);
+ VG_(printf)(
+ "%swas not found whilst processing\n", v);
+ VG_(printf)(
+ "%ssymbols from the object with soname: %s\n", v, VG_(seginfo_soname)(si));
+ VG_(printf)(
+ "%s\n", v);
+ VG_(printf)(
+ "%s%s\n", v, sp->mandatory);
+ VG_(printf)(
+ "%s\n", v);
+ VG_(printf)(
+ "%sCannot continue -- exiting now. Sorry.\n", v);
+ VG_(printf)("\n");
+ VG_(exit)(1);
+ }
}
@@ -617,7 +672,7 @@
/* Traverse the actives, copying the addresses of those we intend
to delete into tmpSet. */
- tmpSet = VG_(OSetWord_Create)(symtab_alloc, symtab_free);
+ tmpSet = VG_(OSetWord_Create)(symtab_zalloc, symtab_free);
ts->mark = True;
@@ -731,29 +786,31 @@
entry that holds these initial specs. */
__attribute__((unused)) /* not used on all platforms */
-static void add_hardwired_spec ( HChar* sopatt, HChar* fnpatt, Addr to_addr )
+static void add_hardwired_spec ( HChar* sopatt, HChar* fnpatt,
+ Addr to_addr,
+ HChar* mandatory )
{
- Spec* spec = symtab_alloc(sizeof(Spec));
+ Spec* spec = symtab_zalloc(sizeof(Spec));
vg_assert(spec);
if (topSpecs == NULL) {
- topSpecs = symtab_alloc(sizeof(TopSpec));
+ topSpecs = symtab_zalloc(sizeof(TopSpec));
vg_assert(topSpecs);
- topSpecs->next = NULL;
- topSpecs->seginfo = NULL;
- topSpecs->specs = NULL;
- topSpecs->mark = False;
+ /* symtab_zalloc sets all fields to zero */
}
vg_assert(topSpecs != NULL);
vg_assert(topSpecs->next == NULL);
vg_assert(topSpecs->seginfo == NULL);
-
+ /* FIXED PARTS */
spec->from_sopatt = sopatt;
spec->from_fnpatt = fnpatt;
spec->to_addr = to_addr;
spec->isWrap = False;
+ spec->mandatory = mandatory;
+ /* VARIABLE PARTS */
spec->mark = False; /* not significant */
+ spec->done = False; /* not significant */
spec->next = topSpecs->specs;
topSpecs->specs = spec;
@@ -774,7 +831,7 @@
// Initialise active mapping.
activeSet = VG_(OSetGen_Create)(offsetof(Active, from_addr),
NULL, // Use fast comparison
- symtab_alloc,
+ symtab_zalloc,
symtab_free);
// The rest of this function just adds initial Specs.
@@ -785,7 +842,8 @@
if (0==VG_(strcmp)("Memcheck", VG_(details).name)) {
add_hardwired_spec(
"ld-linux.so.2", "index",
- (Addr)&VG_(x86_linux_REDIR_FOR_index)
+ (Addr)&VG_(x86_linux_REDIR_FOR_index),
+ NULL
);
}
@@ -804,17 +862,22 @@
/* If we're using memcheck, use these intercepts right from
the start, otherwise ld.so makes a lot of noise. */
if (0==VG_(strcmp)("Memcheck", VG_(details).name)) {
+ const HChar* croakage = "Possible fix: install glibc's debuginfo "
+ "package on this machine";
add_hardwired_spec(
"ld.so.1", "strlen",
- (Addr)&VG_(ppc32_linux_REDIR_FOR_strlen)
+ (Addr)&VG_(ppc32_linux_REDIR_FOR_strlen),
+ NULL
);
add_hardwired_spec(
"ld.so.1", "strcmp",
- (Addr)&VG_(ppc32_linux_REDIR_FOR_strcmp)
+ (Addr)&VG_(ppc32_linux_REDIR_FOR_strcmp),
+ NULL
);
add_hardwired_spec(
"ld.so.1", "index",
- (Addr)&VG_(ppc32_linux_REDIR_FOR_strchr)
+ (Addr)&VG_(ppc32_linux_REDIR_FOR_strchr),
+ NULL
);
}
@@ -825,13 +888,15 @@
add_hardwired_spec(
"ld64.so.1", "strlen",
- (Addr)VG_(fnptr_to_fnentry)( &VG_(ppc64_linux_REDIR_FOR_strlen) )
- );
+ (Addr)VG_(fnptr_to_fnentry)( &VG_(ppc64_linux_REDIR_FOR_strlen) ),
+ NULL
+ );
add_hardwired_spec(
"ld64.so.1", "index",
- (Addr)VG_(fnptr_to_fnentry)( &VG_(ppc64_linux_REDIR_FOR_strchr) )
- );
+ (Addr)VG_(fnptr_to_fnentry)( &VG_(ppc64_linux_REDIR_FOR_strchr) ),
+ NULL
+ );
}
@@ -854,13 +919,17 @@
/*--- MISC HELPERS ---*/
/*------------------------------------------------------------*/
-static void* symtab_alloc(SizeT n)
-{
- return VG_(arena_malloc)(VG_AR_SYMTAB, n);
+static void* symtab_zalloc(SizeT n) {
+ void* p;
+ vg_assert(n > 0);
+ p = VG_(arena_malloc)(VG_AR_SYMTAB, n);
+ tl_assert(p);
+ VG_(memset)(p, 0, n);
+ return p;
}
-static void symtab_free(void* p)
-{
+static void symtab_free(void* p) {
+ tl_assert(p);
return VG_(arena_free)(VG_AR_SYMTAB, p);
}
|
|
From: Bart V. A. <bar...@gm...> - 2007-11-16 17:59:38
|
On Nov 13, 2007 1:01 AM, Julian Seward <js...@ac...> wrote: > > This one has failed for ages for me on openSUSE 10.2. Perhaps some of > the existing .exp files can never happen. > > Bart, what is the total list of failed tests? I don't think > memcheck/tests/writev deserves special attention. One reason for > mass failure of tests on a 64-bit machine is the absence of a > fully working 32-bit build environment; is that the case? Thanks for the hint. After having ensured that I can again build 32-bit executables, the regression tests now work fine: # make -s distclean && svn update && ./autogen.sh && ./configure && make -s && make -s check regtest ... == 351 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/writev (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_exit_group (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) Regards, Bart Van Assche. |
|
From: Konstantin S. <kon...@gm...> - 2007-11-16 13:22:48
|
On Nov 16, 2007 12:52 PM, Julian Seward <js...@ac...> wrote: > > > With appropriate interceptors added to hg_interceps.c, the picture is > > different. > > The test now fails due to missed timeouts (at least it looks so). > > See attachment log2. We now see much more LSETs. > > Try increasing N_WAY_BITS from 16 to 17. That might improve performance > a bit. Run on the fastest machine you have, with the largest L2 cache > you can find (high end Core 2 machine?) Well, this makes the program fail ~10% faster :) > > > > How do I make sure that the test fails due to delayed timeouts and not > due > > to something else? > > I don't know. Make your application have longer timeouts? > > > Can I run helgrind so that it does all the intrusion (instrumentation), > but > > does *not* do any TSET/LSET/etc bookkeeping? > > No. What functionality should and should not be available in this > "reduced functionality" mode? I've commented out the body of hg_handle_client_request -- now everything passes. It's not very useful though. :) :) I'll continue digging this... > > > > Yet another question: can I include helgrind.h into my program as an > > alternative to creating intercepts for my own locking primitives? Do you > > have examples? > > No and no. > > J > |
|
From: <sv...@va...> - 2007-11-16 12:43:31
|
Author: sewardj
Date: 2007-11-16 12:43:32 +0000 (Fri, 16 Nov 2007)
New Revision: 1797
Log:
gcc-4.3 build fixes.
Modified:
trunk/Makefile
trunk/priv/host-arm/isel.c
Modified: trunk/Makefile
===================================================================
--- trunk/Makefile 2007-11-16 02:30:38 UTC (rev 1796)
+++ trunk/Makefile 2007-11-16 12:43:32 UTC (rev 1797)
@@ -73,10 +73,10 @@
# Put -g -O2 after any flags we inherit from V. -O2 vs -O
# makes a significant difference, at least with gcc4.
-CCFLAGS = -Wall -Wmissing-prototypes -Wshadow -Winline \
+CCFLAGS = -Wall -Wmissing-prototypes -Wshadow \
-Wpointer-arith -Wbad-function-cast -Wcast-qual \
-Wcast-align -Wmissing-declarations \
- $(EXTRA_CFLAGS) -g -O2
+ $(EXTRA_CFLAGS) -g -O2 -fstrict-aliasing
#CC = icc
#CCFLAGS = -g -Wall -wd981 -wd279 -wd1287 -wd869 -wd111 -wd188 -wd186
Modified: trunk/priv/host-arm/isel.c
===================================================================
--- trunk/priv/host-arm/isel.c 2007-11-16 02:30:38 UTC (rev 1796)
+++ trunk/priv/host-arm/isel.c 2007-11-16 12:43:32 UTC (rev 1797)
@@ -129,7 +129,7 @@
static ARMAMode1* iselIntExpr_AMode1_wrk ( ISelEnv* env, IRExpr* e );
static ARMAMode1* iselIntExpr_AMode1 ( ISelEnv* env, IRExpr* e );
-static ARMAMode2* iselIntExpr_AMode2_wrk ( ISelEnv* env, IRExpr* e );
+/* static ARMAMode2* iselIntExpr_AMode2_wrk ( ISelEnv* env, IRExpr* e ); */
static ARMAMode2* iselIntExpr_AMode2 ( ISelEnv* env, IRExpr* e );
static ARMAMode3* iselIntExpr_AMode3_wrk ( ISelEnv* env, IRExpr* e );
@@ -601,6 +601,7 @@
/* ---------------- Addressing Mode 2 ---------------- */
+__attribute__((unused))
static Bool sane_AMode2 ( ARMAMode2* am )
{
switch (am->tag) {
@@ -609,12 +610,14 @@
}
}
+/* Apparently unused
static ARMAMode2* iselIntExpr_AMode2_wrk ( ISelEnv* env, IRExpr* e )
{
ARMAMode2* am = iselIntExpr_AMode2_wrk(env, e);
vassert(sane_AMode2(am));
return am;
}
+*/
/* DO NOT CALL THIS DIRECTLY ! */
static ARMAMode2* iselIntExpr_AMode2 ( ISelEnv* env, IRExpr* e )
|
|
From: <sv...@va...> - 2007-11-16 12:31:27
|
Author: sewardj
Date: 2007-11-16 12:31:27 +0000 (Fri, 16 Nov 2007)
New Revision: 7164
Log:
Avoid hundreds of warnings from -Winline on gcc-4.3:
In dump.c, gcc complains that 'param max-stack-frame-growth' would be
exceeded, so remove 'inline' spec.
All other warnings are of the form 'call is unlikely and code size
would grow'. These aren't interesting. Remove -Winline.
Modified:
trunk/Makefile.flags.am
trunk/callgrind/dump.c
Modified: trunk/Makefile.flags.am
===================================================================
--- trunk/Makefile.flags.am 2007-11-16 12:02:43 UTC (rev 7163)
+++ trunk/Makefile.flags.am 2007-11-16 12:31:27 UTC (rev 7164)
@@ -1,7 +1,7 @@
# Baseline flags for all compilations. Aim here is to maximise
# performance and get whatever useful warnings we can out of gcc.
-AM_CFLAGS_BASE = -O2 -g -Wmissing-prototypes -Winline -Wall -Wshadow \
+AM_CFLAGS_BASE = -O2 -g -Wmissing-prototypes -Wall -Wshadow \
-Wpointer-arith -Wstrict-prototypes -Wmissing-declarations \
-fno-strict-aliasing
Modified: trunk/callgrind/dump.c
===================================================================
--- trunk/callgrind/dump.c 2007-11-16 12:02:43 UTC (rev 7163)
+++ trunk/callgrind/dump.c 2007-11-16 12:31:27 UTC (rev 7164)
@@ -434,7 +434,7 @@
}
}
-static __inline__
+static /* __inline__ */
Bool get_debug_pos(BBCC* bbcc, Addr addr, AddrPos* p)
{
Char file[FILENAME_LEN];
|
|
From: Julian S. <js...@ac...> - 2007-11-16 12:07:17
|
Ok .. I backed out the bogus casts and took the lazy approach (-fno-strict-alias). Thanks for the background on this. J On Monday 12 November 2007 13:13, Dirk Mueller wrote: > On Wednesday 07 November 2007, Julian Seward wrote: > > > a real workaround would be to copy the content into a new location > > > (e.g. a local variable) and access that one via its type. > [...] |
|
From: <sv...@va...> - 2007-11-16 12:02:43
|
Author: sewardj
Date: 2007-11-16 12:02:43 +0000 (Fri, 16 Nov 2007)
New Revision: 7163
Log:
Back out bogus strict-aliasing hacks and use -fno-strict-aliasing by
default.
Modified:
trunk/Makefile.flags.am
trunk/helgrind/hg_main.c
trunk/helgrind/hg_wordset.c
Modified: trunk/Makefile.flags.am
===================================================================
--- trunk/Makefile.flags.am 2007-11-16 10:05:47 UTC (rev 7162)
+++ trunk/Makefile.flags.am 2007-11-16 12:02:43 UTC (rev 7163)
@@ -2,13 +2,14 @@
# Baseline flags for all compilations. Aim here is to maximise
# performance and get whatever useful warnings we can out of gcc.
AM_CFLAGS_BASE = -O2 -g -Wmissing-prototypes -Winline -Wall -Wshadow \
- -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations
+ -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations \
+ -fno-strict-aliasing
# These flags are used for building the preload shared objects.
# The aim is to give reasonable performance but also to have good
# stack traces, since users often see stack traces extending
# into (and through) the preloads.
-AM_CFLAGS_PIC = -O -g -fpic -fno-omit-frame-pointer
+AM_CFLAGS_PIC = -O -g -fpic -fno-omit-frame-pointer -fno-strict-aliasing
# Flags for specific targets
AM_FLAG_M3264_X86_LINUX = @FLAG_M32@
Modified: trunk/helgrind/hg_main.c
===================================================================
--- trunk/helgrind/hg_main.c 2007-11-16 10:05:47 UTC (rev 7162)
+++ trunk/helgrind/hg_main.c 2007-11-16 12:02:43 UTC (rev 7163)
@@ -645,7 +645,7 @@
Thread* thr;
Word count;
HG_(initIterBag)( bag );
- while (HG_(nextIterBag)( bag, (Word*)(HChar*)&thr, &count )) {
+ while (HG_(nextIterBag)( bag, (Word*)&thr, &count )) {
if (count < 1) return False;
if (!is_sane_Thread(thr)) return False;
}
@@ -840,7 +840,7 @@
}
/* for each thread that holds this lock do ... */
HG_(initIterBag)( lk->heldBy );
- while (HG_(nextIterBag)( lk->heldBy, (Word*)(HChar*)&thr, NULL )) {
+ while (HG_(nextIterBag)( lk->heldBy, (Word*)&thr, NULL )) {
tl_assert(is_sane_Thread(thr));
tl_assert(HG_(elemWS)( univ_lsets,
thr->locksetA, (Word)lk ));
@@ -1122,7 +1122,7 @@
Word count;
VG_(printf)(" { ");
HG_(initIterBag)( lk->heldBy );
- while (HG_(nextIterBag)( lk->heldBy, (Word*)(HChar*)&thr, &count ))
+ while (HG_(nextIterBag)( lk->heldBy, (Word*)&thr, &count ))
VG_(printf)("%lu:%p ", count, thr);
HG_(doneIterBag)( lk->heldBy );
VG_(printf)("}");
@@ -1156,8 +1156,8 @@
space(d); VG_(printf)("map_locks (%d entries) {\n",
(Int)HG_(sizeFM)( map_locks ));
HG_(initIterFM)( map_locks );
- while (HG_(nextIterFM)( map_locks, (Word*)(HChar*)&gla,
- (Word*)(HChar*)&lk )) {
+ while (HG_(nextIterFM)( map_locks, (Word*)&gla,
+ (Word*)&lk )) {
space(d+3);
VG_(printf)("guest %p -> Lock %p\n", gla, lk);
}
@@ -1204,8 +1204,8 @@
space(d); VG_(printf)("map_segments (%d entries) {\n",
(Int)HG_(sizeFM)( map_segments ));
HG_(initIterFM)( map_segments );
- while (HG_(nextIterFM)( map_segments, (Word*)(HChar*)&segid,
- (Word*)(HChar*)&seg )) {
+ while (HG_(nextIterFM)( map_segments, (Word*)&segid,
+ (Word*)&seg )) {
space(d+3);
VG_(printf)("segid 0x%x -> Segment %p\n", (UInt)segid, seg);
}
@@ -1324,8 +1324,8 @@
SecMap* sm;
space(d); VG_(printf)("map_shmem_ShR_and_ShM_only {\n");
HG_(initIterFM)( map_shmem );
- while (HG_(nextIterFM)( map_shmem, (Word*)(HChar*)&ga,
- (Word*)(HChar*)&sm )) {
+ while (HG_(nextIterFM)( map_shmem, (Word*)&ga,
+ (Word*)&sm )) {
pp_SecMap_shared( d+3, sm, ga );
}
HG_(doneIterFM) ( map_shmem );
@@ -1537,7 +1537,7 @@
Lock* oldlock = NULL;
tl_assert(is_sane_ThreadId(tid));
found = HG_(lookupFM)( map_locks,
- NULL, (Word*)(HChar*)&oldlock, (Word)ga );
+ NULL, (Word*)&oldlock, (Word)ga );
if (!found) {
Lock* lock = mk_LockN(lkk, ga);
lock->appeared_at = VG_(record_ExeContext)( tid, 0 );
@@ -1561,7 +1561,7 @@
{
Bool found;
Lock* lk = NULL;
- found = HG_(lookupFM)( map_locks, NULL, (Word*)(HChar*)&lk, (Word)ga );
+ found = HG_(lookupFM)( map_locks, NULL, (Word*)&lk, (Word)ga );
tl_assert(found ? lk != NULL : lk == NULL);
if (found) {
// check the relevant secondary map has .mbHasLocks?
@@ -1575,7 +1575,7 @@
Addr ga2 = 0;
Lock* lk = NULL;
HG_(delFromFM)( map_locks,
- (Word*)(HChar*)&ga2, (Word*)(HChar*)&lk, (Word)ga );
+ (Word*)&ga2, (Word*)&lk, (Word)ga );
/* delFromFM produces the val which is being deleted, if it is
found. So assert it is non-null; that in effect asserts that we
are deleting a (ga, Lock) pair which actually exists. */
@@ -1599,7 +1599,7 @@
Segment* seg = NULL;
tl_assert( is_sane_SegmentID(segid) );
found = HG_(lookupFM)( map_segments,
- NULL, (Word*)(HChar*)&seg, (Word)segid );
+ NULL, (Word*)&seg, (Word)segid );
tl_assert(found);
tl_assert(seg != NULL);
return seg;
@@ -1611,7 +1611,7 @@
Segment* seg = NULL;
tl_assert( is_sane_SegmentID(segid) );
found = HG_(lookupFM)( map_segments,
- NULL, (Word*)(HChar*)&seg, (Word)segid );
+ NULL, (Word*)&seg, (Word)segid );
if (!found) tl_assert(seg == NULL);
return seg;
}
@@ -2361,7 +2361,7 @@
SecMap* sm = NULL;
Addr gaKey = shmem__round_to_SecMap_base(ga);
if (HG_(lookupFM)( map_shmem,
- NULL/*keyP*/, (Word*)(HChar*)&sm, (Word)gaKey )) {
+ NULL/*keyP*/, (Word*)&sm, (Word)gaKey )) {
/* Found; address of SecMap is in sm */
tl_assert(sm);
} else {
@@ -2383,7 +2383,7 @@
SecMap* sm;
Addr aKey = shmem__round_to_SecMap_base(a);
if (HG_(lookupFM)( map_shmem,
- NULL/*keyP*/, (Word*)(HChar*)&sm, (Word)aKey )) {
+ NULL/*keyP*/, (Word*)&sm, (Word)aKey )) {
/* Found */
return sm->mbHasLocks;
} else {
@@ -2397,7 +2397,7 @@
Addr aKey = shmem__round_to_SecMap_base(a);
tl_assert(b == False || b == True);
if (HG_(lookupFM)( map_shmem,
- NULL/*keyP*/, (Word*)(HChar*)&sm, (Word)aKey )) {
+ NULL/*keyP*/, (Word*)&sm, (Word)aKey )) {
/* Found; address of SecMap is in sm */
} else {
/* create a new one */
@@ -2414,7 +2414,7 @@
Addr aKey = shmem__round_to_SecMap_base(a);
tl_assert(b == False || b == True);
if (HG_(lookupFM)( map_shmem,
- NULL/*keyP*/, (Word*)(HChar*)&sm, (Word)aKey )) {
+ NULL/*keyP*/, (Word*)&sm, (Word)aKey )) {
/* Found; address of SecMap is in sm */
} else {
/* create a new one */
@@ -2574,7 +2574,7 @@
// gla == lk->guest_addr
HG_(initIterFM)( map_locks );
while (HG_(nextIterFM)( map_locks,
- (Word*)(HChar*)&gla, (Word*)(HChar*)&lk )) {
+ (Word*)&gla, (Word*)&lk )) {
if (lk->guestaddr != gla) BAD("2");
}
HG_(doneIterFM)( map_locks );
@@ -2597,7 +2597,7 @@
Word count;
HG_(initIterBag)( lk->heldBy );
while (HG_(nextIterBag)( lk->heldBy,
- (Word*)(HChar*)&thr, &count )) {
+ (Word*)&thr, &count )) {
// is_sane_LockN above ensures these
tl_assert(count >= 1);
tl_assert(is_sane_Thread(thr));
@@ -2688,7 +2688,7 @@
HG_(initIterFM)( map_shmem );
// for sm in SecMaps {
while (HG_(nextIterFM)( map_shmem,
- (Word*)(HChar*)&smga, (Word*)(HChar*)&sm )) {
+ (Word*)&smga, (Word*)&sm )) {
SecMapIter itr;
SVal* w32p = NULL;
Bool mbHasShared = False;
@@ -2959,7 +2959,7 @@
ExeContext* ec_hint = NULL;
if (ga_to_lastlock != NULL
&& HG_(lookupFM)(ga_to_lastlock,
- NULL, (Word*)(HChar*)&ec_hint, ga)) {
+ NULL, (Word*)&ec_hint, ga)) {
tl_assert(ec_hint != NULL);
return ec_hint;
} else {
@@ -4957,7 +4957,7 @@
/* FIXME: don't iterate over the complete lock set */
HG_(initIterFM)( map_locks );
while (HG_(nextIterFM)( map_locks,
- (Word*)(HChar*)&gla, (Word*)(HChar*)&lk )) {
+ (Word*)&gla, (Word*)&lk )) {
tl_assert(is_sane_LockN(lk));
if (gla < firstA || gla > lastA)
continue;
@@ -5006,7 +5006,7 @@
HG_(initIterFM)( map_shmem );
while (HG_(nextIterFM)( map_shmem,
- (Word*)(HChar*)&ga, (Word*)(HChar*)&sm )) {
+ (Word*)&ga, (Word*)&sm )) {
tl_assert(sm);
stats_SMs++;
/* Skip this SecMap if the summary bit indicates it is safe to
@@ -5671,7 +5671,7 @@
stats_SMs = stats_SMs_scanned = stats_reExcls = 0;
HG_(initIterFM)( map_shmem );
while (HG_(nextIterFM)( map_shmem,
- (Word*)(HChar*)&ga, (Word*)(HChar*)&sm )) {
+ (Word*)&ga, (Word*)&sm )) {
SecMapIter itr;
SVal* w32p = NULL;
tl_assert(sm);
@@ -6167,7 +6167,7 @@
edge back to it. */
signalling_seg = NULL;
found = HG_(lookupFM)( map_cond_to_Segment,
- NULL, (Word*)(HChar*)&signalling_seg,
+ NULL, (Word*)&signalling_seg,
(Word)cond );
if (found) {
tl_assert(is_sane_Segment(signalling_seg));
@@ -6363,7 +6363,7 @@
tl_assert(seg);
map_sem_to_Segment_stack_INIT();
if (HG_(lookupFM)( map_sem_to_Segment_stack,
- NULL, (Word*)(HChar*)&xa, (Word)sem )) {
+ NULL, (Word*)&xa, (Word)sem )) {
tl_assert(xa);
VG_(addToXA)( xa, &seg );
} else {
@@ -6378,7 +6378,7 @@
Segment* seg;
map_sem_to_Segment_stack_INIT();
if (HG_(lookupFM)( map_sem_to_Segment_stack,
- NULL, (Word*)(HChar*)&xa, (Word)sem )) {
+ NULL, (Word*)&xa, (Word)sem )) {
/* xa is the stack for this semaphore. */
Word sz = VG_(sizeXA)( xa );
tl_assert(sz >= 0);
@@ -6586,8 +6586,8 @@
HG_(initIterFM)( laog );
me = NULL;
links = NULL;
- while (HG_(nextIterFM)( laog, (Word*)(HChar*)&me,
- (Word*)(HChar*)&links )) {
+ while (HG_(nextIterFM)( laog, (Word*)&me,
+ (Word*)&links )) {
tl_assert(me);
tl_assert(links);
VG_(printf)(" node %p:\n", me);
@@ -6624,7 +6624,7 @@
/* Update the out edges for src */
keyW = 0;
links = NULL;
- if (HG_(lookupFM)( laog, &keyW, (Word*)(HChar*)&links, (Word)src )) {
+ if (HG_(lookupFM)( laog, &keyW, (Word*)&links, (Word)src )) {
WordSetID outs_new;
tl_assert(links);
tl_assert(keyW == (Word)src);
@@ -6640,7 +6640,7 @@
/* Update the in edges for dst */
keyW = 0;
links = NULL;
- if (HG_(lookupFM)( laog, &keyW, (Word*)(HChar*)&links, (Word)dst )) {
+ if (HG_(lookupFM)( laog, &keyW, (Word*)&links, (Word)dst )) {
WordSetID inns_new;
tl_assert(links);
tl_assert(keyW == (Word)dst);
@@ -6691,7 +6691,7 @@
/* Update the out edges for src */
keyW = 0;
links = NULL;
- if (HG_(lookupFM)( laog, &keyW, (Word*)(HChar*)&links, (Word)src )) {
+ if (HG_(lookupFM)( laog, &keyW, (Word*)&links, (Word)src )) {
tl_assert(links);
tl_assert(keyW == (Word)src);
links->outs = HG_(delFromWS)( univ_laog, links->outs, (Word)dst );
@@ -6699,7 +6699,7 @@
/* Update the in edges for dst */
keyW = 0;
links = NULL;
- if (HG_(lookupFM)( laog, &keyW, (Word*)(HChar*)&links, (Word)dst )) {
+ if (HG_(lookupFM)( laog, &keyW, (Word*)&links, (Word)dst )) {
tl_assert(links);
tl_assert(keyW == (Word)dst);
links->inns = HG_(delFromWS)( univ_laog, links->inns, (Word)src );
@@ -6712,7 +6712,7 @@
LAOGLinks* links;
keyW = 0;
links = NULL;
- if (HG_(lookupFM)( laog, &keyW, (Word*)(HChar*)&links, (Word)lk )) {
+ if (HG_(lookupFM)( laog, &keyW, (Word*)&links, (Word)lk )) {
tl_assert(links);
tl_assert(keyW == (Word)lk);
return links->outs;
@@ -6727,7 +6727,7 @@
LAOGLinks* links;
keyW = 0;
links = NULL;
- if (HG_(lookupFM)( laog, &keyW, (Word*)(HChar*)&links, (Word)lk )) {
+ if (HG_(lookupFM)( laog, &keyW, (Word*)&links, (Word)lk )) {
tl_assert(links);
tl_assert(keyW == (Word)lk);
return links->inns;
@@ -6748,8 +6748,8 @@
me = NULL;
links = NULL;
if (0) VG_(printf)("laog sanity check\n");
- while (HG_(nextIterFM)( laog, (Word*)(HChar*)&me,
- (Word*)(HChar*)&links )) {
+ while (HG_(nextIterFM)( laog, (Word*)&me,
+ (Word*)&links )) {
tl_assert(me);
tl_assert(links);
HG_(getPayloadWS)( &ws_words, &ws_size, univ_laog, links->inns );
@@ -6883,7 +6883,7 @@
key.dst_ec = NULL;
found = NULL;
if (HG_(lookupFM)( laog_exposition,
- (Word*)(HChar*)&found, NULL, (Word)&key )) {
+ (Word*)&found, NULL, (Word)&key )) {
tl_assert(found != &key);
tl_assert(found->src_ga == key.src_ga);
tl_assert(found->dst_ga == key.dst_ga);
@@ -7521,7 +7521,7 @@
(void*)args[1]);
map_pthread_t_to_Thread_INIT();
found = HG_(lookupFM)( map_pthread_t_to_Thread,
- NULL, (Word*)(HChar*)&thr_q, (Word)args[1] );
+ NULL, (Word*)&thr_q, (Word)args[1] );
/* Can this fail? It would mean that our pthread_join
wrapper observed a successful join on args[1] yet that
thread never existed (or at least, it never lodged an
@@ -7673,7 +7673,7 @@
tl_assert(string_table);
}
if (HG_(lookupFM)( string_table,
- NULL, (Word*)(HChar*)©, (Word)str )) {
+ NULL, (Word*)©, (Word)str )) {
tl_assert(copy);
if (0) VG_(printf)("string_table_strdup: %p -> %p\n", str, copy );
return copy;
@@ -7707,7 +7707,7 @@
yaWFM = HG_(newFM)( hg_zalloc, hg_free, lock_unique_cmp );
tl_assert(yaWFM);
}
- if (!HG_(lookupFM)( yaWFM, NULL, (Word*)(HChar*)&lkp, (Word)lkn)) {
+ if (!HG_(lookupFM)( yaWFM, NULL, (Word*)&lkp, (Word)lkn)) {
lkp = hg_zalloc( sizeof(Lock) );
*lkp = *lkn;
lkp->admin = NULL;
@@ -8499,7 +8499,7 @@
/* "stuvw" --> stuvw (binary) */
else if (VG_CLO_STREQN(18, arg, "--tc-sanity-flags=")) {
Int j;
- char* opt = & arg[18];
+ Char* opt = & arg[18];
if (5 != VG_(strlen)(opt)) {
VG_(message)(Vg_UserMsg,
Modified: trunk/helgrind/hg_wordset.c
===================================================================
--- trunk/helgrind/hg_wordset.c 2007-11-16 10:05:47 UTC (rev 7162)
+++ trunk/helgrind/hg_wordset.c 2007-11-16 12:02:43 UTC (rev 7163)
@@ -281,7 +281,7 @@
causes failures on a 64-bit platform. */
tl_assert(wv_new->owner == wsu);
have = HG_(lookupFM)( wsu->vec2ix,
- (Word*)(HChar*)&wv_old, (Word*)&ix_old,
+ (Word*)&wv_old, (Word*)&ix_old,
(Word)wv_new );
if (have) {
tl_assert(wv_old != wv_new);
|
|
From: Josef W. <Jos...@gm...> - 2007-11-16 11:05:56
|
On Thursday 15 November 2007, Nicholas Nethercote wrote: > On Thu, 15 Nov 2007, Josef Weidendorfer wrote: > > > The "global single option" was meant to be about the output file only. > > Of course there also is a log output that already can be redirected > > with "--log-file". But we currently do not have a per-tool option for the log > > output of each tool. Why do we want different options to specify the output > > file of each tool then? > > Ok, I think you're suggesting we have just two options, something like: > > --log-file: for logging output, eg. what normally goes to stderr > > --out-file: for tool-specific file output, eg. Cachegrind/Massif Yes, that was the idea. > I find --out-file confusing. The difference with --log-file is not > immediately clear. Which difference? Do you think that people could confuse these two options? > Also, what about tools that don't create a file, like > Memcheck -- is --out-file ignored? Should it cause an abort if it's used? > I think having options that all tools must implement is not a good idea. We > already have some (eg. -v) but I'd like to avoid more. It just would be handled the same as other tool-specific options. Ie. it only would be a convention among tools, not technically enforced. > In comparison, if we have a --cachegrind-out-file option, it's very clear > what it does, particularly if the default name is "cachegrind.out.<pid>". I am not really settled about "--out-file". I just think that options for similar functions in different tools should show some consistency. So I am really fine with an option "--<toolname>-out-file=..." with support for patterns (like %p). So I would change the according callgrind option to "--callgrind-out-file=...", independent of the fact that callgrind could produce further files with additional suffix. Is this OK? Josef > > Nick > |
|
From: <sv...@va...> - 2007-11-16 10:05:44
|
Author: sewardj
Date: 2007-11-16 10:05:47 +0000 (Fri, 16 Nov 2007)
New Revision: 7162
Log:
Change the baseline optimisation level from -O to -O2.
Modified:
trunk/Makefile.flags.am
trunk/helgrind/Makefile.am
Modified: trunk/Makefile.flags.am
===================================================================
--- trunk/Makefile.flags.am 2007-11-16 04:01:57 UTC (rev 7161)
+++ trunk/Makefile.flags.am 2007-11-16 10:05:47 UTC (rev 7162)
@@ -1,9 +1,14 @@
-# Baseline flags for all compilations
-AM_CFLAGS_BASE = -O -g -Wmissing-prototypes -Winline -Wall -Wshadow \
+# Baseline flags for all compilations. Aim here is to maximise
+# performance and get whatever useful warnings we can out of gcc.
+AM_CFLAGS_BASE = -O2 -g -Wmissing-prototypes -Winline -Wall -Wshadow \
-Wpointer-arith -Wstrict-prototypes -Wmissing-declarations
-AM_CFLAGS_PIC = -fpic -fno-omit-frame-pointer
+# These flags are used for building the preload shared objects.
+# The aim is to give reasonable performance but also to have good
+# stack traces, since users often see stack traces extending
+# into (and through) the preloads.
+AM_CFLAGS_PIC = -O -g -fpic -fno-omit-frame-pointer
# Flags for specific targets
AM_FLAG_M3264_X86_LINUX = @FLAG_M32@
Modified: trunk/helgrind/Makefile.am
===================================================================
--- trunk/helgrind/Makefile.am 2007-11-16 04:01:57 UTC (rev 7161)
+++ trunk/helgrind/Makefile.am 2007-11-16 10:05:47 UTC (rev 7162)
@@ -23,7 +23,7 @@
VGPRELOAD_HELGRIND_SOURCES_COMMON = hg_intercepts.c
vgpreload_helgrind_x86_linux_so_SOURCES = $(VGPRELOAD_HELGRIND_SOURCES_COMMON)
-vgpreload_helgrind_x86_linux_so_CPPFLAGS = $(AM_CPPFLAGS_X86_LINUX) -O -g -fno-omit-frame-pointer
+vgpreload_helgrind_x86_linux_so_CPPFLAGS = $(AM_CPPFLAGS_X86_LINUX)
vgpreload_helgrind_x86_linux_so_CFLAGS = $(AM_CFLAGS_X86_LINUX) $(AM_CFLAGS_PIC)
vgpreload_helgrind_x86_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_X86_LINUX)
vgpreload_helgrind_x86_linux_so_LDFLAGS = \
@@ -31,7 +31,7 @@
$(LIBREPLACEMALLOC_LDFLAGS_X86_LINUX)
vgpreload_helgrind_amd64_linux_so_SOURCES = $(VGPRELOAD_HELGRIND_SOURCES_COMMON)
-vgpreload_helgrind_amd64_linux_so_CPPFLAGS = $(AM_CPPFLAGS_AMD64_LINUX) -O -g
+vgpreload_helgrind_amd64_linux_so_CPPFLAGS = $(AM_CPPFLAGS_AMD64_LINUX)
vgpreload_helgrind_amd64_linux_so_CFLAGS = $(AM_CFLAGS_AMD64_LINUX) $(AM_CFLAGS_PIC)
vgpreload_helgrind_amd64_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_AMD64_LINUX)
vgpreload_helgrind_amd64_linux_so_LDFLAGS = \
@@ -39,7 +39,7 @@
$(LIBREPLACEMALLOC_LDFLAGS_AMD64_LINUX)
vgpreload_helgrind_ppc32_linux_so_SOURCES = $(VGPRELOAD_HELGRIND_SOURCES_COMMON)
-vgpreload_helgrind_ppc32_linux_so_CPPFLAGS = $(AM_CPPFLAGS_PPC32_LINUX) -O -g
+vgpreload_helgrind_ppc32_linux_so_CPPFLAGS = $(AM_CPPFLAGS_PPC32_LINUX)
vgpreload_helgrind_ppc32_linux_so_CFLAGS = $(AM_CFLAGS_PPC32_LINUX) $(AM_CFLAGS_PIC)
vgpreload_helgrind_ppc32_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_PPC32_LINUX)
vgpreload_helgrind_ppc32_linux_so_LDFLAGS = \
@@ -47,7 +47,7 @@
$(LIBREPLACEMALLOC_LDFLAGS_PPC32_LINUX)
vgpreload_helgrind_ppc64_linux_so_SOURCES = $(VGPRELOAD_HELGRIND_SOURCES_COMMON)
-vgpreload_helgrind_ppc64_linux_so_CPPFLAGS = $(AM_CPPFLAGS_PPC64_LINUX) -O -g
+vgpreload_helgrind_ppc64_linux_so_CPPFLAGS = $(AM_CPPFLAGS_PPC64_LINUX)
vgpreload_helgrind_ppc64_linux_so_CFLAGS = $(AM_CFLAGS_PPC64_LINUX) $(AM_CFLAGS_PIC)
vgpreload_helgrind_ppc64_linux_so_DEPENDENCIES = $(LIBREPLACEMALLOC_PPC64_LINUX)
vgpreload_helgrind_ppc64_linux_so_LDFLAGS = \
@@ -55,7 +55,7 @@
$(LIBREPLACEMALLOC_LDFLAGS_PPC64_LINUX)
vgpreload_helgrind_ppc32_aix5_so_SOURCES = $(VGPRELOAD_HELGRIND_SOURCES_COMMON)
-vgpreload_helgrind_ppc32_aix5_so_CPPFLAGS = $(AM_CPPFLAGS_PPC32_AIX5) -O -g
+vgpreload_helgrind_ppc32_aix5_so_CPPFLAGS = $(AM_CPPFLAGS_PPC32_AIX5)
vgpreload_helgrind_ppc32_aix5_so_CFLAGS = $(AM_CFLAGS_PPC32_AIX5) $(AM_CFLAGS_PIC)
vgpreload_helgrind_ppc32_aix5_so_DEPENDENCIES = $(LIBREPLACEMALLOC_PPC32_AIX5)
vgpreload_helgrind_ppc32_aix5_so_LDFLAGS = \
@@ -63,7 +63,7 @@
$(LIBREPLACEMALLOC_LDFLAGS_PPC32_AIX5)
vgpreload_helgrind_ppc64_aix5_so_SOURCES = $(VGPRELOAD_HELGRIND_SOURCES_COMMON)
-vgpreload_helgrind_ppc64_aix5_so_CPPFLAGS = $(AM_CPPFLAGS_PPC64_AIX5) -O -g
+vgpreload_helgrind_ppc64_aix5_so_CPPFLAGS = $(AM_CPPFLAGS_PPC64_AIX5)
vgpreload_helgrind_ppc64_aix5_so_CFLAGS = $(AM_CFLAGS_PPC64_AIX5) $(AM_CFLAGS_PIC)
vgpreload_helgrind_ppc64_aix5_so_DEPENDENCIES = $(LIBREPLACEMALLOC_PPC64_AIX5)
vgpreload_helgrind_ppc64_aix5_so_LDFLAGS = \
|
|
From: Julian S. <js...@ac...> - 2007-11-16 09:52:53
|
> With appropriate interceptors added to hg_interceps.c, the picture is > different. > The test now fails due to missed timeouts (at least it looks so). > See attachment log2. We now see much more LSETs. Try increasing N_WAY_BITS from 16 to 17. That might improve performance a bit. Run on the fastest machine you have, with the largest L2 cache you can find (high end Core 2 machine?) > How do I make sure that the test fails due to delayed timeouts and not due > to something else? I don't know. Make your application have longer timeouts? > Can I run helgrind so that it does all the intrusion (instrumentation), but > does *not* do any TSET/LSET/etc bookkeeping? No. What functionality should and should not be available in this "reduced functionality" mode? > Yet another question: can I include helgrind.h into my program as an > alternative to creating intercepts for my own locking primitives? Do you > have examples? No and no. J |
|
From: Bart V. A. <bar...@gm...> - 2007-11-16 07:35:27
|
On Nov 16, 2007 5:02 AM, <sv...@va...> wrote: > Modified: > trunk/docs/internals/3_2_BUGSTATUS.txt > ... > -ppc32-linux getitimer w/ patch, devs@, 3 Sept. > +n-i-bz ppc32-linux getitimer w/ patch, devs@, 3 Sept. > ... 145887 PPC32: getitimer() system call is not supported (patch) > Hello Julian, The patch I posted on the Valgrind developers mailing list that adds ppc32-linux getitimer() support is the same patch as the one I attached to bugzilla item 145887 (modulo whitespace). Or: the first entry may be removed from 3_2_BUGSTATUS.txt Regards, Bart Van Assche. |
|
From: <sv...@va...> - 2007-11-16 04:01:59
|
Author: sewardj
Date: 2007-11-16 04:01:57 +0000 (Fri, 16 Nov 2007)
New Revision: 7161
Log:
Update.
Modified:
trunk/docs/internals/3_2_BUGSTATUS.txt
Modified: trunk/docs/internals/3_2_BUGSTATUS.txt
===================================================================
--- trunk/docs/internals/3_2_BUGSTATUS.txt 2007-11-16 03:55:48 UTC (rev 7160)
+++ trunk/docs/internals/3_2_BUGSTATUS.txt 2007-11-16 04:01:57 UTC (rev 7161)
@@ -12,15 +12,18 @@
Add regtest for #149519.
-ppc32-linux getitimer w/ patch, devs@, 3 Sept.
+n-i-bz ppc32-linux getitimer w/ patch, devs@, 3 Sept.
-r6783/6784 x86_linux_REDIR_FOR_index() broken (Fri Jul 27)
+n-i-bz r6783/6784 x86_linux_REDIR_FOR_index() broken (Fri Jul 27)
-priv/guest-amd64/toIR.c:2512 (dis_op2_E_G): Assertion `0' failed.
-(Michael Abshoff, users@, Sat Aug 11)
+n-i-bz vx1794 priv/guest-amd64/toIR.c:2512 (dis_op2_E_G): Assertion
+ `0' failed. (Michael Abshoff, users@, Sat Aug 11)
-(vx1786, r6791) x86 INT insn (29 June) (INT (0xCD) 0x40 - 0x43)
+n-i-bz vx1786,r6791 x86 INT insn (29 June) (INT (0xCD) 0x40 - 0x43)
+n-i-bz [patch] Add sys_utimensat system call for Linux x86
+ platform (Oct 25)
+
79844 fixed Helgrind complains about race condition which does not exist
124478 glibc-fix memcheck reports uninitialized bytes on
@@ -29,14 +32,14 @@
128359 glibc-fix Please suppress the uninitialized bytes report
on getifaddrs() (glibc 2.3.3)
-133962 FIXED:r?? unhandled instruction bytes: 0xF2 0x4C 0xF 0x10
+133962 vx1792 unhandled instruction bytes: 0xF2 0x4C 0xF 0x10
134990 fixed use -fno-stack-protector if possible
136382 ==134990
137396 fixed :-) I would really like helgrind to work again...
-137714 vx1787 (maskmovq, maskmovdq - reopened for amd64)
+137714 vx1787 x86/amd64->IR: 0x66 0xF 0xF7 0xC6 (maskmovq, maskmovdq)
145559 valgrind aborts when malloc_stats is called
145609 valgrind aborts all runs with 'repeated section!'
@@ -44,30 +47,30 @@
145837 ==149519
145887 PPC32: getitimer() system call is not supported (patch)
-146252 amd64->IR: handle Group 5 extended CALL and JMP insns
+146252 queried amd64->IR: handle Group 5 extended CALL and JMP insns
with non-reg operands of sz==8
146701 ==134990
146781 Adding support for private futexes
147325 valgrind internal error on syscall (SYS_io_destroy, 0)
-147498 popular amd64->IR: 0xF0 0xF 0xB0 0xF (lock cmpxchg %cl,(%rdi))
-147628 SALC opcode 0xd6 unimplemented
+147498 vx1795 amd64->IR: 0xF0 0xF 0xB0 0xF (lock cmpxchg %cl,(%rdi))
+147628 vx1796 SALC opcode 0xd6 unimplemented
147825 r6793 crash on amd64-linux with gcc 4.2 and glibc 2.6 (CFI)
148096 VALGRIND_MALLOCLIKE_BLOCK not working correctly?
148174 r6855 Incorrect type of freed_list_volume causes
assertion with large memory allocations
148254 crash writing global var on ppc64 from instrumentation fn
-148363 amd64->IR: 0x65 0x4C 0x8B 0x1C (mov %gs:0x10,%r11)
+148363 marginal amd64->IR: 0x65 0x4C 0x8B 0x1C (mov %gs:0x10,%r11)
148447 vx1776 x86_64 : new NOP codes: 66 66 66 66 2e 0f 1f
148742 cantrepro Leak-check fails assert on exit
-148984 valid? unhandled instruction bytes: 0xF3 0xDD 0x6 0xF3
+148984 invalid unhandled instruction bytes: 0xF3 0xDD 0x6 0xF3
149182 vx1784/5 PPC Trap instructions not implemented in valgrind
-149838 x86->IR: 0xF 0xAE 0xD 0xE0
+149838 marginal x86->IR: 0xF 0xAE 0xD 0xE0 (FXRSTOR ?)
149519 r6813/4 ppc32: V aborts with SIGSEGV on execution of a signal handler
149878 add (proper) check for calloc integer overflow
-149892 amd64->IR: 0x66 0xF 0xF7 0xD0
+149892 ==137714
150044 SEGV during stack deregister
150045 Valgrind doesn't recognize pthread stack as a stack
@@ -75,12 +78,13 @@
150380 dwarf/gcc interoperation (dwarf3 read problems)
(related to 129937 ?)
150408 ==148447
-150678 priv/guest-amd64/toIR.c:3741 (dis_Grp5): Assertion
+150678 queried priv/guest-amd64/toIR.c:3741 (dis_Grp5): Assertion
`sz == 4' failed when running Mono on x86_64
+ (== 146252 ?)
150681 Check definedness of client request arguments
151209 r7028 V unable to execute programs for users with UID > 2^16
-151570 Bogus "Conditional jump ..." error with bit field (3.1.1)
+151570 cantrepro Bogus "Conditional jump ..." error with bit field (3.1.1)
151886 Suppression entry Memcheck:Param ignored
151908 --db-attach unimplemented on ppc64
151935 --db-command= not parsed properly in .valgrindrc
|
|
From: <sv...@va...> - 2007-11-16 03:55:47
|
Author: sewardj
Date: 2007-11-16 03:55:48 +0000 (Fri, 16 Nov 2007)
New Revision: 7160
Log:
Rename a couple more UInts which really should be SVals.
Modified:
trunk/helgrind/hg_main.c
Modified: trunk/helgrind/hg_main.c
===================================================================
--- trunk/helgrind/hg_main.c 2007-11-15 22:33:32 UTC (rev 7159)
+++ trunk/helgrind/hg_main.c 2007-11-16 03:55:48 UTC (rev 7160)
@@ -3818,7 +3818,7 @@
# undef PUT
- tl_assert( (((Char*)dst) - ((Char*)dst0)) == 8 * sizeof(UInt) );
+ tl_assert( (((Char*)dst) - ((Char*)dst0)) == 8 * sizeof(SVal) );
return dst;
}
@@ -3842,7 +3842,7 @@
/* Assert we wrote N_LINE_ARANGE shadow values. */
tl_assert( ((HChar*)dst) - ((HChar*)dst0)
- == nDst * sizeof(UInt) );
+ == nDst * sizeof(SVal) );
return anyShared;
}
|
|
From: Tom H. <th...@cy...> - 2007-11-16 03:51:54
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-11-16 03:15:02 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 == 317 tests, 59 stderr failures, 1 stdout failure, 27 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/match-overrun (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/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-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/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/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) ================================================= == 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 == 316 tests, 58 stderr failures, 1 stdout failure, 27 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/match-overrun (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/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/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-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/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/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Nov 16 03:36:23 2007 --- new.short Fri Nov 16 03:51:55 2007 *************** *** 8,10 **** ! == 316 tests, 58 stderr failures, 1 stdout failure, 27 post failures == memcheck/tests/addressable (stderr) --- 8,10 ---- ! == 317 tests, 59 stderr failures, 1 stdout failure, 27 post failures == memcheck/tests/addressable (stderr) *************** *** 31,32 **** --- 31,33 ---- memcheck/tests/stack_changes (stderr) + memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) |
|
From: Tom H. <th...@cy...> - 2007-11-16 03:28:02
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2007-11-16 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 == 351 tests, 6 stderr failures, 2 stdout failures, 0 post failures == 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 == 350 tests, 6 stderr failures, 2 stdout failures, 0 post failures == 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) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Nov 16 03:14:05 2007 --- new.short Fri Nov 16 03:28:04 2007 *************** *** 8,10 **** ! == 350 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 351 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) |
|
From: Tom H. <th...@cy...> - 2007-11-16 03:21:16
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-11-16 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 == 353 tests, 24 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/fdleak_fcntl (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/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/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) ================================================= == 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 == 352 tests, 24 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/tls (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/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/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) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri Nov 16 03:07:34 2007 --- new.short Fri Nov 16 03:21:20 2007 *************** *** 8,10 **** ! == 352 tests, 24 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 353 tests, 24 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 16,18 **** none/tests/mremap2 (stdout) - none/tests/tls (stdout) helgrind/tests/hg01_all_ok (stderr) --- 16,17 ---- |
|
From: Tom H. <th...@cy...> - 2007-11-16 03:11:16
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2007-11-16 03:10:04 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... failed Last 20 lines of verbose log follow echo checking dependency style of g++... gcc3 checking for ranlib... ranlib checking for perl... /usr/bin/perl checking for gdb... /usr/bin/gdb checking dependency style of gcc... gcc3 checking for a supported version of gcc... ok (gcc (GCC) 4.1.2 20070925 (Red Hat 4.1.2-33)) checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking for a supported CPU... ok (x86_64) checking for use as an inner Valgrind... no checking for a 64-bit only build... no checking for a 32-bit only build... no checking for a supported OS... ok (linux-gnu) checking for the kernel version... 2.6 family (2.6.23.1-49.fc8) checking for 32 bit build support... yes checking for a supported CPU/OS combination... ok (x86_64-linux-gnu) checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking the libc version... unsupported version configure: error: Valgrind requires glibc version 2.2 - 2.6 |
|
From: <sv...@va...> - 2007-11-16 02:30:39
|
Author: sewardj
Date: 2007-11-16 02:30:38 +0000 (Fri, 16 Nov 2007)
New Revision: 1796
Log:
Implement SALC. Fixes #147628.
Modified:
trunk/priv/guest-x86/toIR.c
Modified: trunk/priv/guest-x86/toIR.c
===================================================================
--- trunk/priv/guest-x86/toIR.c 2007-11-16 00:18:44 UTC (rev 1795)
+++ trunk/priv/guest-x86/toIR.c 2007-11-16 02:30:38 UTC (rev 1796)
@@ -12207,6 +12207,19 @@
stmt( IRStmt_Put( OFFB_CC_NDEP, mkU32(0) ));
break;
+ case 0xD6: /* SALC */
+ t0 = newTemp(Ity_I32);
+ t1 = newTemp(Ity_I32);
+ assign( t0, binop(Iop_And32,
+ mk_x86g_calculate_eflags_c(),
+ mkU32(1)) );
+ assign( t1, binop(Iop_Sar32,
+ binop(Iop_Shl32, mkexpr(t0), mkU8(31)),
+ mkU8(31)) );
+ putIReg(1, R_EAX, unop(Iop_32to8, mkexpr(t1)) );
+ DIP("salc\n");
+ break;
+
/* REPNE prefix insn */
case 0xF2: {
Addr32 eip_orig = guest_EIP_bbstart + delta - 1;
|
|
From: <js...@ac...> - 2007-11-16 01:20:35
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-11-16 02:00:01 CET 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 == 284 tests, 25 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) 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/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (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) |
|
From: <sv...@va...> - 2007-11-16 00:18:42
|
Author: sewardj
Date: 2007-11-16 00:18:44 +0000 (Fri, 16 Nov 2007)
New Revision: 1795
Log:
Enable CMPXCHG Gb,Eb. Fixes #147498.
Modified:
trunk/priv/guest-amd64/toIR.c
Modified: trunk/priv/guest-amd64/toIR.c
===================================================================
--- trunk/priv/guest-amd64/toIR.c 2007-11-15 23:30:16 UTC (rev 1794)
+++ trunk/priv/guest-amd64/toIR.c 2007-11-16 00:18:44 UTC (rev 1795)
@@ -14247,9 +14247,13 @@
/* =-=-=-=-=-=-=-=-=- CMPXCHG -=-=-=-=-=-=-=-=-=-= */
-//.. case 0xB0: /* CMPXCHG Gb,Eb */
-//.. delta = dis_cmpxchg_G_E ( sorb, 1, delta );
-//.. break;
+ case 0xB0: { /* CMPXCHG Gb,Eb */
+ Bool ok = True;
+ if (haveF2orF3(pfx)) goto decode_failure;
+ delta = dis_cmpxchg_G_E ( &ok, pfx, 1, delta );
+ if (!ok) goto decode_failure;
+ break;
+ }
case 0xB1: { /* CMPXCHG Gv,Ev (allowed in 16,32,64 bit) */
Bool ok = True;
if (haveF2orF3(pfx)) goto decode_failure;
|