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
(32) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
1
(6) |
2
(7) |
|
3
(12) |
4
(9) |
5
(12) |
6
(9) |
7
(18) |
8
(10) |
9
(17) |
|
10
(15) |
11
(22) |
12
(16) |
13
(18) |
14
(9) |
15
(14) |
16
(18) |
|
17
(24) |
18
(11) |
19
(15) |
20
(29) |
21
(19) |
22
(20) |
23
(9) |
|
24
(25) |
25
(25) |
26
(38) |
27
(22) |
28
(16) |
29
(17) |
|
|
From: Tom H. <th...@cy...> - 2008-02-04 03:45:12
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-02-04 03:20: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 == 375 tests, 15 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc08_hbl2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/sem_as_mutex2 (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 == 375 tests, 15 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/sem_as_mutex2 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Feb 4 03:33:06 2008 --- new.short Mon Feb 4 03:45:12 2008 *************** *** 8,10 **** ! == 375 tests, 15 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) --- 8,10 ---- ! == 375 tests, 15 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/addressable (stderr) *************** *** 21,22 **** --- 21,23 ---- none/tests/mremap2 (stdout) + helgrind/tests/tc08_hbl2 (stdout) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-04 03:38:59
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-02-04 03:25:04 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 == 373 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/sem_as_mutex2 (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 == 373 tests, 6 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Feb 4 03:32:13 2008 --- new.short Mon Feb 4 03:39:02 2008 *************** *** 8,10 **** ! == 373 tests, 6 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 373 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 20,21 **** --- 20,22 ---- helgrind/tests/tc22_exit_w_lock (stderr) + exp-drd/tests/sem_as_mutex2 (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-04 03:33:18
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-02-04 03:05:07 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 373 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-04 03:28:32
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-02-04 03:10:04 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 == 373 tests, 9 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (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 == 373 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Feb 4 03:19:54 2008 --- new.short Mon Feb 4 03:28:33 2008 *************** *** 8,10 **** ! == 373 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 373 tests, 9 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 16,17 **** --- 16,18 ---- none/tests/mremap2 (stdout) + none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-04 03:14:20
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-02-04 03:00:02 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 375 tests, 30 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/blockfault (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/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: Nicholas N. <nj...@cs...> - 2008-02-03 23:09:59
|
Hi, I've written an experimental Valgrind coverage tool, called VCov. To try it out, do this: svn co svn://svn.valgrind.org/valgrind/branches/VCOV Then build in the usual way (see the README file). To run it, use 'valgrind --tool=exp-vcov <program>'. It's pretty simple. It just records, for each line of source code, how many instructions that were derived from that line were executed. It aggregates data from multiple executions. It all goes in a file called "vcov.out". To interpret the data, run this command: perl exp-vcov/vc_annotate vcov.out The output gives total, per-file and per-line coverage. An example: -------------------------------------------------------------------------------- Total coverage -------------------------------------------------------------------------------- 100.0% ( 9 of 9 lines) -------------------------------------------------------------------------------- Per-file coverage (files with the most unexecuted lines are shown first) -------------------------------------------------------------------------------- 100.0% ( 3 of 3 lines): /home/njn/grind/trunk9/b.h 100.0% ( 6 of 6 lines): /home/njn/grind/trunk9/a.c -------------------------------------------------------------------------------- /home/njn/grind/trunk9/b.h -------------------------------------------------------------------------------- -: 1:__inline__ int foo(void) 4: 2:{ 2: 3: return 0; 4: 4:} -------------------------------------------------------------------------------- /home/njn/grind/trunk9/a.c -------------------------------------------------------------------------------- -: 1:#include <stdio.h> -: 2:#include "b.h" -: 3: -: 4:int main(int argc, char* argv[]) 20: 5:{ 4: 6: if (argc < 2) 5: 7: printf("hello, world\n"); -: 8: else 4: 9: printf("hello, extended world\n"); -: 10: 2: 11: return foo(); 4: 12:} -------------------------------------------------------------------------------- Total coverage -------------------------------------------------------------------------------- 88.9% ( 8 of 9 lines) -------------------------------------------------------------------------------- Per-file coverage (files with the most unexecuted lines are shown first) -------------------------------------------------------------------------------- 83.3% ( 5 of 6 lines): /home/njn/grind/trunk9/a.c 100.0% ( 3 of 3 lines): /home/njn/grind/trunk9/b.h -------------------------------------------------------------------------------- /home/njn/grind/trunk9/b.h -------------------------------------------------------------------------------- -: 1:__inline__ int foo(void) 2: 2:{ 1: 3: return 0; 2: 4:} -------------------------------------------------------------------------------- /home/njn/grind/trunk9/a.c -------------------------------------------------------------------------------- -: 1:#include <stdio.h> -: 2:#include "b.h" -: 3: -: 4:int main(int argc, char* argv[]) 10: 5:{ 2: 6: if (argc < 2) 5: 7: printf("hello, world\n"); -: 8: else #####: 9: printf("hello, extended world\n"); -: 10: 1: 11: return foo(); 2: 12:} Non-executable lines are preceded with '-'. Lines that are executable but not executed are preceded with '######', so they are obvious. There are lots of shortcomings, but it gets the general idea across. Some things worth noting: - Files not compiled with -g won't have any results. - You can use the --fresh=yes option to overwrite any prior coverage data. - I plan to add the ability to change the name of the output file. - Results with --trace-children will be suspect, as there is no file locking done yet on the output file. - I hope to add some kind of branch coverage info, at least for the encountered branches. - If your program has a file for which no code is executed, it won't get included in the output. - I plan to add the ability to be more selective about which files get annotated (currently every file that has been executed and that can be found is annotated). Any comments are welcome. Nick |
|
From: <sv...@va...> - 2008-02-03 22:59:11
|
Author: njn
Date: 2008-02-03 22:59:08 +0000 (Sun, 03 Feb 2008)
New Revision: 7370
Log:
Added code for VCov. One minor change to the core: I added some code to
iterate through debuginfo Locs and inspect some of their attributes.
Added:
branches/VCOV/exp-vcov/
branches/VCOV/exp-vcov/Makefile.am
branches/VCOV/exp-vcov/docs/
branches/VCOV/exp-vcov/docs/Makefile.am
branches/VCOV/exp-vcov/docs/vc-manual.xml
branches/VCOV/exp-vcov/tests/
branches/VCOV/exp-vcov/tests/Makefile.am
branches/VCOV/exp-vcov/tests/filter_stderr
branches/VCOV/exp-vcov/tests/true.stderr.exp
branches/VCOV/exp-vcov/tests/true.stderr.out
branches/VCOV/exp-vcov/tests/true.vgtest
branches/VCOV/exp-vcov/vc_annotate
branches/VCOV/exp-vcov/vc_main.c
Modified:
branches/VCOV/Makefile.am
branches/VCOV/configure.in
branches/VCOV/coregrind/m_debuginfo/debuginfo.c
branches/VCOV/include/pub_tool_debuginfo.h
Modified: branches/VCOV/Makefile.am
===================================================================
--- branches/VCOV/Makefile.am 2008-02-03 22:35:58 UTC (rev 7369)
+++ branches/VCOV/Makefile.am 2008-02-03 22:59:08 UTC (rev 7370)
@@ -12,7 +12,8 @@
helgrind
EXP_TOOLS = exp-omega \
- exp-drd
+ exp-drd \
+ exp-vcov
# Put docs last because building the HTML is slow and we want to get
# everything else working before we try it.
Modified: branches/VCOV/configure.in
===================================================================
--- branches/VCOV/configure.in 2008-02-03 22:35:58 UTC (rev 7369)
+++ branches/VCOV/configure.in 2008-02-03 22:59:08 UTC (rev 7370)
@@ -1027,6 +1027,9 @@
exp-drd/Makefile
exp-drd/docs/Makefile
exp-drd/tests/Makefile
+ exp-vcov/Makefile
+ exp-vcov/tests/Makefile
+ exp-vcov/docs/Makefile
)
cat<<EOF
Modified: branches/VCOV/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- branches/VCOV/coregrind/m_debuginfo/debuginfo.c 2008-02-03 22:35:58 UTC (rev 7369)
+++ branches/VCOV/coregrind/m_debuginfo/debuginfo.c 2008-02-03 22:59:08 UTC (rev 7370)
@@ -478,6 +478,66 @@
/*------------------------------------------------------------*/
/*------------------------------------------------------------*/
+/*--- Iterating through SegInfos ---*/
+/*------------------------------------------------------------*/
+
+UInt VG_(seginfo_num_locs) ( const SegInfo *si )
+{
+ return si->loctab_used;
+}
+
+Bool VG_(seginfo_locN_addr)( const SegInfo *si, UInt n, Addr* addr )
+{
+ if (n < 0 || n > si->loctab_used)
+ return False;
+ else {
+ *addr = si->loctab[n].addr;
+ return True;
+ }
+}
+
+Bool VG_(seginfo_locN_size)( const SegInfo *si, UInt n, UInt* size)
+{
+ if (n < 0 || n > si->loctab_used)
+ return False;
+ else {
+ *size = si->loctab[n].size;
+ return True;
+ }
+}
+
+Bool VG_(seginfo_locN_line)( const SegInfo *si, UInt n, UInt* line)
+{
+ if (n < 0 || n > si->loctab_used)
+ return False;
+ else {
+ *line = si->loctab[n].lineno;
+ return True;
+ }
+}
+
+Bool VG_(seginfo_locN_filename)( const SegInfo *si, UInt n, Char** filename)
+{
+ if (n < 0 || n > si->loctab_used)
+ return False;
+ else {
+ *filename = si->loctab[n].filename;
+ return True;
+ }
+}
+
+Bool VG_(seginfo_locN_dirname)( const SegInfo *si, UInt n, Char** dirname)
+{
+ if (n < 0 || n > si->loctab_used)
+ return False;
+ else {
+ *dirname = si->loctab[n].dirname;
+ return True;
+ }
+}
+
+
+/*------------------------------------------------------------*/
/*--- Use of symbol table & location info to create ---*/
/*--- plausible-looking stack dumps. ---*/
/*------------------------------------------------------------*/
Added: branches/VCOV/exp-vcov/Makefile.am
===================================================================
--- branches/VCOV/exp-vcov/Makefile.am (rev 0)
+++ branches/VCOV/exp-vcov/Makefile.am 2008-02-03 22:59:08 UTC (rev 7370)
@@ -0,0 +1,68 @@
+include $(top_srcdir)/Makefile.tool.am
+
+bin_SCRIPTS = vc_annotate
+
+noinst_PROGRAMS =
+if VGP_X86_LINUX
+noinst_PROGRAMS += exp-vcov-x86-linux
+endif
+if VGP_AMD64_LINUX
+noinst_PROGRAMS += exp-vcov-amd64-linux
+endif
+if VGP_PPC32_LINUX
+noinst_PROGRAMS += exp-vcov-ppc32-linux
+endif
+if VGP_PPC64_LINUX
+noinst_PROGRAMS += exp-vcov-ppc64-linux
+endif
+if VGP_PPC32_AIX5
+noinst_PROGRAMS += exp-vcov-ppc32-aix5
+endif
+if VGP_PPC64_AIX5
+noinst_PROGRAMS += exp-vcov-ppc64-aix5
+endif
+
+VCOV_SOURCES_COMMON = vc_main.c
+
+exp_vcov_x86_linux_SOURCES = $(VCOV_SOURCES_COMMON)
+exp_vcov_x86_linux_CPPFLAGS = $(AM_CPPFLAGS_X86_LINUX)
+exp_vcov_x86_linux_CFLAGS = $(AM_CFLAGS_X86_LINUX)
+exp_vcov_x86_linux_DEPENDENCIES = $(COREGRIND_LIBS_X86_LINUX)
+exp_vcov_x86_linux_LDADD = $(TOOL_LDADD_X86_LINUX)
+exp_vcov_x86_linux_LDFLAGS = $(TOOL_LDFLAGS_X86_LINUX)
+
+exp_vcov_amd64_linux_SOURCES = $(VCOV_SOURCES_COMMON)
+exp_vcov_amd64_linux_CPPFLAGS = $(AM_CPPFLAGS_AMD64_LINUX)
+exp_vcov_amd64_linux_CFLAGS = $(AM_CFLAGS_AMD64_LINUX)
+exp_vcov_amd64_linux_DEPENDENCIES = $(COREGRIND_LIBS_AMD64_LINUX)
+exp_vcov_amd64_linux_LDADD = $(TOOL_LDADD_AMD64_LINUX)
+exp_vcov_amd64_linux_LDFLAGS = $(TOOL_LDFLAGS_AMD64_LINUX)
+
+exp_vcov_ppc32_linux_SOURCES = $(VCOV_SOURCES_COMMON)
+exp_vcov_ppc32_linux_CPPFLAGS = $(AM_CPPFLAGS_PPC32_LINUX)
+exp_vcov_ppc32_linux_CFLAGS = $(AM_CFLAGS_PPC32_LINUX)
+exp_vcov_ppc32_linux_DEPENDENCIES = $(COREGRIND_LIBS_PPC32_LINUX)
+exp_vcov_ppc32_linux_LDADD = $(TOOL_LDADD_PPC32_LINUX)
+exp_vcov_ppc32_linux_LDFLAGS = $(TOOL_LDFLAGS_PPC32_LINUX)
+
+exp_vcov_ppc64_linux_SOURCES = $(VCOV_SOURCES_COMMON)
+exp_vcov_ppc64_linux_CPPFLAGS = $(AM_CPPFLAGS_PPC64_LINUX)
+exp_vcov_ppc64_linux_CFLAGS = $(AM_CFLAGS_PPC64_LINUX)
+exp_vcov_ppc64_linux_DEPENDENCIES = $(COREGRIND_LIBS_PPC64_LINUX)
+exp_vcov_ppc64_linux_LDADD = $(TOOL_LDADD_PPC64_LINUX)
+exp_vcov_ppc64_linux_LDFLAGS = $(TOOL_LDFLAGS_PPC64_LINUX)
+
+exp_vcov_ppc32_aix5_SOURCES = $(VCOV_SOURCES_COMMON)
+exp_vcov_ppc32_aix5_CPPFLAGS = $(AM_CPPFLAGS_PPC32_AIX5)
+exp_vcov_ppc32_aix5_CFLAGS = $(AM_CFLAGS_PPC32_AIX5)
+exp_vcov_ppc32_aix5_DEPENDENCIES = $(COREGRIND_LIBS_PPC32_AIX5)
+exp_vcov_ppc32_aix5_LDADD = $(TOOL_LDADD_PPC32_AIX5)
+exp_vcov_ppc32_aix5_LDFLAGS = $(TOOL_LDFLAGS_PPC32_AIX5)
+
+exp_vcov_ppc64_aix5_SOURCES = $(VCOV_SOURCES_COMMON)
+exp_vcov_ppc64_aix5_CPPFLAGS = $(AM_CPPFLAGS_PPC64_AIX5)
+exp_vcov_ppc64_aix5_CFLAGS = $(AM_CFLAGS_PPC64_AIX5)
+exp_vcov_ppc64_aix5_DEPENDENCIES = $(COREGRIND_LIBS_PPC64_AIX5)
+exp_vcov_ppc64_aix5_LDADD = $(TOOL_LDADD_PPC64_AIX5)
+exp_vcov_ppc64_aix5_LDFLAGS = $(TOOL_LDFLAGS_PPC64_AIX5)
+
Added: branches/VCOV/exp-vcov/docs/Makefile.am
===================================================================
--- branches/VCOV/exp-vcov/docs/Makefile.am (rev 0)
+++ branches/VCOV/exp-vcov/docs/Makefile.am 2008-02-03 22:59:08 UTC (rev 7370)
@@ -0,0 +1 @@
+EXTRA_DIST = vc-manual.xml
Added: branches/VCOV/exp-vcov/docs/vc-manual.xml
===================================================================
--- branches/VCOV/exp-vcov/docs/vc-manual.xml (rev 0)
+++ branches/VCOV/exp-vcov/docs/vc-manual.xml 2008-02-03 22:59:08 UTC (rev 7370)
@@ -0,0 +1,55 @@
+<?xml version="1.0"?> <!-- -*- sgml -*- -->
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
+
+<chapter id="vc-manual" xreflabel="VCov">
+
+<title>VCov: a coverage testing tool</title>
+
+<para>VCov is a coverage testing tool. It works quite like gcov,
+but has the big advantage that you don't have to recompile your program in
+order to use it.</para>
+
+<para>Things to cover here:</para>
+
+<orderedlist>
+
+ <listitem>
+ <para>What coverage is good for</para>
+ </listitem>
+
+ <listitem>
+ <para>Different kinds: line vs branch/decision vs path.
+ "Code Coverage Analysis" by Steve Cornett is a good explanation of
+ these basic kinds and other kinds (http://www.bullseye.com/coverage.html).
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>Stuff about debug info, compiling without optimisation</para>
+ </listitem>
+
+ <listitem>
+ <para>What coverage is good for</para>
+ </listitem>
+
+ <listitem>
+ <para>Gives instruction execution counts, not line execution counts.
+ Implications of this, inaccuracies.</para>
+ </listitem>
+
+ <listitem>
+ <para>Command line options</para>
+ </listitem>
+
+ <listitem>
+ <para>Created data files</para>
+ </listitem>
+
+ <listitem>
+ <para>using vc_annotate, .vcov files</para>
+ </listitem>
+
+</orderedlist>
+
+</chapter>
Added: branches/VCOV/exp-vcov/tests/Makefile.am
===================================================================
--- branches/VCOV/exp-vcov/tests/Makefile.am (rev 0)
+++ branches/VCOV/exp-vcov/tests/Makefile.am 2008-02-03 22:59:08 UTC (rev 7370)
@@ -0,0 +1,5 @@
+noinst_SCRIPTS = filter_stderr
+
+EXTRA_DIST = $(noinst_SCRIPTS) \
+ true.stderr.exp true.vgtest
+
Added: branches/VCOV/exp-vcov/tests/filter_stderr
===================================================================
--- branches/VCOV/exp-vcov/tests/filter_stderr (rev 0)
+++ branches/VCOV/exp-vcov/tests/filter_stderr 2008-02-03 22:59:08 UTC (rev 7370)
@@ -0,0 +1,9 @@
+#! /bin/sh
+
+dir=`dirname $0`
+
+$dir/../../tests/filter_stderr_basic |
+
+# Remove "VCov, ..." line and the following copyright line.
+sed "/^VCov, a coverage testing tool./ , /./ d"
+
Added: branches/VCOV/exp-vcov/tests/true.stderr.exp
===================================================================
--- branches/VCOV/exp-vcov/tests/true.stderr.exp (rev 0)
+++ branches/VCOV/exp-vcov/tests/true.stderr.exp 2008-02-03 22:59:08 UTC (rev 7370)
@@ -0,0 +1,2 @@
+
+
Added: branches/VCOV/exp-vcov/tests/true.stderr.out
===================================================================
--- branches/VCOV/exp-vcov/tests/true.stderr.out (rev 0)
+++ branches/VCOV/exp-vcov/tests/true.stderr.out 2008-02-03 22:59:08 UTC (rev 7370)
@@ -0,0 +1,15 @@
+
+0x8048350, true.c, 2
+0x8048351, true.c, 2
+0x8048353, true.c, 2
+0x8048356, true.c, 2
+0x8048359, true.c, 2
+0x804835E, true.c, 2
+0x8048361, true.c, 2
+0x8048364, true.c, 2
+0x8048367, true.c, 2
+0x804836A, true.c, 2
+0x804836C, true.c, 3
+0x8048371, true.c, 4
+0x8048372, true.c, 4
+
Added: branches/VCOV/exp-vcov/tests/true.vgtest
===================================================================
--- branches/VCOV/exp-vcov/tests/true.vgtest (rev 0)
+++ branches/VCOV/exp-vcov/tests/true.vgtest 2008-02-03 22:59:08 UTC (rev 7370)
@@ -0,0 +1 @@
+prog: ../../tests/true
Added: branches/VCOV/exp-vcov/vc_annotate
===================================================================
--- branches/VCOV/exp-vcov/vc_annotate (rev 0)
+++ branches/VCOV/exp-vcov/vc_annotate 2008-02-03 22:59:08 UTC (rev 7370)
@@ -0,0 +1,294 @@
+#! /lusr/bin/perl -w
+
+##--------------------------------------------------------------------##
+##--- VCov: annotating source files vc_annotate.in ---##
+##--------------------------------------------------------------------##
+
+# This file is part of VCov, a Valgrind tool for measuring execution
+# coverage.
+#
+# Copyright (C) 2005-2008 Nicholas Nethercote
+# nj...@va...
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+# 02111-1307, USA.
+#
+# The GNU General Public License is contained in the file COPYING.
+
+use strict;
+
+# XXX: this needs to be converted from 'vc_annotate' to 'vc_annotate.in'
+# before being distributed.
+
+# Version number
+my $version = "3.4.0.SVN";
+
+# Usage message.
+my $usage = <<END
+usage: vc_annotate [options] source-files
+
+ options for the user, with defaults in [ ], are:
+ -h --help show this message
+ -v --version show version
+
+ VCov is Copyright (C) 2005-2008 Nicholas Nethercote.
+ Both are licensed under the GNU General Public License, version 2.
+ Bug reports, feedback, admiration, abuse, etc, to: njn\@valgrind.org.
+
+END
+;
+
+# Coverage data file.
+my $input_file = undef;
+
+# List of user-specified source files to annotate.
+my @srcfiles;
+
+# Directories in which to look for annotation files.
+my @include_dirs = ("");
+
+# Files chosen for annotation on the command line.
+# key = basename (trimmed of any directory), value = full filename
+# XXX: needed? see @srcfiles above
+my %user_ann_files;
+
+# CCs, organised by filename and line_num for easy annotation.
+# hash(filename => hash(line_num => insn_exec_count))
+my %all_CCs;
+
+# Used in various places.
+my $fancy = '-' x 80 . "\n";
+
+
+#-----------------------------------------------------------------------------
+sub process_cmd_line()
+#-----------------------------------------------------------------------------
+{
+ for my $arg (@ARGV) {
+ # Option handling
+ if ($arg =~ /^-/) {
+ # --version
+ if ($arg =~ /^-v$|^--version$/) {
+ die("vc_annotate-$version\n");
+ } else { # -h and --help fall under this case
+ die($usage);
+ }
+
+ # Argument handling -- annotation file checking and selection.
+ # Stick filenames into a hash for quick 'n easy lookup throughout.
+ } else {
+ if (not defined $input_file) {
+ # First non-option argument is the output file.
+ $input_file = $arg;
+ } else {
+ # Subsequent non-option arguments are source files.
+ my $readable = 0;
+ foreach my $include_dir (@include_dirs) {
+ if (-r $include_dir . $arg) {
+ $readable = 1;
+ }
+ }
+ $readable or die("File $arg not found in any of: @include_dirs\n");
+ $user_ann_files{$arg} = 1;
+ }
+ }
+ }
+
+ # Must have chosen an input file
+ if (not defined $input_file) {
+ die($usage);
+ }
+}
+
+#-----------------------------------------------------------------------------
+sub read_coverage_file()
+#-----------------------------------------------------------------------------
+{
+ open(INPUTFILE, "< $input_file")
+ || die "Cannot open $input_file for reading\n";
+
+ my $curr_filename = undef;
+ my $curr_file_CCs = {}; # hash(line_num => insn_exec_count)
+
+ while (<INPUTFILE>) {
+ # Execution count lines.
+ if (s/^(\d+) (\d+)$//) {
+ my $line_num = $1;
+ my $n_execs = $2;
+ # Add line number to the file_CCs.
+ if (defined $curr_file_CCs->{$line_num}) {
+ die("$input_file:$.: line $line_num seen already");
+ }
+ $curr_file_CCs->{$line_num} = $n_execs;
+
+ # We test for fl= lines second, because they're much less common.
+ } elsif (/^fl=(.*)$/) {
+ my $next_filename = $1;
+ # Write-back CCs for the previous file, if there was one.
+ if (defined $curr_filename) {
+ $all_CCs{$curr_filename} = $curr_file_CCs
+ };
+ # Setup the CCs for the next file.
+ $curr_filename = $next_filename;
+ if (defined $all_CCs{$curr_filename}) {
+ die("$input_file:$.: file $curr_filename seen already");
+ }
+ $curr_file_CCs = {};
+
+ } else {
+ die("$input_file:$.: parse error\n");
+ }
+ }
+ # Write-back CCs for the final file, if there was one.
+ if (defined $curr_filename) {
+ $all_CCs{$curr_filename} = $curr_file_CCs
+ };
+ close(INPUTFILE);
+}
+
+#-----------------------------------------------------------------------------
+sub print_per_file_output()
+#-----------------------------------------------------------------------------
+{
+ # Totals for each file. This is an array of hashrefs.
+ my @file_totals;
+
+ my ($n_total_executed_lines, $n_total_unexecuted_lines) = (0, 0);
+
+ foreach my $src_file (keys %all_CCs) {
+ # If $src_file more recent than $infile, issue a warning. (Field #9
+ # is the time of the last modification.)
+ if ((stat $src_file)[9] > (stat $input_file)[9]) {
+ warn("warning: Source file '$src_file'\n");
+ warn(" is more recent than data file '$input_file'.\n");
+ warn(" Its annotations may be incorrect.\n");
+ }
+ my ($n_executed_lines, $n_unexecuted_lines) = (0, 0);
+ my $file_CCs = $all_CCs{$src_file};
+ # Count the number of executed and non-executed lines.
+ foreach my $n_execs (values( %$file_CCs )) {
+ if ($n_execs > 0) {
+ $n_total_executed_lines++;
+ $n_executed_lines++;
+ } else {
+ $n_total_unexecuted_lines++;
+ $n_unexecuted_lines++;
+ }
+ }
+ # Record the counts.
+ push(@file_totals,
+ {"filename" => $src_file,
+ "n_executed_lines" => $n_executed_lines,
+ "n_unexecuted_lines" => $n_unexecuted_lines}
+ );
+ }
+
+ # Sort files so that the files with the most unexecuted lines come
+ # first. Nb: $a and $b are the args to the sort function (Perl creates
+ # them automatically).
+ @file_totals =
+ sort
+ {$b->{"n_unexecuted_lines"} <=> $a->{"n_unexecuted_lines"}}
+ @file_totals;
+
+ # Subroutine for printing the percentages.
+ sub print_percentage($$) {
+ my ($n_executed_lines, $n_unexecuted_lines) = @_;
+
+ my $n_executable_lines = $n_executed_lines + $n_unexecuted_lines;
+
+ printf("%5.1f%% (%4d of %4d lines)",
+ ( $n_executable_lines == 0
+ ? 0
+ : 100 * $n_executed_lines / $n_executable_lines ),
+ $n_executed_lines,
+ $n_executable_lines);
+ }
+
+ # Print the total coverage.
+ my $n_total_executable_lines =
+ $n_total_executed_lines + $n_total_unexecuted_lines;
+ print($fancy);
+ print("Total coverage\n");
+ print($fancy);
+ print_percentage($n_total_executed_lines, $n_total_unexecuted_lines);
+ print("\n\n");
+
+ # Print the per-file counts.
+ print($fancy);
+ print("Per-file coverage (files with the most unexecuted lines are shown first)\n");
+ print($fancy);
+ foreach my $f (@file_totals) {
+ print_percentage($f->{"n_executed_lines"}, $f->{"n_unexecuted_lines"});
+ printf(": %s\n", $f->{"filename"});
+ }
+ print("\n");
+}
+
+#-----------------------------------------------------------------------------
+sub annotate_source_files()
+#-----------------------------------------------------------------------------
+{
+ # Do the annotations.
+ foreach my $src_file (keys %all_CCs) {
+ my $file_CCs = $all_CCs{$src_file};
+
+ my ($lines, $executable_lines, $executed_lines) = (0,0,0);
+
+ if (open(SRCFILE, "< $src_file")) {
+ print($fancy);
+ print("$src_file\n");
+ print($fancy);
+ while (<SRCFILE>) {
+ my $linenum = $.;
+ my $n_execs = $file_CCs->{$linenum};
+ my $ann;
+ if (defined $n_execs) {
+ if (0 == $n_execs) {
+ $ann = "#####";
+ } else {
+ $ann = sprintf("%d", $n_execs);
+ $executed_lines++;
+ }
+ $executable_lines++;
+ } else {
+ $ann = "-";
+ }
+ printf("%9s:%5d:%s", $ann, $linenum, $_);
+ $lines++;
+ }
+ close(SRCFILE);
+
+ } else {
+ print("warning: source file $src_file not found, skipping\n");
+ }
+ print("\n");
+ }
+}
+
+#----------------------------------------------------------------------------
+# "main()"
+#----------------------------------------------------------------------------
+process_cmd_line();
+
+read_coverage_file();
+
+print_per_file_output();
+
+annotate_source_files();
+
+##--------------------------------------------------------------------##
+##--- end ---##
+##--------------------------------------------------------------------##
Added: branches/VCOV/exp-vcov/vc_main.c
===================================================================
--- branches/VCOV/exp-vcov/vc_main.c (rev 0)
+++ branches/VCOV/exp-vcov/vc_main.c 2008-02-03 22:59:08 UTC (rev 7370)
@@ -0,0 +1,752 @@
+
+/*--------------------------------------------------------------------*/
+/*--- VCov: a testing coverage tool. vc_main.c ---*/
+/*--------------------------------------------------------------------*/
+
+/*
+ This file is part of VCov, a Valgrind tool for measuring execution
+ coverage.
+
+ Copyright (C) 2002-2008 Nicholas Nethercote
+ nj...@ca...
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307, USA.
+
+ The GNU General Public License is contained in the file COPYING.
+*/
+
+// XXX TODO:
+// - inline CC incrementing, rather than using a C call
+// - add branch coverage, at least for encountered branches
+// - the new seginfo_* functions -- would providing an iterator be better?
+// - write tests -- work out how to make them deterministic...
+// - write docs
+
+// Overview:
+// - VCov is a coverage testing tool. It has similarities and differences
+// to gcov.
+//
+// - VCov counts the number of instructions executed for each source line.
+// This is different from gcov, which counts how many times each line was
+// executed; VCov's counts will be strictly higher than gcov's for
+// equivalent runs, since each executable line is compiled down to one or
+// more instructions.
+//
+// - VCov relies entirely on debugging line information to determine which
+// lines have been executed, and more importantly, which lines have not.
+// Because of this, VCov works best when programs are compiled with no
+// optimisation. When optimisation is used, the line numbers don't match
+// up as well and the annotated source can be confusing.
+//
+// - VCov does not use the same file format that 'gcov' uses. gcov creates
+// three files for each source file: .bb, .bbg and .da. The first two are
+// generated at compile time. The third is generated at run-time. This
+// file format is not easy to use by VCov because VCov is entirely
+// dynamic. Therefore VCov uses its own file format.
+//
+// - Data for each run is stored in a single file, which is called
+// "vcov.out" by default. Subsequent runs augment the file. A different
+// file name can be specified. Debugging information must be present in a
+// file for coverage data to be collected for it.
+//
+// - The accompanying script "vc_annotate" can calculate per-file execution
+// coverage. It can also annotate source files.
+
+#include "pub_tool_basics.h"
+#include "pub_tool_vki.h"
+#include "pub_tool_debuginfo.h"
+#include "pub_tool_libcbase.h"
+#include "pub_tool_libcassert.h"
+#include "pub_tool_libcfile.h"
+#include "pub_tool_libcprint.h"
+#include "pub_tool_libcproc.h"
+#include "pub_tool_mallocfree.h"
+#include "pub_tool_options.h"
+#include "pub_tool_tooliface.h"
+
+/*------------------------------------------------------------*/
+/*--- Types and Data Structures ---*/
+/*------------------------------------------------------------*/
+
+//------------------------------------------------------------
+// Primary data structure: CC table
+// - Holds the per-source-line exec counts, grouped by file.
+// - hash_table(Char* filename, sorted_array(UInt line_num, ULong num_execs))
+// - The hash table is separately chained.
+// - Lookups are done by instruction address.
+// - Traversed for dumping stats at end in a per-file, then per-line order.
+
+#define N_FILE_ENTRIES 4999 // Must be prime. XXX: too big?
+
+// Nb: the log function accesses the 'n_execs' field directly.
+typedef struct {
+ UInt line_num; // Line number.
+ ULong n_execs; // How many times it has executed.
+} LineCC;
+
+typedef struct _FileCC FileCC;
+struct _FileCC {
+ Char* dirname; // Directory of this file.
+ Char* filename; // Name of this file.
+ FileCC* next; // Next FileCC in the table.
+ UInt n_lineCCs; // Number of LineCCs for this file.
+ LineCC* lineCCs; // The array of LineCCs for this file.
+};
+
+// Top level of CC table. Auto-zeroed.
+static FileCC *CC_table[N_FILE_ENTRIES];
+
+//------------------------------------------------------------
+// Stats
+
+static Int n_src_files = 0;
+static Int n_no_debugs = 0;
+static Int n_yes_debugs = 0;
+static Int n_lineCC_slots_used = 0;
+static Int n_lineCC_slots_total = 0;
+
+/*------------------------------------------------------------*/
+/*--- CC table operations ---*/
+/*------------------------------------------------------------*/
+
+static UInt hash(Char* dirname, Char* filename, UInt table_size)
+{
+ const int hash_constant = 256;
+ int hash_value = 0;
+ for ( ; *dirname; dirname++)
+ hash_value = (hash_constant * hash_value + *dirname) % table_size;
+ for ( ; *filename; filename++)
+ hash_value = (hash_constant * hash_value + *filename) % table_size;
+ return hash_value;
+}
+
+static Int compareLineCC(void* va, void* vb)
+{
+ LineCC* a = (LineCC*)va;
+ LineCC* b = (LineCC*)vb;
+
+ // This should be safe because line numbers are fairly small (never
+ // greater than 2 billion) and positive. And it's faster than doing one
+ // or more comparisons.
+ return ((Int)a->line_num) - ((Int)b->line_num);
+}
+
+static void sort_and_remove_dups_from_FileCC(FileCC* cc)
+{
+ Int i, src, dst;
+ Int n_line_CCs_with_dups = cc->n_lineCCs;
+
+ // First, sort the array.
+ VG_(ssort)(cc->lineCCs, cc->n_lineCCs, sizeof(LineCC), compareLineCC);
+ for (i = 0; i < (Int)cc->n_lineCCs - 1; i++) {
+ tl_assert(cc->lineCCs[i].line_num <= cc->lineCCs[i+1].line_num);
+ }
+
+ // Now remove any adjacent dups by shuffling entries down, and fill in
+ // the tail with zeroes.
+ dst = 1;
+ src = 1;
+ while (src < cc->n_lineCCs) {
+ // If we hit a new src line_num (ie. it differs from its predecessor)
+ // then we copy it to dst and increment dst.
+ if (cc->lineCCs[src].line_num != cc->lineCCs[src-1].line_num) {
+ cc->lineCCs[dst].line_num = cc->lineCCs[src].line_num;
+ dst++;
+ }
+ src++;
+ }
+ for (i = dst ; i < cc->n_lineCCs; i++) { // Zero the tail.
+ cc->lineCCs[i].line_num = 0;
+ }
+ cc->n_lineCCs = dst;
+
+ // Update stats.
+ n_lineCC_slots_total += n_line_CCs_with_dups;
+ n_lineCC_slots_used += cc->n_lineCCs;
+
+ // Check it's sorted and has no dups.
+ for (i = 1; i < cc->n_lineCCs; i++) {
+ tl_assert(cc->lineCCs[i-1].line_num < cc->lineCCs[i].line_num);
+ }
+}
+
+static __inline__
+FileCC* new_FileCC(Addr instrAddr, Char* dirname, Char* filename, FileCC* next)
+{
+ FileCC* cc;
+ const SegInfo* seg;
+ UInt n_matches;
+ Int i;
+ UInt tmp_line;
+ Char* tmp_dirname;
+ Char* tmp_filename;
+
+ // Print the filename, if asked-for.
+ if (VG_(clo_verbosity) > 1) {
+ VG_(message)(Vg_DebugMsg, "vcov: first occurrence of '%s'", filename);
+ }
+
+ // Create the FileCC.
+ cc = VG_(malloc)(sizeof(FileCC));
+ cc->dirname = VG_(strdup)(dirname);
+ cc->filename = VG_(strdup)(filename);
+ cc->next = next;
+
+ // XXX: better: malloc space according to the number of locns. Then copy
+ // the matching ones in, sort-and-remove-dups, then copy the remaining
+ // ones into a new, right-sized array.
+
+ // Now create the LineCCs.
+ // Count how many locs in this SegInfo match 'filename' in order to
+ // allocate the right-sized buffer.
+ seg = VG_(find_seginfo)(instrAddr);
+ tl_assert(seg);
+ n_matches = 0;
+ for (i = 0; i < VG_(seginfo_num_locs)(seg); i++) {
+ tl_assert( VG_(seginfo_locN_dirname) (seg, i, &tmp_dirname) );
+ tl_assert( VG_(seginfo_locN_filename)(seg, i, &tmp_filename) );
+// VG_(printf)("dirnames: %s %s\n", dirname, tmp_dirname);
+// VG_(printf)("filenames: %s %s\n", filename, tmp_filename);
+ if (VG_STREQ(dirname, tmp_dirname) && VG_STREQ(filename, tmp_filename))
+ n_matches++;
+ }
+ // If there weren't any matches, something has gone wrong...
+ tl_assert(n_matches > 0);
+
+ // Allocate the lineCCs array.
+ cc->n_lineCCs = n_matches;
+ cc->lineCCs = VG_(malloc)(n_matches * sizeof(LineCC));
+
+ // Go through locs again, this time initialising the array.
+ n_matches = 0;
+ for (i = 0; i < VG_(seginfo_num_locs)(seg); i++) {
+ tl_assert( VG_(seginfo_locN_dirname) (seg, i, &tmp_dirname) );
+ tl_assert( VG_(seginfo_locN_filename)(seg, i, &tmp_filename) );
+ tl_assert( VG_(seginfo_locN_line) (seg, i, &tmp_line) );
+ if (VG_STREQ(dirname, tmp_dirname) && VG_STREQ(filename, tmp_filename)) {
+ cc->lineCCs[n_matches].line_num = tmp_line;
+ cc->lineCCs[n_matches].n_execs = 0;
+ n_matches++;
+ }
+ }
+ // Make sure we get the same number of matches the second time around.
+ tl_assert(n_matches == cc->n_lineCCs);
+
+ // Loctabs are sorted by address. We want our LineCC entries sorted by
+ // line number. Usually address ordering is pretty close to line
+ // ordering, but it's not exactly the same. Also, sometimes a line can
+ // get mentioned more than once in the loctab. So now we sort and remove
+ // any dups in the line numbers, and update n_lineCCs accordingly. As a
+ // result, we will have over-allocated for lineCCs[], but the amount
+ // should usually be very small.
+ sort_and_remove_dups_from_FileCC(cc);
+
+ if (VG_(clo_verbosity) > 1) {
+ VG_(message)(Vg_DebugMsg, "vcov: %d debuginfo lines, %d matches, "
+ "%d unique matches:",
+ VG_(seginfo_num_locs)(seg), n_matches, cc->n_lineCCs);
+ // Here we fake up a VG_(message)-style line annotation; we have to
+ // use VG_(printf)() because we want to print multiple things on one
+ // line.
+ VG_(printf)("--%d-- vcov: ", VG_(getpid)());
+ for (i = 0; i < cc->n_lineCCs; i++)
+ VG_(printf)("%d ", cc->lineCCs[i].line_num);
+ VG_(printf)("\n");
+ }
+
+ return cc;
+}
+
+// Returns a pointer to FileCC, creates a new one if necessary (unless
+// 'must_be_present' is true, in which case it aborts if the FileCC isn't
+// present). New nodes are prepended to their chain.
+static FileCC* get_FileCC(Addr instrAddr, Char* dirname, Char* filename,
+ Bool must_be_present)
+{
+ FileCC *curr_fileCC;
+ UInt file_hash;
+
+ file_hash = hash(dirname, filename, N_FILE_ENTRIES);
+ curr_fileCC = CC_table[file_hash];
+ // Look for the filename in the appropriate chain.
+ while (NULL != curr_fileCC &&
+ !VG_STREQ( dirname, curr_fileCC-> dirname) &&
+ !VG_STREQ(filename, curr_fileCC->filename))
+ {
+ curr_fileCC = curr_fileCC->next;
+ }
+ if (NULL == curr_fileCC) {
+ if (must_be_present) {
+ // XXX: don't panic, quit in a better way
+ tl_assert2(0, "file not present: %s, %s", dirname, filename);
+ }
+ // It wasn't in the chain. Create a new FileCC.
+ CC_table[file_hash] = curr_fileCC =
+ new_FileCC(instrAddr, dirname, filename, CC_table[file_hash]);
+ n_src_files++;
+ }
+ return curr_fileCC;
+}
+
+/*--------------------------------------------------------------------*/
+/*--- Command line processing ---*/
+/*--------------------------------------------------------------------*/
+
+static Bool clo_fresh = False;
+
+static Bool vc_process_cmd_line_option(Char* arg)
+{
+ VG_BOOL_CLO(arg, "--fresh", clo_fresh)
+ else return False;
+
+ return True;
+}
+
+static void vc_print_usage(void)
+{
+ // XXX: allow people to change the name of the outfile. The %p option
+ // isn't so useful here, but might as well allow it.
+ VG_(printf)(
+" --fresh=no|yes clear all previous coverage info [no]\n"
+ );
+}
+
+static void vc_print_debug_usage(void)
+{
+ VG_(printf)(
+" (none)\n"
+ );
+}
+
+/*------------------------------------------------------------*/
+/*--- Instrumentation ---*/
+/*------------------------------------------------------------*/
+
+static VG_REGPARM(1)
+void log_instr(LineCC* lineCC)
+{
+ (lineCC->n_execs)++;
+}
+
+// Instrumentation for the end of each original instruction.
+static
+void doOneInstr(IRSB* sbOut, Addr instrAddr)
+{
+ #define FILE_LEN 1024
+
+ IRDirty* di;
+ IRExpr* arg1;
+ LineCC* lineCC;
+ Char filename[FILE_LEN];
+ Char dirname[VKI_PATH_MAX + 1];
+ Bool dirname_available;
+ Int line;
+ FileCC* fileCC;
+ Int mid, mid_line, lo, hi;
+
+ // Nb: This sets dirname to "" if it doesn't find a dirname.
+ Bool found_file_line =
+ VG_(get_filename_linenum)(instrAddr, filename, FILE_LEN,
+ dirname, VKI_PATH_MAX, &dirname_available,
+ &line);
+
+ // Only bother instrumenting the instruction if it has debug info!
+ if (found_file_line) {
+ // Get CC table for the file (creating it if necessary).
+ fileCC = get_FileCC(instrAddr, dirname, filename,
+ /*must_be_present*/False);
+
+ // Get the LineCC for the instruction. Binary search.
+ lo = 0;
+ hi = fileCC->n_lineCCs - 1;
+
+ while (True) {
+ /* current unsearched space is from lo to hi, inclusive. */
+ if (lo > hi) tl_assert2(0, "didn't find %d in lineCCs", line);
+ mid = (lo + hi) / 2;
+ mid_line = fileCC->lineCCs[mid].line_num;
+ if (line < mid_line) { hi = mid-1; continue; }
+ if (line > mid_line) { lo = mid+1; continue; }
+ tl_assert(line == mid_line);
+ break;
+ }
+ lineCC = &(fileCC->lineCCs[mid]);
+
+ // Insert call to log function
+ arg1 = mkIRExpr_HWord( (HWord)lineCC );
+ di = unsafeIRDirty_0_N( 1, "log_instr", &log_instr, mkIRExprVec_1(arg1));
+ addStmtToIRSB( sbOut, IRStmt_Dirty(di) );
+
+ n_yes_debugs++;
+
+ } else {
+ n_no_debugs++;
+ }
+}
+
+static
+IRSB* vc_instrument ( VgCallbackClosure* closure,
+ IRSB* sbIn,
+ VexGuestLayout* layout,
+ VexGuestExtents* vge,
+ IRType gWordTy, IRType hWordTy )
+{
+ Int i;
+ IRSB* sbOut;
+ IRStmt* st;
+
+ if (gWordTy != hWordTy) {
+ /* We don't currently support this case. */
+ VG_(tool_panic)("host/guest word size mismatch");
+ }
+
+ // Set up new SB.
+ sbOut = deepCopyIRSBExceptStmts(sbIn);
+
+ for (i = 0; i < sbIn->stmts_used; i++) {
+ st = sbIn->stmts[i];
+
+ if (Ist_IMark == st->tag) {
+ // Ist.IMark.addr is an Addr64. We convert it to an Addr, then
+ // check the conversion didn't change the value (it should never if
+ // all is right with the world).
+ Addr instrAddr = (Addr)st->Ist.IMark.addr;
+ tl_assert( ((Addr64)instrAddr) == st->Ist.IMark.addr );
+ doOneInstr(sbOut, instrAddr);
+ }
+ addStmtToIRSB( sbOut, st );
+ }
+
+ return sbOut;
+}
+
+/*------------------------------------------------------------*/
+/*--- vc_fini() and related function ---*/
+/*------------------------------------------------------------*/
+
+// Parse buffer. Each filename line has the exact form:
+//
+// fl=<name>
+//
+// Each exec_counts line has the exact form
+//
+// integer space integer newline
+//
+// Simple, huh? We move through lines in the file and lines in
+// fileCC->lineCCs[] in tandem.
+//
+static Bool parse_buffer(Char* outfile, struct vki_stat* outfile_statbuf,
+ Char* buf)
+{
+ Int buf_i = 0, line_i = 0, curr_line = 1;
+ Char* error_msg = NULL;
+ FileCC* fileCC = NULL;
+
+ #define BOO(s) { error_msg = s; goto parse_end; }
+
+ while ('\0' != buf[buf_i]) {
+
+ if ('f' == buf[buf_i]) {
+ Int fl_start_i, buf_j;
+ Char* dirname;
+ Char* filename;
+
+ // Check the previous fileCC (if there is one) had the right number
+ // of lines.
+ if (fileCC && line_i != fileCC->n_lineCCs) {
+ BOO("consistency error: not enough lines in existing file");
+ }
+
+ // fl=<name>
+ if (buf[buf_i+0] != 'f' ||
+ buf[buf_i+1] != 'l' ||
+ buf[buf_i+2] != '=')
+ {
+ BOO("parse error: bad 'fl=' line");
+ }
+ buf_i += 3;
+ fl_start_i = buf_i;
+ while (buf[buf_i] != '\n') { buf_i++; }
+ // Replace '\n' with '\0'. Ok because 'buf' is only temporary.
+ buf[buf_i] = '\0';
+
+ // Warn if srcfile is present and newer than the existing outfile.
+ // XXX: should I warn if the srcfile isn't present?
+ {
+ struct vki_stat srcfile_statbuf;
+ Char* srcfile = &buf[fl_start_i];
+ if ( ! (VG_(stat)(srcfile, &srcfile_statbuf)).isError ) {
+ if (srcfile_statbuf.st_mtime > outfile_statbuf->st_mtime) {
+ VG_(message)(Vg_UserMsg,
+ "Warning: Source file '%s' is more recent than ", srcfile);
+ VG_(message)(Vg_UserMsg,
+ " old data file '%s'.", outfile);
+ VG_(message)(Vg_UserMsg,
+ " Coverage information may be incorrect.",
+ srcfile);
+ VG_(message)(Vg_UserMsg,
+ " Rerun with --fresh to purge old data and start again");
+ }
+ }
+ }
+
+
+
+ // Ok, we've isolated the function name. Now split it into a
+ // filename and a dirname.
+ buf_j = buf_i-1;
+ while (True) {
+ if (buf_j == fl_start_i) {
+ dirname = "";
+ filename = &buf[fl_start_i];
+ break;
+ } else if ('/' == buf[buf_j]) {
+ buf[buf_j] = '\0'; // Replace '/' with '\0'.
+ dirname = &buf[fl_start_i];
+ filename = &buf[buf_j+1];
+ break;
+ }
+ buf_j--;
+ }
+
+ // Find the corresponding FileCC.
+ // XXX: the unused instrAddr is ugly.
+ fileCC = get_FileCC(/*instrAddr--unused*/0, dirname, filename,
+ /*must_be_present*/True);
+
+ // Move past the newline, and reset line_i.
+ buf_i++;
+ line_i = 0;
+
+ } else if (VG_(isdigit)(buf[buf_i])) {
+ Long line_num, n_execs;
+
+ // Line number.
+ line_num = VG_(atoll)(buf+buf_i);
+ while (VG_(isdigit)(buf[buf_i])) { buf_i++; }
+
+ // Space.
+ if (' ' != buf[buf_i++]) BOO("parse error: expected ' '");
+
+ // n_execs number.
+ if (!VG_(isdigit)(buf[buf_i]))
+ BOO("parse error: expected exec count");
+ // XXX: use strtol instead? better checking...
+ n_execs = VG_(atoll)(buf+buf_i);
+ while (VG_(isdigit)(buf[buf_i])) { buf_i++; }
+
+ // Newline.
+ if ('\n' != buf[buf_i++]) BOO("parse error: expected newline");
+
+ // Update fileCC with the data from the line.
+ // XXX: have regtests for all these cases...
+ if (!fileCC) {
+ BOO("parse error: first line is not a 'fl=' line");
+ }
+ if (line_i >= fileCC->n_lineCCs) {
+ BOO("consistency error: too many lines in existing file");
+ }
+ if (fileCC->lineCCs[line_i].line_num != line_num) {
+ BOO("consistency error: line mismatch with existing file");
+ }
+ fileCC->lineCCs[line_i].n_execs += n_execs;
+ line_i++;
+
+ } else {
+ VG_(printf)("bad char: %c\n",buf[buf_i]);
+ BOO("parse error: line doesn't start with 'fl=' or line number");
+ }
+ curr_line++;
+
+ #undef BOO
+ }
+
+ parse_end:
+
+ if (error_msg) {
+ VG_(message)(Vg_UserMsg, "%s:%d: %s;\n", outfile, curr_line, error_msg);
+ VG_(message)(Vg_UserMsg, " coverage data not written to file;\n");
+ VG_(message)(Vg_UserMsg, " rerun VCov with --fresh to purge old data and start again");
+ }
+
+ return (NULL == error_msg);
+}
+
+// If an output file for this source file already exists, read it in and
+// update the fileCC stats with its data. Returns 'False' if something went
+// wrong and we should not write out the new data.
+static Bool maybe_read_existing_outfile(Char* outfile)
+{
+ Int fd;
+ Char* buf;
+ OffT size;
+ struct vki_stat outfile_statbuf;
+ SysRes res;
+ Bool ok;
+
+ // If no old file exists, or we are overwriting it, our work here is done.
+ if ( clo_fresh || (VG_(stat)(outfile, &outfile_statbuf)).isError ) {
+ if (VG_(clo_verbosity) > 1)
+ VG_(message)(Vg_DebugMsg, "vcov: create new outfile: '%s'", outfile);
+ return True;
+ }
+
+ // Right, we have to augment the old file.
+ if (VG_(clo_verbosity) > 1)
+ VG_(message)(Vg_DebugMsg, "vcov: augment old outfile: '%s'", outfile);
+
+ // Open existing data file.
+ res = VG_(open)(outfile, VKI_O_RDONLY, 0);
+ if (res.isError) {
+ VG_(message)(Vg_UserMsg, "warning: could not open existing '%s'",
+ outfile);
+ return False;
+ }
+ fd = (Int)res.res;
+
+ // Allocate a buffer big enough to hold the entire file. Files should be
+ // compact enough that even huge ones are only a few megabytes...
+ size = outfile_statbuf.st_size;
+ buf = VG_(malloc)(size+1);
+
+ // Read entire file into buffer.
+ if (VG_(read)(fd, buf, size) != size) {
+ VG_(message)(Vg_UserMsg, "error: could not read '%s'\n", outfile);
+ VG_(free)(buf);
+ VG_(close)(fd);
+ return False;
+ }
+
+ buf[size] = '\0'; // Ensure null-termination.
+
+ // Parse the buffer.
+ ok = parse_buffer(outfile, &outfile_statbuf, buf);
+
+ // Deallocate buffer, close the file.
+ VG_(free)(buf);
+ VG_(close)(fd);
+
+ return ok;
+}
+
+static void write_outfile(Char* outfile)
+{
+ Char buf[VKI_PATH_MAX+1];
+ Int i, j, fd;
+ SysRes res;
+
+ res = VG_(open)(outfile, VKI_O_CREAT|VKI_O_TRUNC|VKI_O_RDWR,
+ VKI_S_IRUSR|VKI_S_IWUSR);
+ if (!res.isError) {
+ fd = (Int)res.res;
+
+ // For each FileCC, output the new/updated counts.
+ for (i = 0; i < N_FILE_ENTRIES; i++) {
+ FileCC* fileCC = CC_table[i];
+ while (fileCC != NULL) {
+ // Write the filename line.
+ if (! VG_STREQ(fileCC->dirname, "")) {
+ VG_(sprintf)(buf, "fl=%s/%s\n", fileCC->dirname,
+ fileCC->filename);
+ } else {
+ VG_(sprintf)(buf, "fl=%s\n", fileCC->filename);
+ }
+ VG_(write)(fd, (void*)buf, VG_(strlen)(buf));
+
+ // Write the execution count lines.
+ for (j = 0; j < fileCC->n_lineCCs; j++) {
+ LineCC* lineCC = &(fileCC->lineCCs[j]);
+ VG_(sprintf)(buf, "%u %llu\n", lineCC->line_num,
+ lineCC->n_execs);
+ VG_(write)(fd, (void*)buf, VG_(strlen)(buf));
+ }
+
+ fileCC = fileCC->next;
+ }
+ }
+ VG_(close)(fd);
+
+ } else {
+ // If the file can't be opened for whatever reason, just skip.
+ VG_(message)(Vg_UserMsg,
+ "error: cannot open output file `%s'", outfile );
+ }
+}
+
+static void vc_fini(Int exitcode)
+{
+ Char* outfile = "vcov.out";
+ Bool ok;
+
+ // ... read the old vcov.out first ...
+
+// XXX: need to lock the file first.
+
+ ok = maybe_read_existing_outfile(outfile);
+ if (ok)
+ write_outfile(outfile);
+
+// XXX: now unlock the file
+
+ // Stats
+ if (VG_(clo_verbosity) > 1) {
+ Int n_tot_debugs = n_no_debugs + n_yes_debugs;
+
+ tl_assert(0 != n_tot_debugs);
+ if (0 == n_lineCC_slots_total) n_lineCC_slots_total = 1;
+
+ VG_(message)(Vg_DebugMsg, "vcov: number of source files: %d",
+ n_src_files);
+ VG_(message)(Vg_DebugMsg, "vcov: lines with debug info: %d%% (%d/%d)",
+ n_yes_debugs * 100 / n_tot_debugs,
+ n_yes_debugs, n_tot_debugs);
+ VG_(message)(Vg_DebugMsg, "vcov: lineCC slot usage: %d%% (%d/%d)",
+ n_lineCC_slots_used * 100 / n_lineCC_slots_total,
+ n_lineCC_slots_used, n_lineCC_slots_total);
+ }
+}
+
+/*--------------------------------------------------------------------*/
+/*--- Setup ---*/
+/*--------------------------------------------------------------------*/
+
+static void vc_post_clo_init(void)
+{
+}
+
+static void vc_pre_clo_init(void)
+{
+ VG_(details_name) ("VCov");
+ VG_(details_version) (NULL);
+ VG_(details_description) ("a coverage testing tool");
+ VG_(details_copyright_author)(
+ "Copyright (C) 2002-2008, and GNU GPL'd, by Nicholas Nethercote.");
+ VG_(details_bug_reports_to) (VG_BUGS_TO);
+
+ VG_(basic_tool_funcs) (vc_post_clo_init,
+ vc_instrument,
+ vc_fini);
+
+ VG_(needs_command_line_options)(vc_process_cmd_line_option,
+ vc_print_usage,
+ vc_print_debug_usage);
+}
+
+VG_DETERMINE_INTERFACE_VERSION(vc_pre_clo_init)
+
+/*--------------------------------------------------------------------*/
+/*--- end ---*/
+/*--------------------------------------------------------------------*/
Modified: branches/VCOV/include/pub_tool_debuginfo.h
===================================================================
--- branches/VCOV/include/pub_tool_debuginfo.h 2008-02-03 22:35:58 UTC (rev 7369)
+++ branches/VCOV/include/pub_tool_debuginfo.h 2008-02-03 22:59:08 UTC (rev 7370)
@@ -123,6 +123,17 @@
/*OUT*/UInt* size,
/*OUT*/HChar** name );
+// These ones allow iterating through all the locs in a segment, and getting
+// attributes of each one. The first one says how many locs are in the
+// segment. The others get an attribute of a loc; they return False if 'n'
+// is not a valid loc number.
+extern UInt VG_(seginfo_num_locs) ( const SegInfo *seg );
+extern Bool VG_(seginfo_locN_addr) ( const SegInfo *seg, UInt n, Addr* );
+extern Bool VG_(seginfo_locN_size) ( const SegInfo *seg, UInt n, UInt* );
+extern Bool VG_(seginfo_locN_line) ( const SegInfo *seg, UInt n, UInt* );
+extern Bool VG_(seginfo_locN_filename) ( const SegInfo *seg, UInt n, Char** );
+extern Bool VG_(seginfo_locN_dirname) ( const SegInfo *seg, UInt n, Char** );
+
typedef
enum {
Vg_SectUnknown,
|
|
From: <sv...@va...> - 2008-02-03 22:35:56
|
Author: njn
Date: 2008-02-03 22:35:58 +0000 (Sun, 03 Feb 2008)
New Revision: 7369
Log:
minor tweak
Modified:
branches/VALGRIND_3_3_BRANCH/docs/xml/manual-writing-tools.xml
Modified: branches/VALGRIND_3_3_BRANCH/docs/xml/manual-writing-tools.xml
===================================================================
--- branches/VALGRIND_3_3_BRANCH/docs/xml/manual-writing-tools.xml 2008-02-03 22:35:21 UTC (rev 7368)
+++ branches/VALGRIND_3_3_BRANCH/docs/xml/manual-writing-tools.xml 2008-02-03 22:35:58 UTC (rev 7369)
@@ -123,8 +123,8 @@
<listitem>
<para>Edit <filename>Makefile.am</filename>, adding the new directory
<filename>foobar</filename> to the
- <computeroutput>TOOLS</computeroutput> and
- <computeroutput>SUBDIRS</computeroutput>variables.</para>
+ <computeroutput>TOOLS</computeroutput> or
+ <computeroutput>EXP_TOOLS</computeroutput>variables.</para>
</listitem>
<listitem>
|
|
From: <sv...@va...> - 2008-02-03 22:35:18
|
Author: njn
Date: 2008-02-03 22:35:21 +0000 (Sun, 03 Feb 2008)
New Revision: 7368
Log:
minor tweak
Modified:
trunk/docs/xml/manual-writing-tools.xml
Modified: trunk/docs/xml/manual-writing-tools.xml
===================================================================
--- trunk/docs/xml/manual-writing-tools.xml 2008-02-03 22:15:57 UTC (rev 7367)
+++ trunk/docs/xml/manual-writing-tools.xml 2008-02-03 22:35:21 UTC (rev 7368)
@@ -123,8 +123,8 @@
<listitem>
<para>Edit <filename>Makefile.am</filename>, adding the new directory
<filename>foobar</filename> to the
- <computeroutput>TOOLS</computeroutput> and
- <computeroutput>SUBDIRS</computeroutput>variables.</para>
+ <computeroutput>TOOLS</computeroutput> or
+ <computeroutput>EXP_TOOLS</computeroutput>variables.</para>
</listitem>
<listitem>
|
|
From: <sv...@va...> - 2008-02-03 22:15:55
|
Author: njn Date: 2008-02-03 22:15:57 +0000 (Sun, 03 Feb 2008) New Revision: 7367 Log: Branch for hacking on VCov, a coverage testing tool. Added: branches/VCOV/ Copied: branches/VCOV (from rev 7366, trunk) |
|
From: <sv...@va...> - 2008-02-03 12:46:44
|
Author: sewardj Date: 2008-02-03 12:46:45 +0000 (Sun, 03 Feb 2008) New Revision: 7366 Log: Fix 'make dist' -- don't list nonexistent files for inclusion in the tarball. Modified: trunk/exp-drd/tests/Makefile.am Modified: trunk/exp-drd/tests/Makefile.am =================================================================== --- trunk/exp-drd/tests/Makefile.am 2008-01-31 05:01:18 UTC (rev 7365) +++ trunk/exp-drd/tests/Makefile.am 2008-02-03 12:46:45 UTC (rev 7366) @@ -18,7 +18,7 @@ matinv.vgtest \ matinv.stdout.exp matinv.stderr.exp \ pth_barrier.vgtest \ - pth_barrier.stdout.exp pth_barrier.stderr.exp \ + pth_barrier.stderr.exp \ pth_broadcast.vgtest \ pth_broadcast.stdout.exp pth_broadcast.stderr.exp \ pth_cond_race.vgtest \ @@ -32,14 +32,13 @@ pth_detached2.vgtest \ pth_detached2.stdout.exp pth_detached2.stderr.exp \ sem_as_mutex.vgtest \ - sem_as_mutex.stdout.exp sem_as_mutex.stderr.exp \ - sem_as_mutex.stderr.exp2 \ + sem_as_mutex.stderr.exp sem_as_mutex.stderr.exp2 \ sem_as_mutex2.vgtest \ - sem_as_mutex2.stdout.exp sem_as_mutex2.stderr.exp \ + sem_as_mutex2.stderr.exp \ tc17_sembar.vgtest \ - tc17_sembar.stdout.exp tc17_sembar.stderr.exp \ + tc17_sembar.stderr.exp \ tc18_semabuse.vgtest \ - tc18_semabuse.stdout.exp tc18_semabuse.stderr.exp \ + tc18_semabuse.stderr.exp \ sigalrm.vgtest \ sigalrm.stdout.exp sigalrm.stderr.exp |
|
From: Tom H. <th...@cy...> - 2008-02-03 03:57:30
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-02-03 03:15:02 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 339 tests, 84 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc04_free_lock (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc10_rec_lock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc13_laog1 (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) exp-drd/tests/fp_race (stderr) exp-drd/tests/fp_race2 (stderr) exp-drd/tests/matinv (stderr) exp-drd/tests/pth_barrier (stderr) exp-drd/tests/pth_broadcast (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/pth_cond_race2 (stderr) exp-drd/tests/pth_create_chain (stderr) exp-drd/tests/pth_detached (stderr) exp-drd/tests/pth_detached2 (stderr) exp-drd/tests/sem_as_mutex (stderr) exp-drd/tests/sem_as_mutex2 (stderr) exp-drd/tests/sigalrm (stderr) exp-drd/tests/tc17_sembar (stderr) exp-drd/tests/tc18_semabuse (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-03 03:45:35
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-02-03 03:20:04 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 375 tests, 15 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/sem_as_mutex2 (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-03 03:39:59
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-02-03 03:25:06 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 373 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/sem_as_mutex2 (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 == 373 tests, 6 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Feb 3 03:32:32 2008 --- new.short Sun Feb 3 03:40:01 2008 *************** *** 8,10 **** ! == 373 tests, 6 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 373 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 18,21 **** --- 18,23 ---- none/tests/mremap2 (stdout) + helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) + exp-drd/tests/sem_as_mutex2 (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-03 03:33:17
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-02-03 03:05:08 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 373 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-03 03:28:05
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-02-03 03:10:04 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 == 373 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (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 == 373 tests, 9 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_cvsimple (stdout) none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Feb 3 03:19:37 2008 --- new.short Sun Feb 3 03:28:06 2008 *************** *** 8,10 **** ! == 373 tests, 9 stderr failures, 4 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 373 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 16,19 **** none/tests/mremap2 (stdout) - none/tests/pth_cvsimple (stdout) - none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) --- 16,17 ---- |
|
From: Tom H. <th...@cy...> - 2008-02-03 03:15:30
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-02-03 03:00:03 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 375 tests, 30 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/blockfault (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/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: Bart V. A. <bar...@gm...> - 2008-02-02 13:16:08
|
On Feb 2, 2008 4:27 AM, Tom Hughes <th...@cy...> wrote: > > Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-02-02 03:10:04 GMT > ... > exp-drd/tests/pth_cond_race (stderr) > ... Hello Tom, Was it a long time ago that you updated this system ? When I run the exp-drd regression tests on a Fedora 8 system with the latest updates, all regression tests run fine: $ perl tests/vg_regtest exp-drd -- Running tests in exp-drd/tests ------------------------------------- fp_race: valgrind ./fp_race fp_race2: valgrind ./fp_race -m matinv: valgrind ./matinv 30 15 1 pth_barrier: valgrind ./pth_barrier 2 1 1 pth_broadcast: valgrind ./pth_broadcast pth_cond_race: valgrind ./pth_cond_race pth_cond_race2: valgrind ./pth_cond_race -m pth_create_chain: valgrind ./pth_create_chain 100 pth_detached: valgrind ./pth_detached 1 1 pth_detached2: valgrind ./pth_detached 10 10 sem_as_mutex: valgrind ./sem_as_mutex sem_as_mutex2: valgrind ./sem_as_mutex -m sigalrm: valgrind ./sigalrm tc17_sembar: valgrind ./tc17_sembar tc18_semabuse: valgrind ./tc18_semabuse -- Finished tests in exp-drd/tests ------------------------------------- Bart Van Assche. |
|
From: Tom H. <th...@cy...> - 2008-02-02 03:58:10
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-02-02 03:15:07 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 339 tests, 84 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc04_free_lock (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc10_rec_lock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc13_laog1 (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) exp-drd/tests/fp_race (stderr) exp-drd/tests/fp_race2 (stderr) exp-drd/tests/matinv (stderr) exp-drd/tests/pth_barrier (stderr) exp-drd/tests/pth_broadcast (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/pth_cond_race2 (stderr) exp-drd/tests/pth_create_chain (stderr) exp-drd/tests/pth_detached (stderr) exp-drd/tests/pth_detached2 (stderr) exp-drd/tests/sem_as_mutex (stderr) exp-drd/tests/sem_as_mutex2 (stderr) exp-drd/tests/sigalrm (stderr) exp-drd/tests/tc17_sembar (stderr) exp-drd/tests/tc18_semabuse (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-02 03:45:40
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-02-02 03:20:04 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 375 tests, 15 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/sem_as_mutex2 (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-02 03:39:59
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-02-02 03:25:06 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 373 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/sem_as_mutex2 (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-02 03:33:42
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-02-02 03:05:09 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 373 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-02 03:27:14
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-02-02 03:10:04 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 == 373 tests, 9 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_cvsimple (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (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 == 373 tests, 9 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_cond_race (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Feb 2 03:18:42 2008 --- new.short Sat Feb 2 03:27:17 2008 *************** *** 16,18 **** none/tests/mremap2 (stdout) ! none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) --- 16,18 ---- none/tests/mremap2 (stdout) ! none/tests/pth_cvsimple (stdout) helgrind/tests/tc18_semabuse (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-02 03:16:25
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-02-02 03:00:03 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 375 tests, 30 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/blockfault (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/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: Tom H. <th...@cy...> - 2008-02-01 04:09:22
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-02-01 03:15:05 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 339 tests, 84 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc04_free_lock (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc10_rec_lock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc13_laog1 (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) exp-drd/tests/fp_race (stderr) exp-drd/tests/fp_race2 (stderr) exp-drd/tests/matinv (stderr) exp-drd/tests/pth_barrier (stderr) exp-drd/tests/pth_broadcast (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/pth_cond_race2 (stderr) exp-drd/tests/pth_create_chain (stderr) exp-drd/tests/pth_detached (stderr) exp-drd/tests/pth_detached2 (stderr) exp-drd/tests/sem_as_mutex (stderr) exp-drd/tests/sem_as_mutex2 (stderr) exp-drd/tests/sigalrm (stderr) exp-drd/tests/tc17_sembar (stderr) exp-drd/tests/tc18_semabuse (stderr) |