You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
1
(25) |
2
(25) |
3
(5) |
4
(13) |
|
5
(4) |
6
(8) |
7
(6) |
8
|
9
(10) |
10
(15) |
11
(9) |
|
12
(14) |
13
(10) |
14
(24) |
15
(41) |
16
(13) |
17
(9) |
18
(3) |
|
19
(10) |
20
(11) |
21
(28) |
22
(36) |
23
(52) |
24
(36) |
25
(12) |
|
26
(31) |
27
(27) |
28
(20) |
29
(15) |
30
(22) |
31
(17) |
|
|
From: Julian S. <js...@ac...> - 2009-07-15 23:22:03
|
On Thursday 16 July 2009, Nicholas Nethercote wrote: > On Thu, Jul 16, 2009 at 1:39 AM, Tom Hughes<to...@co...> wrote: > > On 15/07/09 16:40, Julian Seward wrote: > > > > Inconsistent failures when using parallel make are usually a sign that > > there is a dependency missing so that it is trying to run a step before > > all it's dependencies are satisfied. Yes. That's what I was/am afeard of. Whatever it is, it's pretty elusive, though. A couple of spins of "make clean ; make -j 16" produces no problems. This is on a Core 2 Duo. Anybody got a 4- or higher-way SMP to try it on? > When I remove the .NOTPARALLEL directives I tested it a bit but I can > certainly believe there are missing dependencies. Maybe I should > start using -j myself... It does make the build significantly faster. Recommended :-) J |
|
From: Nicholas N. <n.n...@gm...> - 2009-07-15 22:31:11
|
On Thu, Jul 16, 2009 at 1:24 AM, <sv...@va...> wrote: > Author: sewardj > Date: 2009-07-15 16:24:49 +0100 (Wed, 15 Jul 2009) > New Revision: 1909 > > Log: > Get rid of LibVEX_Version(). This is lovely! (Ashley Pittman will be pleased, too.) You can also update the Makefile-gcc and Makefile-icc files to remove all traces of the vex_svnversion.h, including the 'version' target. You can also remove the quote.txt and newline.txt files. Nick |
|
From: Nicholas N. <n.n...@gm...> - 2009-07-15 22:28:32
|
On Thu, Jul 16, 2009 at 2:05 AM, <sv...@va...> wrote: > Author: tom > Date: 2009-07-15 17:05:05 +0100 (Wed, 15 Jul 2009) > New Revision: 10479 > > Log: > Add some more system calls to exp-ptrcheck. Closes #186507 and #197966. Thanks, Tom! It's great to see the blocking3.5.0 and wanted3.5.0 bug lists being whittled down. N |
|
From: Nicholas N. <n.n...@gm...> - 2009-07-15 22:22:50
|
On Thu, Jul 16, 2009 at 1:39 AM, Tom Hughes<to...@co...> wrote: > On 15/07/09 16:40, Julian Seward wrote: > > Inconsistent failures when using parallel make are usually a sign that > there is a dependency missing so that it is trying to run a step before > all it's dependencies are satisfied. When I remove the .NOTPARALLEL directives I tested it a bit but I can certainly believe there are missing dependencies. Maybe I should start using -j myself... Nick |
|
From: <sv...@va...> - 2009-07-15 22:12:40
|
Author: njn Date: 2009-07-15 23:12:24 +0100 (Wed, 15 Jul 2009) New Revision: 10480 Log: Update expected output for shorter preamble. Modified: trunk/exp-ptrcheck/tests/hsg.stderr.exp Modified: trunk/exp-ptrcheck/tests/hsg.stderr.exp =================================================================== --- trunk/exp-ptrcheck/tests/hsg.stderr.exp 2009-07-15 16:05:05 UTC (rev 10479) +++ trunk/exp-ptrcheck/tests/hsg.stderr.exp 2009-07-15 22:12:24 UTC (rev 10480) @@ -10,9 +10,6 @@ <line>...</line> <line>...</line> <line>...</line> - <line>...</line> - <line>...</line> - <line>...</line> </preamble> <pid>...</pid> |
|
From: Nicholas N. <n.n...@gm...> - 2009-07-15 17:20:17
|
Nightly build on ocean32 ( Ubuntu 9.04, x86_64 (32-bit only) )
Started at 2009-07-16 03:00:01 EST
Ended at 2009-07-16 03:20:11 EST
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
== 472 tests, 13 stderr failures, 2 stdout failures, 0 post failures ==
memcheck/tests/linux/stack_switch (stderr)
memcheck/tests/origin1-yes (stderr)
memcheck/tests/origin5-bz2 (stderr)
memcheck/tests/xml1 (stderr)
none/tests/empty-exe (stderr)
none/tests/linux/mremap2 (stdout)
none/tests/shell (stdout)
none/tests/shell (stderr)
none/tests/shell_valid1 (stderr)
none/tests/shell_valid2 (stderr)
none/tests/shell_valid3 (stderr)
none/tests/shell_zerolength (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
exp-ptrcheck/tests/hsg (stderr)
exp-ptrcheck/tests/supp (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
== 470 tests, 9 stderr failures, 2 stdout failures, 0 post failures ==
memcheck/tests/linux/stack_switch (stderr)
memcheck/tests/origin1-yes (stderr)
memcheck/tests/origin5-bz2 (stderr)
none/tests/empty-exe (stderr)
none/tests/linux/mremap2 (stdout)
none/tests/shell (stdout)
none/tests/shell (stderr)
none/tests/shell_valid1 (stderr)
none/tests/shell_valid2 (stderr)
none/tests/shell_valid3 (stderr)
none/tests/shell_zerolength (stderr)
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Thu Jul 16 03:10:10 2009
--- new.short Thu Jul 16 03:20:11 2009
***************
*** 8,10 ****
! == 470 tests, 9 stderr failures, 2 stdout failures, 0 post failures ==
memcheck/tests/linux/stack_switch (stderr)
--- 8,10 ----
! == 472 tests, 13 stderr failures, 2 stdout failures, 0 post failures ==
memcheck/tests/linux/stack_switch (stderr)
***************
*** 12,13 ****
--- 12,14 ----
memcheck/tests/origin5-bz2 (stderr)
+ memcheck/tests/xml1 (stderr)
none/tests/empty-exe (stderr)
***************
*** 20,21 ****
--- 21,25 ----
none/tests/shell_zerolength (stderr)
+ helgrind/tests/tc06_two_races_xml (stderr)
+ exp-ptrcheck/tests/hsg (stderr)
+ exp-ptrcheck/tests/supp (stderr)
=================================================
./valgrind-new/exp-ptrcheck/tests/hsg.stderr.diff
=================================================
--- hsg.stderr.exp 2009-07-16 03:10:30.000000000 +1000
+++ hsg.stderr.out 2009-07-16 03:20:00.000000000 +1000
@@ -10,9 +10,6 @@
<line>...</line>
<line>...</line>
<line>...</line>
- <line>...</line>
- <line>...</line>
- <line>...</line>
</preamble>
<pid>...</pid>
=================================================
./valgrind-new/exp-ptrcheck/tests/supp.stderr.diff
=================================================
--- supp.stderr.exp 2009-07-16 03:10:30.000000000 +1000
+++ supp.stderr.out 2009-07-16 03:20:08.000000000 +1000
@@ -1,7 +1,7 @@
Syscall param write(buf) is non-contiguous
- at 0x........: write (in /...libc...)
- by 0x........: main (supp.c:16)
+ at 0x........: ??? (in /lib32/ld-2.9.so)
+ by 0x........: (below main)
First byte (0x........) is 3 bytes inside a 6-byte block alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: main (supp.c:12)
=================================================
./valgrind-new/helgrind/tests/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2009-07-16 03:10:27.000000000 +1000
+++ tc06_two_races_xml.stderr.out 2009-07-16 03:17:53.000000000 +1000
@@ -9,9 +9,6 @@
<line>...</line>
<line>...</line>
<line>...</line>
- <line>...</line>
- <line>...</line>
- <line>...</line>
</preamble>
<pid>...</pid>
@@ -46,12 +43,10 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>do_clone</fn>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>pthread_create@@GLIBC_2.2.5</fn>
+ <fn>pthread_create_WRK</fn>
+ <dir>...</dir>
+ <file>hg_intercepts.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
=================================================
./valgrind-new/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2009-07-16 03:10:45.000000000 +1000
+++ stack_switch.stderr.out 2009-07-16 03:15:04.000000000 +1000
@@ -0,0 +1,2 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
=================================================
./valgrind-new/memcheck/tests/origin1-yes.stderr.diff
=================================================
--- origin1-yes.stderr.exp 2009-07-16 03:10:47.000000000 +1000
+++ origin1-yes.stderr.out 2009-07-16 03:15:23.000000000 +1000
@@ -47,7 +47,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin1-yes.c:101)
Uninitialised value was created
- at 0x........: brk (in /...libc...)
+ at 0x........: ??? (in /lib32/ld-2.9.so)
by 0x........: sbrk (in /...libc...)
by 0x........: main (origin1-yes.c:98)
=================================================
./valgrind-new/memcheck/tests/origin1-yes.stderr.diff-darwin
=================================================
--- origin1-yes.stderr.exp-darwin 2009-07-16 03:10:47.000000000 +1000
+++ origin1-yes.stderr.out 2009-07-16 03:15:23.000000000 +1000
@@ -44,7 +44,12 @@
Undef 7 of 8 (brk)
-(no complaint; sbrk initialises memory on Darwin)
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin1-yes.c:101)
+ Uninitialised value was created
+ at 0x........: ??? (in /lib32/ld-2.9.so)
+ by 0x........: sbrk (in /...libc...)
+ by 0x........: main (origin1-yes.c:98)
Undef 8 of 8 (MAKE_MEM_UNDEFINED)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2009-07-16 03:10:47.000000000 +1000
+++ origin5-bz2.stderr.out 2009-07-16 03:15:27.000000000 +1000
@@ -11,7 +11,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -19,7 +19,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -27,7 +27,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -38,7 +38,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -49,7 +49,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -60,7 +60,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -71,7 +71,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -82,7 +82,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -93,7 +93,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -104,7 +104,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2009-07-16 03:10:47.000000000 +1000
+++ origin5-bz2.stderr.out 2009-07-16 03:15:27.000000000 +1000
@@ -28,7 +28,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -38,7 +39,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -48,7 +50,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2855)
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -58,7 +61,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2859)
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -68,7 +72,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -78,7 +83,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2964)
+ at 0x........: mainSort (origin5-bz2.c:2964)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2009-07-16 03:10:47.000000000 +1000
+++ origin5-bz2.stderr.out 2009-07-16 03:15:27.000000000 +1000
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -9,85 +9,91 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2854)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2858)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/xml1.stderr.diff32
=================================================
--- xml1.stderr.exp32 2009-07-16 03:10:47.000000000 +1000
+++ xml1.stderr.out 2009-07-16 03:16:20.000000000 +1000
@@ -2,7 +2,8 @@
<valgrindoutput>
-<protocolversion>3</protocolversion>
+<protocolversion>4</protocolversion>
+<protocoltool>memcheck</protocoltool>
<preamble>
<line>...</line>
@@ -341,47 +342,20 @@
<what>Syscall param exit(status) contains uninitialised byte(s)</what>
</error>
-<errorcounts>
- <pair>
- <count>...</count>
- <unique>0x........</unique>
- </pair>
- <pair>
- <count>...</count>
- <unique>0x........</unique>
- </pair>
- <pair>
- <count>...</count>
- <unique>0x........</unique>
- </pair>
- <pair>
- <count>...</count>
- <unique>0x........</unique>
- </pair>
- <pair>
- <count>...</count>
- <unique>0x........</unique>
- </pair>
- <pair>
- <count>...</count>
- <unique>0x........</unique>
- </pair>
-</errorcounts>
-
<status>
<state>FINISHED</state>
<time>...</time>
</status>
-<suppcounts>...</suppcounts>
-
<error>
<unique>0x........</unique>
<tid>...</tid>
<kind>Leak_DefinitelyLost</kind>
- <what>396 bytes in 1 blocks are definitely lost in loss record ... of ...</what>
- <leakedbytes>396</leakedbytes>
- <leakedblocks>1</leakedblocks>
+ <xwhat>
+ <text>396 bytes in 1 blocks are definitely lost in loss record ... of ...</text>
+ <leakedbytes>396</leakedbytes>
+ <leakedblocks>1</leakedblocks>
+ </xwhat>
<stack>
<frame>
<ip>0x........</ip>
@@ -426,5 +400,34 @@
</stack>
</error>
+<errorcounts>
+ <pair>
+ <count>...</count>
+ <unique>0x........</unique>
+ </pair>
+ <pair>
+ <count>...</count>
+ <unique>0x........</unique>
+ </pair>
+ <pair>
+ <count>...</count>
+ <unique>0x........</unique>
+ </pair>
+ <pair>
+ <count>...</count>
+ <unique>0x........</unique>
+ </pair>
+ <pair>
+ <count>...</count>
+ <unique>0x........</unique>
+ </pair>
+ <pair>
+ <count>...</count>
+ <unique>0x........</unique>
+ </pair>
+</errorcounts>
+
+<suppcounts>...</suppcounts>
+
</valgrindoutput>
=================================================
./valgrind-new/memcheck/tests/xml1.stderr.diff64
=================================================
--- xml1.stderr.exp64 2009-07-16 03:10:47.000000000 +1000
+++ xml1.stderr.out 2009-07-16 03:16:20.000000000 +1000
@@ -156,7 +156,7 @@
<unique>0x........</unique>
<tid>...</tid>
<kind>UninitValue</kind>
- <what>Use of uninitialised value of size 8</what>
+ <what>Use of uninitialised value of size 4</what>
<stack>
<frame>
<ip>0x........</ip>
=================================================
./valgrind-new/none/tests/empty-exe.stderr.diff
=================================================
--- empty-exe.stderr.exp 2009-07-16 03:11:12.000000000 +1000
+++ empty-exe.stderr.out 2009-07-16 03:16:47.000000000 +1000
@@ -1,2 +1,2 @@
-
-
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./empty-exe: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/linux/mremap2.stdout.diff
=================================================
--- mremap2.stdout.exp 2009-07-16 03:11:09.000000000 +1000
+++ mremap2.stdout.out 2009-07-16 03:16:53.000000000 +1000
@@ -27,38 +27,38 @@
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
@@ -173,40 +173,40 @@
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
<truncated beyond 100 lines>
=================================================
./valgrind-new/none/tests/linux/mremap2.stdout.diff-glibc28-amd64
=================================================
--- mremap2.stdout.exp-glibc28-amd64 2009-07-16 03:11:09.000000000 +1000
+++ mremap2.stdout.out 2009-07-16 03:16:53.000000000 +1000
@@ -188,37 +188,37 @@
maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
maymv 1 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
maymv 1 fixed 0 newsz 31 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
..................................................
maymv 1 fixed 0 newsz 31 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
..................................................
=================================================
./valgrind-new/none/tests/linux/mremap2.stdout.diff2
=================================================
--- mremap2.stdout.exp2 2009-07-16 03:11:09.000000000 +1000
+++ mremap2.stdout.out 2009-07-16 03:16:53.000000000 +1000
@@ -27,38 +27,38 @@
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
@@ -173,52 +173,52 @@
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
<truncated beyond 100 lines>
=================================================
./valgrind-new/none/tests/shell.stderr.diff
=================================================
--- shell.stderr.exp 2009-07-16 03:11:12.000000000 +1000
+++ shell.stderr.out 2009-07-16 03:17:10.000000000 +1000
@@ -1,8 +1,3 @@
-./shell: ./x86/: is a directory
-./shell: ./shell.vgtest: Permission denied
-execve(0x........(./shell_badinterp), 0x........, 0x........) failed, errno 2
-EXEC FAILED: I can't recover from execve() failing, so I'm dying.
-Add more stringent tests in PRE(sys_execve), or work out how to recover.
-./shell: ./shell_binaryfile: cannot execute binary file
-./shell: ./shell_nosuchfile: No such file or directory
-./shell: shell_nosuchfile: command not found
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/shell.stderr.diff-dash
=================================================
--- shell.stderr.exp-dash 2009-07-16 03:11:12.000000000 +1000
+++ shell.stderr.out 2009-07-16 03:17:10.000000000 +1000
@@ -1,8 +1,3 @@
-./shell: 10: ./x86/: Permission denied
-./shell: 13: ./shell.vgtest: Permission denied
-execve(0x........(./shell_badinterp), 0x........, 0x........) failed, errno 2
-EXEC FAILED: I can't recover from execve() failing, so I'm dying.
-Add more stringent tests in PRE(sys_execve), or work out how to recover.
-./shell_binaryfile: 4: Syntax error: ")" unexpected
-./shell: 22: ./shell_nosuchfile: not found
-./shell: 25: shell_nosuchfile: not found
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/shell.stdout.diff
=================================================
--- shell.stdout.exp 2009-07-16 03:11:12.000000000 +1000
+++ shell.stdout.out 2009-07-16 03:17:10.000000000 +1000
@@ -1,10 +0,0 @@
-Execute a directory
-Execute a non-executable file
-Execute a script with a bad interpreter name
-Execute a binary file
-Execute a non-existent file
-Execute a non-existent file (2)
-Execute a valid script with a #! line
-Execute a valid script without a #! line
-Execute a valid script with #! but no interpname
-Execute a zero-length file
=================================================
./valgrind-new/none/tests/shell_valid1.stderr.diff
=================================================
--- shell_valid1.stderr.exp 2009-07-16 03:11:12.000000000 +1000
+++ shell_valid1.stderr.out 2009-07-16 03:17:10.000000000 +1000
@@ -0,0 +1,3 @@
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell_valid1: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/shell_valid2.stderr.diff
=================================================
--- shell_valid2.stderr.exp 2009-07-16 03:11:12.000000000 +1000
+++ shell_valid2.stderr.out 2009-07-16 03:17:10.000000000 +1000
@@ -0,0 +1,2 @@
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell_valid2: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/shell_valid3.stderr.diff
=================================================
--- shell_valid3.stderr.exp 2009-07-16 03:11:12.000000000 +1000
+++ shell_valid3.stderr.out 2009-07-16 03:17:10.000000000 +1000
@@ -0,0 +1,2 @@
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell_valid3: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/shell_zerolength.stderr.diff
=================================================
--- shell_zerolength.stderr.exp 2009-07-16 03:11:12.000000000 +1000
+++ shell_zerolength.stderr.out 2009-07-16 03:17:10.000000000 +1000
@@ -0,0 +1,2 @@
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell_zerolength: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-new/none/tests/shell_zerolength.stderr.diff-dash
=================================================
--- shell_zerolength.stderr.exp-dash 2009-07-16 03:11:12.000000000 +1000
+++ shell_zerolength.stderr.out 2009-07-16 03:17:10.000000000 +1000
@@ -1 +1,2 @@
-Bus error
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./shell_zerolength: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-old/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2009-07-16 03:00:47.000000000 +1000
+++ stack_switch.stderr.out 2009-07-16 03:05:04.000000000 +1000
@@ -0,0 +1,2 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
=================================================
./valgrind-old/memcheck/tests/origin1-yes.stderr.diff
=================================================
--- origin1-yes.stderr.exp 2009-07-16 03:00:49.000000000 +1000
+++ origin1-yes.stderr.out 2009-07-16 03:05:23.000000000 +1000
@@ -47,7 +47,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin1-yes.c:101)
Uninitialised value was created
- at 0x........: brk (in /...libc...)
+ at 0x........: ??? (in /lib32/ld-2.9.so)
by 0x........: sbrk (in /...libc...)
by 0x........: main (origin1-yes.c:98)
=================================================
./valgrind-old/memcheck/tests/origin1-yes.stderr.diff-darwin
=================================================
--- origin1-yes.stderr.exp-darwin 2009-07-16 03:00:49.000000000 +1000
+++ origin1-yes.stderr.out 2009-07-16 03:05:23.000000000 +1000
@@ -44,7 +44,12 @@
Undef 7 of 8 (brk)
-(no complaint; sbrk initialises memory on Darwin)
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin1-yes.c:101)
+ Uninitialised value was created
+ at 0x........: ??? (in /lib32/ld-2.9.so)
+ by 0x........: sbrk (in /...libc...)
+ by 0x........: main (origin1-yes.c:98)
Undef 8 of 8 (MAKE_MEM_UNDEFINED)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2009-07-16 03:00:49.000000000 +1000
+++ origin5-bz2.stderr.out 2009-07-16 03:05:27.000000000 +1000
@@ -11,7 +11,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -19,7 +19,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -27,7 +27,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -38,7 +38,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -49,7 +49,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -60,7 +60,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -71,7 +71,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -82,7 +82,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -93,7 +93,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -104,7 +104,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2009-07-16 03:00:49.000000000 +1000
+++ origin5-bz2.stderr.out 2009-07-16 03:05:27.000000000 +1000
@@ -28,7 +28,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -38,7 +39,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -48,7 +50,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2855)
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -58,7 +61,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2859)
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -68,7 +72,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -78,7 +83,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2964)
+ at 0x........: mainSort (origin5-bz2.c:2964)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2009-07-16 03:00:49.000000000 +1000
+++ origin5-bz2.stderr.out 2009-07-16 03:05:27.000000000 +1000
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -9,85 +9,91 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2854)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2858)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+Use of uninitialised value of size 4
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
<truncated beyond 100 lines>
=================================================
./valgrind-old/none/tests/empty-exe.stderr.diff
=================================================
--- empty-exe.stderr.exp 2009-07-16 03:01:14.000000000 +1000
+++ empty-exe.stderr.out 2009-07-16 03:06:44.000000000 +1000
@@ -1,2 +1,2 @@
-
-
+valgrind: wrong ELF executable class (eg. 32-bit instead of 64-bit)
+valgrind: ./empty-exe: bad interpreter (/bin/sh): VG_(strerror): unknown error
=================================================
./valgrind-old/none/tests/linux/mremap2.stdout.diff
=================================================
--- mremap2.stdout.exp 2009-07-16 03:01:11.000000000 +1000
+++ mremap2.stdout.out 2009-07-16 03:06:50.000000000 +1000
@@ -27,38 +27,38 @@
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
@@ -173,40 +173,40 @@
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
<truncated beyond 100 lines>
=================================================
./valgrind-old/none/tests/linux/mremap2.stdout.diff-glibc28-amd64
=================================================
--- mremap2.stdout.exp-glibc28-amd64 2009-07-16 03:01:11.000000000 +1000
+++ mremap2.stdout.out 2009-07-16 03:06:50.000000000 +1000
@@ -188,37 +188,37 @@
maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
maymv 1 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
maymv 1 fixed 0 newsz 31 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
..................................................
maymv 1 fixed 0 newsz 31 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXX...
[truncated message content] |
|
From: Nicholas N. <n.n...@gm...> - 2009-07-15 16:27:35
|
Nightly build on ocean ( Ubuntu 9.04, x86_64 )
Started at 2009-07-16 02:00:01 EST
Ended at 2009-07-16 02:27:25 EST
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
== 516 tests, 4 stderr failures, 2 stdout failures, 1 post failure ==
none/tests/linux/mremap2 (stdout)
helgrind/tests/tc06_two_races_xml (stderr)
exp-ptrcheck/tests/hsg (stderr)
exp-bbv/tests/amd64-linux/ll (stdout)
exp-bbv/tests/amd64-linux/ll (stderr)
exp-bbv/tests/amd64-linux/ll (post)
exp-bbv/tests/amd64-linux/rep_prefix (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
== 514 tests, 2 stderr failures, 2 stdout failures, 1 post failure ==
none/tests/linux/mremap2 (stdout)
exp-bbv/tests/amd64-linux/ll (stdout)
exp-bbv/tests/amd64-linux/ll (stderr)
exp-bbv/tests/amd64-linux/ll (post)
exp-bbv/tests/amd64-linux/rep_prefix (stderr)
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Thu Jul 16 02:13:14 2009
--- new.short Thu Jul 16 02:27:25 2009
***************
*** 8,11 ****
! == 514 tests, 2 stderr failures, 2 stdout failures, 1 post failure ==
none/tests/linux/mremap2 (stdout)
exp-bbv/tests/amd64-linux/ll (stdout)
--- 8,13 ----
! == 516 tests, 4 stderr failures, 2 stdout failures, 1 post failure ==
none/tests/linux/mremap2 (stdout)
+ helgrind/tests/tc06_two_races_xml (stderr)
+ exp-ptrcheck/tests/hsg (stderr)
exp-bbv/tests/amd64-linux/ll (stdout)
=================================================
./valgrind-new/exp-bbv/tests/amd64-linux/ll.post.diff
=================================================
--- ll.post.exp 2009-07-16 02:13:48.000000000 +1000
+++ ll.post.out 2009-07-16 02:27:25.000000000 +1000
@@ -1,53 +1,8 @@
-T:1:10 :7:10 :5:38 :2:44 :8:65 :9:662 :4:119 :6:2 :3:51
-T:7:5 :5:16 :2:18 :8:52 :9:858 :4:35 :6:1 :3:15
-T:7:5 :5:16 :2:18 :8:52 :9:858 :4:35 :6:1 :3:15
-T:7:5 :5:14 :2:16 :8:91 :9:863 :4:7 :6:1 :3:3
-T:7:5 :5:12 :2:14 :8:78 :9:880 :4:7 :6:1 :3:3
-T:7:5 :5:6 :2:8 :8:52 :9:928 :6:1
-T:7:5 :5:10 :2:10 :8:65 :9:909 :6:1
-T:7:5 :5:14 :2:18 :8:117 :9:845 :6:1
-T:5:8 :2:8 :8:52 :9:932
-T:7:5 :5:8 :2:10 :8:65 :9:911 :6:1
-T:5:8 :2:8 :8:52 :9:932
-T:7:5 :5:6 :2:8 :8:52 :9:928 :6:1
-T:5:6 :2:6 :8:39 :9:949
-T:7:5 :5:6 :2:8 :8:52 :9:928 :6:1
-T:5:4 :2:4 :8:26 :9:966
-T:7:5 :5:12 :2:14 :8:78 :9:880 :4:7 :6:1 :3:3
-T:5:6 :2:6 :8:39 :9:949
-T:7:5 :5:8 :2:10 :8:65 :9:911 :6:1
-T:7:5 :5:14 :2:16 :8:91 :9:863 :4:7 :6:1 :3:3
-T:5:8 :2:8 :8:52 :9:932
-T:7:5 :5:10 :2:12 :8:78 :9:894 :6:1
-T:7:5 :5:10 :2:12 :8:74 :9:898 :6:1
-T:5:12 :2:12 :8:82 :9:894
-T:7:5 :5:8 :2:8 :8:39 :9:390 :4:7 :6:1 :3:3 :10:3 :11:9 :12:527
-T:12:1000
-T:12:1000
-T:12:1000
-T:12:1000
-T:12:1000
-T:12:1000
-T:12:1000
-T:15:5 :18:2 :19:3 :20:2 :21:3 :22:4 :16:281 :17:10 :12:687 :13:1 :14:2
-T:23:1 :32:7 :34:351 :33:176 :16:3 :17:2 :24:10 :25:195 :26:4 :27:3 :30:4 :31:11 :11:9 :12:204 :13:2 :14:4 :28:9 :29:5
-T:34:666 :33:334
-T:34:667 :33:333
-T:34:665 :33:333 :35:2
-T:34:667 :33:333
-T:34:667 :33:333
-T:34:666 :33:334
-T:34:666 :33:332 :35:2
-T:34:357 :33:178 :36:4 :37:8 :38:4 :40:258 :39:173 :16:16 :17:2
-T:49:6 :50:2 :51:4 :52:2 :53:1 :54:6 :56:3 :38:4 :40:333 :39:225 :41:39 :42:26 :43:15 :44:46 :45:46 :46:40 :47:60 :48:6 :16:88 :17:4 :28:9 :55:18 :29:17
-T:57:4 :38:4 :40:591 :39:395 :16:4 :17:2
-T:40:600 :39:400
-T:58:2 :59:4 :40:453 :39:303 :41:18 :42:12 :43:6 :44:16 :45:16 :46:14 :47:21 :48:2 :16:68 :17:2 :24:10 :25:53
# Thread 1
-# Total intervals: 45 (Interval Size 1000)
-# Total instructions: 45639
+# Total intervals: 0 (Interval Size 1000)
+# Total instructions: 6
# Total reps: 0
# Unique reps: 0
# Total fldcw instructions: 0
=================================================
./valgrind-new/exp-bbv/tests/amd64-linux/ll.stderr.diff
=================================================
--- ll.stderr.exp 2009-07-16 02:13:48.000000000 +1000
+++ ll.stderr.out 2009-07-16 02:27:25.000000000 +1000
@@ -1,6 +1,6 @@
# Thread 1
-# Total intervals: 45 (Interval Size 1000)
-# Total instructions: 45639
+# Total intervals: 0 (Interval Size 1000)
+# Total instructions: 6
# Total reps: 0
# Unique reps: 0
# Total fldcw instructions: 0
=================================================
./valgrind-new/exp-bbv/tests/amd64-linux/ll.stdout.diff
=================================================
--- ll.stdout.exp 2009-07-16 02:13:48.000000000 +1000
+++ ll.stdout.out 2009-07-16 02:27:25.000000000 +1000
@@ -1,17 +0,0 @@
-[0;1;37;47m#################################################################[0;30;47m#####[1;37m#########[1;37;40m
-[0;1;37;47m################################################################[0;30;47m#######[1;37m########[1;37;40m
-[0;1;37;47m###################[31m#[37m############################################[0;30;47m##[1;37mO[0;30;47m#[1;37mO[0;30;47m##[1;37m########[1;37;40m
-[0;1;37;47m##[0;30;47m######[1;37m##########[31m##[0;30;47m#[1;37m###########################################[0;30;47m#[1;33m#####[0;30;47m#[1;37m########[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m#############[0;30;47m#[1;37m##########################################[0;30;47m##[1;37m##[33m###[37m##[0;30;47m##[1;37m######[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m#########[31m###[37m###[0;30;47m###[1;37m#[0;30;47m####[1;37m###[0;30;47m###[1;37m####[0;30;47m###[1;37m##[0;30;47m#####[1;37m#[0;30;47m######[1;37m#####[0;30;47m#[1;37m##########[0;30;47m##[1;37m#####[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m########[31m#[37m##[31m#[0;30;47m#[1;37m###[0;30;47m###[1;37m####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m####[0;30;47m##[1;37m###[0;30;47m##[1;37m#######[0;30;47m#[1;37m############[0;30;47m##[1;37m####[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m#######[31m#[37m###[31m#[0;30;47m#[1;37m###[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m######[0;30;47m###[1;37m#########[0;30;47m#[1;37m############[0;30;47m###[1;37m###[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m##########[31m##[0;30;47m#[1;37m###[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m######[0;30;47m###[1;37m########[33m##[0;30;47m#[1;37m###########[0;30;47m##[1;33m#[37m###[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m#######[0;30;47m#[1;37m#[31m##[0;30;47m#[1;37m####[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m#####[0;30;47m##[1;37m#[0;30;47m##[1;37m#####[33m######[0;30;47m#[1;37m#######[30m#[33m######[37m#[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m######[0;30;47m##[1;37m#[31m##[0;30;47m#[1;37m#[0;30;47m#[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m###[1;37m###[0;30;47m###[1;37m####[0;30;47m##[1;37m###[0;30;47m##[1;37m####[33m#######[0;30;47m#[1;37m#####[0;30;47m#[1;33m#######[37m#[1;37;40m
-[0;1;37;47m##[0;30;47m############[1;37m##[0;30;47m###[1;37m##[0;30;47m####[1;37m###[0;30;47m####[1;37m###[0;30;47m####[1;37m#[0;30;47m###[1;37m#[0;30;47m#####[1;37m#[0;30;47m######[1;37m###[33m#####[30m#[0;30;47m#####[1m#[33m#####[37m###[1;37;40m
-
-[7CLinux Version 2.6.29, Compiled #1 SMP Mon May 4 09:51:54 EDT 2009
-[2CTwo 3200MHz Intel(R) Xeon(TM) Processors, 2048M RAM, 6934.38 Bogomips Total
-[37Cdomori[0m
-
=================================================
./valgrind-new/exp-bbv/tests/amd64-linux/rep_prefix.stderr.diff
=================================================
--- rep_prefix.stderr.exp 2009-07-16 02:13:48.000000000 +1000
+++ rep_prefix.stderr.out 2009-07-16 02:27:25.000000000 +1000
@@ -1,6 +1,6 @@
# Thread 1
# Total intervals: 0 (Interval Size 100000)
-# Total instructions: 152
-# Total reps: 165917
-# Unique reps: 29
+# Total instructions: 8
+# Total reps: 0
+# Unique reps: 0
# Total fldcw instructions: 0
=================================================
./valgrind-new/exp-ptrcheck/tests/hsg.stderr.diff
=================================================
--- hsg.stderr.exp 2009-07-16 02:13:42.000000000 +1000
+++ hsg.stderr.out 2009-07-16 02:27:14.000000000 +1000
@@ -10,9 +10,6 @@
<line>...</line>
<line>...</line>
<line>...</line>
- <line>...</line>
- <line>...</line>
- <line>...</line>
</preamble>
<pid>...</pid>
=================================================
./valgrind-new/helgrind/tests/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2009-07-16 02:13:32.000000000 +1000
+++ tc06_two_races_xml.stderr.out 2009-07-16 02:25:17.000000000 +1000
@@ -9,9 +9,6 @@
<line>...</line>
<line>...</line>
<line>...</line>
- <line>...</line>
- <line>...</line>
- <line>...</line>
</preamble>
<pid>...</pid>
@@ -46,12 +43,15 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>do_clone</fn>
+ <fn>pthread_create@@GLIBC_2.2.5</fn>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>pthread_create@@GLIBC_2.2.5</fn>
+ <fn>pthread_create_WRK</fn>
+ <dir>...</dir>
+ <file>hg_intercepts.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
=================================================
./valgrind-new/none/tests/linux/mremap2.stdout.diff
=================================================
--- mremap2.stdout.exp 2009-07-16 02:15:11.000000000 +1000
+++ mremap2.stdout.out 2009-07-16 02:24:18.000000000 +1000
@@ -27,38 +27,38 @@
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
@@ -173,40 +173,40 @@
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
<truncated beyond 100 lines>
=================================================
./valgrind-new/none/tests/linux/mremap2.stdout.diff-glibc28-amd64
=================================================
--- mremap2.stdout.exp-glibc28-amd64 2009-07-16 02:15:11.000000000 +1000
+++ mremap2.stdout.out 2009-07-16 02:24:18.000000000 +1000
@@ -188,37 +188,37 @@
maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
maymv 1 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
maymv 1 fixed 0 newsz 31 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
..................................................
maymv 1 fixed 0 newsz 31 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
..................................................
=================================================
./valgrind-new/none/tests/linux/mremap2.stdout.diff2
=================================================
--- mremap2.stdout.exp2 2009-07-16 02:15:11.000000000 +1000
+++ mremap2.stdout.out 2009-07-16 02:24:18.000000000 +1000
@@ -27,38 +27,38 @@
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
@@ -173,52 +173,52 @@
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
<truncated beyond 100 lines>
=================================================
./valgrind-old/exp-bbv/tests/amd64-linux/ll.post.diff
=================================================
--- ll.post.exp 2009-07-16 02:00:33.000000000 +1000
+++ ll.post.out 2009-07-16 02:13:13.000000000 +1000
@@ -1,53 +1,8 @@
-T:1:10 :7:10 :5:38 :2:44 :8:65 :9:662 :4:119 :6:2 :3:51
-T:7:5 :5:16 :2:18 :8:52 :9:858 :4:35 :6:1 :3:15
-T:7:5 :5:16 :2:18 :8:52 :9:858 :4:35 :6:1 :3:15
-T:7:5 :5:14 :2:16 :8:91 :9:863 :4:7 :6:1 :3:3
-T:7:5 :5:12 :2:14 :8:78 :9:880 :4:7 :6:1 :3:3
-T:7:5 :5:6 :2:8 :8:52 :9:928 :6:1
-T:7:5 :5:10 :2:10 :8:65 :9:909 :6:1
-T:7:5 :5:14 :2:18 :8:117 :9:845 :6:1
-T:5:8 :2:8 :8:52 :9:932
-T:7:5 :5:8 :2:10 :8:65 :9:911 :6:1
-T:5:8 :2:8 :8:52 :9:932
-T:7:5 :5:6 :2:8 :8:52 :9:928 :6:1
-T:5:6 :2:6 :8:39 :9:949
-T:7:5 :5:6 :2:8 :8:52 :9:928 :6:1
-T:5:4 :2:4 :8:26 :9:966
-T:7:5 :5:12 :2:14 :8:78 :9:880 :4:7 :6:1 :3:3
-T:5:6 :2:6 :8:39 :9:949
-T:7:5 :5:8 :2:10 :8:65 :9:911 :6:1
-T:7:5 :5:14 :2:16 :8:91 :9:863 :4:7 :6:1 :3:3
-T:5:8 :2:8 :8:52 :9:932
-T:7:5 :5:10 :2:12 :8:78 :9:894 :6:1
-T:7:5 :5:10 :2:12 :8:74 :9:898 :6:1
-T:5:12 :2:12 :8:82 :9:894
-T:7:5 :5:8 :2:8 :8:39 :9:390 :4:7 :6:1 :3:3 :10:3 :11:9 :12:527
-T:12:1000
-T:12:1000
-T:12:1000
-T:12:1000
-T:12:1000
-T:12:1000
-T:12:1000
-T:15:5 :18:2 :19:3 :20:2 :21:3 :22:4 :16:281 :17:10 :12:687 :13:1 :14:2
-T:23:1 :32:7 :34:351 :33:176 :16:3 :17:2 :24:10 :25:195 :26:4 :27:3 :30:4 :31:11 :11:9 :12:204 :13:2 :14:4 :28:9 :29:5
-T:34:666 :33:334
-T:34:667 :33:333
-T:34:665 :33:333 :35:2
-T:34:667 :33:333
-T:34:667 :33:333
-T:34:666 :33:334
-T:34:666 :33:332 :35:2
-T:34:357 :33:178 :36:4 :37:8 :38:4 :40:258 :39:173 :16:16 :17:2
-T:49:6 :50:2 :51:4 :52:2 :53:1 :54:6 :56:3 :38:4 :40:333 :39:225 :41:39 :42:26 :43:15 :44:46 :45:46 :46:40 :47:60 :48:6 :16:88 :17:4 :28:9 :55:18 :29:17
-T:57:4 :38:4 :40:591 :39:395 :16:4 :17:2
-T:40:600 :39:400
-T:58:2 :59:4 :40:453 :39:303 :41:18 :42:12 :43:6 :44:16 :45:16 :46:14 :47:21 :48:2 :16:68 :17:2 :24:10 :25:53
# Thread 1
-# Total intervals: 45 (Interval Size 1000)
-# Total instructions: 45639
+# Total intervals: 0 (Interval Size 1000)
+# Total instructions: 6
# Total reps: 0
# Unique reps: 0
# Total fldcw instructions: 0
=================================================
./valgrind-old/exp-bbv/tests/amd64-linux/ll.stderr.diff
=================================================
--- ll.stderr.exp 2009-07-16 02:00:33.000000000 +1000
+++ ll.stderr.out 2009-07-16 02:13:13.000000000 +1000
@@ -1,6 +1,6 @@
# Thread 1
-# Total intervals: 45 (Interval Size 1000)
-# Total instructions: 45639
+# Total intervals: 0 (Interval Size 1000)
+# Total instructions: 6
# Total reps: 0
# Unique reps: 0
# Total fldcw instructions: 0
=================================================
./valgrind-old/exp-bbv/tests/amd64-linux/ll.stdout.diff
=================================================
--- ll.stdout.exp 2009-07-16 02:00:33.000000000 +1000
+++ ll.stdout.out 2009-07-16 02:13:13.000000000 +1000
@@ -1,17 +0,0 @@
-[0;1;37;47m#################################################################[0;30;47m#####[1;37m#########[1;37;40m
-[0;1;37;47m################################################################[0;30;47m#######[1;37m########[1;37;40m
-[0;1;37;47m###################[31m#[37m############################################[0;30;47m##[1;37mO[0;30;47m#[1;37mO[0;30;47m##[1;37m########[1;37;40m
-[0;1;37;47m##[0;30;47m######[1;37m##########[31m##[0;30;47m#[1;37m###########################################[0;30;47m#[1;33m#####[0;30;47m#[1;37m########[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m#############[0;30;47m#[1;37m##########################################[0;30;47m##[1;37m##[33m###[37m##[0;30;47m##[1;37m######[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m#########[31m###[37m###[0;30;47m###[1;37m#[0;30;47m####[1;37m###[0;30;47m###[1;37m####[0;30;47m###[1;37m##[0;30;47m#####[1;37m#[0;30;47m######[1;37m#####[0;30;47m#[1;37m##########[0;30;47m##[1;37m#####[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m########[31m#[37m##[31m#[0;30;47m#[1;37m###[0;30;47m###[1;37m####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m####[0;30;47m##[1;37m###[0;30;47m##[1;37m#######[0;30;47m#[1;37m############[0;30;47m##[1;37m####[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m#######[31m#[37m###[31m#[0;30;47m#[1;37m###[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m######[0;30;47m###[1;37m#########[0;30;47m#[1;37m############[0;30;47m###[1;37m###[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m##########[31m##[0;30;47m#[1;37m###[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m######[0;30;47m###[1;37m########[33m##[0;30;47m#[1;37m###########[0;30;47m##[1;33m#[37m###[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m#######[0;30;47m#[1;37m#[31m##[0;30;47m#[1;37m####[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m#####[0;30;47m##[1;37m#[0;30;47m##[1;37m#####[33m######[0;30;47m#[1;37m#######[30m#[33m######[37m#[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m######[0;30;47m##[1;37m#[31m##[0;30;47m#[1;37m#[0;30;47m#[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m###[1;37m###[0;30;47m###[1;37m####[0;30;47m##[1;37m###[0;30;47m##[1;37m####[33m#######[0;30;47m#[1;37m#####[0;30;47m#[1;33m#######[37m#[1;37;40m
-[0;1;37;47m##[0;30;47m############[1;37m##[0;30;47m###[1;37m##[0;30;47m####[1;37m###[0;30;47m####[1;37m###[0;30;47m####[1;37m#[0;30;47m###[1;37m#[0;30;47m#####[1;37m#[0;30;47m######[1;37m###[33m#####[30m#[0;30;47m#####[1m#[33m#####[37m###[1;37;40m
-
-[7CLinux Version 2.6.29, Compiled #1 SMP Mon May 4 09:51:54 EDT 2009
-[2CTwo 3200MHz Intel(R) Xeon(TM) Processors, 2048M RAM, 6934.38 Bogomips Total
-[37Cdomori[0m
-
=================================================
./valgrind-old/exp-bbv/tests/amd64-linux/rep_prefix.stderr.diff
=================================================
--- rep_prefix.stderr.exp 2009-07-16 02:00:33.000000000 +1000
+++ rep_prefix.stderr.out 2009-07-16 02:13:13.000000000 +1000
@@ -1,6 +1,6 @@
# Thread 1
# Total intervals: 0 (Interval Size 100000)
-# Total instructions: 152
-# Total reps: 165917
-# Unique reps: 29
+# Total instructions: 8
+# Total reps: 0
+# Unique reps: 0
# Total fldcw instructions: 0
=================================================
./valgrind-old/none/tests/linux/mremap2.stdout.diff
=================================================
--- mremap2.stdout.exp 2009-07-16 02:01:07.000000000 +1000
+++ mremap2.stdout.out 2009-07-16 02:10:07.000000000 +1000
@@ -27,38 +27,38 @@
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
@@ -173,40 +173,40 @@
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
<truncated beyond 100 lines>
=================================================
./valgrind-old/none/tests/linux/mremap2.stdout.diff-glibc28-amd64
=================================================
--- mremap2.stdout.exp-glibc28-amd64 2009-07-16 02:01:07.000000000 +1000
+++ mremap2.stdout.out 2009-07-16 02:10:07.000000000 +1000
@@ -188,37 +188,37 @@
maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
maymv 1 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
maymv 1 fixed 0 newsz 31 dstpo 0 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
..................................................
maymv 1 fixed 0 newsz 31 dstpo 1 dst 0x........ -> 0x........ (== other)
XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX...................
..................................................
=================================================
./valgrind-old/none/tests/linux/mremap2.stdout.diff2
=================================================
--- mremap2.stdout.exp2 2009-07-16 02:01:07.000000000 +1000
+++ mremap2.stdout.out 2009-07-16 02:10:07.000000000 +1000
@@ -27,38 +27,38 @@
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 0 fixed 0 newsz 21 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 0 fixed 0 newsz 29 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 0 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 0 fixed 0 newsz 30 dstpo 1 dst 0x........ -> error 12
+XXXXXXXXX.XXXXXXXXXXXXXXXXXXXX..........XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
@@ -173,52 +173,52 @@
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXX.........XXXXXXXXXX
+maymv 1 fixed 0 newsz 21 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
..................................................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXX
+maymv 1 fixed 0 newsz 29 dstpo 1 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.....................
..................................................
-maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== src)
-XXXXXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+maymv 1 fixed 0 newsz 30 dstpo 0 dst 0x........ -> 0x........ (== other)
+XXXXXXXXX...............................XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-..................................................
+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....................
..................................................
<truncated beyond 100 lines>
|
|
From: <sv...@va...> - 2009-07-15 16:05:13
|
Author: tom
Date: 2009-07-15 17:05:05 +0100 (Wed, 15 Jul 2009)
New Revision: 10479
Log:
Add some more system calls to exp-ptrcheck. Closes #186507 and #197966.
Modified:
trunk/exp-ptrcheck/h_main.c
Modified: trunk/exp-ptrcheck/h_main.c
===================================================================
--- trunk/exp-ptrcheck/h_main.c 2009-07-15 15:25:21 UTC (rev 10478)
+++ trunk/exp-ptrcheck/h_main.c 2009-07-15 16:05:05 UTC (rev 10479)
@@ -2227,7 +2227,10 @@
ADD(0, __NR_fstat64);
# endif
ADD(0, __NR_fstatfs);
- ADD(0, __NR_fsync);
+ # if defined(__NR_fstatfs64)
+ ADD(0, __NR_fstatfs64);
+# endif
+ ADD(0, __NR_fsync);
ADD(0, __NR_ftruncate);
# if defined(__NR_ftruncate64)
ADD(0, __NR_ftruncate64);
@@ -2249,6 +2252,9 @@
ADD(0, __NR_getgid32);
# endif
ADD(0, __NR_getgroups);
+# if defined(__NR_getgroups32)
+ ADD(0, __NR_getgroups32);
+# endif
ADD(0, __NR_getitimer);
# if defined(__NR_getpeername)
ADD(0, __NR_getpeername);
@@ -2256,7 +2262,11 @@
ADD(0, __NR_getpid);
ADD(0, __NR_getpgrp);
ADD(0, __NR_getppid);
+ ADD(0, __NR_getpriority);
ADD(0, __NR_getresgid);
+# if defined(__NR_getresgid32)
+ ADD(0, __NR_getresgid32);
+# endif
ADD(0, __NR_getresuid);
# if defined(__NR_getresuid32)
ADD(0, __NR_getresuid32);
@@ -2298,8 +2308,10 @@
ADD(0, __NR_munmap); // die_mem_munmap already called, segment remove);
ADD(0, __NR_nanosleep);
ADD(0, __NR_open);
+ ADD(0, __NR_personality);
ADD(0, __NR_pipe);
ADD(0, __NR_poll);
+ ADD(0, __NR_prctl);
ADD(0, __NR_pread64);
ADD(0, __NR_pwrite64);
ADD(0, __NR_read);
@@ -2316,6 +2328,8 @@
ADD(0, __NR_rt_sigaction);
ADD(0, __NR_rt_sigprocmask);
ADD(0, __NR_rt_sigreturn); /* not sure if we should see this or not */
+ ADD(0, __NR_rt_sigsuspend);
+ ADD(0, __NR_rt_sigtimedwait);
ADD(0, __NR_sched_get_priority_max);
ADD(0, __NR_sched_get_priority_min);
ADD(0, __NR_sched_getaffinity);
@@ -2350,6 +2364,7 @@
ADD(0, __NR_setgid);
ADD(0, __NR_setitimer);
ADD(0, __NR_setpgid);
+ ADD(0, __NR_setpriority);
ADD(0, __NR_setresgid);
ADD(0, __NR_setrlimit);
ADD(0, __NR_setsid);
@@ -2401,6 +2416,7 @@
ADD(0, __NR_uname);
ADD(0, __NR_unlink);
ADD(0, __NR_utime);
+ ADD(0, __NR_vfork);
# if defined(__NR_waitpid)
ADD(0, __NR_waitpid);
# endif
|
|
From: Tom H. <to...@co...> - 2009-07-15 15:39:35
|
On 15/07/09 16:40, Julian Seward wrote: > A couple of times recently I've seen the following build failure: > > Making install in VEX > mv: cannot stat `.deps/libvex_amd64_linux_a-guest_x86_toIR.Tpo': No such file > or directory > make[3]: *** [libvex_amd64_linux_a-guest_x86_toIR.o] Error 1 > make[2]: *** [install] Error 2 > make[1]: *** [install-recursive] Error 1 > make: *** [install] Error 2 > make: *** Waiting for unfinished jobs.... > Making all in coregrind > > although it still seems to go on and complete the build OK, which is > a bit odd. I don't remember this from before. > > It doesn't happen from a clean checkout build, only a rebuild, and > only when I rebuild using my standard "rebuild-from-scratch" script > shown below. Perhaps related to the -j 2 ? Inconsistent failures when using parallel make are usually a sign that there is a dependency missing so that it is trying to run a step before all it's dependencies are satisfied. Tom -- Tom Hughes (to...@co...) http://www.compton.nu/ |
|
From: Julian S. <js...@ac...> - 2009-07-15 15:32:48
|
Hi, A couple of times recently I've seen the following build failure: Making install in VEX mv: cannot stat `.deps/libvex_amd64_linux_a-guest_x86_toIR.Tpo': No such file or directory make[3]: *** [libvex_amd64_linux_a-guest_x86_toIR.o] Error 1 make[2]: *** [install] Error 2 make[1]: *** [install-recursive] Error 1 make: *** [install] Error 2 make: *** Waiting for unfinished jobs.... Making all in coregrind although it still seems to go on and complete the build OK, which is a bit odd. I don't remember this from before. It doesn't happen from a clean checkout build, only a rebuild, and only when I rebuild using my standard "rebuild-from-scratch" script shown below. Perhaps related to the -j 2 ? Anyone else seen this? J #!/bin/sh make --quiet -k distclean rm -rf Inst ./autogen.sh ./configure --prefix=`pwd`/Inst make -j 2 --quiet all install |
|
From: <sv...@va...> - 2009-07-15 15:25:29
|
Author: sewardj Date: 2009-07-15 16:25:21 +0100 (Wed, 15 Jul 2009) New Revision: 10478 Log: Track vex r1909 (get rid of LibVEX_Version). Modified: trunk/Makefile.vex.am Modified: trunk/Makefile.vex.am =================================================================== --- trunk/Makefile.vex.am 2009-07-15 14:52:52 UTC (rev 10477) +++ trunk/Makefile.vex.am 2009-07-15 15:25:21 UTC (rev 10478) @@ -61,20 +61,6 @@ rm -f auxprogs/genoffsets.s #---------------------------------------------------------------------------- -# main_vex_svnversion.h -#---------------------------------------------------------------------------- - -BUILT_SOURCES += priv/main_vex_svnversion.h - -# The contents of this file don't matter, as we don't call LibVEX_version() -# from Valgrind. -# Nb: generating a file and putting it in $(srcdir) rather than $(builddir) -# seems like bad form... this should be fixed if VPATH builds are made to -# work. -priv/main_vex_svnversion.h: - echo "\"version\"" > $(srcdir)/priv/main_vex_svnversion.h - -#---------------------------------------------------------------------------- # libvex-<platform>.a #---------------------------------------------------------------------------- |
|
From: <sv...@va...> - 2009-07-15 15:24:57
|
Author: sewardj
Date: 2009-07-15 16:24:49 +0100 (Wed, 15 Jul 2009)
New Revision: 1909
Log:
Get rid of LibVEX_Version().
Modified:
trunk/priv/main_main.c
trunk/pub/libvex.h
Modified: trunk/priv/main_main.c
===================================================================
--- trunk/priv/main_main.c 2009-07-12 13:01:17 UTC (rev 1908)
+++ trunk/priv/main_main.c 2009-07-15 15:24:49 UTC (rev 1909)
@@ -80,16 +80,6 @@
/* Exported to library client. */
-const HChar* LibVEX_Version ( void )
-{
-return
-#include "main_vex_svnversion.h"
- ;
-}
-
-
-/* Exported to library client. */
-
void LibVEX_default_VexControl ( /*OUT*/ VexControl* vcon )
{
vcon->iropt_verbosity = 0;
Modified: trunk/pub/libvex.h
===================================================================
--- trunk/pub/libvex.h 2009-07-12 13:01:17 UTC (rev 1908)
+++ trunk/pub/libvex.h 2009-07-15 15:24:49 UTC (rev 1909)
@@ -276,15 +276,6 @@
/*-------------------------------------------------------*/
-/*--- Version information ---*/
-/*-------------------------------------------------------*/
-
-/* Returns the Vex SVN version, as a statically allocated string. */
-
-extern const HChar* LibVEX_Version ( void );
-
-
-/*-------------------------------------------------------*/
/*--- Storage management control ---*/
/*-------------------------------------------------------*/
|
|
From: <sv...@va...> - 2009-07-15 14:52:55
|
Author: sewardj Date: 2009-07-15 15:52:52 +0100 (Wed, 15 Jul 2009) New Revision: 10477 Log: Merge docs/ changes from branches/MESSAGING_TIDYUP r10464. See trunk r10465 commit message for details. Added: trunk/docs/internals/xml-output-protocol4.txt Modified: trunk/docs/internals/Makefile.am trunk/docs/internals/xml-output.txt trunk/docs/xml/manual-core.xml Modified: trunk/docs/internals/Makefile.am =================================================================== --- trunk/docs/internals/Makefile.am 2009-07-15 14:52:18 UTC (rev 10476) +++ trunk/docs/internals/Makefile.am 2009-07-15 14:52:52 UTC (rev 10477) @@ -16,4 +16,5 @@ segments-seginfos.txt threads-syscalls-signals.txt \ tm-mutexstates.dot tm-threadstates.dot tracking-fn-entry-exit.txt \ why-no-libc.txt \ - xml-output.txt + xml-output.txt \ + xml-output-protocol4.txt Copied: trunk/docs/internals/xml-output-protocol4.txt (from rev 10464, branches/MESSAGING_TIDYUP/docs/internals/xml-output-protocol4.txt) =================================================================== --- trunk/docs/internals/xml-output-protocol4.txt (rev 0) +++ trunk/docs/internals/xml-output-protocol4.txt 2009-07-15 14:52:52 UTC (rev 10477) @@ -0,0 +1,697 @@ + +==================================================================== + +11 May 2009 + +Protocols 1 through 3 supported Memcheck only. Protocol 4 provides +XML output for Memcheck, Helgrind and Ptrcheck. Technically there are +three variants of Protocol 4, one for each tool, since they produce +different errors. The three variants differ only in the definition of +the ERROR nonterminal and are otherwise identical. + +NOTE that Protocol 4 (for the current svn trunk, which will eventually +become 3.5.x) is still under development. The text herein should not +be regarded as the final definition. + + +Identification of Protocols +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In Protocols 1 through 3, a <protocolversion>INT<protocolversion> +close to the start of the stream makes it possible for parsers to +ascertain the version, so they can tell whether or not they can handle +it. The presence of support for multiple tools brings a complication, +though: it is not enough merely to state the protocol version -- the +tool name must also be stated. Hence in Protocol 4, the +<protocolversion>INT<protocolversion> is followed immediately by +<protocoltool>TEXT</protocoltool>, to identify the tool. + +This duplicates the tool name present later in the preamble, but it +was felt important to place the tool name right at the front along +with the protocol number, for easy determination of parseability. + + +How this specification is structured +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The TOPLEVEL nonterminal specifies top level XML output structure. It +is common to all error producing tools. + +TOPLEVEL references TOOLSPECIFICs for each tool, and these are defined +differently for each tool. Each TOOLSPECIFIC is an error, which is +tool-specific. For Helgrind, a TOOLSPECIFIC may also contain a +so-called thread-announcement record (described below). + +Overall there is a very high degree of format commonality between the +three tools. Once a GUI is able to display the output correctly for +one tool, it should be easy to extend it for the other two. + + +Protocol 4 changes for Memcheck +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Protocol 4 for Memcheck is similar to Protocol 3, but has a number +of changes to make it fit in the common framework: + +- the SUPPCOUNTS nonterminal now appears after the "Zero or more + ERRORs" block, and not before it. + +- the abovementioned "Zero or more ERRORs" block now becomes + "Zero or more of (either ERROR or ERRORCOUNTS)". + +- ERRORs for Memcheck may contain a SUPPRESSION field, which gives + the corresponding suppression for it. + +- ERRORs for Memcheck now use the XWHAT and XAUXWHAT nonterminals, as + well as WHAT and XWHAT. + +- The ad-hoc blocks <leakedbytes> and <leakedblocks> used by Memcheck + have been moved inside the XWHAT for the relevant error kinds. This + facilitates a common definition of ERROR across all three tools. + +The first two changes are required in order to correct a longstanding +design flaw in the way Memcheck interacts with Valgrind's error +management mechanism. See bug #186790 +(https://bugs.kde.org/show_bug.cgi?id=186790). The third change was +requested in #191189 (https://bugs.kde.org/show_bug.cgi?id=191189). + +For GUI authors upgrading from Protocol 3 or earlier, the most +significant new concept to grasp is the relationship between WHAT and +XWHAT, and between AUXWHAT and XAUXWHAT. + +The definition of Protocol 4 now follows. It is structured similarly +to that of the previous protocols, except that there is a separate +definition of a nonterminal called TOOLSPECIFIC for each of Memcheck, +Helgrind and Ptrcheck. The XWHAT and XAUXWHAT nonterminals also have +tool-specific components. Apart from that, the structure is common +to all supported tools. + + +==================================================================== + +TOPLEVEL +-------- + +The first line output is always this: + + <?xml version="1.0"?> + +All remaining output is contained within the tag-pair +<valgrindoutput>. + +Inside that, the first entity is an indication of the protocol +version. This is provided so that existing parsers can identify XML +created by future versions of Valgrind merely by observing that the +protocol version is one they don't understand. Hence TOPLEVEL is: + + <?xml version="1.0"?> + <valgrindoutput> + <protocolversion>INT<protocolversion> + <protocoltool>TEXT</protocoltool> + PROTOCOL + </valgrindoutput> + +Valgrind versions 3.0.0 and 3.0.1 emit protocol version 1. Versions +3.1.X and 3.2.X [and 3.3.X ??] emit protocol version 2. 3.4.X emits +protocol version 3. 3.5.X emits version 4. + +The TEXT in <protocoltool> is either "memcheck", "helgrind" or +"exp-ptrcheck" and determines the allowed format of the ERROR +nonterminal. Note that <protocoltool> is only present when the +protocol version is 4 or above. + + +PROTOCOL for version 4 +---------------------- + +This is the main top-level construction. Roughly speaking, it +contains a preamble, a program-started marker, the errors from the run +of the program, a program-ended marker, and any further errors +resulting from post-run analysis (eg, memory leak detection). Hence +the following in sequence: + +* Various preamble lines which give version info for the various + components. The text in them can be anything; it is not intended + for interpretation by the GUI: + + <preamble> + <line>Misc version/copyright text</line> (zero or more of) + </preamble> + +* The PID of this process and of its parent: + + <pid>INT</pid> + <ppid>INT</ppid> + +* The name of the tool being used: + + <tool>TEXT</tool> + + This can be anything, and it doesn't have to match the + <protocoltool> entry, although that might be wise. + +* Zero or more bindings of environment variable names to actual + values. These describe precisely the instantiations of %q format + specifiers used in the --xml-file= argument for the run, if any. + There is one <logfilequalifier> entry for each %q expanded: + + <logfilequalifier> <var>VAR</var> <value>$VAR</value> + </logfilequalifier> + +* OPTIONALLY, if --xml-user-comment=STRING was given: + + <usercomment>STRING</usercomment> + + STRING is not escaped in any way, so that it itself may be a piece + of XML with arbitrary tags etc. + +* The program and args: first those pertaining to Valgrind itself, and + then those pertaining to the program to be run under Valgrind (the + client): + + <args> + <vargv> + <exe>TEXT</exe> + <arg>TEXT</arg> (zero or more of) + </vargv> + <argv> + <exe>TEXT</exe> + <arg>TEXT</arg> (zero or more of) + </argv> + </args> + +* The following, indicating that the program has now started: + + <status> <state>RUNNING</state> + <time>human-readable-time-string</time> + </status> + + The format of this string is not defined, but it is expected to be + human-understandable. In current Valgrind versions it is the + elapsed wallclock time since process start. + +* Zero or more of (either ERRORCOUNTS or TOOLSPECIFIC). + +* The following, indicating that the program has now finished, and + that the any final wrapup (eg, for Memcheck, leak checking) is happening. + + <status> <state>FINISHED</state> + <time>human-readable-time-string</time> + </status> + +* Zero or more of (either ERRORCOUNTS or TOOLSPECIFIC). In Memcheck's + case these will be complaints from the leak checker. For Ptrcheck + and Helgrind we don't expect any output here (but the spec does not + guarantee that either). + +* SUPPCOUNTS, indicating how many times each suppression was used. + + +That's it. The tool-specific definitions for TOOLSPECIFIC are below; +however let's first continue with some smaller nonterminals used in +the construction of errors for all the tool types. + + +==================================================================== + +Nonterminals used in construction of ERRORs +------------------------------------------- + +STACK +----- +STACK indicates locations in the program being debugged. A STACK +is one or more FRAMEs. The first is the innermost frame, the +next its caller, etc. + + <stack> + one or more FRAME + </stack> + + +FRAME +----- +FRAME records a single program location: + + <frame> + <ip>HEX64</ip> + optionally <obj>TEXT</obj> + optionally <fn>TEXT</fn> + optionally <dir>TEXT</dir> + optionally <file>TEXT</file> + optionally <line>INT</line> + </frame> + +Only the <ip> field is guaranteed to be present. It indicates a +code ("instruction pointer") address. + +The optional fields, if present, appear in the order stated: + +* obj: gives the name of the ELF object containing the code address + +* fn: gives the name of the function containing the code address + +* dir: gives the source directory associated with the name specified + by <file>. Note the current implementation often does not + put anything useful in this field. + +* file: gives the name of the source file containing the code address + +* line: gives the line number in the source file + + +ERRORCOUNTS +----------- +This specifies, for each error that has been so far presented, +the number of occurrences of that error. + + <errorcounts> + zero or more of + <pair> <count>INT</count> <unique>HEX64</unique> </pair> + </errorcounts> + +Each <pair> gives the current error count <count> for the error with +unique tag </unique>. The counts do not have to give a count for each +error so far presented - partial information is allowable. + +As at Valgrind rev 3793, error counts are only emitted at program +termination. However, it is perfectly acceptable to periodically emit +error counts as the program is running. Doing so would facilitate a +GUI to dynamically update its error-count display as the program runs. + + +SUPPCOUNTS +---------- +A SUPPCOUNTS block appears exactly once, after the program terminates. +It specifies the number of times each error-suppression was used. +Suppressions not mentioned were used zero times. + + <suppcounts> + zero or more of + <pair> <count>INT</count> <name>TEXT</name> </pair> + </suppcounts> + +The <name> is as specified in the suppression name fields in .supp +files. + + +SUPPRESSION +----------- +These are optionally emitted as part of ERRORs, and specify the +suppression that would be needed to suppress the containing error. + + <suppression> + <sname>TEXT</sname> name of the suppression + <skind>TEXT</skind> kind, eg "Memcheck:Param" + <skaux>TEXT</skaux> (optional) aux kind, eg "write(buf)" + SFRAME (one or more) frames + </suppression> + + +SFRAME +------ +Either + + <sframe> <obj>TEXT</obj> </sframe> + +eg denoting "obj:/usr/X11R6/lib*/libX11.so.6.2", or + + <sframe> <fun>TEXT</fun> </sframe> + +eg denoting "fun:*libc_write" + + +WHAT and XWHAT +-------------- + +WHAT supplies a single line of text, which is a human-understandable, +primary description of an error. + +XWHAT is an extended version of WHAT. It also contains a piece of +text intended for human reading, but in addition may contain arbitrary +other tagged data. This extra data is tool-specific. One of its +purposes is to supply GUIs with links to other data in the sequence of +TOOLSPECIFICs, that are associated with the error. Another purpose is +wrap certain quantities (numbers, file names, etc) embedded in the +message, so that the GUIs can get hold of them without having to parse +the text itself. + +For example, we could get: + + <what>Possible data race on address 0x12345678</what> + +or alternatively + + <xwhat> + <text>Possible data race by thread #17 on address 0x12345678</text> + <threadid>17</threadid> + </xwhat> + +And presumably the <threadid>17</threadid> refers to some previously +emitted entity in the stream of TOOLSPECIFICs for this tool. + +In an XWHAT, the <text> tag-pair is mandatory. GUIs which don't want +to handle the extra fields can just ignore them and display the text +part. In this way they have the option to present at least something +useful to the user even in the case where the extra fields can't be +handled, for whatever reason. + +A corollary of this is that the degenerate extended case + + <xwhat> <text>T</text> </xwhat> + +is exactly equivalent to + + <what>T</what> + + +AUXWHAT and XAUXWHAT +-------------------- + +AUXWHAT is exactly like WHAT: a single line of text. It provides +additional, secondary description of an error, that should be shown to +the user. + +XAUXWHAT relates to AUXWHAT in the same way XWHAT relates to WHAT: it +wraps up extra tagged info along with the line of text that would be +in the AUXWHAT. + + +==================================================================== + +ERROR definition -- common structure +------------------------------------ + +ERROR defines an error, and is the most complex nonterminal. For all +of the tools, the structure is common, and always conforms to the +following: + + <error> + <unique>HEX64</unique> + <tid>INT</tid> + <kind>KIND</kind> + + (either WHAT or XWHAT) + optionally: (either WHAT or XWHAT) + + STACK + + zero or more: (either AUXWHAT or XAUXWHAT or STACK) + + optionally: SUPPRESSION + </error> + + +* Each error contains a unique, arbitrary 64-bit hex number. This is + used to refer to the error in ERRORCOUNTS nonterminals (see above). + +* The <tid> tag indicates the Valgrind thread number. This value + is arbitrary but may be used to determine which threads produced + which errors (at least, the first instance of each error). + +* The <kind> tag specifies one of a small number of fixed error types, + so that GUIs may roughly categorise errors by type if they want. + The tags themselves are tool-specific and are defined further + below, for each tool. + +* The "(either WHAT or XWHAT)" gives a primary description of the + error. WHAT and XWHAT are defined earlier in this file. Any XWHATs + appearing here may contain tool-specific subcomponents. + +* Optionally, a second line of primary description may be present. + +* A STACK gives the primary source location for the error. + +* There then follow zero or more of "(either AUXWHAT or XAUXWHAT or + STACK)". These give further (auxiliary) information about the + error, possibly including stack traces. They should be shown to the + user in the order they appear. AUXWHAT and XAUXWHAT are defined + earlier in this file. Any XAUXWHATs appearing here may contain + tool-specific subcomponents. + +* Optionally, as the last field, a SUPPRESSION may be provided. This + contains a suppression that would hide the error. + + +==================================================================== + +TOOLSPECIFIC definition for Memcheck +------------------------------------ + +For Memcheck, a TOOLSPECIFIC is simply an ERROR: + +TOOLSPECIFIC = ERROR + + +ERROR details for Memcheck +-------------------------- + +XWHATs (for definition, see above) may contain the following extra +components (along with the mandatory <text>...</text> component): + +* <leakedbytes>INT</leakedbytes> + +* <leakedblocks>INT</leakedblocks> + +These fields are used in errors that have a <kind> tag specifying a +KIND of the form "Leak_*", to indicate the number of leaked bytes and +blocks. + + +XAUXWHATs (for definition, see above) may contain the following extra +components (along with the mandatory <text>...</text> component): + +* <file>TEXT</file>, as defined in FRAME + +* <line>INT</line>, as defined in FRAME + +* <dir>TEXT</dir>, as defined in FRAME + + +KIND for Memcheck +----------------- + +This is a small enumeration indicating roughly the nature of an error. +The possible values are: + + InvalidFree + + free/delete/delete[] on an invalid pointer + + MismatchedFree + + free/delete/delete[] does not match allocation function + (eg doing new[] then free on the result) + + InvalidRead + + read of an invalid address + + InvalidWrite + + write of an invalid address + + InvalidJump + + jump to an invalid address + + Overlap + + args overlap other otherwise bogus in eg memcpy + + InvalidMemPool + + invalid mem pool specified in client request + + UninitCondition + + conditional jump/move depends on undefined value + + UninitValue + + other use of undefined value (primarily memory addresses) + + SyscallParam + + system call params are undefined or point to + undefined/unaddressible memory + + ClientCheck + + "error" resulting from a client check request + + Leak_DefinitelyLost + + memory leak; the referenced blocks are definitely lost + + Leak_IndirectlyLost + + memory leak; the referenced blocks are lost because all pointers + to them are also in leaked blocks + + Leak_PossiblyLost + + memory leak; only interior pointers to referenced blocks were + found + + Leak_StillReachable + + memory leak; pointers to un-freed blocks are still available + + +==================================================================== + +TOOLSPECIFIC definition for Ptrcheck +------------------------------------ + +For Ptrcheck, a TOOLSPECIFIC is simply an ERROR: + +TOOLSPECIFIC = ERROR + + +ERROR details for Ptrcheck +-------------------------- + +Ptrcheck does not produce any XWHAT records, despite the fact that +"ERROR definition -- common structure" says that tools may do so. + + +XAUXWHATs (for definition, see above) may contain the following extra +components (along with the mandatory <text>...</text> component): + +* <file>TEXT</file>, as defined in FRAME + +* <line>INT</line>, as defined in FRAME + +* <dir>TEXT</dir>, as defined in FRAME + + +KIND for Ptrcheck +----------------- +This is a small enumeration indicating roughly the nature of an error. +The possible values are: + + SorG + + Stack or global array inconsistency (roughly speaking, an + overrun of a stack or global array). The <auxwhat> blocks give + further details. + + Heap + + Usage of a pointer derived from a heap block, to access + outside that heap block + + Arith + + Doing arithmetic on pointers in a way that cannot possibly + result in another valid pointer. Eg, adding two pointer values. + + SysParam + + Special case of "Heap", in which the invalidly-addressed memory + is presented as an argument to a system call which reads or + writes memory. + + +==================================================================== + +TOOLSPECIFIC definition for Helgrind +------------------------------------- + +For Helgrind, a TOOLSPECIFIC may be one of two things: + +TOOLSPECIFIC = either ERROR or ANNOUNCETHREAD + + +ANNOUNCETHREAD +-------------- + +The definition is + + <announcethread> + <hthreadid>INT</hthreadid> + STACK + </announcethread> + +This states the creation point of a thread, and gives it a unique +"hthreadid", which may be referred to in subsequent ERRORs. Note that + +1. The appearance of ANNOUNCETHREAD does not mean that the thread was + actually created at that point relative to any preceding or + following ERRORs in the output stream -- in general the thread will + have been created arbitrarily earlier. Helgrind only "announces" a + thread when it needs to refer to it for the first time, in a + subsequent ERROR. + +2. The "hthreadid" is a number which uniquely identifies the thread + for the run - no other thread will have the same hthreadid. The + hthreadid is a Helgrind-specific piece of information and is + unrelated to the <tid> fields in the common part of an ERROR. + Be careful not to confuse the two. + + +ERROR details for Helgrind +-------------------------- + +XWHATs (for definition, see above) may contain the following extra +components (along with the mandatory <text>...</text> component): + +* <hthreadid>INT</hthreadid> fields. These refer to ANNOUNCETHREADs + appearing previously in the scheme, and state the creation points of + the thread(s) concerned in the ERROR. Hence it should be possible + for GUIs to show users stacks of the creation points of all threads + involved in each ERROR. + + +XAUXWHATs (for definition, see above) may contain the following extra +components (along with the mandatory <text>...</text> component): + +* <hthreadid>INT</hthreadid>, same meaning as when referred to in + XWHAT + +* <file>TEXT</file>, as defined in FRAME + +* <line>INT</line>, as defined in FRAME + +* <dir>TEXT</dir>, as defined in FRAME + + +KIND for Helgrind +----------------- +This is a small enumeration indicating roughly the nature of an error. +The possible values are: + + Race + + Data race. Helgrind will try to show the stacks for both + conflicting accesses if it can; it will always show the stack + for at least one of them. + + UnlockUnlocked + + Unlocking a not-locked lock + + UnlockForeign + + Unlocking a lock held by some other thread + + UnlockBogus + + Unlocking an address which is not known to be a lock + + PthAPIerror + + One of the POSIX pthread_ functions that are intercepted + by Helgrind, failed with an error code. Usually indicates + something bad happening. + + LockOrder + + An inconsistency in the acquisition order of locks was observed; + dangerous, as it can potentially lead to deadlocks + + Misc + + One of various miscellaneous noteworthy conditions was observed + (eg, thread exited whilst holding locks, "impossible" behaviour + from the underlying threading library, etc) Modified: trunk/docs/internals/xml-output.txt =================================================================== --- trunk/docs/internals/xml-output.txt 2009-07-15 14:52:18 UTC (rev 10476) +++ trunk/docs/internals/xml-output.txt 2009-07-15 14:52:52 UTC (rev 10477) @@ -1,4 +1,17 @@ +Note, 11 May 2009. The XML format evolved over several versions, +as expected. This file describes 3 different versions of the +format (called Protocols 1, 2 and 3 respectively). As of 11 May 09 +a fourth version, Protocol 4, was defined, and that is described +in xml-output-protocol4.txt. + +The original May 2005 introduction follows. These comments are +correct up to and including Protocol 3, which was used in the Valgrind +3.4.x series. However, there were some more significant changes in +the format and the required flags for Valgrind, in Protocol 4. + + ---------------------- + As of May 2005, Valgrind can produce its output in XML form. The intention is to provide an easily parsed, stable format which is suitable for GUIs to read. @@ -13,7 +26,7 @@ that investments in parser-writing by GUI developers is not lost as new versions of Valgrind appear. -* Have an extensive output format, so that future changes to the +* Have an extensible output format, so that future changes to the format do not break backwards compatibility with existing parsers of it. @@ -30,7 +43,7 @@ How to use ~~~~~~~~~~ -Run with flag --xml=yes. That`s all. Note however several +Run with flag --xml=yes. That's all. Note however several caveats. * At the present time only Memcheck is supported. The scheme extends @@ -98,7 +111,7 @@ Inside that, the first entity is an indication of the protocol version. This is provided so that existing parsers can identify XML created by future versions of Valgrind merely by observing that the -protocol version is one they don`t understand. Hence TOPLEVEL is: +protocol version is one they don't understand. Hence TOPLEVEL is: <?xml version="1.0"?> <valgrindoutput> Modified: trunk/docs/xml/manual-core.xml =================================================================== --- trunk/docs/xml/manual-core.xml 2009-07-15 14:52:18 UTC (rev 10476) +++ trunk/docs/xml/manual-core.xml 2009-07-15 14:52:52 UTC (rev 10477) @@ -575,14 +575,20 @@ <para>The single most important option.</para> -<itemizedlist> - <listitem id="tool_name"> - <para><option>--tool=<name></option> [default=memcheck]</para> - <para>Run the Valgrind tool called <emphasis>name</emphasis>, - e.g. Memcheck, Cachegrind, etc.</para> - </listitem> -</itemizedlist> +<variablelist> + <varlistentry id="tool_name" xreflabel="--tool"> + <term> + <option><![CDATA[--tool=<name> [default: memcheck] ]]></option> + </term> + <listitem> + <para>Run the Valgrind tool called <emphasis>name</emphasis>, + e.g. Memcheck, Cachegrind, etc.</para> + </listitem> + </varlistentry> + +</variablelist> + </sect2> @@ -820,12 +826,94 @@ </term> <listitem> <para>When enabled, output will be in XML format. This is aimed - at making life easier for tools that consume Valgrind's output as - input, such as GUI front ends. Currently this option only works - with Memcheck.</para> + at making life easier for tools that consume Valgrind's output + as input, such as GUI front ends. Currently this option works + with Memcheck, Helgrind and Ptrcheck. The output format is + specified in the + file + <computeroutput>docs/internals/xml-output-protocol4.txt</computeroutput> + in the source tree for Valgrind 3.5.0 or later.</para> </listitem> </varlistentry> + + + + <varlistentry id="opt.xml-fd" xreflabel="--xml-fd"> + <term> + <option><![CDATA[--xml-fd=<number> [default: -1, disabled] ]]></option> + </term> + <listitem> + <para>Specifies that Valgrind should send its XML output to the + specified file descriptor. By default, this is disabled. To + use XML output, you need to give <option>--xml=yes</option> to + tell the tool you want XML output. You also need to use one of + <option>--xml-fd=</option>, <option>--xml-file=</option> + or <option>--xml-socket=</option> to specify where the XML is to + be sent. If you request XML output but do not specify a + destination for it, Valgrind will refuse to start up.</para> + + <para>Note that XML output is sent on a different channel (file + descriptor) to normal text output. It is entirely legitimate to + select XML output, use one + of <option>--xml-fd=</option>, <option>--xml-file=</option> + or <option>--xml-socket=</option> to specify where it should be + sent, and at the same time use one of + <option>--log-fd=</option>, <option>--log-file=</option> + or <option>--log-socket=</option> to specify where any residual + text messages should be sent.</para> + + <para>The recommended flags for a GUI to pass, when requesting + XML output, are: <option>--xml=yes</option> to enable XML + output, + <option>--xml-file=</option> to send the XML output to a + (presumably GUI-selected) file, <option>--log-file=</option> to + send the text output to a second GUI-selected file, + and <option>-q</option> to restrict the text output to critical + error messages created by Valgrind itself. For example, failure + to read a specified suppressions file counts as a critical error + message. In this way, for a successful run the text output file + will be empty. But if it isn't empty, then it will contain + important information which the GUI user should be made aware + of. + + <para>Note that GUIs are strongly recommended to also + specify <option>--child-silent-after-fork=yes</option>. + </para> + + </para> + </listitem> + </varlistentry> + + <varlistentry id="opt.xml-file" xreflabel="--xml-file"> + <term> + <option><![CDATA[--xml-file=<filename> ]]></option> + </term> + <listitem> + <para>Specifies that Valgrind should send its XML output + to the specified file. Any <option>%p</option> + or <option>%q</option> sequences appearing in the filename are + expanded in exactly the same way as they are + for <option>--log-file=</option>. See the description + of <option>--log-file=</option> for details. + </para> + </listitem> + </varlistentry> + + <varlistentry id="opt.xml-socket" xreflabel="--xml-socket"> + <term> + <option><![CDATA[--xml-socket=<ip-address:port-number> ]]></option> + </term> + <listitem> + <para>Specifies that Valgrind should send its XML output the + specified port at the specified IP address. This option behaves + identically to <option>--log-socket=</option>, except that it + specifies the destination for XML output rather than for text + output. See the description of <option>--log-socket=</option> + for further details.</para> + </listitem> + </varlistentry> + <varlistentry id="opt.xml-user-comment" xreflabel="--xml-user-comment"> <term> <option><![CDATA[--xml-user-comment=<string> ]]></option> |
|
From: <sv...@va...> - 2009-07-15 14:52:27
|
Author: sewardj
Date: 2009-07-15 15:52:18 +0100 (Wed, 15 Jul 2009)
New Revision: 10476
Log:
Merge include/ changes from branches/MESSAGING_TIDYUP r10464.
See trunk r10465 commit message for details.
Modified:
trunk/include/pub_tool_debuginfo.h
trunk/include/pub_tool_libcprint.h
trunk/include/pub_tool_options.h
trunk/include/pub_tool_tooliface.h
trunk/include/pub_tool_wordfm.h
Modified: trunk/include/pub_tool_debuginfo.h
===================================================================
--- trunk/include/pub_tool_debuginfo.h 2009-07-15 14:52:02 UTC (rev 10475)
+++ trunk/include/pub_tool_debuginfo.h 2009-07-15 14:52:18 UTC (rev 10476)
@@ -95,16 +95,25 @@
/*OUT*/Char* dname, Int n_dname,
/*OUT*/PtrdiffT* offset );
-/* Try to form some description of data_addr by looking at the DWARF3
+/* Try to form some description of DATA_ADDR by looking at the DWARF3
debug info we have. This considers all global variables, and all
- frames in the stacks of all threads. Result (or as much as will
- fit) is put into into dname{1,2}[0 .. n_dname-1] and is guaranteed
- to be zero terminated. */
-extern Bool VG_(get_data_description)( /*OUT*/Char* dname1,
- /*OUT*/Char* dname2,
- Int n_dname,
- Addr data_addr );
+ frames in the stacks of all threads. Result is written at the ends
+ of DNAME{1,2}V, which are XArray*s of HChar, that have been
+ initialised by the caller, and True is returned. If no description
+ is created, False is returned. Regardless of the return value,
+ DNAME{1,2}V are guaranteed to be zero terminated after the call.
+ Note that after the call, DNAME{1,2} may have more than one
+ trailing zero, so callers should establish the useful text length
+ using VG_(strlen) on the contents, rather than VG_(sizeXA) on the
+ XArray itself.
+*/
+Bool VG_(get_data_description)(
+ /*MOD*/ void* /* really, XArray* of HChar */ dname1v,
+ /*MOD*/ void* /* really, XArray* of HChar */ dname2v,
+ Addr data_addr
+ );
+
/* Succeeds if the address is within a shared object or the main executable.
It doesn't matter if debug info is present or not. */
extern Bool VG_(get_objname) ( Addr a, Char* objname, Int n_objname );
Modified: trunk/include/pub_tool_libcprint.h
===================================================================
--- trunk/include/pub_tool_libcprint.h 2009-07-15 14:52:02 UTC (rev 10475)
+++ trunk/include/pub_tool_libcprint.h 2009-07-15 14:52:18 UTC (rev 10476)
@@ -50,28 +50,58 @@
------------------------------------------------------------------ */
/* Note that they all output to the file descriptor given by the
- * --log-fd/--log-file/--log-socket argument, which defaults to 2 (stderr).
- * Hence no need for VG_(fprintf)().
- */
-extern UInt VG_(printf) ( const HChar *format, ... ) PRINTF_CHECK(1, 2);
-extern UInt VG_(vprintf) ( const HChar *format, va_list vargs ) PRINTF_CHECK(1, 0);
-extern UInt VG_(sprintf) ( Char* buf, const HChar* format, ... ) PRINTF_CHECK(2, 3);
-extern UInt VG_(vsprintf) ( Char* buf, const HChar* format, va_list vargs ) PRINTF_CHECK(2, 0);
+ --log-fd/--log-file/--log-socket argument, which defaults to 2
+ (stderr). Hence no need for VG_(fprintf)().
+*/
+extern UInt VG_(printf) ( const HChar *format, ... )
+ PRINTF_CHECK(1, 2);
+
+extern UInt VG_(vprintf) ( const HChar *format, va_list vargs )
+ PRINTF_CHECK(1, 0);
+
+extern UInt VG_(sprintf) ( Char* buf, const HChar* format, ... )
+ PRINTF_CHECK(2, 3);
+
+extern UInt VG_(vsprintf) ( Char* buf, const HChar* format, va_list vargs )
+ PRINTF_CHECK(2, 0);
+
extern UInt VG_(snprintf) ( Char* buf, Int size,
- const HChar *format, ... ) PRINTF_CHECK(3, 4);
+ const HChar *format, ... )
+ PRINTF_CHECK(3, 4);
+
extern UInt VG_(vsnprintf)( Char* buf, Int size,
- const HChar *format, va_list vargs ) PRINTF_CHECK(3, 0);
+ const HChar *format, va_list vargs )
+ PRINTF_CHECK(3, 0);
+/* Yet another, totally general, version of vprintf, which hands all
+ output bytes to CHAR_SINK, passing it OPAQUE as the second arg. */
+extern void VG_(vcbprintf)( void(*char_sink)(HChar, void* opaque),
+ void* opaque,
+ const HChar* format, va_list vargs );
+
+/* These are the same as the non "_xml" versions above, except the
+ output goes on the selected XML output channel instead of the
+ normal one.
+*/
+extern UInt VG_(printf_xml) ( const HChar *format, ... )
+ PRINTF_CHECK(1, 2);
+
+extern UInt VG_(vprintf_xml) ( const HChar *format, va_list vargs )
+ PRINTF_CHECK(1, 0);
+
+extern UInt VG_(printf_xml_no_f_c) ( const HChar *format, ... );
+
// Percentify n/m with d decimal places. Includes the '%' symbol at the end.
// Right justifies in 'buf'.
extern void VG_(percentify)(ULong n, ULong m, UInt d, Int n_buf, char buf[]);
+
/* ---------------------------------------------------------------------
Messages for the user
------------------------------------------------------------------ */
/* No, really. I _am_ that strange. */
-#define OINK(nnn) VG_(message)(Vg_DebugMsg, "OINK %d",nnn)
+#define OINK(nnn) VG_(message)(Vg_DebugMsg, "OINK %d\n",nnn)
/* Print a message prefixed by "??<pid>?? "; '?' depends on the VgMsgKind.
Should be used for all user output. */
@@ -84,14 +114,14 @@
}
VgMsgKind;
-/* Send a single-part message. Appends a newline. The format
- specification may contain any ISO C format specifier or %t.
- No attempt is made to let the compiler verify consistency of the
- format string and the argument list. */
+/* Send a single-part message. The format specification may contain
+ any ISO C format specifier or %t. No attempt is made to let the
+ compiler verify consistency of the format string and the argument
+ list. */
extern UInt VG_(message_no_f_c)( VgMsgKind kind, const HChar* format, ... );
-/* Send a single-part message. Appends a newline. The format
- specification may contain any ISO C format specifier. The gcc compiler
- will verify consistency of the format string and the argument list. */
+/* Send a single-part message. The format specification may contain
+ any ISO C format specifier. The gcc compiler will verify
+ consistency of the format string and the argument list. */
extern UInt VG_(message)( VgMsgKind kind, const HChar* format, ... )
PRINTF_CHECK(2, 3);
@@ -99,11 +129,13 @@
PRINTF_CHECK(2, 0);
// Short-cuts for VG_(message)().
-#define VG_UMSG( format, args... ) VG_(message)(Vg_UserMsg, format, ##args)
-#define VG_DMSG( format, args... ) VG_(message)(Vg_DebugMsg, format, ##args)
-#define VG_EMSG( format, args... ) VG_(message)(Vg_DebugExtraMsg, \
- format, ##args)
+extern UInt VG_(umsg)( const HChar* format, ... ) PRINTF_CHECK(1, 2);
+extern UInt VG_(dmsg)( const HChar* format, ... ) PRINTF_CHECK(1, 2);
+extern UInt VG_(emsg)( const HChar* format, ... ) PRINTF_CHECK(1, 2);
+/* Flush any output cached by previous calls to VG_(message) et al. */
+extern void VG_(message_flush) ( void );
+
#endif // __PUB_TOOL_LIBCPRINT_H
/*--------------------------------------------------------------------*/
Modified: trunk/include/pub_tool_options.h
===================================================================
--- trunk/include/pub_tool_options.h 2009-07-15 14:52:02 UTC (rev 10475)
+++ trunk/include/pub_tool_options.h 2009-07-15 14:52:18 UTC (rev 10476)
@@ -97,7 +97,7 @@
/* Check bounds. */ \
if ((qq_var) < (qq_lo) || (qq_var) > (qq_hi)) { \
VG_(message)(Vg_UserMsg, \
- "'%s' argument must be between %lld and %lld", \
+ "'%s' argument must be between %lld and %lld\n", \
(qq_option), (Long)(qq_lo), (Long)(qq_hi)); \
VG_(err_bad_option)(qq_arg); \
} \
Modified: trunk/include/pub_tool_tooliface.h
===================================================================
--- trunk/include/pub_tool_tooliface.h 2009-07-15 14:52:02 UTC (rev 10475)
+++ trunk/include/pub_tool_tooliface.h 2009-07-15 14:52:18 UTC (rev 10476)
@@ -284,6 +284,16 @@
// similar errors occurring.
Bool (*eq_Error)(VgRes res, Error* e1, Error* e2),
+ // We give tools a chance to have a look at errors
+ // just before they are printed. That is, before_pp_Error is
+ // called just before pp_Error itself. This gives the tool a
+ // chance to look at the just-about-to-be-printed error, so as to
+ // emit any arbitrary output if wants to, before the error itself
+ // is printed. This functionality was added to allow Helgrind to
+ // print thread-announcement messages immediately before the
+ // errors that refer to them.
+ void (*before_pp_Error)(Error* err),
+
// Print error context.
void (*pp_Error)(Error* err),
@@ -434,7 +444,7 @@
/* Can the tool do XML output? This is a slight misnomer, because the tool
* is not requesting the core to do anything, rather saying "I can handle
* it". */
-extern void VG_(needs_xml_output)( void );
+extern void VG_(needs_xml_output) ( void );
/* Does the tool want to have one final pass over the IR after tree
building but before instruction selection? If so specify the
Property changes on: trunk/include/pub_tool_wordfm.h
___________________________________________________________________
Name: svn:mergeinfo
-
|
|
From: <sv...@va...> - 2009-07-15 14:52:15
|
Author: sewardj
Date: 2009-07-15 15:52:02 +0100 (Wed, 15 Jul 2009)
New Revision: 10475
Log:
Merge none/ changes from branches/MESSAGING_TIDYUP r10464.
See trunk r10465 commit message for details.
Modified:
trunk/none/tests/cmdline1.stdout.exp
trunk/none/tests/cmdline2.stdout.exp
trunk/none/tests/linux/mremap.c
trunk/none/tests/linux/mremap.stderr.exp
trunk/none/tests/linux/mremap.stderr.exp-glibc27
trunk/none/tests/linux/mremap.stdout.exp
trunk/none/tests/linux/mremap.vgtest
trunk/none/tests/linux/mremap2.c
trunk/none/tests/linux/mremap2.stderr.exp
trunk/none/tests/linux/mremap2.stdout.exp
trunk/none/tests/linux/mremap2.stdout.exp-glibc28-amd64
trunk/none/tests/linux/mremap2.stdout.exp2
trunk/none/tests/linux/mremap2.vgtest
trunk/none/tests/vgprintf.c
trunk/none/tests/x86/cpuid_s.S
Modified: trunk/none/tests/cmdline1.stdout.exp
===================================================================
--- trunk/none/tests/cmdline1.stdout.exp 2009-07-15 14:51:48 UTC (rev 10474)
+++ trunk/none/tests/cmdline1.stdout.exp 2009-07-15 14:52:02 UTC (rev 10475)
@@ -29,8 +29,11 @@
tools that make use of it (Memcheck, Helgrind)
user options for Valgrind tools that report errors:
- --xml=yes all output is in XML (some tools only)
- --xml-user-comment=STR copy STR verbatim to XML output
+ --xml=yes emit error output in XML (some tools only)
+ --xml-fd=<number> XML output to file descriptor
+ --xml-file=<file> XML output to <file>
+ --xml-socket=ipaddr:port XML output to socket ipaddr:port
+ --xml-user-comment=STR copy STR verbatim into XML output
--demangle=no|yes automatically demangle C++ names? [yes]
--num-callers=<number> show <number> callers in stack traces [12]
--error-limit=no|yes stop showing new errors if too many? [yes]
Modified: trunk/none/tests/cmdline2.stdout.exp
===================================================================
--- trunk/none/tests/cmdline2.stdout.exp 2009-07-15 14:51:48 UTC (rev 10474)
+++ trunk/none/tests/cmdline2.stdout.exp 2009-07-15 14:52:02 UTC (rev 10475)
@@ -29,8 +29,11 @@
tools that make use of it (Memcheck, Helgrind)
user options for Valgrind tools that report errors:
- --xml=yes all output is in XML (some tools only)
- --xml-user-comment=STR copy STR verbatim to XML output
+ --xml=yes emit error output in XML (some tools only)
+ --xml-fd=<number> XML output to file descriptor
+ --xml-file=<file> XML output to <file>
+ --xml-socket=ipaddr:port XML output to socket ipaddr:port
+ --xml-user-comment=STR copy STR verbatim into XML output
--demangle=no|yes automatically demangle C++ names? [yes]
--num-callers=<number> show <number> callers in stack traces [12]
--error-limit=no|yes stop showing new errors if too many? [yes]
Property changes on: trunk/none/tests/linux/mremap.c
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/none/tests/linux/mremap.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/none/tests/linux/mremap.stderr.exp-glibc27
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/none/tests/linux/mremap.stdout.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/none/tests/linux/mremap.vgtest
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/none/tests/linux/mremap2.c
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/none/tests/linux/mremap2.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/none/tests/linux/mremap2.stdout.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/none/tests/linux/mremap2.stdout.exp-glibc28-amd64
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/none/tests/linux/mremap2.stdout.exp2
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/none/tests/linux/mremap2.vgtest
___________________________________________________________________
Name: svn:mergeinfo
-
Modified: trunk/none/tests/vgprintf.c
===================================================================
--- trunk/none/tests/vgprintf.c 2009-07-15 14:51:48 UTC (rev 10474)
+++ trunk/none/tests/vgprintf.c 2009-07-15 14:52:02 UTC (rev 10475)
@@ -4,7 +4,7 @@
int
main (int argc, char **argv)
{
- int x = VALGRIND_PRINTF("Yo");
+ int x = VALGRIND_PRINTF("Yo\n");
printf ("%d\n", x);
return 0;
}
Property changes on: trunk/none/tests/x86/cpuid_s.S
___________________________________________________________________
Name: svn:mergeinfo
-
|
|
From: <sv...@va...> - 2009-07-15 14:51:59
|
Author: sewardj
Date: 2009-07-15 15:51:48 +0100 (Wed, 15 Jul 2009)
New Revision: 10474
Log:
Merge lackey/ changes from branches/MESSAGING_TIDYUP r10464.
See trunk r10465 commit message for details.
Modified:
trunk/lackey/lk_main.c
Modified: trunk/lackey/lk_main.c
===================================================================
--- trunk/lackey/lk_main.c 2009-07-15 14:51:34 UTC (rev 10473)
+++ trunk/lackey/lk_main.c 2009-07-15 14:51:48 UTC (rev 10474)
@@ -368,14 +368,14 @@
static void print_details ( void )
{
Int typeIx;
- VG_UMSG(" Type Loads Stores AluOps");
- VG_UMSG(" -------------------------------------------");
+ VG_(umsg)(" Type Loads Stores AluOps\n");
+ VG_(umsg)(" -------------------------------------------\n");
for (typeIx = 0; typeIx < N_TYPES; typeIx++) {
- VG_UMSG(" %4s %'12llu %'12llu %'12llu",
- nameOfTypeIndex( typeIx ),
- detailCounts[OpLoad ][typeIx],
- detailCounts[OpStore][typeIx],
- detailCounts[OpAlu ][typeIx]
+ VG_(umsg)(" %4s %'12llu %'12llu %'12llu\n",
+ nameOfTypeIndex( typeIx ),
+ detailCounts[OpLoad ][typeIx],
+ detailCounts[OpStore][typeIx],
+ detailCounts[OpAlu ][typeIx]
);
}
}
@@ -883,44 +883,44 @@
ULong total_Jccs = n_Jccs + n_IJccs;
ULong taken_Jccs = (n_Jccs - n_Jccs_untaken) + n_IJccs_untaken;
- VG_UMSG("Counted %'llu calls to %s()", n_func_calls, clo_fnname);
+ VG_(umsg)("Counted %'llu calls to %s()\n", n_func_calls, clo_fnname);
- VG_UMSG("");
- VG_UMSG("Jccs:");
- VG_UMSG(" total: %'llu", total_Jccs);
+ VG_(umsg)("\n");
+ VG_(umsg)("Jccs:\n");
+ VG_(umsg)(" total: %'llu\n", total_Jccs);
VG_(percentify)(taken_Jccs, (total_Jccs ? total_Jccs : 1),
percentify_decs, percentify_size, percentify_buf);
- VG_UMSG(" taken: %'llu (%s)",
+ VG_(umsg)(" taken: %'llu (%s)\n",
taken_Jccs, percentify_buf);
- VG_UMSG("");
- VG_UMSG("Executed:");
- VG_UMSG(" SBs entered: %'llu", n_SBs_entered);
- VG_UMSG(" SBs completed: %'llu", n_SBs_completed);
- VG_UMSG(" guest instrs: %'llu", n_guest_instrs);
- VG_UMSG(" IRStmts: %'llu", n_IRStmts);
+ VG_(umsg)("\n");
+ VG_(umsg)("Executed:\n");
+ VG_(umsg)(" SBs entered: %'llu\n", n_SBs_entered);
+ VG_(umsg)(" SBs completed: %'llu\n", n_SBs_completed);
+ VG_(umsg)(" guest instrs: %'llu\n", n_guest_instrs);
+ VG_(umsg)(" IRStmts: %'llu\n", n_IRStmts);
- VG_UMSG("");
- VG_UMSG("Ratios:");
+ VG_(umsg)("\n");
+ VG_(umsg)("Ratios:\n");
tl_assert(n_SBs_entered); // Paranoia time.
- VG_UMSG(" guest instrs : SB entered = %'llu : 10",
+ VG_(umsg)(" guest instrs : SB entered = %'llu : 10\n",
10 * n_guest_instrs / n_SBs_entered);
- VG_UMSG(" IRStmts : SB entered = %'llu : 10",
+ VG_(umsg)(" IRStmts : SB entered = %'llu : 10\n",
10 * n_IRStmts / n_SBs_entered);
tl_assert(n_guest_instrs); // Paranoia time.
- VG_UMSG(" IRStmts : guest instr = %'llu : 10",
+ VG_(umsg)(" IRStmts : guest instr = %'llu : 10\n",
10 * n_IRStmts / n_guest_instrs);
}
if (clo_detailed_counts) {
- VG_UMSG("");
- VG_UMSG("IR-level counts by type:");
+ VG_(umsg)("\n");
+ VG_(umsg)("IR-level counts by type:\n");
print_details();
}
if (clo_basic_counts) {
- VG_UMSG("");
- VG_UMSG("Exit code: %d", exitcode);
+ VG_(umsg)("\n");
+ VG_(umsg)("Exit code: %d\n", exitcode);
}
}
|
|
From: <sv...@va...> - 2009-07-15 14:51:24
|
Author: sewardj
Date: 2009-07-15 15:51:17 +0100 (Wed, 15 Jul 2009)
New Revision: 10472
Log:
Merge cachegrind/ changes from branches/MESSAGING_TIDYUP r10464.
See trunk r10465 commit message for details.
Modified:
trunk/cachegrind/cg-ppc32.c
trunk/cachegrind/cg-ppc64.c
trunk/cachegrind/cg-x86-amd64.c
trunk/cachegrind/cg_main.c
Modified: trunk/cachegrind/cg-ppc32.c
===================================================================
--- trunk/cachegrind/cg-ppc32.c 2009-07-15 14:51:03 UTC (rev 10471)
+++ trunk/cachegrind/cg-ppc32.c 2009-07-15 14:51:17 UTC (rev 10472)
@@ -56,8 +56,8 @@
// cachegrind/tests/filter_stderr!
//
if (!all_caches_clo_defined) {
- VG_DMSG("Warning: Cannot auto-detect cache config on PPC32, using one "
- "or more defaults ");
+ VG_(dmsg)("Warning: Cannot auto-detect cache config on PPC32, using one "
+ "or more defaults \n");
}
}
Modified: trunk/cachegrind/cg-ppc64.c
===================================================================
--- trunk/cachegrind/cg-ppc64.c 2009-07-15 14:51:03 UTC (rev 10471)
+++ trunk/cachegrind/cg-ppc64.c 2009-07-15 14:51:17 UTC (rev 10472)
@@ -56,8 +56,8 @@
// cachegrind/tests/filter_stderr!
//
if (!all_caches_clo_defined) {
- VG_DMSG("Warning: Cannot auto-detect cache config on PPC64, using one "
- "or more defaults ");
+ VG_(dmsg)("Warning: Cannot auto-detect cache config on PPC64, using one "
+ "or more defaults \n");
}
}
Modified: trunk/cachegrind/cg-x86-amd64.c
===================================================================
--- trunk/cachegrind/cg-x86-amd64.c 2009-07-15 14:51:03 UTC (rev 10471)
+++ trunk/cachegrind/cg-x86-amd64.c 2009-07-15 14:51:17 UTC (rev 10472)
@@ -44,10 +44,10 @@
static void micro_ops_warn(Int actual_size, Int used_size, Int line_size)
{
- VG_DMSG("warning: Pentium 4 with %d KB micro-op instruction trace cache",
- actual_size);
- VG_DMSG(" Simulating a %d KB I-cache with %d B lines",
- used_size, line_size);
+ VG_(dmsg)("warning: Pentium 4 with %d KB micro-op instruction trace cache\n",
+ actual_size);
+ VG_(dmsg)(" Simulating a %d KB I-cache with %d B lines\n",
+ used_size, line_size);
}
/* Intel method is truly wretched. We have to do an insane indexing into an
@@ -67,7 +67,7 @@
Bool L2_found = False;
if (level < 2) {
- VG_DMSG("warning: CPUID level < 2 for Intel processor (%d)", level);
+ VG_(dmsg)("warning: CPUID level < 2 for Intel processor (%d)\n", level);
return -1;
}
@@ -83,8 +83,8 @@
info[0] = 0x0; /* reset AL */
if (0 != trials) {
- VG_DMSG("warning: non-zero CPUID trials for Intel processor (%d)",
- trials);
+ VG_(dmsg)("warning: non-zero CPUID trials for Intel processor (%d)\n",
+ trials);
return -1;
}
@@ -121,7 +121,7 @@
case 0x22: case 0x23: case 0x25: case 0x29:
case 0x46: case 0x47: case 0x4a: case 0x4b: case 0x4c: case 0x4d:
- VG_DMSG("warning: L3 cache detected but ignored");
+ VG_(dmsg)("warning: L3 cache detected but ignored\n");
break;
/* These are sectored, whatever that means */
@@ -144,7 +144,7 @@
case 0x49:
if ((family == 15) && (model == 6))
/* On Xeon MP (family F, model 6), this is for L3 */
- VG_DMSG("warning: L3 cache detected but ignored");
+ VG_(dmsg)("warning: L3 cache detected but ignored\n");
else
*L2c = (cache_t) { 4096, 16, 64 }; L2_found = True;
break;
@@ -198,14 +198,14 @@
break;
default:
- VG_DMSG("warning: Unknown Intel cache config value (0x%x), ignoring",
- info[i]);
+ VG_(dmsg)("warning: Unknown Intel cache config value (0x%x), ignoring\n",
+ info[i]);
break;
}
}
if (!L2_found)
- VG_DMSG("warning: L2 cache not installed, ignore L2 results.");
+ VG_(dmsg)("warning: L2 cache not installed, ignore L2 results.\n");
return 0;
}
@@ -244,8 +244,8 @@
VG_(cpuid)(0x80000000, &ext_level, &dummy, &dummy, &dummy);
if (0 == (ext_level & 0x80000000) || ext_level < 0x80000006) {
- VG_DMSG("warning: ext_level < 0x80000006 for AMD processor (0x%x)",
- ext_level);
+ VG_(dmsg)("warning: ext_level < 0x80000006 for AMD processor (0x%x)\n",
+ ext_level);
return -1;
}
@@ -256,7 +256,7 @@
/* Check for Duron bug */
if (model == 0x630) {
- VG_DMSG("warning: Buggy Duron stepping A0. Assuming L2 size=65536 bytes");
+ VG_(dmsg)("warning: Buggy Duron stepping A0. Assuming L2 size=65536 bytes\n");
L2i = (64 << 16) | (L2i & 0xffff);
}
@@ -282,7 +282,7 @@
Char vendor_id[13];
if (!VG_(has_cpuid)()) {
- VG_DMSG("CPUID instruction not supported");
+ VG_(dmsg)("CPUID instruction not supported\n");
return -1;
}
@@ -291,7 +291,7 @@
vendor_id[12] = '\0';
if (0 == level) {
- VG_DMSG("CPUID level is 0, early Pentium?");
+ VG_(dmsg)("CPUID level is 0, early Pentium?\n");
return -1;
}
@@ -316,7 +316,7 @@
ret = 0;
} else {
- VG_DMSG("CPU vendor ID not recognised (%s)", vendor_id);
+ VG_(dmsg)("CPU vendor ID not recognised (%s)\n", vendor_id);
return -1;
}
@@ -344,8 +344,8 @@
// Warn if CPUID failed and config not completely specified from cmd line.
if (res != 0 && !all_caches_clo_defined) {
- VG_DMSG("Warning: Couldn't auto-detect cache config, using one "
- "or more defaults ");
+ VG_(dmsg)("Warning: Couldn't auto-detect cache config, using one "
+ "or more defaults \n");
}
}
Modified: trunk/cachegrind/cg_main.c
===================================================================
--- trunk/cachegrind/cg_main.c 2009-07-15 14:51:03 UTC (rev 10471)
+++ trunk/cachegrind/cg_main.c 2009-07-15 14:51:17 UTC (rev 10472)
@@ -1182,13 +1182,13 @@
/* Simulator requires line size and set count to be powers of two */
if (( cache->size % (cache->line_size * cache->assoc) != 0) ||
(-1 == VG_(log2)(cache->size/cache->line_size/cache->assoc))) {
- VG_UMSG("error: %s set count not a power of two; aborting.", name);
+ VG_(umsg)("error: %s set count not a power of two; aborting.\n", name);
VG_(exit)(1);
}
if (-1 == VG_(log2)(cache->line_size)) {
- VG_UMSG("error: %s line size of %dB not a power of two; aborting.",
- name, cache->line_size);
+ VG_(umsg)("error: %s line size of %dB not a power of two; aborting.\n",
+ name, cache->line_size);
VG_(exit)(1);
}
@@ -1196,22 +1196,22 @@
// straddle three cache lines, which breaks a simulation assertion and is
// stupid anyway.
if (cache->line_size < MIN_LINE_SIZE) {
- VG_UMSG("error: %s line size of %dB too small; aborting.",
- name, cache->line_size);
+ VG_(umsg)("error: %s line size of %dB too small; aborting.\n",
+ name, cache->line_size);
VG_(exit)(1);
}
/* Then check cache size > line size (causes seg faults if not). */
if (cache->size <= cache->line_size) {
- VG_UMSG("error: %s cache size of %dB <= line size of %dB; aborting.",
- name, cache->size, cache->line_size);
+ VG_(umsg)("error: %s cache size of %dB <= line size of %dB; aborting.\n",
+ name, cache->size, cache->line_size);
VG_(exit)(1);
}
/* Then check assoc <= (size / line size) (seg faults otherwise). */
if (cache->assoc > (cache->size / cache->line_size)) {
- VG_UMSG("warning: %s associativity > (size / line size); aborting.",
- name);
+ VG_(umsg)("warning: %s associativity > (size / line size); aborting.\n",
+ name);
VG_(exit)(1);
}
}
@@ -1243,13 +1243,13 @@
check_cache(L2c, "L2");
if (VG_(clo_verbosity) >= 2) {
- VG_UMSG("Cache configuration used:");
- VG_UMSG(" I1: %dB, %d-way, %dB lines",
- I1c->size, I1c->assoc, I1c->line_size);
- VG_UMSG(" D1: %dB, %d-way, %dB lines",
- D1c->size, D1c->assoc, D1c->line_size);
- VG_UMSG(" L2: %dB, %d-way, %dB lines",
- L2c->size, L2c->assoc, L2c->line_size);
+ VG_(umsg)("Cache configuration used:\n");
+ VG_(umsg)(" I1: %dB, %d-way, %dB lines\n",
+ I1c->size, I1c->assoc, I1c->line_size);
+ VG_(umsg)(" D1: %dB, %d-way, %dB lines\n",
+ D1c->size, D1c->assoc, D1c->line_size);
+ VG_(umsg)(" L2: %dB, %d-way, %dB lines\n",
+ L2c->size, L2c->assoc, L2c->line_size);
}
#undef CMD_LINE_DEFINED
}
@@ -1286,9 +1286,9 @@
if (sr_isError(sres)) {
// If the file can't be opened for whatever reason (conflict
// between multiple cachegrinded processes?), give up now.
- VG_UMSG("error: can't open cache simulation output file '%s'",
- cachegrind_out_file );
- VG_UMSG(" ... so simulation results will be missing.");
+ VG_(umsg)("error: can't open cache simulation output file '%s'\n",
+ cachegrind_out_file );
+ VG_(umsg)(" ... so simulation results will be missing.\n");
VG_(free)(cachegrind_out_file);
return;
} else {
@@ -1495,24 +1495,24 @@
l3 = ULong_width(CG_MAX(Dw_total.a, Bi_total.b));
/* Make format string, getting width right for numbers */
- VG_(sprintf)(fmt, "%%s %%,%dllu", l1);
+ VG_(sprintf)(fmt, "%%s %%,%dllu\n", l1);
/* Always print this */
- VG_UMSG(fmt, "I refs: ", Ir_total.a);
+ VG_(umsg)(fmt, "I refs: ", Ir_total.a);
/* If cache profiling is enabled, show D access numbers and all
miss numbers */
if (clo_cache_sim) {
- VG_UMSG(fmt, "I1 misses: ", Ir_total.m1);
- VG_UMSG(fmt, "L2i misses: ", Ir_total.m2);
+ VG_(umsg)(fmt, "I1 misses: ", Ir_total.m1);
+ VG_(umsg)(fmt, "L2i misses: ", Ir_total.m2);
if (0 == Ir_total.a) Ir_total.a = 1;
VG_(percentify)(Ir_total.m1, Ir_total.a, 2, l1+1, buf1);
- VG_UMSG("I1 miss rate: %s", buf1);
+ VG_(umsg)("I1 miss rate: %s\n", buf1);
VG_(percentify)(Ir_total.m2, Ir_total.a, 2, l1+1, buf1);
- VG_UMSG("L2i miss rate: %s", buf1);
- VG_UMSG("");
+ VG_(umsg)("L2i miss rate: %s\n", buf1);
+ VG_(umsg)("\n");
/* D cache results. Use the D_refs.rd and D_refs.wr values to
* determine the width of columns 2 & 3. */
@@ -1521,14 +1521,15 @@
D_total.m2 = Dr_total.m2 + Dw_total.m2;
/* Make format string, getting width right for numbers */
- VG_(sprintf)(fmt, "%%s %%,%dllu (%%,%dllu rd + %%,%dllu wr)", l1, l2, l3);
+ VG_(sprintf)(fmt, "%%s %%,%dllu (%%,%dllu rd + %%,%dllu wr)\n",
+ l1, l2, l3);
- VG_UMSG(fmt, "D refs: ",
- D_total.a, Dr_total.a, Dw_total.a);
- VG_UMSG(fmt, "D1 misses: ",
- D_total.m1, Dr_total.m1, Dw_total.m1);
- VG_UMSG(fmt, "L2d misses: ",
- D_total.m2, Dr_total.m2, Dw_total.m2);
+ VG_(umsg)(fmt, "D refs: ",
+ D_total.a, Dr_total.a, Dw_total.a);
+ VG_(umsg)(fmt, "D1 misses: ",
+ D_total.m1, Dr_total.m1, Dw_total.m1);
+ VG_(umsg)(fmt, "L2d misses: ",
+ D_total.m2, Dr_total.m2, Dw_total.m2);
if (0 == D_total.a) D_total.a = 1;
if (0 == Dr_total.a) Dr_total.a = 1;
@@ -1536,56 +1537,57 @@
VG_(percentify)( D_total.m1, D_total.a, 1, l1+1, buf1);
VG_(percentify)(Dr_total.m1, Dr_total.a, 1, l2+1, buf2);
VG_(percentify)(Dw_total.m1, Dw_total.a, 1, l3+1, buf3);
- VG_UMSG("D1 miss rate: %s (%s + %s )", buf1, buf2,buf3);
+ VG_(umsg)("D1 miss rate: %s (%s + %s )\n", buf1, buf2,buf3);
VG_(percentify)( D_total.m2, D_total.a, 1, l1+1, buf1);
VG_(percentify)(Dr_total.m2, Dr_total.a, 1, l2+1, buf2);
VG_(percentify)(Dw_total.m2, Dw_total.a, 1, l3+1, buf3);
- VG_UMSG("L2d miss rate: %s (%s + %s )", buf1, buf2,buf3);
- VG_UMSG("");
+ VG_(umsg)("L2d miss rate: %s (%s + %s )\n", buf1, buf2,buf3);
+ VG_(umsg)("\n");
/* L2 overall results */
L2_total = Dr_total.m1 + Dw_total.m1 + Ir_total.m1;
L2_total_r = Dr_total.m1 + Ir_total.m1;
L2_total_w = Dw_total.m1;
- VG_UMSG(fmt, "L2 refs: ",
- L2_total, L2_total_r, L2_total_w);
+ VG_(umsg)(fmt, "L2 refs: ",
+ L2_total, L2_total_r, L2_total_w);
L2_total_m = Dr_total.m2 + Dw_total.m2 + Ir_total.m2;
L2_total_mr = Dr_total.m2 + Ir_total.m2;
L2_total_mw = Dw_total.m2;
- VG_UMSG(fmt, "L2 misses: ",
- L2_total_m, L2_total_mr, L2_total_mw);
+ VG_(umsg)(fmt, "L2 misses: ",
+ L2_total_m, L2_total_mr, L2_total_mw);
VG_(percentify)(L2_total_m, (Ir_total.a + D_total.a), 1, l1+1, buf1);
VG_(percentify)(L2_total_mr, (Ir_total.a + Dr_total.a), 1, l2+1, buf2);
VG_(percentify)(L2_total_mw, Dw_total.a, 1, l3+1, buf3);
- VG_UMSG("L2 miss rate: %s (%s + %s )", buf1, buf2,buf3);
+ VG_(umsg)("L2 miss rate: %s (%s + %s )\n", buf1, buf2,buf3);
}
/* If branch profiling is enabled, show branch overall results. */
if (clo_branch_sim) {
/* Make format string, getting width right for numbers */
- VG_(sprintf)(fmt, "%%s %%,%dllu (%%,%dllu cond + %%,%dllu ind)", l1, l2, l3);
+ VG_(sprintf)(fmt, "%%s %%,%dllu (%%,%dllu cond + %%,%dllu ind)\n",
+ l1, l2, l3);
if (0 == Bc_total.b) Bc_total.b = 1;
if (0 == Bi_total.b) Bi_total.b = 1;
B_total.b = Bc_total.b + Bi_total.b;
B_total.mp = Bc_total.mp + Bi_total.mp;
- VG_UMSG("");
- VG_UMSG(fmt, "Branches: ",
- B_total.b, Bc_total.b, Bi_total.b);
+ VG_(umsg)("\n");
+ VG_(umsg)(fmt, "Branches: ",
+ B_total.b, Bc_total.b, Bi_total.b);
- VG_UMSG(fmt, "Mispredicts: ",
- B_total.mp, Bc_total.mp, Bi_total.mp);
+ VG_(umsg)(fmt, "Mispredicts: ",
+ B_total.mp, Bc_total.mp, Bi_total.mp);
VG_(percentify)(B_total.mp, B_total.b, 1, l1+1, buf1);
VG_(percentify)(Bc_total.mp, Bc_total.b, 1, l2+1, buf2);
VG_(percentify)(Bi_total.mp, Bi_total.b, 1, l3+1, buf3);
- VG_UMSG("Mispred rate: %s (%s + %s )", buf1, buf2,buf3);
+ VG_(umsg)("Mispred rate: %s (%s + %s )\n", buf1, buf2,buf3);
}
// Various stats
@@ -1593,32 +1595,32 @@
Int debug_lookups = full_debugs + fn_debugs +
file_line_debugs + no_debugs;
- VG_DMSG("");
- VG_DMSG("cachegrind: distinct files: %d", distinct_files);
- VG_DMSG("cachegrind: distinct fns: %d", distinct_fns);
- VG_DMSG("cachegrind: distinct lines: %d", distinct_lines);
- VG_DMSG("cachegrind: distinct instrs:%d", distinct_instrs);
- VG_DMSG("cachegrind: debug lookups : %d", debug_lookups);
+ VG_(dmsg)("\n");
+ VG_(dmsg)("cachegrind: distinct files: %d\n", distinct_files);
+ VG_(dmsg)("cachegrind: distinct fns: %d\n", distinct_fns);
+ VG_(dmsg)("cachegrind: distinct lines: %d\n", distinct_lines);
+ VG_(dmsg)("cachegrind: distinct instrs:%d\n", distinct_instrs);
+ VG_(dmsg)("cachegrind: debug lookups : %d\n", debug_lookups);
VG_(percentify)(full_debugs, debug_lookups, 1, 6, buf1);
VG_(percentify)(file_line_debugs, debug_lookups, 1, 6, buf2);
VG_(percentify)(fn_debugs, debug_lookups, 1, 6, buf3);
VG_(percentify)(no_debugs, debug_lookups, 1, 6, buf4);
- VG_DMSG("cachegrind: with full info:%s (%d)",
- buf1, full_debugs);
- VG_DMSG("cachegrind: with file/line info:%s (%d)",
- buf2, file_line_debugs);
- VG_DMSG("cachegrind: with fn name info:%s (%d)",
- buf3, fn_debugs);
- VG_DMSG("cachegrind: with zero info:%s (%d)",
- buf4, no_debugs);
+ VG_(dmsg)("cachegrind: with full info:%s (%d)\n",
+ buf1, full_debugs);
+ VG_(dmsg)("cachegrind: with file/line info:%s (%d)\n",
+ buf2, file_line_debugs);
+ VG_(dmsg)("cachegrind: with fn name info:%s (%d)\n",
+ buf3, fn_debugs);
+ VG_(dmsg)("cachegrind: with zero info:%s (%d)\n",
+ buf4, no_debugs);
- VG_DMSG("cachegrind: string table size: %lu",
- VG_(OSetGen_Size)(stringTable));
- VG_DMSG("cachegrind: CC table size: %lu",
- VG_(OSetGen_Size)(CC_table));
- VG_DMSG("cachegrind: InstrInfo table size: %lu",
- VG_(OSetGen_Size)(instrInfoTable));
+ VG_(dmsg)("cachegrind: string table size: %lu\n",
+ VG_(OSetGen_Size)(stringTable));
+ VG_(dmsg)("cachegrind: CC table size: %lu\n",
+ VG_(OSetGen_Size)(CC_table));
+ VG_(dmsg)("cachegrind: InstrInfo table size: %lu\n",
+ VG_(OSetGen_Size)(instrInfoTable));
}
}
@@ -1674,7 +1676,7 @@
return;
overflow:
- VG_UMSG("one of the cache parameters was too large and overflowed\n");
+ VG_(umsg)("one of the cache parameters was too large and overflowed\n");
bad:
// XXX: this omits the "--I1/D1/L2=" part from the message, but that's
// not a big deal.
@@ -1753,8 +1755,9 @@
/* Can't disable both cache and branch profiling */
if ((!clo_cache_sim) && (!clo_branch_sim)) {
- VG_UMSG("ERROR: --cache-sim=no --branch-sim=no is not allowed.");
- VG_UMSG("You must select cache profiling, or branch profiling, or both.");
+ VG_(umsg)("ERROR: --cache-sim=no --branch-sim=no is not allowed.\n");
+ VG_(umsg)("You must select cache profiling, "
+ "or branch profiling, or both.\n");
VG_(exit)(2);
}
|
|
From: <sv...@va...> - 2009-07-15 14:51:12
|
Author: sewardj
Date: 2009-07-15 15:51:03 +0100 (Wed, 15 Jul 2009)
New Revision: 10471
Log:
Merge callgrind/ changes from branches/MESSAGING_TIDYUP r10464.
See trunk r10465 commit message for details.
Modified:
trunk/callgrind/bb.c
trunk/callgrind/callstack.c
trunk/callgrind/command.c
trunk/callgrind/dump.c
trunk/callgrind/fn.c
trunk/callgrind/main.c
trunk/callgrind/sim.c
Modified: trunk/callgrind/bb.c
===================================================================
--- trunk/callgrind/bb.c 2009-07-15 14:50:37 UTC (rev 10470)
+++ trunk/callgrind/bb.c 2009-07-15 14:51:03 UTC (rev 10471)
@@ -259,13 +259,13 @@
if (*seen_before) {
if (bb->instr_count != n_instrs) {
VG_(message)(Vg_DebugMsg,
- "ERROR: BB Retranslation Mismatch at BB %#lx", addr);
+ "ERROR: BB Retranslation Mismatch at BB %#lx\n", addr);
VG_(message)(Vg_DebugMsg,
- " new: Obj %s, Off %#lx, BBOff %#lx, Instrs %u",
+ " new: Obj %s, Off %#lx, BBOff %#lx, Instrs %u\n",
obj->name, obj->offset,
addr - obj->offset, n_instrs);
VG_(message)(Vg_DebugMsg,
- " old: Obj %s, Off %#lx, BBOff %#lx, Instrs %u",
+ " old: Obj %s, Off %#lx, BBOff %#lx, Instrs %u\n",
bb->obj->name, bb->obj->offset,
bb->offset, bb->instr_count);
CLG_ASSERT(bb->instr_count == n_instrs );
Modified: trunk/callgrind/callstack.c
===================================================================
--- trunk/callgrind/callstack.c 2009-07-15 14:50:37 UTC (rev 10470)
+++ trunk/callgrind/callstack.c 2009-07-15 14:51:03 UTC (rev 10471)
@@ -124,7 +124,7 @@
CLG_(clo).verbose = fn->verbosity;
fn->verbosity = old;
VG_(message)(Vg_DebugMsg,
- "Entering %s: Verbosity set to %d",
+ "Entering %s: Verbosity set to %d\n",
fn->name, CLG_(clo).verbose);
}
#endif
@@ -169,7 +169,7 @@
CLG_(clo).verbose = fn->verbosity;
fn->verbosity = old;
VG_(message)(Vg_DebugMsg,
- "Leaving %s: Verbosity set back to %d",
+ "Leaving %s: Verbosity set back to %d\n",
fn->name, CLG_(clo).verbose);
}
#endif
Modified: trunk/callgrind/command.c
===================================================================
--- trunk/callgrind/command.c 2009-07-15 14:50:37 UTC (rev 10470)
+++ trunk/callgrind/command.c 2009-07-15 14:51:03 UTC (rev 10471)
@@ -113,7 +113,7 @@
VKI_S_IRUSR|VKI_S_IWUSR);
if (sr_isError(res)) {
VG_(message)(Vg_DebugMsg,
- "warning: can't write info file '%s'", info_file);
+ "warning: can't write info file '%s'\n", info_file);
info_file = 0;
fd = -1;
}
@@ -524,7 +524,8 @@
if (do_kill) {
VG_(message)(Vg_UserMsg,
- "Killed because of command from %s", current_command_file);
+ "Killed because of command from %s\n",
+ current_command_file);
CLG_(fini)(0);
VG_(exit)(1);
}
Modified: trunk/callgrind/dump.c
===================================================================
--- trunk/callgrind/dump.c 2009-07-15 14:50:37 UTC (rev 10470)
+++ trunk/callgrind/dump.c 2009-07-15 14:51:03 UTC (rev 10471)
@@ -1265,7 +1265,7 @@
void file_err(void)
{
VG_(message)(Vg_UserMsg,
- "Error: can not open cache simulation output file `%s'",
+ "Error: can not open cache simulation output file `%s'\n",
filename );
VG_(exit)(1);
}
@@ -1467,7 +1467,7 @@
my_fwrite(fd, "\n\n",2);
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, "Dump to %s", filename);
+ VG_(message)(Vg_DebugMsg, "Dump to %s\n", filename);
return fd;
}
@@ -1489,7 +1489,7 @@
if (filename[0] == '.') {
if (-1 == VG_(rename) (filename, filename+1)) {
/* Can not rename to correct file name: give out warning */
- VG_(message)(Vg_DebugMsg, "Warning: Can not rename .%s to %s",
+ VG_(message)(Vg_DebugMsg, "Warning: Can not rename .%s to %s\n",
filename, filename);
}
}
@@ -1619,7 +1619,7 @@
CLG_(init_dumps)();
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, "Start dumping at BB %llu (%s)...",
+ VG_(message)(Vg_DebugMsg, "Start dumping at BB %llu (%s)...\n",
CLG_(stat).bb_executions,
trigger ? trigger : (Char*)"Prg.Term.");
@@ -1630,7 +1630,7 @@
bbs_done = CLG_(stat).bb_executions++;
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, "Dumping done.");
+ VG_(message)(Vg_DebugMsg, "Dumping done.\n");
}
/* copy command to cmd buffer (could change) */
Modified: trunk/callgrind/fn.c
===================================================================
--- trunk/callgrind/fn.c 2009-07-15 14:50:37 UTC (rev 10470)
+++ trunk/callgrind/fn.c 2009-07-15 14:51:03 UTC (rev 10471)
@@ -75,7 +75,8 @@
if (len == 0) break;
CLG_ASSERT(len >2);
- CLG_DEBUG(1, " found chunk %d at %#lx, checking %d bytes of [%x %x %x...]\n",
+ CLG_DEBUG(1, " found chunk %d at %#lx, checking %d bytes "
+ "of [%x %x %x...]\n",
chunk-1, addr - obj->start, len,
code[start], code[start+1], code[start+2]);
@@ -89,7 +90,8 @@
if (found) {
CLG_DEBUG(1, "found at offset %#lx.\n", addr - obj->start);
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, "Found runtime_resolve (%s): %s +%#lx=%#lx, length %d",
+ VG_(message)(Vg_DebugMsg, "Found runtime_resolve (%s): "
+ "%s +%#lx=%#lx, length %d\n",
pat->name, obj->name + obj->last_slash_pos,
addr - obj->start, addr, pat->len);
@@ -566,7 +568,8 @@
fn->pop_on_jump = True;
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, "Symbol match: found runtime_resolve: %s +%#lx=%#lx",
+ VG_(message)(Vg_DebugMsg, "Symbol match: found runtime_resolve:"
+ " %s +%#lx=%#lx\n",
bb->obj->name + bb->obj->last_slash_pos,
bb->offset, bb_addr(bb));
}
Modified: trunk/callgrind/main.c
===================================================================
--- trunk/callgrind/main.c 2009-07-15 14:50:37 UTC (rev 10470)
+++ trunk/callgrind/main.c 2009-07-15 14:51:03 UTC (rev 10471)
@@ -1005,7 +1005,7 @@
void CLG_(zero_all_cost)(Bool only_current_thread)
{
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, " Zeroing costs...");
+ VG_(message)(Vg_DebugMsg, " Zeroing costs...\n");
if (only_current_thread)
zero_thread_cost(CLG_(get_current_thread)());
@@ -1013,7 +1013,7 @@
CLG_(forall_threads)(zero_thread_cost);
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, " ...done");
+ VG_(message)(Vg_DebugMsg, " ...done\n");
}
static
@@ -1055,7 +1055,7 @@
CLG_(forall_threads)(zero_thread_cost);
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, "%s: instrumentation switched %s",
+ VG_(message)(Vg_DebugMsg, "%s: instrumentation switched %s\n",
reason, state ? "ON" : "OFF");
}
@@ -1197,76 +1197,76 @@
CLG_(stat).file_line_debug_BBs +
CLG_(stat).no_debug_BBs;
- VG_(message)(Vg_DebugMsg, "");
- VG_(message)(Vg_DebugMsg, "Distinct objects: %d",
+ VG_(message)(Vg_DebugMsg, "\n");
+ VG_(message)(Vg_DebugMsg, "Distinct objects: %d\n",
CLG_(stat).distinct_objs);
- VG_(message)(Vg_DebugMsg, "Distinct files: %d",
+ VG_(message)(Vg_DebugMsg, "Distinct files: %d\n",
CLG_(stat).distinct_files);
- VG_(message)(Vg_DebugMsg, "Distinct fns: %d",
+ VG_(message)(Vg_DebugMsg, "Distinct fns: %d\n",
CLG_(stat).distinct_fns);
- VG_(message)(Vg_DebugMsg, "Distinct contexts:%d",
+ VG_(message)(Vg_DebugMsg, "Distinct contexts:%d\n",
CLG_(stat).distinct_contexts);
- VG_(message)(Vg_DebugMsg, "Distinct BBs: %d",
+ VG_(message)(Vg_DebugMsg, "Distinct BBs: %d\n",
CLG_(stat).distinct_bbs);
- VG_(message)(Vg_DebugMsg, "Cost entries: %d (Chunks %d)",
+ VG_(message)(Vg_DebugMsg, "Cost entries: %d (Chunks %d)\n",
CLG_(costarray_entries), CLG_(costarray_chunks));
- VG_(message)(Vg_DebugMsg, "Distinct BBCCs: %d",
+ VG_(message)(Vg_DebugMsg, "Distinct BBCCs: %d\n",
CLG_(stat).distinct_bbccs);
- VG_(message)(Vg_DebugMsg, "Distinct JCCs: %d",
+ VG_(message)(Vg_DebugMsg, "Distinct JCCs: %d\n",
CLG_(stat).distinct_jccs);
- VG_(message)(Vg_DebugMsg, "Distinct skips: %d",
+ VG_(message)(Vg_DebugMsg, "Distinct skips: %d\n",
CLG_(stat).distinct_skips);
- VG_(message)(Vg_DebugMsg, "BB lookups: %d",
+ VG_(message)(Vg_DebugMsg, "BB lookups: %d\n",
BB_lookups);
if (BB_lookups>0) {
- VG_(message)(Vg_DebugMsg, "With full debug info:%3d%% (%d)",
+ VG_(message)(Vg_DebugMsg, "With full debug info:%3d%% (%d)\n",
CLG_(stat).full_debug_BBs * 100 / BB_lookups,
CLG_(stat).full_debug_BBs);
- VG_(message)(Vg_DebugMsg, "With file/line debug info:%3d%% (%d)",
+ VG_(message)(Vg_DebugMsg, "With file/line debug info:%3d%% (%d)\n",
CLG_(stat).file_line_debug_BBs * 100 / BB_lookups,
CLG_(stat).file_line_debug_BBs);
- VG_(message)(Vg_DebugMsg, "With fn name debug info:%3d%% (%d)",
+ VG_(message)(Vg_DebugMsg, "With fn name debug info:%3d%% (%d)\n",
CLG_(stat).fn_name_debug_BBs * 100 / BB_lookups,
CLG_(stat).fn_name_debug_BBs);
- VG_(message)(Vg_DebugMsg, "With no debug info:%3d%% (%d)",
+ VG_(message)(Vg_DebugMsg, "With no debug info:%3d%% (%d)\n",
CLG_(stat).no_debug_BBs * 100 / BB_lookups,
CLG_(stat).no_debug_BBs);
}
- VG_(message)(Vg_DebugMsg, "BBCC Clones: %d",
+ VG_(message)(Vg_DebugMsg, "BBCC Clones: %d\n",
CLG_(stat).bbcc_clones);
- VG_(message)(Vg_DebugMsg, "BBs Retranslated: %d",
+ VG_(message)(Vg_DebugMsg, "BBs Retranslated: %d\n",
CLG_(stat).bb_retranslations);
- VG_(message)(Vg_DebugMsg, "Distinct instrs: %d",
+ VG_(message)(Vg_DebugMsg, "Distinct instrs: %d\n",
CLG_(stat).distinct_instrs);
VG_(message)(Vg_DebugMsg, "");
- VG_(message)(Vg_DebugMsg, "LRU Contxt Misses: %d",
+ VG_(message)(Vg_DebugMsg, "LRU Contxt Misses: %d\n",
CLG_(stat).cxt_lru_misses);
- VG_(message)(Vg_DebugMsg, "LRU BBCC Misses: %d",
+ VG_(message)(Vg_DebugMsg, "LRU BBCC Misses: %d\n",
CLG_(stat).bbcc_lru_misses);
- VG_(message)(Vg_DebugMsg, "LRU JCC Misses: %d",
+ VG_(message)(Vg_DebugMsg, "LRU JCC Misses: %d\n",
CLG_(stat).jcc_lru_misses);
- VG_(message)(Vg_DebugMsg, "BBs Executed: %llu",
+ VG_(message)(Vg_DebugMsg, "BBs Executed: %llu\n",
CLG_(stat).bb_executions);
- VG_(message)(Vg_DebugMsg, "Calls: %llu",
+ VG_(message)(Vg_DebugMsg, "Calls: %llu\n",
CLG_(stat).call_counter);
- VG_(message)(Vg_DebugMsg, "CondJMP followed: %llu",
+ VG_(message)(Vg_DebugMsg, "CondJMP followed: %llu\n",
CLG_(stat).jcnd_counter);
- VG_(message)(Vg_DebugMsg, "Boring JMPs: %llu",
+ VG_(message)(Vg_DebugMsg, "Boring JMPs: %llu\n",
CLG_(stat).jump_counter);
- VG_(message)(Vg_DebugMsg, "Recursive calls: %llu",
+ VG_(message)(Vg_DebugMsg, "Recursive calls: %llu\n",
CLG_(stat).rec_call_counter);
- VG_(message)(Vg_DebugMsg, "Returns: %llu",
+ VG_(message)(Vg_DebugMsg, "Returns: %llu\n",
CLG_(stat).ret_counter);
VG_(message)(Vg_DebugMsg, "");
}
CLG_(sprint_eventmapping)(buf, CLG_(dumpmap));
- VG_(message)(Vg_UserMsg, "Events : %s", buf);
+ VG_(message)(Vg_UserMsg, "Events : %s\n", buf);
CLG_(sprint_mappingcost)(buf, CLG_(dumpmap), CLG_(total_cost));
- VG_(message)(Vg_UserMsg, "Collected : %s", buf);
- VG_(message)(Vg_UserMsg, "");
+ VG_(message)(Vg_UserMsg, "Collected : %s\n", buf);
+ VG_(message)(Vg_UserMsg, "\n");
// if (CLG_(clo).simulate_cache)
(*CLG_(cachesim).printstat)();
@@ -1308,7 +1308,7 @@
CLG_DEBUG(1, " rec. sep. : %d\n", CLG_(clo).separate_recursions);
if (!CLG_(clo).dump_line && !CLG_(clo).dump_instr && !CLG_(clo).dump_bb) {
- VG_(message)(Vg_UserMsg, "Using source line as position.");
+ VG_(message)(Vg_UserMsg, "Using source line as position.\n");
CLG_(clo).dump_line = True;
}
@@ -1333,7 +1333,7 @@
if (VG_(clo_verbosity > 0)) {
VG_(message)(Vg_UserMsg,
- "For interactive control, run 'callgrind_control -h'.");
+ "For interactive control, run 'callgrind_control -h'.\n");
}
}
Modified: trunk/callgrind/sim.c
===================================================================
--- trunk/callgrind/sim.c 2009-07-15 14:50:37 UTC (rev 10470)
+++ trunk/callgrind/sim.c 2009-07-15 14:51:03 UTC (rev 10471)
@@ -673,7 +673,7 @@
*/
if ( (1<<c->tag_shift) < c->assoc) {
VG_(message)(Vg_DebugMsg,
- "error: Use associativity < %d for cache use statistics!",
+ "error: Use associativity < %d for cache use statistics!\n",
(1<<c->tag_shift) );
VG_(tool_panic)("Unsupported cache configuration");
}
@@ -1307,13 +1307,13 @@
if (( cache->size % (cache->line_size * cache->assoc) != 0) ||
(-1 == VG_(log2)(cache->size/cache->line_size/cache->assoc))) {
VG_(message)(Vg_UserMsg,
- "error: %s set count not a power of two; aborting.",
+ "error: %s set count not a power of two; aborting.\n",
name);
}
if (-1 == VG_(log2)(cache->line_size)) {
VG_(message)(Vg_UserMsg,
- "error: %s line size of %dB not a power of two; aborting.",
+ "error: %s line size of %dB not a power of two; aborting.\n",
name, cache->line_size);
VG_(exit)(1);
}
@@ -1323,7 +1323,7 @@
// stupid anyway.
if (cache->line_size < MIN_LINE_SIZE) {
VG_(message)(Vg_UserMsg,
- "error: %s line size of %dB too small; aborting.",
+ "error: %s line size of %dB too small; aborting.\n",
name, cache->line_size);
VG_(exit)(1);
}
@@ -1331,7 +1331,7 @@
/* Then check cache size > line size (causes seg faults if not). */
if (cache->size <= cache->line_size) {
VG_(message)(Vg_UserMsg,
- "error: %s cache size of %dB <= line size of %dB; aborting.",
+ "error: %s cache size of %dB <= line size of %dB; aborting.\n",
name, cache->size, cache->line_size);
VG_(exit)(1);
}
@@ -1339,7 +1339,7 @@
/* Then check assoc <= (size / line size) (seg faults otherwise). */
if (cache->assoc > (cache->size / cache->line_size)) {
VG_(message)(Vg_UserMsg,
- "warning: %s associativity > (size / line size); aborting.", name);
+ "warning: %s associativity > (size / line size); aborting.\n", name);
VG_(exit)(1);
}
}
@@ -1371,12 +1371,12 @@
check_cache(L2c, "L2");
if (VG_(clo_verbosity) > 1) {
- VG_(message)(Vg_UserMsg, "Cache configuration used:");
- VG_(message)(Vg_UserMsg, " I1: %dB, %d-way, %dB lines",
+ VG_(message)(Vg_UserMsg, "Cache configuration used:\n");
+ VG_(message)(Vg_UserMsg, " I1: %dB, %d-way, %dB lines\n",
I1c->size, I1c->assoc, I1c->line_size);
- VG_(message)(Vg_UserMsg, " D1: %dB, %d-way, %dB lines",
+ VG_(message)(Vg_UserMsg, " D1: %dB, %d-way, %dB lines\n",
D1c->size, D1c->assoc, D1c->line_size);
- VG_(message)(Vg_UserMsg, " L2: %dB, %d-way, %dB lines",
+ VG_(message)(Vg_UserMsg, " L2: %dB, %d-way, %dB lines\n",
L2c->size, L2c->assoc, L2c->line_size);
}
#undef CMD_LINE_DEFINED
@@ -1446,13 +1446,15 @@
/* Output warning for not supported option combinations */
if (clo_simulate_hwpref) {
VG_(message)(Vg_DebugMsg,
- "warning: prefetch simulation can not be used with cache usage");
+ "warning: prefetch simulation can not be "
+ "used with cache usage\n");
clo_simulate_hwpref = False;
}
if (clo_simulate_writeback) {
VG_(message)(Vg_DebugMsg,
- "warning: write-back simulation can not be used with cache usage");
+ "warning: write-back simulation can not be "
+ "used with cache usage\n");
clo_simulate_writeback = False;
}
@@ -1652,25 +1654,25 @@
Int p;
if ((VG_(clo_verbosity) >1) && clo_simulate_hwpref) {
- VG_(message)(Vg_DebugMsg, "Prefetch Up: %llu",
+ VG_(message)(Vg_DebugMsg, "Prefetch Up: %llu\n",
prefetch_up);
- VG_(message)(Vg_DebugMsg, "Prefetch Down: %llu",
+ VG_(message)(Vg_DebugMsg, "Prefetch Down: %llu\n",
prefetch_down);
- VG_(message)(Vg_DebugMsg, "");
+ VG_(message)(Vg_DebugMsg, "\n");
}
/* I cache results. Use the I_refs value to determine the first column
* width. */
l1 = commify(total[CLG_(sets).off_full_Ir], 0, buf1);
- VG_(message)(Vg_UserMsg, "I refs: %s", buf1);
+ VG_(message)(Vg_UserMsg, "I refs: %s\n", buf1);
if (!CLG_(clo).simulate_cache) return;
commify(total[CLG_(sets).off_full_Ir +1], l1, buf1);
- VG_(message)(Vg_UserMsg, "I1 misses: %s", buf1);
+ VG_(message)(Vg_UserMsg, "I1 misses: %s\n", buf1);
commify(total[CLG_(sets).off_full_Ir +2], l1, buf1);
- VG_(message)(Vg_UserMsg, "L2i misses: %s", buf1);
+ VG_(message)(Vg_UserMsg, "L2i misses: %s\n", buf1);
p = 100;
@@ -1679,12 +1681,12 @@
percentify(total[CLG_(sets).off_full_Ir+1] * 100 * p /
total[CLG_(sets).off_full_Ir], p, l1+1, buf1);
- VG_(message)(Vg_UserMsg, "I1 miss rate: %s", buf1);
+ VG_(message)(Vg_UserMsg, "I1 miss rate: %s\n", buf1);
percentify(total[CLG_(sets).off_full_Ir+2] * 100 * p /
total[CLG_(sets).off_full_Ir], p, l1+1, buf1);
- VG_(message)(Vg_UserMsg, "L2i miss rate: %s", buf1);
- VG_(message)(Vg_UserMsg, "");
+ VG_(message)(Vg_UserMsg, "L2i miss rate: %s\n", buf1);
+ VG_(message)(Vg_UserMsg, "\n");
/* D cache results.
Use the D_refs.rd and D_refs.wr values to determine the
@@ -1698,19 +1700,19 @@
commify( D_total[0], l1, buf1);
l2 = commify(total[CLG_(sets).off_full_Dr], 0, buf2);
l3 = commify(total[CLG_(sets).off_full_Dw], 0, buf3);
- VG_(message)(Vg_UserMsg, "D refs: %s (%s rd + %s wr)",
+ VG_(message)(Vg_UserMsg, "D refs: %s (%s rd + %s wr)\n",
buf1, buf2, buf3);
commify( D_total[1], l1, buf1);
commify(total[CLG_(sets).off_full_Dr+1], l2, buf2);
commify(total[CLG_(sets).off_full_Dw+1], l3, buf3);
- VG_(message)(Vg_UserMsg, "D1 misses: %s (%s rd + %s wr)",
+ VG_(message)(Vg_UserMsg, "D1 misses: %s (%s rd + %s wr)\n",
buf1, buf2, buf3);
commify( D_total[2], l1, buf1);
commify(total[CLG_(sets).off_full_Dr+2], l2, buf2);
commify(total[CLG_(sets).off_full_Dw+2], l3, buf3);
- VG_(message)(Vg_UserMsg, "L2d misses: %s (%s rd + %s wr)",
+ VG_(message)(Vg_UserMsg, "L2d misses: %s (%s rd + %s wr)\n",
buf1, buf2, buf3);
p = 10;
@@ -1724,15 +1726,17 @@
total[CLG_(sets).off_full_Dr], p, l2+1, buf2);
percentify(total[CLG_(sets).off_full_Dw+1] * 100 * p /
total[CLG_(sets).off_full_Dw], p, l3+1, buf3);
- VG_(message)(Vg_UserMsg, "D1 miss rate: %s (%s + %s )", buf1, buf2,buf3);
+ VG_(message)(Vg_UserMsg, "D1 miss rate: %s (%s + %s )\n",
+ buf1, buf2,buf3);
percentify( D_total[2] * 100 * p / D_total[0], p, l1+1, buf1);
percentify(total[CLG_(sets).off_full_Dr+2] * 100 * p /
total[CLG_(sets).off_full_Dr], p, l2+1, buf2);
percentify(total[CLG_(sets).off_full_Dw+2] * 100 * p /
total[CLG_(sets).off_full_Dw], p, l3+1, buf3);
- VG_(message)(Vg_UserMsg, "L2d miss rate: %s (%s + %s )", buf1, buf2,buf3);
- VG_(message)(Vg_UserMsg, "");
+ VG_(message)(Vg_UserMsg, "L2d miss rate: %s (%s + %s )\n",
+ buf1, buf2,buf3);
+ VG_(message)(Vg_UserMsg, "\n");
@@ -1749,7 +1753,7 @@
commify(L2_total, l1, buf1);
commify(L2_total_r, l2, buf2);
commify(L2_total_w, l3, buf3);
- VG_(message)(Vg_UserMsg, "L2 refs: %s (%s rd + %s wr)",
+ VG_(message)(Vg_UserMsg, "L2 refs: %s (%s rd + %s wr)\n",
buf1, buf2, buf3);
L2_total_m =
@@ -1763,7 +1767,7 @@
commify(L2_total_m, l1, buf1);
commify(L2_total_mr, l2, buf2);
commify(L2_total_mw, l3, buf3);
- VG_(message)(Vg_UserMsg, "L2 misses: %s (%s rd + %s wr)",
+ VG_(message)(Vg_UserMsg, "L2 misses: %s (%s rd + %s wr)\n",
buf1, buf2, buf3);
percentify(L2_total_m * 100 * p /
@@ -1773,7 +1777,7 @@
p, l2+1, buf2);
percentify(L2_total_mw * 100 * p /
total[CLG_(sets).off_full_Dw], p, l3+1, buf3);
- VG_(message)(Vg_UserMsg, "L2 miss rate: %s (%s + %s )",
+ VG_(message)(Vg_UserMsg, "L2 miss rate: %s (%s + %s )\n",
buf1, buf2,buf3);
}
|
|
From: <sv...@va...> - 2009-07-15 14:50:45
|
Author: sewardj
Date: 2009-07-15 15:50:37 +0100 (Wed, 15 Jul 2009)
New Revision: 10470
Log:
Merge exp-bbv/ changes from branches/MESSAGING_TIDYUP r10464.
See trunk r10465 commit message for details.
Modified:
trunk/exp-bbv/bbv_main.c
Modified: trunk/exp-bbv/bbv_main.c
===================================================================
--- trunk/exp-bbv/bbv_main.c 2009-07-15 14:50:22 UTC (rev 10469)
+++ trunk/exp-bbv/bbv_main.c 2009-07-15 14:50:37 UTC (rev 10470)
@@ -113,7 +113,7 @@
sres = VG_(open)(pc_out_file, VKI_O_CREAT|VKI_O_TRUNC|VKI_O_WRONLY,
VKI_S_IRUSR|VKI_S_IWUSR|VKI_S_IRGRP|VKI_S_IWGRP);
if (sr_isError(sres)) {
- VG_UMSG("Error: cannot create pc file %s\n", pc_out_file);
+ VG_(umsg)("Error: cannot create pc file %s\n", pc_out_file);
VG_(exit)(1);
} else {
pctrace_fd = sr_Res(sres);
@@ -153,7 +153,7 @@
VKI_S_IRUSR|VKI_S_IWUSR|VKI_S_IRGRP|VKI_S_IWGRP);
if (sr_isError(sres)) {
- VG_UMSG("Error: cannot create bb file %s\n",temp_string);
+ VG_(umsg)("Error: cannot create bb file %s\n",temp_string);
VG_(exit)(1);
}
@@ -586,7 +586,7 @@
bbv_thread[i].fldcw_count);
/* Print results to display */
- VG_UMSG("%s", buf);
+ VG_(umsg)("%s\n", buf);
/* open the output file if it hasn't already */
if (bbv_thread[i].bbtrace_fd < 0) {
|
|
From: <sv...@va...> - 2009-07-15 14:50:11
|
Author: sewardj
Date: 2009-07-15 15:50:02 +0100 (Wed, 15 Jul 2009)
New Revision: 10468
Log:
Merge helgrind/ changes from branches/MESSAGING_TIDYUP r10464.
See trunk r10465 commit message for details.
Added:
trunk/helgrind/tests/tc06_two_races_xml.stderr.exp
trunk/helgrind/tests/tc06_two_races_xml.stdout.exp
trunk/helgrind/tests/tc06_two_races_xml.vgtest
Modified:
trunk/helgrind/hg_errors.c
trunk/helgrind/hg_errors.h
trunk/helgrind/hg_main.c
trunk/helgrind/libhb_core.c
trunk/helgrind/tests/Makefile.am
trunk/helgrind/tests/bar_bad.stderr.exp
trunk/helgrind/tests/bar_trivial.stderr.exp
trunk/helgrind/tests/hg01_all_ok.stderr.exp
trunk/helgrind/tests/hg02_deadlock.stderr.exp
trunk/helgrind/tests/hg03_inherit.stderr.exp
trunk/helgrind/tests/hg04_race.stderr.exp
trunk/helgrind/tests/hg05_race2.stderr.exp
trunk/helgrind/tests/hg06_readshared.stderr.exp
trunk/helgrind/tests/pth_barrier1.stderr.exp
trunk/helgrind/tests/pth_barrier2.stderr.exp
trunk/helgrind/tests/pth_barrier3.stderr.exp
trunk/helgrind/tests/rwlock_race.stderr.exp
trunk/helgrind/tests/rwlock_test.stderr.exp
trunk/helgrind/tests/tc01_simple_race.stderr.exp
trunk/helgrind/tests/tc02_simple_tls.stderr.exp
trunk/helgrind/tests/tc03_re_excl.stderr.exp
trunk/helgrind/tests/tc04_free_lock.stderr.exp
trunk/helgrind/tests/tc05_simple_race.stderr.exp
trunk/helgrind/tests/tc06_two_races.stderr.exp
trunk/helgrind/tests/tc07_hbl1.stderr.exp
trunk/helgrind/tests/tc08_hbl2.stderr.exp
trunk/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc23-amd64
trunk/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc25-amd64
trunk/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc25-x86
trunk/helgrind/tests/tc10_rec_lock.stderr.exp
trunk/helgrind/tests/tc11_XCHG.stderr.exp
trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp
trunk/helgrind/tests/tc13_laog1.stderr.exp
trunk/helgrind/tests/tc14_laog_dinphils.stderr.exp
trunk/helgrind/tests/tc15_laog_lockdel.stderr.exp
trunk/helgrind/tests/tc16_byterace.stderr.exp
trunk/helgrind/tests/tc17_sembar.stderr.exp
trunk/helgrind/tests/tc19_shadowmem.stderr.exp
trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc25-amd64
trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc27-amd64
trunk/helgrind/tests/tc21_pthonce.stderr.exp
trunk/helgrind/tests/tc22_exit_w_lock.stderr.exp
trunk/helgrind/tests/tc23_bogus_condwait.stderr.exp
trunk/helgrind/tests/tc24_nonzero_sem.stderr.exp
Modified: trunk/helgrind/hg_errors.c
===================================================================
--- trunk/helgrind/hg_errors.c 2009-07-15 14:49:40 UTC (rev 10467)
+++ trunk/helgrind/hg_errors.c 2009-07-15 14:50:02 UTC (rev 10468)
@@ -39,6 +39,7 @@
#include "pub_tool_xarray.h"
#include "pub_tool_debuginfo.h"
#include "pub_tool_threadstate.h"
+#include "pub_tool_options.h" // VG_(clo_xml)
#include "hg_basics.h"
#include "hg_wordset.h"
@@ -48,19 +49,9 @@
/*----------------------------------------------------------------*/
-/*--- ---*/
+/*--- Error management -- storage ---*/
/*----------------------------------------------------------------*/
-/* This has to do with printing error messages. See comments on
- announce_threadset() and summarise_threadset(). Perhaps it
- should be a command line option. */
-#define N_THREADS_TO_ANNOUNCE 5
-
-
-/*----------------------------------------------------------------*/
-/*--- Error management ---*/
-/*----------------------------------------------------------------*/
-
/* maps (by value) strings to a copy of them in ARENA_TOOL */
static WordFM* string_table = NULL;
@@ -168,7 +159,6 @@
typedef
enum {
XE_Race=1101, // race
- XE_FreeMemLock, // freeing memory containing a locked lock
XE_UnlockUnlocked, // unlocking a not-locked lock
XE_UnlockForeign, // unlocking a lock held by some other thread
XE_UnlockBogus, // unlocking an address not known to be a lock
@@ -193,14 +183,10 @@
Thread* mb_confaccthr;
Int mb_confaccSzB;
Bool mb_confaccIsW;
- Char descr1[96];
- Char descr2[96];
+ XArray* descr1; /* XArray* of HChar */
+ XArray* descr2; /* XArray* of HChar */
} Race;
struct {
- Thread* thr; /* doing the freeing */
- Lock* lock; /* lock which is locked */
- } FreeMemLock;
- struct {
Thread* thr; /* doing the unlocking */
Lock* lock; /* lock (that is already unlocked) */
} UnlockUnlocked;
@@ -265,6 +251,7 @@
//}
if (xe->tag == XE_Race) {
+
/* See if we can come up with a source level description of the
raced-upon address. This is potentially expensive, which is
why it's only done at the update_extra point, not when the
@@ -274,17 +261,38 @@
if (0)
VG_(printf)("HG_(update_extra): "
"%d conflicting-event queries\n", xxx);
- tl_assert(sizeof(xe->XE.Race.descr1) == sizeof(xe->XE.Race.descr2));
- if (VG_(get_data_description)(
- &xe->XE.Race.descr1[0],
- &xe->XE.Race.descr2[0],
- sizeof(xe->XE.Race.descr1)-1,
- xe->XE.Race.data_addr )) {
- tl_assert( xe->XE.Race.descr1
- [ sizeof(xe->XE.Race.descr1)-1 ] == 0);
- tl_assert( xe->XE.Race.descr2
- [ sizeof(xe->XE.Race.descr2)-1 ] == 0);
+ tl_assert(!xe->XE.Race.descr1);
+ tl_assert(!xe->XE.Race.descr2);
+
+ xe->XE.Race.descr1
+ = VG_(newXA)( HG_(zalloc), "hg.update_extra.Race.descr1",
+ HG_(free), sizeof(HChar) );
+ xe->XE.Race.descr2
+ = VG_(newXA)( HG_(zalloc), "hg.update_extra.Race.descr2",
+ HG_(free), sizeof(HChar) );
+
+ (void) VG_(get_data_description)( xe->XE.Race.descr1,
+ xe->XE.Race.descr2,
+ xe->XE.Race.data_addr );
+
+ /* If there's nothing in descr1/2, free it. Why is it safe to
+ to VG_(indexXA) at zero here? Because
+ VG_(get_data_description) guarantees to zero terminate
+ descr1/2 regardless of the outcome of the call. So there's
+ always at least one element in each XA after the call.
+ */
+ if (0 == VG_(strlen)( VG_(indexXA)( xe->XE.Race.descr1, 0 ))) {
+ VG_(deleteXA)( xe->XE.Race.descr1 );
+ xe->XE.Race.descr1 = NULL;
}
+ if (0 == VG_(strlen)( VG_(indexXA)( xe->XE.Race.descr2, 0 ))) {
+ VG_(deleteXA)( xe->XE.Race.descr2 );
+ xe->XE.Race.descr2 = NULL;
+ }
+
+ /* And poke around in the conflicting-event map, to see if we
+ can rustle up a plausible-looking conflicting memory access
+ to show. */
{ Thr* thrp = NULL;
ExeContext* wherep = NULL;
Addr acc_addr = xe->XE.Race.data_addr;
@@ -347,7 +355,11 @@
xe.XE.Race.thr = thr;
tl_assert(isWrite == False || isWrite == True);
tl_assert(szB == 8 || szB == 4 || szB == 2 || szB == 1);
- xe.XE.Race.descr1[0] = xe.XE.Race.descr2[0] = 0;
+ /* Skip on the detailed description of the raced-on address at this
+ point; it's expensive. Leave it for the update_extra function
+ if we ever make it that far. */
+ tl_assert(xe.XE.Race.descr1 == NULL);
+ tl_assert(xe.XE.Race.descr2 == NULL);
// FIXME: tid vs thr
// Skip on any of the conflicting-access info at this point.
// It's expensive to obtain, and this error is more likely than
@@ -364,22 +376,6 @@
XE_Race, data_addr, NULL, &xe );
}
-void HG_(record_error_FreeMemLock) ( Thread* thr, Lock* lk )
-{
- XError xe;
- tl_assert( HG_(is_sane_Thread)(thr) );
- tl_assert( HG_(is_sane_LockN)(lk) );
- init_XError(&xe);
- xe.tag = XE_FreeMemLock;
- xe.XE.FreeMemLock.thr = thr;
- xe.XE.FreeMemLock.lock = mk_LockP_from_LockN(lk);
- // FIXME: tid vs thr
- tl_assert( HG_(is_sane_ThreadId)(thr->coretid) );
- tl_assert( thr->coretid != VG_INVALID_THREADID );
- VG_(maybe_record_error)( thr->coretid,
- XE_FreeMemLock, 0, NULL, &xe );
-}
-
void HG_(record_error_UnlockUnlocked) ( Thread* thr, Lock* lk )
{
XError xe;
@@ -507,9 +503,6 @@
&& (HG_(clo_cmp_race_err_addrs)
? xe1->XE.Race.data_addr == xe2->XE.Race.data_addr
: True);
- case XE_FreeMemLock:
- return xe1->XE.FreeMemLock.thr == xe2->XE.FreeMemLock.thr
- && xe1->XE.FreeMemLock.lock == xe2->XE.FreeMemLock.lock;
case XE_UnlockUnlocked:
return xe1->XE.UnlockUnlocked.thr == xe2->XE.UnlockUnlocked.thr
&& xe1->XE.UnlockUnlocked.lock == xe2->XE.UnlockUnlocked.lock;
@@ -539,158 +532,354 @@
}
+/*----------------------------------------------------------------*/
+/*--- Error management -- printing ---*/
+/*----------------------------------------------------------------*/
+
+/* Do a printf-style operation on either the XML or normal output
+ channel, depending on the setting of VG_(clo_xml).
+*/
+static void emit_WRK ( HChar* format, va_list vargs )
+{
+ if (VG_(clo_xml)) {
+ VG_(vprintf_xml)(format, vargs);
+ } else {
+ VG_(vmessage)(Vg_UserMsg, format, vargs);
+ }
+}
+static void emit ( HChar* format, ... ) PRINTF_CHECK(1, 2);
+static void emit ( HChar* format, ... )
+{
+ va_list vargs;
+ va_start(vargs, format);
+ emit_WRK(format, vargs);
+ va_end(vargs);
+}
+static void emit_no_f_c ( HChar* format, ... )
+{
+ va_list vargs;
+ va_start(vargs, format);
+ emit_WRK(format, vargs);
+ va_end(vargs);
+}
+
+
/* Announce (that is, print the point-of-creation) of 'thr'. Only do
this once, as we only want to see these announcements once per
- thread. */
-static void announce_one_thread ( Thread* thr )
+ thread. Returned Bool indicates whether or not an announcement was
+ made.
+*/
+static Bool announce_one_thread ( Thread* thr )
{
tl_assert(HG_(is_sane_Thread)(thr));
tl_assert(thr->errmsg_index >= 1);
- if (!thr->announced) {
+ if (thr->announced)
+ return False;
+
+ if (VG_(clo_xml)) {
+
+ VG_(printf_xml)("<announcethread>\n");
+ VG_(printf_xml)(" <hthreadid>%d</threadid>\n", thr->errmsg_index);
if (thr->errmsg_index == 1) {
tl_assert(thr->created_at == NULL);
- VG_(message)(Vg_UserMsg, "Thread #%d is the program's root thread",
- thr->errmsg_index);
+ VG_(printf_xml)(" <isrootthread></isrootthread>\n");
} else {
tl_assert(thr->created_at != NULL);
- VG_(message)(Vg_UserMsg, "Thread #%d was created",
+ VG_(pp_ExeContext)( thr->created_at );
+ }
+ VG_(printf_xml)("</announcethread>\n\n");
+
+ } else {
+
+ if (thr->errmsg_index == 1) {
+ tl_assert(thr->created_at == NULL);
+ VG_(message)(Vg_UserMsg,
+ "Thread #%d is the program's root thread\n",
+ thr->errmsg_index);
+ } else {
+ tl_assert(thr->created_at != NULL);
+ VG_(message)(Vg_UserMsg, "Thread #%d was created\n",
thr->errmsg_index);
VG_(pp_ExeContext)( thr->created_at );
}
- VG_(message)(Vg_UserMsg, "");
- thr->announced = True;
+ VG_(message)(Vg_UserMsg, "\n");
+
}
+
+ thr->announced = True;
+ return True;
}
+/* This is the "this error is due to be printed shortly; so have a
+ look at it any print any preamble you want" function. We use it to
+ announce any previously un-announced threads in the upcoming error
+ message.
+*/
+void HG_(before_pp_Error) ( Error* err )
+{
+ XError* xe;
+ tl_assert(err);
+ xe = (XError*)VG_(get_error_extra)(err);
+ tl_assert(xe);
+
+ switch (VG_(get_error_kind)(err)) {
+ case XE_Misc:
+ announce_one_thread( xe->XE.Misc.thr );
+ break;
+ case XE_LockOrder:
+ announce_one_thread( xe->XE.LockOrder.thr );
+ break;
+ case XE_PthAPIerror:
+ announce_one_thread( xe->XE.PthAPIerror.thr );
+ break;
+ case XE_UnlockBogus:
+ announce_one_thread( xe->XE.UnlockBogus.thr );
+ break;
+ case XE_UnlockForeign:
+ announce_one_thread( xe->XE.UnlockForeign.thr );
+ announce_one_thread( xe->XE.UnlockForeign.owner );
+ break;
+ case XE_UnlockUnlocked:
+ announce_one_thread( xe->XE.UnlockUnlocked.thr );
+ break;
+ case XE_Race:
+ announce_one_thread( xe->XE.Race.thr );
+ if (xe->XE.Race.mb_confaccthr)
+ announce_one_thread( xe->XE.Race.mb_confaccthr );
+ break;
+ default:
+ tl_assert(0);
+ }
+}
+
+
void HG_(pp_Error) ( Error* err )
{
+ const Bool xml = VG_(clo_xml); /* a shorthand, that's all */
+
XError *xe = (XError*)VG_(get_error_extra)(err);
+ tl_assert(xe);
switch (VG_(get_error_kind)(err)) {
case XE_Misc: {
- tl_assert(xe);
tl_assert( HG_(is_sane_Thread)( xe->XE.Misc.thr ) );
- announce_one_thread( xe->XE.Misc.thr );
- VG_(message)(Vg_UserMsg,
- "Thread #%d: %s",
- (Int)xe->XE.Misc.thr->errmsg_index,
- xe->XE.Misc.errstr);
- VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+
+ if (xml) {
+
+ emit( " <kind>Misc</kind>\n");
+ emit( " <xwhat>\n" );
+ emit( " <text>Thread #%d: %s</text>\n",
+ (Int)xe->XE.Misc.thr->errmsg_index,
+ xe->XE.Misc.errstr );
+ emit( " <hthreadid>%d</hthreadid>\n",
+ (Int)xe->XE.Misc.thr->errmsg_index );
+ emit( " </xwhat>\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+
+ } else {
+
+ emit( "Thread #%d: %s\n",
+ (Int)xe->XE.Misc.thr->errmsg_index,
+ xe->XE.Misc.errstr );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+
+ }
break;
}
case XE_LockOrder: {
- tl_assert(xe);
tl_assert( HG_(is_sane_Thread)( xe->XE.LockOrder.thr ) );
- announce_one_thread( xe->XE.LockOrder.thr );
- VG_(message)(Vg_UserMsg,
- "Thread #%d: lock order \"%p before %p\" violated",
- (Int)xe->XE.LockOrder.thr->errmsg_index,
- (void*)xe->XE.LockOrder.before_ga,
- (void*)xe->XE.LockOrder.after_ga);
- VG_(pp_ExeContext)( VG_(get_error_where)(err) );
- if (xe->XE.LockOrder.before_ec && xe->XE.LockOrder.after_ec) {
- VG_(message)(Vg_UserMsg,
- " Required order was established by acquisition of lock at %p",
- (void*)xe->XE.LockOrder.before_ga);
- VG_(pp_ExeContext)( xe->XE.LockOrder.before_ec );
- VG_(message)(Vg_UserMsg,
- " followed by a later acquisition of lock at %p",
- (void*)xe->XE.LockOrder.after_ga);
- VG_(pp_ExeContext)( xe->XE.LockOrder.after_ec );
+
+ if (xml) {
+
+ emit( " <kind>LockOrder</kind>\n");
+ emit( " <xwhat>\n" );
+ emit( " <text>Thread #%d: lock order \"%p before %p\" "
+ "violated</text>\n",
+ (Int)xe->XE.LockOrder.thr->errmsg_index,
+ (void*)xe->XE.LockOrder.before_ga,
+ (void*)xe->XE.LockOrder.after_ga );
+ emit( " <hthreadid>%d</hthreadid>\n",
+ (Int)xe->XE.LockOrder.thr->errmsg_index );
+ emit( " </xwhat>\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ if (xe->XE.LockOrder.before_ec && xe->XE.LockOrder.after_ec) {
+ emit( " <auxwhat>Required order was established by "
+ "acquisition of lock at %p</auxwhat>\n",
+ (void*)xe->XE.LockOrder.before_ga );
+ VG_(pp_ExeContext)( xe->XE.LockOrder.before_ec );
+ emit( " <auxwhat>followed by a later acquisition "
+ "of lock at %p</auxwhat>\n",
+ (void*)xe->XE.LockOrder.after_ga );
+ VG_(pp_ExeContext)( xe->XE.LockOrder.after_ec );
+ }
+
+ } else {
+
+ emit( "Thread #%d: lock order \"%p before %p\" violated\n",
+ (Int)xe->XE.LockOrder.thr->errmsg_index,
+ (void*)xe->XE.LockOrder.before_ga,
+ (void*)xe->XE.LockOrder.after_ga );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ if (xe->XE.LockOrder.before_ec && xe->XE.LockOrder.after_ec) {
+ emit( " Required order was established by "
+ "acquisition of lock at %p\n",
+ (void*)xe->XE.LockOrder.before_ga );
+ VG_(pp_ExeContext)( xe->XE.LockOrder.before_ec );
+ emit( " followed by a later acquisition of lock at %p\n",
+ (void*)xe->XE.LockOrder.after_ga );
+ VG_(pp_ExeContext)( xe->XE.LockOrder.after_ec );
+ }
+
}
+
break;
}
case XE_PthAPIerror: {
- tl_assert(xe);
tl_assert( HG_(is_sane_Thread)( xe->XE.PthAPIerror.thr ) );
- announce_one_thread( xe->XE.PthAPIerror.thr );
- VG_(message)(Vg_UserMsg,
- "Thread #%d's call to %s failed",
- (Int)xe->XE.PthAPIerror.thr->errmsg_index,
- xe->XE.PthAPIerror.fnname);
- VG_(message)(Vg_UserMsg,
- " with error code %ld (%s)",
- xe->XE.PthAPIerror.err,
- xe->XE.PthAPIerror.errstr);
- VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+
+ if (xml) {
+
+ emit( " <kind>PthAPIerror</kind>\n");
+ emit( " <xwhat>\n" );
+ emit_no_f_c(
+ " <text>Thread #%d's call to %t failed</text>\n",
+ (Int)xe->XE.PthAPIerror.thr->errmsg_index,
+ xe->XE.PthAPIerror.fnname );
+ emit( " <hthreadid>%d</hthreadid>\n",
+ (Int)xe->XE.PthAPIerror.thr->errmsg_index );
+ emit( " </xwhat>\n" );
+ emit( " <what>with error code %ld (%s)</what>\n",
+ xe->XE.PthAPIerror.err, xe->XE.PthAPIerror.errstr );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+
+ } else {
+
+ emit_no_f_c( "Thread #%d's call to %t failed\n",
+ (Int)xe->XE.PthAPIerror.thr->errmsg_index,
+ xe->XE.PthAPIerror.fnname );
+ emit( " with error code %ld (%s)\n",
+ xe->XE.PthAPIerror.err, xe->XE.PthAPIerror.errstr );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+
+ }
+
break;
}
case XE_UnlockBogus: {
- tl_assert(xe);
tl_assert( HG_(is_sane_Thread)( xe->XE.UnlockBogus.thr ) );
- announce_one_thread( xe->XE.UnlockBogus.thr );
- VG_(message)(Vg_UserMsg,
- "Thread #%d unlocked an invalid lock at %p ",
- (Int)xe->XE.UnlockBogus.thr->errmsg_index,
- (void*)xe->XE.UnlockBogus.lock_ga);
- VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+
+ if (xml) {
+
+ emit( " <kind>UnlockBogus</kind>\n");
+ emit( " <xwhat>\n" );
+ emit( " <text>Thread #%d unlocked an invalid "
+ "lock at %p</text>\n",
+ (Int)xe->XE.UnlockBogus.thr->errmsg_index,
+ (void*)xe->XE.UnlockBogus.lock_ga );
+ emit( " <hthreadid>%d</hthreadid>\n",
+ (Int)xe->XE.UnlockBogus.thr->errmsg_index );
+ emit( " </xwhat>\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+
+ } else {
+
+ emit( "Thread #%d unlocked an invalid lock at %p\n",
+ (Int)xe->XE.UnlockBogus.thr->errmsg_index,
+ (void*)xe->XE.UnlockBogus.lock_ga );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+
+ }
+
break;
}
case XE_UnlockForeign: {
- tl_assert(xe);
tl_assert( HG_(is_sane_LockP)( xe->XE.UnlockForeign.lock ) );
tl_assert( HG_(is_sane_Thread)( xe->XE.UnlockForeign.owner ) );
tl_assert( HG_(is_sane_Thread)( xe->XE.UnlockForeign.thr ) );
- announce_one_thread( xe->XE.UnlockForeign.thr );
- announce_one_thread( xe->XE.UnlockForeign.owner );
- VG_(message)(Vg_UserMsg,
- "Thread #%d unlocked lock at %p "
- "currently held by thread #%d",
- (Int)xe->XE.UnlockForeign.thr->errmsg_index,
- (void*)xe->XE.UnlockForeign.lock->guestaddr,
- (Int)xe->XE.UnlockForeign.owner->errmsg_index );
- VG_(pp_ExeContext)( VG_(get_error_where)(err) );
- if (xe->XE.UnlockForeign.lock->appeared_at) {
- VG_(message)(Vg_UserMsg,
- " Lock at %p was first observed",
- (void*)xe->XE.UnlockForeign.lock->guestaddr);
- VG_(pp_ExeContext)( xe->XE.UnlockForeign.lock->appeared_at );
+
+ if (xml) {
+
+ emit( " <kind>UnlockForeign</kind>\n");
+ emit( " <xwhat>\n" );
+ emit( " <text>Thread #%d unlocked lock at %p "
+ "currently held by thread #%d</text>\n",
+ (Int)xe->XE.UnlockForeign.thr->errmsg_index,
+ (void*)xe->XE.UnlockForeign.lock->guestaddr,
+ (Int)xe->XE.UnlockForeign.owner->errmsg_index );
+ emit( " <hthreadid>%d</hthreadid>\n",
+ (Int)xe->XE.UnlockForeign.thr->errmsg_index );
+ emit( " <hthreadid>%d</hthreadid>\n",
+ (Int)xe->XE.UnlockForeign.owner->errmsg_index );
+ emit( " </xwhat>\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+
+ if (xe->XE.UnlockForeign.lock->appeared_at) {
+ emit( " <auxwhat>Lock at %p was first observed</auxwhat>\n",
+ (void*)xe->XE.UnlockForeign.lock->guestaddr );
+ VG_(pp_ExeContext)( xe->XE.UnlockForeign.lock->appeared_at );
+ }
+
+ } else {
+
+ emit( "Thread #%d unlocked lock at %p "
+ "currently held by thread #%d\n",
+ (Int)xe->XE.UnlockForeign.thr->errmsg_index,
+ (void*)xe->XE.UnlockForeign.lock->guestaddr,
+ (Int)xe->XE.UnlockForeign.owner->errmsg_index );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ if (xe->XE.UnlockForeign.lock->appeared_at) {
+ emit( " Lock at %p was first observed\n",
+ (void*)xe->XE.UnlockForeign.lock->guestaddr );
+ VG_(pp_ExeContext)( xe->XE.UnlockForeign.lock->appeared_at );
+ }
+
}
+
break;
}
case XE_UnlockUnlocked: {
- tl_assert(xe);
tl_assert( HG_(is_sane_LockP)( xe->XE.UnlockUnlocked.lock ) );
tl_assert( HG_(is_sane_Thread)( xe->XE.UnlockUnlocked.thr ) );
- announce_one_thread( xe->XE.UnlockUnlocked.thr );
- VG_(message)(Vg_UserMsg,
- "Thread #%d unlocked a not-locked lock at %p ",
- (Int)xe->XE.UnlockUnlocked.thr->errmsg_index,
- (void*)xe->XE.UnlockUnlocked.lock->guestaddr);
- VG_(pp_ExeContext)( VG_(get_error_where)(err) );
- if (xe->XE.UnlockUnlocked.lock->appeared_at) {
- VG_(message)(Vg_UserMsg,
- " Lock at %p was first observed",
- (void*)xe->XE.UnlockUnlocked.lock->guestaddr);
- VG_(pp_ExeContext)( xe->XE.UnlockUnlocked.lock->appeared_at );
+
+ if (xml) {
+
+ emit( " <kind>UnlockUnlocked</kind>\n");
+ emit( " <xwhat>\n" );
+ emit( " <text>Thread #%d unlocked a "
+ "not-locked lock at %p</text>\n",
+ (Int)xe->XE.UnlockUnlocked.thr->errmsg_index,
+ (void*)xe->XE.UnlockUnlocked.lock->guestaddr );
+ emit( " <hthreadid>%d</hthreadid>\n",
+ (Int)xe->XE.UnlockUnlocked.thr->errmsg_index );
+ emit( " </xwhat>\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ if (xe->XE.UnlockUnlocked.lock->appeared_at) {
+ emit( " <auxwhat>Lock at %p was first observed</auxwhat>\n",
+ (void*)xe->XE.UnlockUnlocked.lock->guestaddr );
+ VG_(pp_ExeContext)( xe->XE.UnlockUnlocked.lock->appeared_at );
+ }
+
+ } else {
+
+ emit( "Thread #%d unlocked a not-locked lock at %p\n",
+ (Int)xe->XE.UnlockUnlocked.thr->errmsg_index,
+ (void*)xe->XE.UnlockUnlocked.lock->guestaddr );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ if (xe->XE.UnlockUnlocked.lock->appeared_at) {
+ emit( " Lock at %p was first observed\n",
+ (void*)xe->XE.UnlockUnlocked.lock->guestaddr );
+ VG_(pp_ExeContext)( xe->XE.UnlockUnlocked.lock->appeared_at );
+ }
+
}
- break;
- }
- case XE_FreeMemLock: {
- tl_assert(xe);
- tl_assert( HG_(is_sane_LockP)( xe->XE.FreeMemLock.lock ) );
- tl_assert( HG_(is_sane_Thread)( xe->XE.FreeMemLock.thr ) );
- announce_one_thread( xe->XE.FreeMemLock.thr );
- VG_(message)(Vg_UserMsg,
- "Thread #%d deallocated location %p "
- "containing a locked lock",
- (Int)xe->XE.FreeMemLock.thr->errmsg_index,
- (void*)xe->XE.FreeMemLock.lock->guestaddr);
- VG_(pp_ExeContext)( VG_(get_error_where)(err) );
- if (xe->XE.FreeMemLock.lock->appeared_at) {
- VG_(message)(Vg_UserMsg,
- " Lock at %p was first observed",
- (void*)xe->XE.FreeMemLock.lock->guestaddr);
- VG_(pp_ExeContext)( xe->XE.FreeMemLock.lock->appeared_at );
- }
break;
}
@@ -702,40 +891,80 @@
szB = xe->XE.Race.szB;
err_ga = VG_(get_error_address)(err);
- announce_one_thread( xe->XE.Race.thr );
+ tl_assert( HG_(is_sane_Thread)( xe->XE.Race.thr ));
if (xe->XE.Race.mb_confaccthr)
- announce_one_thread( xe->XE.Race.mb_confaccthr );
- VG_(message)(Vg_UserMsg,
- "Possible data race during %s of size %d at %#lx by thread #%d",
- what, szB, err_ga, (Int)xe->XE.Race.thr->errmsg_index
- );
- VG_(pp_ExeContext)( VG_(get_error_where)(err) );
- if (xe->XE.Race.mb_confacc) {
- if (xe->XE.Race.mb_confaccthr) {
- VG_(message)(Vg_UserMsg,
- " This conflicts with a previous %s of size %d by thread #%d",
- xe->XE.Race.mb_confaccIsW ? "write" : "read",
- xe->XE.Race.mb_confaccSzB,
- xe->XE.Race.mb_confaccthr->errmsg_index
- );
- } else {
- // FIXME: can this ever happen?
- VG_(message)(Vg_UserMsg,
- " This conflicts with a previous %s of size %d",
- xe->XE.Race.mb_confaccIsW ? "write" : "read",
- xe->XE.Race.mb_confaccSzB
- );
+ tl_assert( HG_(is_sane_Thread)( xe->XE.Race.mb_confaccthr ));
+
+ if (xml) {
+
+ /* ------ XML ------ */
+ emit( " <kind>Race</kind>\n" );
+ emit( " <xwhat>\n" );
+ emit( " <text>Possible data race during %s of size %d "
+ "at %#lx by thread #%d</text>\n",
+ what, szB, err_ga, (Int)xe->XE.Race.thr->errmsg_index );
+ emit( " <hthreadid>%d</hthreadid>\n",
+ (Int)xe->XE.Race.thr->errmsg_index );
+ emit( " </xwhat>\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+
+ if (xe->XE.Race.mb_confacc) {
+ if (xe->XE.Race.mb_confaccthr) {
+ emit( " <xauxwhat>\n");
+ emit( " <text>This conflicts with a previous %s of size %d "
+ "by thread #%d</text>\n",
+ xe->XE.Race.mb_confaccIsW ? "write" : "read",
+ xe->XE.Race.mb_confaccSzB,
+ xe->XE.Race.mb_confaccthr->errmsg_index );
+ emit( " <hthreadid>%d</hthreadid>\n",
+ xe->XE.Race.mb_confaccthr->errmsg_index);
+ emit(" </xauxwhat>\n");
+ } else {
+ // FIXME: can this ever happen?
+ emit( " <auxwhat>This conflicts with a previous %s "
+ "of size %d</auxwhat>\n",
+ xe->XE.Race.mb_confaccIsW ? "write" : "read",
+ xe->XE.Race.mb_confaccSzB );
+ }
+ VG_(pp_ExeContext)( xe->XE.Race.mb_confacc );
}
- VG_(pp_ExeContext)( xe->XE.Race.mb_confacc );
+
+ } else {
+
+ /* ------ Text ------ */
+ emit( "Possible data race during %s of size %d "
+ "at %#lx by thread #%d\n",
+ what, szB, err_ga, (Int)xe->XE.Race.thr->errmsg_index );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ if (xe->XE.Race.mb_confacc) {
+ if (xe->XE.Race.mb_confaccthr) {
+ emit( " This conflicts with a previous %s of size %d "
+ "by thread #%d\n",
+ xe->XE.Race.mb_confaccIsW ? "write" : "read",
+ xe->XE.Race.mb_confaccSzB,
+ xe->XE.Race.mb_confaccthr->errmsg_index );
+ } else {
+ // FIXME: can this ever happen?
+ emit( " This conflicts with a previous %s of size %d\n",
+ xe->XE.Race.mb_confaccIsW ? "write" : "read",
+ xe->XE.Race.mb_confaccSzB );
+ }
+ VG_(pp_ExeContext)( xe->XE.Race.mb_confacc );
+ }
+
}
+ /* If we have a better description of the address, show it.
+ Note that in XML mode, it will already by nicely wrapped up
+ in tags, either <auxwhat> or <xauxwhat>, so we can just emit
+ it verbatim. */
+ if (xe->XE.Race.descr1)
+ emit( "%s%s\n", xml ? " " : " ",
+ (HChar*)VG_(indexXA)( xe->XE.Race.descr1, 0 ) );
+ if (xe->XE.Race.descr2)
+ emit( "%s%s\n", xml ? " " : " ",
+ (HChar*)VG_(indexXA)( xe->XE.Race.descr2, 0 ) );
- /* If we have a better description of the address, show it. */
- if (xe->XE.Race.descr1[0] != 0)
- VG_(message)(Vg_UserMsg, " %s", &xe->XE.Race.descr1[0]);
- if (xe->XE.Race.descr2[0] != 0)
- VG_(message)(Vg_UserMsg, " %s", &xe->XE.Race.descr2[0]);
-
break; /* case XE_Race */
} /* case XE_Race */
@@ -748,7 +977,6 @@
{
switch (VG_(get_error_kind)(err)) {
case XE_Race: return "Race";
- case XE_FreeMemLock: return "FreeMemLock";
case XE_UnlockUnlocked: return "UnlockUnlocked";
case XE_UnlockForeign: return "UnlockForeign";
case XE_UnlockBogus: return "UnlockBogus";
@@ -790,7 +1018,6 @@
{
switch (VG_(get_supp_kind)(su)) {
case XS_Race: return VG_(get_error_kind)(err) == XE_Race;
- case XS_FreeMemLock: return VG_(get_error_kind)(err) == XE_FreeMemLock;
case XS_UnlockUnlocked: return VG_(get_error_kind)(err) == XE_UnlockUnlocked;
case XS_UnlockForeign: return VG_(get_error_kind)(err) == XE_UnlockForeign;
case XS_UnlockBogus: return VG_(get_error_kind)(err) == XE_UnlockBogus;
Modified: trunk/helgrind/hg_errors.h
===================================================================
--- trunk/helgrind/hg_errors.h 2009-07-15 14:49:40 UTC (rev 10467)
+++ trunk/helgrind/hg_errors.h 2009-07-15 14:50:02 UTC (rev 10468)
@@ -35,9 +35,10 @@
/* The standard bundle of error management functions that we are
required to present to the core/tool interface at startup. */
-Bool HG_(eq_Error) ( VgRes not_used, Error* e1, Error* e2 );
-void HG_(pp_Error) ( Error* err );
-UInt HG_(update_extra) ( Error* err );
+Bool HG_(eq_Error) ( VgRes not_used, Error* e1, Error* e2 );
+void HG_(before_pp_Error) ( Error* err );
+void HG_(pp_Error) ( Error* err );
+UInt HG_(update_extra) ( Error* err );
Bool HG_(recognised_suppression) ( Char* name, Supp *su );
Bool HG_(read_extra_suppression_info) ( Int fd, Char* buf, Int nBuf,
Supp* su );
@@ -49,7 +50,6 @@
void HG_(record_error_Race) ( Thread* thr,
Addr data_addr, Int szB, Bool isWrite,
ExeContext* mb_lastlock );
-void HG_(record_error_FreeMemLock) ( Thread* thr, Lock* lk );
void HG_(record_error_UnlockUnlocked) ( Thread*, Lock* );
void HG_(record_error_UnlockForeign) ( Thread*, Thread*, Lock* );
void HG_(record_error_UnlockBogus) ( Thread*, Addr );
Modified: trunk/helgrind/hg_main.c
===================================================================
--- trunk/helgrind/hg_main.c 2009-07-15 14:49:40 UTC (rev 10467)
+++ trunk/helgrind/hg_main.c 2009-07-15 14:50:02 UTC (rev 10468)
@@ -4023,7 +4023,7 @@
if (6 != VG_(strlen)(tmp_str)) {
VG_(message)(Vg_UserMsg,
- "--hg-sanity-flags argument must have 6 digits");
+ "--hg-sanity-flags argument must have 6 digits\n");
return False;
}
for (j = 0; j < 6; j++) {
@@ -4031,7 +4031,7 @@
else if ('1' == tmp_str[j]) HG_(clo_sanity_flags) |= (1 << (6-1-j));
else {
VG_(message)(Vg_UserMsg, "--hg-sanity-flags argument can "
- "only contain 0s and 1s");
+ "only contain 0s and 1s\n");
return False;
}
}
@@ -4192,6 +4192,7 @@
VG_(needs_core_errors) ();
VG_(needs_tool_errors) (HG_(eq_Error),
+ HG_(before_pp_Error),
HG_(pp_Error),
False,/*show TIDs for errors*/
HG_(update_extra),
@@ -4201,6 +4202,8 @@
HG_(get_error_name),
HG_(print_extra_suppression_info));
+ VG_(needs_xml_output) ();
+
VG_(needs_command_line_options)(hg_process_cmd_line_option,
hg_print_usage,
hg_print_debug_usage);
Modified: trunk/helgrind/libhb_core.c
===================================================================
--- trunk/helgrind/libhb_core.c 2009-07-15 14:49:40 UTC (rev 10467)
+++ trunk/helgrind/libhb_core.c 2009-07-15 14:50:02 UTC (rev 10468)
@@ -2289,7 +2289,7 @@
static UInt ctr = 0;
tl_assert(nTab > 0);
VG_(message)(Vg_DebugMsg,
- "libhb: VTS GC: #%u old size %lu live %lu (%2llu%%)",
+ "libhb: VTS GC: #%u old size %lu live %lu (%2llu%%)\n",
ctr++, nTab, nLive, (100ULL * (ULong)nLive) / (ULong)nTab);
}
}
@@ -3484,7 +3484,7 @@
if (VG_(clo_verbosity) > 1) {
VG_(message)(Vg_DebugMsg,
"libhb: EvM GC: delete generations %lu and below, "
- "retaining %lu entries",
+ "retaining %lu entries\n",
maxGen, retained );
}
@@ -3510,7 +3510,7 @@
if (VG_(clo_verbosity) > 1) {
VG_(message)(Vg_DebugMsg,
"libhb: EvM GC: randomly delete half the entries, "
- "retaining %lu entries",
+ "retaining %lu entries\n",
retained );
}
Modified: trunk/helgrind/tests/Makefile.am
===================================================================
--- trunk/helgrind/tests/Makefile.am 2009-07-15 14:49:40 UTC (rev 10467)
+++ trunk/helgrind/tests/Makefile.am 2009-07-15 14:50:02 UTC (rev 10468)
@@ -30,6 +30,8 @@
tc05_simple_race.stderr.exp \
tc06_two_races.vgtest tc06_two_races.stdout.exp \
tc06_two_races.stderr.exp \
+ tc06_two_races_xml.vgtest tc06_two_races_xml.stdout.exp \
+ tc06_two_races_xml.stderr.exp \
tc07_hbl1.vgtest tc07_hbl1.stdout.exp tc07_hbl1.stderr.exp \
tc08_hbl2.vgtest tc08_hbl2.stdout.exp tc08_hbl2.stderr.exp \
tc09_bad_unlock.vgtest tc09_bad_unlock.stdout.exp \
Property changes on: trunk/helgrind/tests/bar_bad.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/bar_trivial.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/hg01_all_ok.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/hg02_deadlock.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/hg03_inherit.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/hg04_race.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/hg05_race2.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/hg06_readshared.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/pth_barrier1.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/pth_barrier2.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/pth_barrier3.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/rwlock_race.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/rwlock_test.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc01_simple_race.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc02_simple_tls.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc03_re_excl.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc04_free_lock.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc05_simple_race.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc06_two_races.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Copied: trunk/helgrind/tests/tc06_two_races_xml.stderr.exp (from rev 10464, branches/MESSAGING_TIDYUP/helgrind/tests/tc06_two_races_xml.stderr.exp)
===================================================================
--- trunk/helgrind/tests/tc06_two_races_xml.stderr.exp (rev 0)
+++ trunk/helgrind/tests/tc06_two_races_xml.stderr.exp 2009-07-15 14:50:02 UTC (rev 10468)
@@ -0,0 +1,318 @@
+<?xml version="1.0"?>
+
+<valgrindoutput>
+
+<protocolversion>4</protocolversion>
+<protocoltool>helgrind</protocoltool>
+
+<preamble>
+ <line>...</line>
+ <line>...</line>
+ <line>...</line>
+ <line>...</line>
+ <line>...</line>
+ <line>...</line>
+</preamble>
+
+<pid>...</pid>
+<ppid>...</ppid>
+<tool>helgrind</tool>
+
+<args>
+ <vargv>...</vargv>
+ <argv>
+ <exe>./tc06_two_races</exe>
+ </argv>
+</args>
+
+<status>
+ <state>RUNNING</state>
+ <time>...</time>
+</status>
+
+<announcethread>
+ <hthreadid>1</threadid>
+ <isrootthread></isrootthread>
+</announcethread>
+
+<announcethread>
+ <hthreadid>2</threadid>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>clone</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>do_clone</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_create@@GLIBC_2.2.5</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>pthread_create@*</fn>
+ <dir>...</dir>
+ <file>hg_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>main</fn>
+ <dir>...</dir>
+ <file>tc06_two_races.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+</announcethread>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>Race</kind>
+ <xwhat>
+ <text>Possible data race during read of size 4 at 0x........ by thread #x</text>
+ <hthreadid>1</hthreadid>
+ </xwhat>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>main</fn>
+ <dir>...</dir>
+ <file>tc06_two_races.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <xauxwhat>
+ <text>This conflicts with a previous write of size 4 by thread #x</text>
+ <hthreadid>2</hthreadid>
+ </xauxwhat>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>child_fn</fn>
+ <dir>...</dir>
+ <file>tc06_two_races.c</file>
+ <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>mythread_wrapper</fn>
+ <dir>...</dir>
+ <file>hg_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>start_thread</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>clone</fn>
+ </frame>
+ </stack>
+ <auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
+ <xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>...</line> </xauxwhat>
+</error>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>Race</kind>
+ <xwhat>
+ <text>Possible data race during write of size 4 at 0x........ by thread #x</text>
+ <hthreadid>1</hthreadid>
+ </xwhat>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>main</fn>
+ <dir>...</dir>
+ <file>tc06_two_races.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <xauxwhat>
+ <text>This conflicts with a previous write of size 4 by thread #x</text>
+ <hthreadid>2</hthreadid>
+ </xauxwhat>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>child_fn</fn>
+ <dir>...</dir>
+ <file>tc06_two_races.c</file>
+ <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>mythread_wrapper</fn>
+ <dir>...</dir>
+ <file>hg_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>start_thread</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>clone</fn>
+ </frame>
+ </stack>
+ <auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
+ <xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>...</line> </xauxwhat>
+</error>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>Race</kind>
+ <xwhat>
+ <text>Possible data race during read of size 4 at 0x........ by thread #x</text>
+ <hthreadid>1</hthreadid>
+ </xwhat>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>main</fn>
+ <dir>...</dir>
+ <file>tc06_two_races.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <xauxwhat>
+ <text>This conflicts with a previous write of size 4 by thread #x</text>
+ <hthreadid>2</hthreadid>
+ </xauxwhat>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>child_fn</fn>
+ <dir>...</dir>
+ <file>tc06_two_races.c</file>
+ <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>mythread_wrapper</fn>
+ <dir>...</dir>
+ <file>hg_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>start_thread</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>clone</fn>
+ </frame>
+ </stack>
+ <auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
+ <xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>...</line> </xauxwhat>
+</error>
+
+<error>
+ <unique>0x........</unique>
+ <tid>...</tid>
+ <kind>Race</kind>
+ <xwhat>
+ <text>Possible data race during write of size 4 at 0x........ by thread #x</text>
+ <hthreadid>1</hthreadid>
+ </xwhat>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>main</fn>
+ <dir>...</dir>
+ <file>tc06_two_races.c</file>
+ <line>...</line>
+ </frame>
+ </stack>
+ <xauxwhat>
+ <text>This conflicts with a previous write of size 4 by thread #x</text>
+ <hthreadid>2</hthreadid>
+ </xauxwhat>
+ <stack>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>child_fn</fn>
+ <dir>...</dir>
+ <file>tc06_two_races.c</file>
+ <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>mythread_wrapper</fn>
+ <dir>...</dir>
+ <file>hg_intercepts.c</file>
+ <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>start_thread</fn>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>clone</fn>
+ </frame>
+ </stack>
+ <auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
+ <xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>...</line> </xauxwhat>
+</error>
+
+<status>
+ <state>FINISHED</state>
+ <time>...</time>
+</status>
+
+<errorcounts>
+ <pair>
+ <count>...</count>
+ <unique>0x........</unique>
+ </pair>
+ <pair>
+ <count>...</count>
+ <unique>0x........</unique>
+ </pair>
+ <pair>
+ <count>...</count>
+ <unique>0x........</unique>
+ </pair>
+ <pair>
+ <count>...</count>
+ <unique>0x........</unique>
+ </pair>
+</errorcounts>
+
+<suppcounts>...</suppcounts>
+
+</valgrindoutput>
+
Copied: trunk/helgrind/tests/tc06_two_races_xml.stdout.exp (from rev 10464, branches/MESSAGING_TIDYUP/helgrind/tests/tc06_two_races_xml.stdout.exp)
===================================================================
Copied: trunk/helgrind/tests/tc06_two_races_xml.vgtest (from rev 10464, branches/MESSAGING_TIDYUP/helgrind/tests/tc06_two_races_xml.vgtest)
===================================================================
--- trunk/helgrind/tests/tc06_two_races_xml.vgtest (rev 0)
+++ trunk/helgrind/tests/tc06_two_races_xml.vgtest 2009-07-15 14:50:02 UTC (rev 10468)
@@ -0,0 +1,3 @@
+prog: tc06_two_races
+vgopts: --read-var-info=yes --xml=yes --xml-fd=2 --log-file=/dev/null
+stderr_filter: ../../memcheck/tests/filter_xml
Property changes on: trunk/helgrind/tests/tc07_hbl1.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc08_hbl2.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Modified: trunk/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc23-amd64
===================================================================
--- trunk/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc23-amd64 2009-07-15 14:49:40 UTC (rev 10467)
+++ trunk/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc23-amd64 2009-07-15 14:50:02 UTC (rev 10468)
@@ -1,7 +1,7 @@
Thread #x is the program's root thread
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
by 0x........: main (tc09_bad_unlock.c:49)
@@ -26,7 +26,7 @@
by 0x........: nearly_main (tc09_bad_unlock.c:31)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x unlocked an invalid lock at 0x........
+Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
@@ -39,7 +39,7 @@
by 0x........: nearly_main (tc09_bad_unlock.c:31)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
by 0x........: main (tc09_bad_unlock.c:50)
@@ -64,7 +64,7 @@
by 0x........: nearly_main (tc09_bad_unlock.c:31)
by 0x........: main (tc09_bad_unlock.c:50)
-Thread #x unlocked an invalid lock at 0x........
+Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
Modified: trunk/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc25-amd64
===================================================================
--- trunk/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc25-amd64 2009-07-15 14:49:40 UTC (rev 10467)
+++ trunk/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc25-amd64 2009-07-15 14:50:02 UTC (rev 10468)
@@ -1,7 +1,7 @@
Thread #x is the program's root thread
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
by 0x........: main (tc09_bad_unlock.c:49)
@@ -26,7 +26,7 @@
by 0x........: nearly_main (tc09_bad_unlock.c:31)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x unlocked an invalid lock at 0x........
+Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
@@ -38,7 +38,7 @@
by 0x........: main (tc09_bad_unlock.c:49)
---------------------
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
by 0x........: main (tc09_bad_unlock.c:50)
@@ -73,7 +73,7 @@
by 0x........: nearly_main (tc09_bad_unlock.c:31)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x unlocked an invalid lock at 0x........
+Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
Modified: trunk/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc25-x86
===================================================================
--- trunk/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc25-x86 2009-07-15 14:49:40 UTC (rev 10467)
+++ trunk/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc25-x86 2009-07-15 14:50:02 UTC (rev 10468)
@@ -1,7 +1,7 @@
Thread #x is the program's root thread
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
by 0x........: main (tc09_bad_unlock.c:49)
@@ -26,7 +26,7 @@
by 0x........: nearly_main (tc09_bad_unlock.c:31)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x unlocked an invalid lock at 0x........
+Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
@@ -45,7 +45,7 @@
by 0x........: nearly_main (tc09_bad_unlock.c:31)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
by 0x........: main (tc09_bad_unlock.c:50)
@@ -70,7 +70,7 @@
by 0x........: nearly_main (tc09_bad_unlock.c:31)
by 0x........: main (tc09_bad_unlock.c:50)
-Thread #x unlocked an invalid lock at 0x........
+Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
Modified: trunk/helgrind/tests/tc10_rec_lock.stderr.exp
===================================================================
--- trunk/helgrind/tests/tc10_rec_lock.stderr.exp 2009-07-15 14:49:40 UTC (rev 10467)
+++ trunk/helgrind/tests/tc10_rec_lock.stderr.exp 2009-07-15 14:50:02 UTC (rev 10468)
@@ -8,7 +8,7 @@
before unlock #4
Thread #x is the program's root thread
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: nearly_main (tc10_rec_lock.c:42)
by 0x........: main (tc10_rec_lock.c:47)
Property changes on: trunk/helgrind/tests/tc10_rec_lock.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc11_XCHG.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Modified: trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp
===================================================================
--- trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp 2009-07-15 14:49:40 UTC (rev 10467)
+++ trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp 2009-07-15 14:50:02 UTC (rev 10468)
@@ -1,7 +1,7 @@
Thread #x is the program's root thread
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
by 0x........: main (tc12_rwl_trivial.c:29)
Lock at 0x........ was first observed
Property changes on: trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc13_laog1.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc14_laog_dinphils.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc15_laog_lockdel.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc16_byterace.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc17_sembar.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc19_shadowmem.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc25-amd64
===================================================================
--- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc25-amd64 2009-07-15 14:49:40 UTC (rev 10467)
+++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc25-amd64 2009-07-15 14:50:02 UTC (rev 10468)
@@ -58,7 +58,7 @@
at 0x........: pthread_mutex_timedlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:121)
-Thread #x unlocked an invalid lock at 0x........
+Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:125)
@@ -97,7 +97,7 @@
---------------- pthread_rwlock_* ----------------
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:179)
Lock at 0x........ was first observed
@@ -107,7 +107,7 @@
(2) no error on next line
(3) ERROR on next line
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:196)
Lock at 0x........ was first observed
@@ -119,7 +119,7 @@
(7) no error on next line
(8) ERROR on next line
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:212)
Lock at 0x........ was first observed
Modified: trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc27-amd64
===================================================================
--- trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc27-amd64 2009-07-15 14:49:40 UTC (rev 10467)
+++ trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc27-amd64 2009-07-15 14:50:02 UTC (rev 10468)
@@ -58,7 +58,7 @@
at 0x........: pthread_mutex_timedlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:121)
-Thread #x unlocked an invalid lock at 0x........
+Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:125)
@@ -97,7 +97,7 @@
---------------- pthread_rwlock_* ----------------
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:179)
Lock at 0x........ was first observed
@@ -107,7 +107,7 @@
(2) no error on next line
(3) ERROR on next line
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:196)
Lock at 0x........ was first observed
@@ -119,7 +119,7 @@
(7) no error on next line
(8) ERROR on next line
-Thread #x unlocked a not-locked lock at 0x........
+Thread #x unlocked a not-locked lock at 0x........
at 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
by 0x........: main (tc20_verifywrap.c:212)
Lock at 0x........ was first observed
Property changes on: trunk/helgrind/tests/tc21_pthonce.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc22_exit_w_lock.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc23_bogus_condwait.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/helgrind/tests/tc24_nonzero_sem.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
|
|
From: <sv...@va...> - 2009-07-15 14:49:46
|
Author: sewardj
Date: 2009-07-15 15:49:40 +0100 (Wed, 15 Jul 2009)
New Revision: 10467
Log:
Merge memcheck/ changes from branches/MESSAGING_TIDYUP r10464.
See trunk r10465 commit message for details.
Modified:
trunk/memcheck/mc_errors.c
trunk/memcheck/mc_include.h
trunk/memcheck/mc_leakcheck.c
trunk/memcheck/mc_main.c
trunk/memcheck/mc_malloc_wrappers.c
trunk/memcheck/tests/linux/brk.c
trunk/memcheck/tests/linux/brk.stderr.exp
trunk/memcheck/tests/linux/brk.vgtest
trunk/memcheck/tests/linux/capget.c
trunk/memcheck/tests/linux/capget.stderr.exp
trunk/memcheck/tests/linux/capget.vgtest
trunk/memcheck/tests/linux/stack_switch.c
trunk/memcheck/tests/linux/stack_switch.stderr.exp
trunk/memcheck/tests/linux/stack_switch.vgtest
trunk/memcheck/tests/linux/timerfd-syscall.c
trunk/memcheck/tests/linux/timerfd-syscall.stderr.exp
trunk/memcheck/tests/linux/timerfd-syscall.stdout.exp
trunk/memcheck/tests/linux/timerfd-syscall.vgtest
trunk/memcheck/tests/linux/with-space.stderr.exp
trunk/memcheck/tests/linux/with-space.stdout.exp
trunk/memcheck/tests/linux/with-space.vgtest
trunk/memcheck/tests/long_namespace_xml.stderr.exp
trunk/memcheck/tests/long_namespace_xml.vgtest
trunk/memcheck/tests/malloc_free_fill.stderr.exp
trunk/memcheck/tests/nanoleak_supp.c
trunk/memcheck/tests/origin4-many.stderr.exp
trunk/memcheck/tests/unit_oset.c
trunk/memcheck/tests/unit_oset.stderr.exp
trunk/memcheck/tests/unit_oset.stdout.exp
trunk/memcheck/tests/unit_oset.vgtest
trunk/memcheck/tests/varinfo6.stderr.exp
trunk/memcheck/tests/x86-linux/bug133694.c
trunk/memcheck/tests/x86-linux/bug133694.stderr.exp
trunk/memcheck/tests/x86-linux/bug133694.stdout.exp
trunk/memcheck/tests/x86-linux/bug133694.vgtest
trunk/memcheck/tests/x86-linux/filter_stderr
trunk/memcheck/tests/x86-linux/scalar.c
trunk/memcheck/tests/x86-linux/scalar.h
trunk/memcheck/tests/x86-linux/scalar.stderr.exp
trunk/memcheck/tests/x86-linux/scalar.vgtest
trunk/memcheck/tests/x86-linux/scalar_exit_group.c
trunk/memcheck/tests/x86-linux/scalar_exit_group.stderr.exp
trunk/memcheck/tests/x86-linux/scalar_exit_group.vgtest
trunk/memcheck/tests/x86-linux/scalar_fork.c
trunk/memcheck/tests/x86-linux/scalar_fork.stderr.exp
trunk/memcheck/tests/x86-linux/scalar_fork.vgtest
trunk/memcheck/tests/x86-linux/scalar_supp.c
trunk/memcheck/tests/x86-linux/scalar_supp.stderr.exp
trunk/memcheck/tests/x86-linux/scalar_supp.supp
trunk/memcheck/tests/x86-linux/scalar_supp.vgtest
trunk/memcheck/tests/x86-linux/scalar_vfork.c
trunk/memcheck/tests/x86-linux/scalar_vfork.stderr.exp
trunk/memcheck/tests/x86-linux/scalar_vfork.vgtest
trunk/memcheck/tests/xml1.stderr.exp32
trunk/memcheck/tests/xml1.stderr.exp64
trunk/memcheck/tests/xml1.vgtest
Modified: trunk/memcheck/mc_errors.c
===================================================================
--- trunk/memcheck/mc_errors.c 2009-07-15 14:49:17 UTC (rev 10466)
+++ trunk/memcheck/mc_errors.c 2009-07-15 14:49:40 UTC (rev 10467)
@@ -41,6 +41,7 @@
#include "pub_tool_tooliface.h"
#include "pub_tool_threadstate.h"
#include "pub_tool_debuginfo.h" // VG_(get_dataname_and_offset)
+#include "pub_tool_xarray.h"
#include "mc_include.h"
@@ -109,11 +110,10 @@
PtrdiffT offset;
} DataSym;
- // Is described by Dwarf debug info. Arbitrary strings. Must
- // be the same length.
+ // Is described by Dwarf debug info. XArray*s of HChar.
struct {
- Char descr1[96];
- Char descr2[96];
+ XArray* /* of HChar */ descr1;
+ XArray* /* of HChar */ descr2;
} Variable;
// Could only narrow it down to be the PLT/GOT/etc of a given
@@ -258,6 +258,41 @@
/*--- Printing errors ---*/
/*------------------------------------------------------------*/
+/* This is the "this error is due to be printed shortly; so have a
+ look at it any print any preamble you want" function. Which, in
+ Memcheck, we don't use. Hence a no-op.
+*/
+void MC_(before_pp_Error) ( Error* err ) {
+}
+
+/* Do a printf-style operation on either the XML or normal output
+ channel, depending on the setting of VG_(clo_xml).
+*/
+static void emit_WRK ( HChar* format, va_list vargs )
+{
+ if (VG_(clo_xml)) {
+ VG_(vprintf_xml)(format, vargs);
+ } else {
+ VG_(vmessage)(Vg_UserMsg, format, vargs);
+ }
+}
+static void emit ( HChar* format, ... ) PRINTF_CHECK(1, 2);
+static void emit ( HChar* format, ... )
+{
+ va_list vargs;
+ va_start(vargs, format);
+ emit_WRK(format, vargs);
+ va_end(vargs);
+}
+static void emiN ( HChar* format, ... ) /* NO FORMAT CHECK */
+{
+ va_list vargs;
+ va_start(vargs, format);
+ emit_WRK(format, vargs);
+ va_end(vargs);
+}
+
+
static void mc_pp_AddrInfo ( Addr a, AddrInfo* ai, Bool maybe_gcc )
{
HChar* xpre = VG_(clo_xml) ? " <auxwhat>" : " ";
@@ -266,23 +301,19 @@
switch (ai->tag) {
case Addr_Unknown:
if (maybe_gcc) {
- VG_(message)(Vg_UserMsg,
- "%sAddress 0x%llx is just below the stack ptr. "
- "To suppress, use: --workaround-gcc296-bugs=yes%s",
- xpre, (ULong)a, xpost
- );
+ emit( "%sAddress 0x%llx is just below the stack ptr. "
+ "To suppress, use: --workaround-gcc296-bugs=yes%s\n",
+ xpre, (ULong)a, xpost );
} else {
- VG_(message)(Vg_UserMsg,
- "%sAddress 0x%llx "
- "is not stack'd, malloc'd or (recently) free'd%s",
- xpre, (ULong)a, xpost);
+ emit( "%sAddress 0x%llx "
+ "is not stack'd, malloc'd or (recently) free'd%s\n",
+ xpre, (ULong)a, xpost );
}
break;
case Addr_Stack:
- VG_(message)(Vg_UserMsg,
- "%sAddress 0x%llx is on thread %d's stack%s",
- xpre, (ULong)a, ai->Addr.Stack.tid, xpost);
+ emit( "%sAddress 0x%llx is on thread %d's stack%s\n",
+ xpre, (ULong)a, ai->Addr.Stack.tid, xpost );
break;
case Addr_Block: {
@@ -301,47 +332,51 @@
delta = rwoffset;
relative = "inside";
}
- VG_(message)(Vg_UserMsg,
- "%sAddress 0x%lx is %'lu bytes %s a %s of size %'lu %s%s",
+ emit(
+ "%sAddress 0x%lx is %'lu bytes %s a %s of size %'lu %s%s\n",
xpre,
a, delta, relative, ai->Addr.Block.block_desc,
block_szB,
ai->Addr.Block.block_kind==Block_Mallocd ? "alloc'd"
: ai->Addr.Block.block_kind==Block_Freed ? "free'd"
: "client-defined",
- xpost);
+ xpost
+ );
VG_(pp_ExeContext)(ai->Addr.Block.lastchange);
break;
}
case Addr_DataSym:
- VG_(message_no_f_c)(Vg_UserMsg,
- "%sAddress 0x%llx is %llu bytes "
- "inside data symbol \"%t\"%s",
- xpre,
- (ULong)a,
- (ULong)ai->Addr.DataSym.offset,
- ai->Addr.DataSym.name,
- xpost);
+ emiN( "%sAddress 0x%llx is %llu bytes "
+ "inside data symbol \"%t\"%s\n",
+ xpre,
+ (ULong)a,
+ (ULong)ai->Addr.DataSym.offset,
+ ai->Addr.DataSym.name,
+ xpost );
break;
case Addr_Variable:
- if (ai->Addr.Variable.descr1[0] != '\0')
- VG_(message)(Vg_UserMsg, "%s%s%s",
- xpre, ai->Addr.Variable.descr1, xpost);
- if (ai->Addr.Variable.descr2[0] != '\0')
- VG_(message)(Vg_UserMsg, "%s%s%s",
- xpre, ai->Addr.Variable.descr2, xpost);
+ /* Note, no need for XML tags here, because descr1/2 will
+ already have <auxwhat> or <xauxwhat>s on them, in XML
+ mode. */
+ if (ai->Addr.Variable.descr1)
+ emit( "%s%s\n",
+ VG_(clo_xml) ? " " : " ",
+ (HChar*)VG_(indexXA)(ai->Addr.Variable.descr1, 0) );
+ if (ai->Addr.Variable.descr2)
+ emit( "%s%s\n",
+ VG_(clo_xml) ? " " : " ",
+ (HChar*)VG_(indexXA)(ai->Addr.Variable.descr2, 0) );
break;
case Addr_SectKind:
- VG_(message_no_f_c)(Vg_UserMsg,
- "%sAddress 0x%llx is in the %t segment of %t%s",
- xpre,
- (ULong)a,
- VG_(pp_SectKind)(ai->Addr.SectKind.kind),
- ai->Addr.SectKind.objname,
- xpost);
+ emiN( "%sAddress 0x%llx is in the %t segment of %t%s\n",
+ xpre,
+ (ULong)a,
+ VG_(pp_SectKind)(ai->Addr.SectKind.kind),
+ ai->Addr.SectKind.objname,
+ xpost );
break;
default:
@@ -373,28 +408,9 @@
return loss;
}
-static void mc_pp_msg( Char* xml_name, Error* err, const HChar* format, ... )
-{
- HChar* xpre = VG_(clo_xml) ? " <what>" : "";
- HChar* xpost = VG_(clo_xml) ? "</what>" : "";
- Char buf[256];
- va_list vargs;
-
- if (VG_(clo_xml))
- VG_(message)(Vg_UserMsg, " <kind>%s</kind>", xml_name);
- // Stick xpre and xpost on the front and back of the format string.
- VG_(snprintf)(buf, 256, "%s%s%s", xpre, format, xpost);
- va_start(vargs, format);
- VG_(vmessage) ( Vg_UserMsg, buf, vargs );
- va_end(vargs);
- VG_(pp_ExeContext)( VG_(get_error_where)(err) );
-}
-
static void mc_pp_origin ( ExeContext* ec, UInt okind )
{
- HChar* src = NULL;
- HChar* xpre = VG_(clo_xml) ? " <what>" : " ";
- HChar* xpost = VG_(clo_xml) ? "</what>" : "";
+ HChar* src = NULL;
tl_assert(ec);
switch (okind) {
@@ -406,208 +422,331 @@
tl_assert(src); /* guards against invalid 'okind' */
if (VG_(clo_xml)) {
- VG_(message)(Vg_UserMsg, " <origin>");
+ emit( " <auxwhat>Uninitialised value was created%s</auxwhat>\n",
+ src);
+ VG_(pp_ExeContext)( ec );
+ } else {
+ emit( " Uninitialised value was created%s\n", src);
+ VG_(pp_ExeContext)( ec );
}
-
- VG_(message)(Vg_UserMsg, "%sUninitialised value was created%s%s",
- xpre, src, xpost);
- VG_(pp_ExeContext)( ec );
- if (VG_(clo_xml)) {
- VG_(message)(Vg_UserMsg, " </origin>");
- }
}
void MC_(pp_Error) ( Error* err )
{
+ const Bool xml = VG_(clo_xml); /* a shorthand */
MC_Error* extra = VG_(get_error_extra)(err);
switch (VG_(get_error_kind)(err)) {
- case Err_CoreMem: {
+ case Err_CoreMem:
/* What the hell *is* a CoreMemError? jrs 2005-May-18 */
/* As of 2006-Dec-14, it's caused by unaddressable bytes in a
signal handler frame. --njn */
- mc_pp_msg("CoreMemError", err,
- "%s contains unaddressable byte(s)",
- VG_(get_error_string)(err));
+ // JRS 17 May 09: None of our regtests exercise this; hence AFAIK
+ // the following code is untested. Bad.
+ if (xml) {
+ emit( " <kind>CoreMemError</kind>\n" );
+ emiN( " <what>%t contains unaddressable byte(s)</what>\n",
+ VG_(get_error_string)(err));
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ } else {
+ emit( "%s contains unaddressable byte(s)\n",
+ VG_(get_error_string)(err));
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ }
break;
- }
case Err_Value:
MC_(any_value_errors) = True;
- if (1 || extra->Err.Value.otag == 0) {
- mc_pp_msg("UninitValue", err,
- "Use of uninitialised value of size %d",
- extra->Err.Value.szB);
+ if (xml) {
+ emit( " <kind>UninitValue</kind>\n" );
+ emit( " <what>Use of uninitialised value of size %ld</what>\n",
+ extra->Err.Value.szB );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ if (extra->Err.Value.origin_ec)
+ mc_pp_origin( extra->Err.Value.origin_ec,
+ extra->Err.Value.otag & 3 );
} else {
- mc_pp_msg("UninitValue", err,
- "Use of uninitialised value of size %d (otag %u)",
- extra->Err.Value.szB, extra->Err.Value.otag);
+ /* Could also show extra->Err.Cond.otag if debugging origin
+ tracking */
+ emit( "Use of uninitialised value of size %ld\n",
+ extra->Err.Value.szB );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ if (extra->Err.Value.origin_ec)
+ mc_pp_origin( extra->Err.Value.origin_ec,
+ extra->Err.Value.otag & 3 );
}
- if (extra->Err.Value.origin_ec)
- mc_pp_origin( extra->Err.Value.origin_ec,
- extra->Err.Value.otag & 3 );
break;
case Err_Cond:
MC_(any_value_errors) = True;
- if (1 || extra->Err.Cond.otag == 0) {
- mc_pp_msg("UninitCondition", err,
- "Conditional jump or move depends"
- " on uninitialised value(s)");
+ if (xml) {
+ emit( " <kind>UninitCondition</kind>\n" );
+ emit( " <what>Conditional jump or move depends"
+ " on uninitialised value(s)</what>\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ if (extra->Err.Cond.origin_ec)
+ mc_pp_origin( extra->Err.Cond.origin_ec,
+ extra->Err.Cond.otag & 3 );
} else {
- mc_pp_msg("UninitCondition", err,
- "Conditional jump or move depends"
- " on uninitialised value(s) (otag %u)",
- extra->Err.Cond.otag);
+ /* Could also show extra->Err.Cond.otag if debugging origin
+ tracking */
+ emit( "Conditional jump or move depends"
+ " on uninitialised value(s)\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ if (extra->Err.Cond.origin_ec)
+ mc_pp_origin( extra->Err.Cond.origin_ec,
+ extra->Err.Cond.otag & 3 );
}
- if (extra->Err.Cond.origin_ec)
- mc_pp_origin( extra->Err.Cond.origin_ec,
- extra->Err.Cond.otag & 3 );
break;
case Err_RegParam:
MC_(any_value_errors) = True;
- mc_pp_msg("SyscallParam", err,
- "Syscall param %s contains uninitialised byte(s)",
- VG_(get_error_string)(err));
- if (extra->Err.RegParam.origin_ec)
- mc_pp_origin( extra->Err.RegParam.origin_ec,
- extra->Err.RegParam.otag & 3 );
+ if (xml) {
+ emit( " <kind>SyscallParam</kind>\n" );
+ emiN( " <what>Syscall param %t contains "
+ "uninitialised byte(s)</what>\n",
+ VG_(get_error_string)(err) );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ if (extra->Err.RegParam.origin_ec)
+ mc_pp_origin( extra->Err.RegParam.origin_ec,
+ extra->Err.RegParam.otag & 3 );
+ } else {
+ emit( "Syscall param %s contains uninitialised byte(s)\n",
+ VG_(get_error_string)(err) );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ if (extra->Err.RegParam.origin_ec)
+ mc_pp_origin( extra->Err.RegParam.origin_ec,
+ extra->Err.RegParam.otag & 3 );
+ }
break;
case Err_MemParam:
if (!extra->Err.MemParam.isAddrErr)
MC_(any_value_errors) = True;
- mc_pp_msg("SyscallParam", err,
- "Syscall param %s points to %s byte(s)",
- VG_(get_error_string)(err),
- ( extra->Err.MemParam.isAddrErr
- ? "unaddressable" : "uninitialised" ));
- mc_pp_AddrInfo(VG_(get_error_address)(err),
- &extra->Err.MemParam.ai, False);
- if (extra->Err.MemParam.origin_ec && !extra->Err.MemParam.isAddrErr)
- mc_pp_origin( extra->Err.MemParam.origin_ec,
- extra->Err.MemParam.otag & 3 );
+ if (xml) {
+ emit( " <kind>SyscallParam</kind>\n" );
+ emiN( " <what>Syscall param %t points to %s byte(s)</what>\n",
+ VG_(get_error_string)(err),
+ extra->Err.MemParam.isAddrErr
+ ? "unaddressable" : "uninitialised" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ mc_pp_AddrInfo(VG_(get_error_address)(err),
+ &extra->Err.MemParam.ai, False);
+ if (extra->Err.MemParam.origin_ec
+ && !extra->Err.MemParam.isAddrErr)
+ mc_pp_origin( extra->Err.MemParam.origin_ec,
+ extra->Err.MemParam.otag & 3 );
+ } else {
+ emit( "Syscall param %s points to %s byte(s)\n",
+ VG_(get_error_string)(err),
+ extra->Err.MemParam.isAddrErr
+ ? "unaddressable" : "uninitialised" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ mc_pp_AddrInfo(VG_(get_error_address)(err),
+ &extra->Err.MemParam.ai, False);
+ if (extra->Err.MemParam.origin_ec
+ && !extra->Err.MemParam.isAddrErr)
+ mc_pp_origin( extra->Err.MemParam.origin_ec,
+ extra->Err.MemParam.otag & 3 );
+ }
break;
case Err_User:
if (!extra->Err.User.isAddrErr)
MC_(any_value_errors) = True;
- mc_pp_msg("ClientCheck", err,
- "%s byte(s) found during client check request",
- ( extra->Err.User.isAddrErr
- ? "Unaddressable" : "Uninitialised" ));
- mc_pp_AddrInfo(VG_(get_error_address)(err), &extra->Err.User.ai,
- False);
- if (extra->Err.User.origin_ec && !extra->Err.User.isAddrErr)
- mc_pp_origin( extra->Err.User.origin_ec,
- extra->Err.User.otag & 3 );
+ if (xml) {
+ emit( " <kind>ClientCheck</kind>\n" );
+ emit( " <what>%s byte(s) found "
+ "during client check request</what>\n",
+ extra->Err.User.isAddrErr
+ ? "Unaddressable" : "Uninitialised" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ mc_pp_AddrInfo(VG_(get_error_address)(err), &extra->Err.User.ai,
+ False);
+ if (extra->Err.User.origin_ec && !extra->Err.User.isAddrErr)
+ mc_pp_origin( extra->Err.User.origin_ec,
+ extra->Err.User.otag & 3 );
+ } else {
+ emit( "%s byte(s) found during client check request\n",
+ extra->Err.User.isAddrErr
+ ? "Unaddressable" : "Uninitialised" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ mc_pp_AddrInfo(VG_(get_error_address)(err), &extra->Err.User.ai,
+ False);
+ if (extra->Err.User.origin_ec && !extra->Err.User.isAddrErr)
+ mc_pp_origin( extra->Err.User.origin_ec,
+ extra->Err.User.otag & 3 );
+ }
break;
case Err_Free:
- mc_pp_msg("InvalidFree", err,
- "Invalid free() / delete / delete[]");
- mc_pp_AddrInfo(VG_(get_error_address)(err),
- &extra->Err.Free.ai, False);
+ if (xml) {
+ emit( " <kind>InvalidFree</kind>\n" );
+ emit( " <what>Invalid free() / delete / delete[]</what>\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ mc_pp_AddrInfo( VG_(get_error_address)(err),
+ &extra->Err.Free.ai, False );
+ } else {
+ emit( "Invalid free() / delete / delete[]\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ mc_pp_AddrInfo( VG_(get_error_address)(err),
+ &extra->Err.Free.ai, False );
+ }
break;
case Err_FreeMismatch:
- mc_pp_msg("MismatchedFree", err,
- "Mismatched free() / delete / delete []");
- mc_pp_AddrInfo(VG_(get_error_address)(err),
- &extra->Err.FreeMismatch.ai, False);
+ if (xml) {
+ emit( " <kind>MismatchedFree</kind>\n" );
+ emit( " <what>Mismatched free() / delete / delete []</what>\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ mc_pp_AddrInfo(VG_(get_error_address)(err),
+ &extra->Err.FreeMismatch.ai, False);
+ } else {
+ emit( "Mismatched free() / delete / delete []\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ mc_pp_AddrInfo(VG_(get_error_address)(err),
+ &extra->Err.FreeMismatch.ai, False);
+ }
break;
case Err_Addr:
- if (extra->Err.Addr.isWrite) {
- mc_pp_msg("InvalidWrite", err,
- "Invalid write of size %d",
- extra->Err.Addr.szB);
+ if (xml) {
+ emit( " <kind>Invalid%s</kind>\n",
+ extra->Err.Addr.isWrite ? "Write" : "Read" );
+ emit( " <what>Invalid %s of size %ld</what>\n",
+ extra->Err.Addr.isWrite ? "write" : "read",
+ extra->Err.Addr.szB );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ mc_pp_AddrInfo( VG_(get_error_address)(err),
+ &extra->Err.Addr.ai,
+ extra->Err.Addr.maybe_gcc );
} else {
- mc_pp_msg("InvalidRead", err,
- "Invalid read of size %d",
- extra->Err.Addr.szB);
+ emit( "Invalid %s of size %ld\n",
+ extra->Err.Addr.isWrite ? "write" : "read",
+ extra->Err.Addr.szB );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+
+ mc_pp_AddrInfo( VG_(get_error_address)(err),
+ &extra->Err.Addr.ai,
+ extra->Err.Addr.maybe_gcc );
}
- mc_pp_AddrInfo(VG_(get_error_address)(err), &extra->Err.Addr.ai,
- extra->Err.Addr.maybe_gcc);
break;
case Err_Jump:
- mc_pp_msg("InvalidJump", err,
- "Jump to the invalid address stated on the next line");
- mc_pp_AddrInfo(VG_(get_error_address)(err), &extra->Err.Jump.ai,
- False);
+ if (xml) {
+ emit( " <kind>InvalidJump</kind>\n" );
+ emit( " <what>Jump to the invalid address stated "
+ "on the next line</what>\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ mc_pp_AddrInfo( VG_(get_error_address)(err), &extra->Err.Jump.ai,
+ False );
+ } else {
+ emit( "Jump to the invalid address stated on the next line\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ mc_pp_AddrInfo( VG_(get_error_address)(err), &extra->Err.Jump.ai,
+ False );
+ }
break;
case Err_Overlap:
- if (extra->Err.Overlap.szB == 0)
- mc_pp_msg("Overlap", err,
- "Source and destination overlap in %s(%p, %p)",
- VG_(get_error_string)(err),
- extra->Err.Overlap.dst, extra->Err.Overlap.src);
- else
- mc_pp_msg("Overlap", err,
- "Source and destination overlap in %s(%p, %p, %d)",
- VG_(get_error_string)(err),
- extra->Err.Overlap.dst, extra->Err.Overlap.src,
- extra->Err.Overlap.szB);
+ if (xml) {
+ emit( " <kind>Overlap</kind>\n" );
+ if (extra->Err.Overlap.szB == 0) {
+ emiN( " <what>Source and destination overlap "
+ "in %t(%#lx, %#lx)\n</what>\n",
+ VG_(get_error_string)(err),
+ extra->Err.Overlap.dst, extra->Err.Overlap.src );
+ } else {
+ emit( " <what>Source and destination overlap "
+ "in %s(%#lx, %#lx, %d)</what>\n",
+ VG_(get_error_string)(err),
+ extra->Err.Overlap.dst, extra->Err.Overlap.src,
+ extra->Err.Overlap.szB );
+ }
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ } else {
+ if (extra->Err.Overlap.szB == 0) {
+ emiN( "Source and destination overlap in %t(%#lx, %#lx)\n",
+ VG_(get_error_string)(err),
+ extra->Err.Overlap.dst, extra->Err.Overlap.src );
+ } else {
+ emit( "Source and destination overlap in %s(%#lx, %#lx, %d)\n",
+ VG_(get_error_string)(err),
+ extra->Err.Overlap.dst, extra->Err.Overlap.src,
+ extra->Err.Overlap.szB );
+ }
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ }
break;
case Err_IllegalMempool:
- mc_pp_msg("InvalidMemPool", err,
- "Illegal memory pool address");
- mc_pp_AddrInfo(VG_(get_error_address)(err),
- &extra->Err.IllegalMempool.ai, False);
+ // JRS 17 May 09: None of our regtests exercise this; hence AFAIK
+ // the following code is untested. Bad.
+ if (xml) {
+ emit( " <kind>InvalidMemPool</kind>\n" );
+ emit( " <what>Illegal memory pool address</what>\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ mc_pp_AddrInfo( VG_(get_error_address)(err),
+ &extra->Err.IllegalMempool.ai, False );
+ } else {
+ emit( "Illegal memory pool address\n" );
+ VG_(pp_ExeContext)( VG_(get_error_where)(err) );
+ mc_pp_AddrInfo( VG_(get_error_address)(err),
+ &extra->Err.IllegalMempool.ai, False );
+ }
break;
case Err_Leak: {
- HChar* xpre = VG_(clo_xml) ? " <what>" : "";
- HChar* xpost = VG_(clo_xml) ? "</what>" : "";
UInt n_this_record = extra->Err.Leak.n_this_record;
UInt n_total_records = extra->Err.Leak.n_total_records;
LossRecord* lr = extra->Err.Leak.lr;
-
- if (VG_(clo_xml)) {
- VG_(message_no_f_c)(Vg_UserMsg, " <kind>%t</kind>",
- xml_leak_kind(lr->key.state));
- } else {
- VG_(message)(Vg_UserMsg, "");
- }
-
- if (lr->indirect_szB > 0) {
- VG_(message)(Vg_UserMsg,
- "%s%'lu (%'lu direct, %'lu indirect) bytes in %'u blocks"
- " are %s in loss record %'u of %'u%s",
- xpre,
- lr->szB + lr->indirect_szB, lr->szB, lr->indirect_szB,
- lr->num_blocks,
- str_leak_lossmode(lr->key.state), n_this_record, n_total_records,
- xpost
- );
- if (VG_(clo_xml)) {
+ if (xml) {
+ emit(" <kind>%s</kind>\n", xml_leak_kind(lr->key.state));
+ if (lr->indirect_szB > 0) {
+ emit( " <xwhat>\n" );
+ emit( " <text>%'lu (%'lu direct, %'lu indirect) bytes "
+ "in %'u blocks"
+ " are %s in loss record %'u of %'u</text>\n",
+ lr->szB + lr->indirect_szB, lr->szB, lr->indirect_szB,
+ lr->num_blocks,
+ str_leak_lossmode(lr->key.state),
+ n_this_record, n_total_records );
// Nb: don't put commas in these XML numbers
- VG_(message)(Vg_UserMsg, " <leakedbytes>%lu</leakedbytes>",
- lr->szB + lr->indirect_szB);
- VG_(message)(Vg_UserMsg, " <leakedblocks>%u</leakedblocks>",
- lr->num_blocks);
+ emit( " <leakedbytes>%lu</leakedbytes>\n",
+ lr->szB + lr->indirect_szB );
+ emit( " <leakedblocks>%u</leakedblocks>\n", lr->num_blocks );
+ emit( " </xwhat>\n" );
+ } else {
+ emit( " <xwhat>\n" );
+ emit( " <text>%'lu bytes in %'u blocks"
+ " are %s in loss record %'u of %'u</text>\n",
+ lr->szB, lr->num_blocks,
+ str_leak_lossmode(lr->key.state),
+ n_this_record, n_total_records );
+ emit( " <leakedbytes>%ld</leakedbytes>\n", lr->szB);
+ emit( " <leakedblocks>%d</leakedblocks>\n", lr->num_blocks);
+ emit( " </xwhat>\n" );
}
- } else {
- VG_(message)(
- Vg_UserMsg,
- "%s%'lu bytes in %'u blocks are %s in loss record %'u of %'u%s",
- xpre,
- lr->szB, lr->num_blocks,
- str_leak_lossmode(lr->key.state), n_this_record, n_total_records,
- xpost
- );
- if (VG_(clo_xml)) {
- VG_(message)(Vg_UserMsg, " <leakedbytes>%ld</leakedbytes>",
- lr->szB);
- VG_(message)(Vg_UserMsg, " <leakedblocks>%d</leakedblocks>",
- lr->num_blocks);
+ VG_(pp_ExeContext)(lr->key.allocated_at);
+ } else { /* ! if (xml) */
+ emit("\n");
+ if (lr->indirect_szB > 0) {
+ emit(
+ "%'lu (%'lu direct, %'lu indirect) bytes in %'u blocks"
+ " are %s in loss record %'u of %'u\n",
+ lr->szB + lr->indirect_szB, lr->szB, lr->indirect_szB,
+ lr->num_blocks, str_leak_lossmode(lr->key.state),
+ n_this_record, n_total_records
+ );
+ } else {
+ emit(
+ "%'lu bytes in %'u blocks are %s in loss record %'u of %'u\n",
+ lr->szB, lr->num_blocks, str_leak_lossmode(lr->key.state),
+ n_this_record, n_total_records
+ );
}
- }
- VG_(pp_ExeContext)(lr->key.allocated_at);
+ VG_(pp_ExeContext)(lr->key.allocated_at);
+ } /* if (xml) */
break;
}
@@ -931,11 +1070,11 @@
tl_assert(Addr_Undescribed == ai->tag);
- /* Perhaps it's a user-def'd block? */
+ /* -- Perhaps it's a user-def'd block? -- */
if (client_block_maybe_describe( a, ai )) {
return;
}
- /* Search for a recently freed block which might bracket it. */
+ /* -- Search for a recently freed block which might bracket it. -- */
mc = MC_(get_freed_list_head)();
while (mc) {
if (addr_is_in_MC_Chunk(mc, a)) {
@@ -949,7 +1088,7 @@
}
mc = mc->next;
}
- /* Search for a currently malloc'd block which might bracket it. */
+ /* -- Search for a currently malloc'd block which might bracket it. -- */
VG_(HT_ResetIter)(MC_(malloc_list));
while ( (mc = VG_(HT_Next)(MC_(malloc_list))) ) {
if (addr_is_in_MC_Chunk(mc, a)) {
@@ -962,27 +1101,41 @@
return;
}
}
- /* Perhaps the variable type/location data describes it? */
- tl_assert(sizeof(ai->Addr.Variable.descr1)
- == sizeof(ai->Addr.Variable.descr2));
- VG_(memset)( &ai->Addr.Variable.descr1,
- 0, sizeof(ai->Addr.Variable.descr1));
- VG_(memset)( &ai->Addr.Variable.descr2,
- 0, sizeof(ai->Addr.Variable.descr2));
- if (VG_(get_data_description)(
- &ai->Addr.Variable.descr1[0],
- &ai->Addr.Variable.descr2[0],
- sizeof(ai->Addr.Variable.descr1)-1,
- a )) {
+ /* -- Perhaps the variable type/location data describes it? -- */
+ ai->Addr.Variable.descr1
+ = VG_(newXA)( VG_(malloc), "mc.da.descr1",
+ VG_(free), sizeof(HChar) );
+ ai->Addr.Variable.descr2
+ = VG_(newXA)( VG_(malloc), "mc.da.descr2",
+ VG_(free), sizeof(HChar) );
+
+ (void) VG_(get_data_description)( ai->Addr.Variable.descr1,
+ ai->Addr.Variable.descr2, a );
+ /* If there's nothing in descr1/2, free them. Why is it safe to to
+ VG_(indexXA) at zero here? Because VG_(get_data_description)
+ guarantees to zero terminate descr1/2 regardless of the outcome
+ of the call. So there's always at least one element in each XA
+ after the call.
+ */
+ if (0 == VG_(strlen)( VG_(indexXA)( ai->Addr.Variable.descr1, 0 ))) {
+ VG_(deleteXA)( ai->Addr.Variable.descr1 );
+ ai->Addr.Variable.descr1 = NULL;
+ }
+ if (0 == VG_(strlen)( VG_(indexXA)( ai->Addr.Variable.descr2, 0 ))) {
+ VG_(deleteXA)( ai->Addr.Variable.descr2 );
+ ai->Addr.Variable.descr2 = NULL;
+ }
+ /* Assume (assert) that VG_(get_data_description) fills in descr1
+ before it fills in descr2 */
+ if (ai->Addr.Variable.descr1 == NULL)
+ tl_assert(ai->Addr.Variable.descr2 == NULL);
+ /* So did we get lucky? */
+ if (ai->Addr.Variable.descr1 != NULL) {
ai->tag = Addr_Variable;
- tl_assert( ai->Addr.Variable.descr1
- [ sizeof(ai->Addr.Variable.descr1)-1 ] == 0);
- tl_assert( ai->Addr.Variable.descr2
- [ sizeof(ai->Addr.Variable.descr2)-1 ] == 0);
return;
}
- /* Have a look at the low level data symbols - perhaps it's in
- there. */
+ /* -- Have a look at the low level data symbols - perhaps it's in
+ there. -- */
VG_(memset)( &ai->Addr.DataSym.name,
0, sizeof(ai->Addr.DataSym.name));
if (VG_(get_datasym_and_offset)(
@@ -994,7 +1147,7 @@
[ sizeof(ai->Addr.DataSym.name)-1 ] == 0);
return;
}
- /* Perhaps it's on a thread's stack? */
+ /* -- Perhaps it's on a thread's stack? -- */
VG_(thread_stack_reset_iter)(&tid);
while ( VG_(thread_stack_next)(&tid, &stack_min, &stack_max) ) {
if (stack_min - VG_STACK_REDZONE_SZB <= a && a <= stack_max) {
@@ -1003,7 +1156,7 @@
return;
}
}
- /* last ditch attempt at classification */
+ /* -- last ditch attempt at classification -- */
tl_assert( sizeof(ai->Addr.SectKind.objname) > 4 );
VG_(memset)( &ai->Addr.SectKind.objname,
0, sizeof(ai->Addr.SectKind.objname));
@@ -1017,7 +1170,7 @@
[ sizeof(ai->Addr.SectKind.objname)-1 ] == 0);
return;
}
- /* Clueless ... */
+ /* -- Clueless ... -- */
ai->tag = Addr_Unknown;
return;
}
Modified: trunk/memcheck/mc_include.h
===================================================================
--- trunk/memcheck/mc_include.h 2009-07-15 14:49:17 UTC (rev 10466)
+++ trunk/memcheck/mc_include.h 2009-07-15 14:49:40 UTC (rev 10467)
@@ -305,9 +305,10 @@
/* Standard functions for error and suppressions as required by the
core/tool iface */
-Bool MC_(eq_Error) ( VgRes res, Error* e1, Error* e2 );
-void MC_(pp_Error) ( Error* err );
-UInt MC_(update_Error_extra)( Error* err );
+Bool MC_(eq_Error) ( VgRes res, Error* e1, Error* e2 );
+void MC_(before_pp_Error) ( Error* err );
+void MC_(pp_Error) ( Error* err );
+UInt MC_(update_Error_extra) ( Error* err );
Bool MC_(is_recognised_suppression) ( Char* name, Supp* su );
Modified: trunk/memcheck/mc_leakcheck.c
===================================================================
--- trunk/memcheck/mc_leakcheck.c 2009-07-15 14:49:17 UTC (rev 10466)
+++ trunk/memcheck/mc_leakcheck.c 2009-07-15 14:49:40 UTC (rev 10467)
@@ -237,7 +237,6 @@
#define VG_DEBUG_LEAKCHECK 0
#define VG_DEBUG_CLIQUE 0
-#define UMSG(args...) VG_(message)(Vg_UserMsg, ##args)
/*------------------------------------------------------------*/
/*--- Getting the initial chunks, and searching them. ---*/
@@ -875,28 +874,31 @@
}
if (VG_(clo_verbosity) > 0 && !VG_(clo_xml)) {
- UMSG("");
- UMSG("LEAK SUMMARY:");
- UMSG(" definitely lost: %'lu bytes in %'lu blocks.",
- MC_(bytes_leaked), MC_(blocks_leaked) );
- UMSG(" indirectly lost: %'lu bytes in %'lu blocks.",
- MC_(bytes_indirect), MC_(blocks_indirect) );
- UMSG(" possibly lost: %'lu bytes in %'lu blocks.",
- MC_(bytes_dubious), MC_(blocks_dubious) );
- UMSG(" still reachable: %'lu bytes in %'lu blocks.",
- MC_(bytes_reachable), MC_(blocks_reachable) );
- UMSG(" suppressed: %'lu bytes in %'lu blocks.",
- MC_(bytes_suppressed), MC_(blocks_suppressed) );
+ VG_(umsg)("\n");
+ VG_(umsg)("LEAK SUMMARY:\n");
+ VG_(umsg)(" definitely lost: %'lu bytes in %'lu blocks.\n",
+ MC_(bytes_leaked), MC_(blocks_leaked) );
+ VG_(umsg)(" indirectly lost: %'lu bytes in %'lu blocks.\n",
+ MC_(bytes_indirect), MC_(blocks_indirect) );
+ VG_(umsg)(" possibly lost: %'lu bytes in %'lu blocks.\n",
+ MC_(bytes_dubious), MC_(blocks_dubious) );
+ VG_(umsg)(" still reachable: %'lu bytes in %'lu blocks.\n",
+ MC_(bytes_reachable), MC_(blocks_reachable) );
+ VG_(umsg)(" suppressed: %'lu bytes in %'lu blocks.\n",
+ MC_(bytes_suppressed), MC_(blocks_suppressed) );
if (!is_full_check &&
(MC_(blocks_leaked) + MC_(blocks_indirect) +
MC_(blocks_dubious) + MC_(blocks_reachable)) > 0) {
- UMSG("Rerun with --leak-check=full to see details of leaked memory.");
+ VG_(umsg)("Rerun with --leak-check=full to see details "
+ "of leaked memory.\n");
}
if (is_full_check &&
MC_(blocks_reachable) > 0 && !MC_(clo_show_reachable))
{
- UMSG("Reachable blocks (those to which a pointer was found) are not shown.");
- UMSG("To see them, rerun with: --leak-check=full --show-reachable=yes");
+ VG_(umsg)("Reachable blocks (those to which a pointer "
+ "was found) are not shown.\n");
+ VG_(umsg)("To see them, rerun with: --leak-check=full "
+ "--show-reachable=yes\n");
}
}
}
@@ -916,7 +918,7 @@
if (lc_n_chunks == 0) {
tl_assert(lc_chunks == NULL);
if (VG_(clo_verbosity) >= 1 && !VG_(clo_xml)) {
- UMSG("All heap blocks were freed -- no leaks are possible.");
+ VG_(umsg)("All heap blocks were freed -- no leaks are possible.\n");
}
return;
}
@@ -945,9 +947,9 @@
(ch1->data == ch2->data && ch1->szB == ch2->szB)
);
if (nonsense_overlap) {
- UMSG("Block [0x%lx, 0x%lx) overlaps with block [0x%lx, 0x%lx)",
- ch1->data, (ch1->data + ch1->szB),
- ch2->data, (ch2->data + ch2->szB));
+ VG_(umsg)("Block [0x%lx, 0x%lx) overlaps with block [0x%lx, 0x%lx)\n",
+ ch1->data, (ch1->data + ch1->szB),
+ ch2->data, (ch2->data + ch2->szB));
}
tl_assert (!nonsense_overlap);
}
@@ -968,7 +970,8 @@
// Verbosity.
if (VG_(clo_verbosity) > 0 && !VG_(clo_xml))
- UMSG( "searching for pointers to %'d not-freed blocks.", lc_n_chunks );
+ VG_(umsg)( "searching for pointers to %'d not-freed blocks.\n",
+ lc_n_chunks );
// Scan the memory root-set, pushing onto the mark stack any blocks
// pointed to.
@@ -1012,7 +1015,7 @@
seg_size = seg->end - seg->start + 1;
if (VG_(clo_verbosity) > 2) {
VG_(message)(Vg_DebugMsg,
- " Scanning root segment: %#lx..%#lx (%lu)",
+ " Scanning root segment: %#lx..%#lx (%lu)\n",
seg->start, seg->end, seg_size);
}
lc_scan_memory(seg->start, seg_size, /*is_prior_definite*/True, -1);
@@ -1027,7 +1030,7 @@
lc_process_markstack(/*clique*/-1);
if (VG_(clo_verbosity) > 0 && !VG_(clo_xml))
- UMSG("checked %'lu bytes.", lc_scanned_szB);
+ VG_(umsg)("checked %'lu bytes.\n", lc_scanned_szB);
// Trace all the leaked blocks to determine which are directly leaked and
// which are indirectly leaked. For each Unreached block, push it onto
Modified: trunk/memcheck/mc_main.c
===================================================================
--- trunk/memcheck/mc_main.c 2009-07-15 14:49:17 UTC (rev 10466)
+++ trunk/memcheck/mc_main.c 2009-07-15 14:49:40 UTC (rev 10467)
@@ -947,7 +947,7 @@
if (VG_(clo_verbosity) > 1) {
Char percbuf[6];
VG_(percentify)(n_survivors, n_nodes, 1, 6, percbuf);
- VG_(message)(Vg_DebugMsg, "memcheck GC: %d nodes, %d survivors (%s)",
+ VG_(message)(Vg_DebugMsg, "memcheck GC: %d nodes, %d survivors (%s)\n",
n_nodes, n_survivors, percbuf);
}
@@ -955,7 +955,7 @@
if (n_survivors > (secVBitLimit * MAX_SURVIVOR_PROPORTION)) {
secVBitLimit *= TABLE_GROWTH_FACTOR;
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, "memcheck GC: increase table size to %d",
+ VG_(message)(Vg_DebugMsg, "memcheck GC: increase table size to %d\n",
secVBitLimit);
}
}
@@ -1359,7 +1359,7 @@
if (vabits16 == VA_BITS16_UNDEFINED) s = "undefined";
if (vabits16 == VA_BITS16_DEFINED ) s = "defined";
VG_(message)(Vg_UserMsg, "Warning: set address range perms: "
- "large range [0x%lx, 0x%lx) (%s)",
+ "large range [0x%lx, 0x%lx) (%s)\n",
a, a + lenT, s);
}
}
@@ -4682,7 +4682,7 @@
*/
if (0 == VG_(strcmp)(arg, "--undef-value-errors=no")) {
if (MC_(clo_mc_level) == 3) {
- VG_(message)(Vg_DebugMsg, "%s", bad_level_msg);
+ VG_(message)(Vg_DebugMsg, "%s\n", bad_level_msg);
return False;
} else {
MC_(clo_mc_level) = 1;
@@ -4701,7 +4701,7 @@
}
if (0 == VG_(strcmp)(arg, "--track-origins=yes")) {
if (MC_(clo_mc_level) == 1) {
- VG_(message)(Vg_DebugMsg, "%s", bad_level_msg);
+ VG_(message)(Vg_DebugMsg, "%s\n", bad_level_msg);
return False;
} else {
MC_(clo_mc_level) = 3;
@@ -4746,16 +4746,16 @@
Addr limit = 0x4000000; /* 64M - entirely arbitrary limit */
if (e <= s) {
VG_(message)(Vg_DebugMsg,
- "ERROR: --ignore-ranges: end <= start in range:");
+ "ERROR: --ignore-ranges: end <= start in range:\n");
VG_(message)(Vg_DebugMsg,
- " 0x%lx-0x%lx", s, e);
+ " 0x%lx-0x%lx\n", s, e);
return False;
}
if (e - s > limit) {
VG_(message)(Vg_DebugMsg,
- "ERROR: --ignore-ranges: suspiciously large range:");
+ "ERROR: --ignore-ranges: suspiciously large range:\n");
VG_(message)(Vg_DebugMsg,
- " 0x%lx-0x%lx (size %ld)", s, e, (UWord)(e-s));
+ " 0x%lx-0x%lx (size %ld)\n", s, e, (UWord)(e-s));
return False;
}
}
@@ -4876,7 +4876,7 @@
static void show_client_block_stats ( void )
{
VG_(message)(Vg_DebugMsg,
- "general CBs: %llu allocs, %llu discards, %llu maxinuse, %llu search",
+ "general CBs: %llu allocs, %llu discards, %llu maxinuse, %llu search\n",
cgb_allocs, cgb_discards, cgb_used_MAX, cgb_search
);
}
@@ -5114,9 +5114,11 @@
default:
- VG_(message)(Vg_UserMsg,
- "Warning: unknown memcheck client request code %llx",
- (ULong)arg[0]);
+ VG_(message)(
+ Vg_UserMsg,
+ "Warning: unknown memcheck client request code %llx\n",
+ (ULong)arg[0]
+ );
return False;
}
return True;
@@ -5555,7 +5557,7 @@
static void print_SM_info(char* type, int n_SMs)
{
VG_(message)(Vg_DebugMsg,
- " memcheck: SMs: %s = %d (%ldk, %ldM)",
+ " memcheck: SMs: %s = %d (%ldk, %ldM)\n",
type,
n_SMs,
n_SMs * sizeof(SecMap) / 1024UL,
@@ -5569,10 +5571,10 @@
if (VG_(clo_verbosity) == 1 && !VG_(clo_xml)) {
if (MC_(clo_leak_check) == LC_Off)
VG_(message)(Vg_UserMsg,
- "For a detailed leak analysis, rerun with: --leak-check=yes");
+ "For a detailed leak analysis, rerun with: --leak-check=yes\n");
VG_(message)(Vg_UserMsg,
- "For counts of detected errors, rerun with: -v");
+ "For counts of detected errors, rerun with: -v\n");
}
@@ -5580,7 +5582,7 @@
&& MC_(clo_mc_level) == 2) {
VG_(message)(Vg_UserMsg,
"Use --track-origins=yes to see where "
- "uninitialised values come from");
+ "uninitialised values come from\n");
}
if (MC_(clo_leak_check) != LC_Off)
@@ -5592,21 +5594,21 @@
SizeT max_secVBit_szB, max_SMs_szB, max_shmem_szB;
VG_(message)(Vg_DebugMsg,
- " memcheck: sanity checks: %d cheap, %d expensive",
+ " memcheck: sanity checks: %d cheap, %d expensive\n",
n_sanity_cheap, n_sanity_expensive );
VG_(message)(Vg_DebugMsg,
- " memcheck: auxmaps: %lld auxmap entries (%lldk, %lldM) in use",
+ " memcheck: auxmaps: %lld auxmap entries (%lldk, %lldM) in use\n",
n_auxmap_L2_nodes,
n_auxmap_L2_nodes * 64,
n_auxmap_L2_nodes / 16 );
VG_(message)(Vg_DebugMsg,
- " memcheck: auxmaps_L1: %lld searches, %lld cmps, ratio %lld:10",
+ " memcheck: auxmaps_L1: %lld searches, %lld cmps, ratio %lld:10\n",
n_auxmap_L1_searches, n_auxmap_L1_cmps,
(10ULL * n_auxmap_L1_cmps)
/ (n_auxmap_L1_searches ? n_auxmap_L1_searches : 1)
);
VG_(message)(Vg_DebugMsg,
- " memcheck: auxmaps_L2: %lld searches, %lld nodes",
+ " memcheck: auxmaps_L2: %lld searches, %lld nodes\n",
n_auxmap_L2_searches, n_auxmap_L2_nodes
);
@@ -5627,47 +5629,47 @@
max_shmem_szB = sizeof(primary_map) + max_SMs_szB + max_secVBit_szB;
VG_(message)(Vg_DebugMsg,
- " memcheck: max sec V bit nodes: %d (%ldk, %ldM)",
+ " memcheck: max sec V bit nodes: %d (%ldk, %ldM)\n",
max_secVBit_nodes, max_secVBit_szB / 1024,
max_secVBit_szB / (1024 * 1024));
VG_(message)(Vg_DebugMsg,
- " memcheck: set_sec_vbits8 calls: %llu (new: %llu, updates: %llu)",
+ " memcheck: set_sec_vbits8 calls: %llu (new: %llu, updates: %llu)\n",
sec_vbits_new_nodes + sec_vbits_updates,
sec_vbits_new_nodes, sec_vbits_updates );
VG_(message)(Vg_DebugMsg,
- " memcheck: max shadow mem size: %ldk, %ldM",
+ " memcheck: max shadow mem size: %ldk, %ldM\n",
max_shmem_szB / 1024, max_shmem_szB / (1024 * 1024));
if (MC_(clo_mc_level) >= 3) {
VG_(message)(Vg_DebugMsg,
- " ocacheL1: %'12lu refs %'12lu misses (%'lu lossage)",
+ " ocacheL1: %'12lu refs %'12lu misses (%'lu lossage)\n",
stats_ocacheL1_find,
stats_ocacheL1_misses,
stats_ocacheL1_lossage );
VG_(message)(Vg_DebugMsg,
- " ocacheL1: %'12lu at 0 %'12lu at 1",
+ " ocacheL1: %'12lu at 0 %'12lu at 1\n",
stats_ocacheL1_find - stats_ocacheL1_misses
- stats_ocacheL1_found_at_1
- stats_ocacheL1_found_at_N,
stats_ocacheL1_found_at_1 );
VG_(message)(Vg_DebugMsg,
- " ocacheL1: %'12lu at 2+ %'12lu move-fwds",
+ " ocacheL1: %'12lu at 2+ %'12lu move-fwds\n",
stats_ocacheL1_found_at_N,
stats_ocacheL1_movefwds );
VG_(message)(Vg_DebugMsg,
- " ocacheL1: %'12lu sizeB %'12u useful",
+ " ocacheL1: %'12lu sizeB %'12u useful\n",
(UWord)sizeof(OCache),
4 * OC_W32S_PER_LINE * OC_LINES_PER_SET * OC_N_SETS );
VG_(message)(Vg_DebugMsg,
- " ocacheL2: %'12lu refs %'12lu misses",
+ " ocacheL2: %'12lu refs %'12lu misses\n",
stats__ocacheL2_refs,
stats__ocacheL2_misses );
VG_(message)(Vg_DebugMsg,
- " ocacheL2: %'9lu max nodes %'9lu curr nodes",
+ " ocacheL2: %'9lu max nodes %'9lu curr nodes\n",
stats__ocacheL2_n_nodes_max,
stats__ocacheL2_n_nodes );
VG_(message)(Vg_DebugMsg,
- " niacache: %'12lu refs %'12lu misses",
+ " niacache: %'12lu refs %'12lu misses\n",
stats__nia_cache_queries, stats__nia_cache_misses);
} else {
tl_assert(ocacheL1 == NULL);
@@ -5677,7 +5679,7 @@
if (0) {
VG_(message)(Vg_DebugMsg,
- "------ Valgrind's client block stats follow ---------------" );
+ "------ Valgrind's client block stats follow ---------------\n" );
show_client_block_stats();
}
}
@@ -5701,6 +5703,7 @@
VG_(needs_core_errors) ();
VG_(needs_tool_errors) (MC_(eq_Error),
+ MC_(before_pp_Error),
MC_(pp_Error),
True,/*show TIDs for errors*/
MC_(update_Error_extra),
@@ -5727,6 +5730,7 @@
MC_(realloc),
MC_(malloc_usable_size),
MC_MALLOC_REDZONE_SZB );
+
VG_(needs_xml_output) ();
VG_(track_new_mem_startup) ( mc_new_mem_startup );
Modified: trunk/memcheck/mc_malloc_wrappers.c
===================================================================
--- trunk/memcheck/mc_malloc_wrappers.c 2009-07-15 14:49:17 UTC (rev 10466)
+++ trunk/memcheck/mc_malloc_wrappers.c 2009-07-15 14:49:40 UTC (rev 10467)
@@ -163,7 +163,7 @@
// (for 32-bit platforms) or 2^63 bytes (for 64-bit platforms).
if ((SSizeT)sizeB < 0) {
if (!VG_(clo_xml))
- VG_(message)(Vg_UserMsg, "Warning: silly arg (%ld) to %s()",
+ VG_(message)(Vg_UserMsg, "Warning: silly arg (%ld) to %s()\n",
(SSizeT)sizeB, fn );
return True;
}
@@ -175,7 +175,7 @@
if ((SSizeT)n < 0 || (SSizeT)sizeB < 0) {
if (!VG_(clo_xml))
VG_(message)(Vg_UserMsg,
- "Warning: silly args (%ld,%ld) to calloc()",
+ "Warning: silly args (%ld,%ld) to calloc()\n",
(SSizeT)n, (SSizeT)sizeB);
return True;
}
@@ -496,7 +496,7 @@
MC_Mempool* mp;
if (VG_(clo_verbosity) > 2) {
- VG_(message)(Vg_UserMsg, "create_mempool(0x%lx, %d, %d)",
+ VG_(message)(Vg_UserMsg, "create_mempool(0x%lx, %d, %d)\n",
pool, rzB, is_zeroed);
VG_(get_and_pp_StackTrace)
(VG_(get_running_tid)(), MEMPOOL_DEBUG_STACKTRACE_DEPTH);
@@ -531,7 +531,7 @@
MC_Mempool* mp;
if (VG_(clo_verbosity) > 2) {
- VG_(message)(Vg_UserMsg, "destroy_mempool(0x%lx)", pool);
+ VG_(message)(Vg_UserMsg, "destroy_mempool(0x%lx)\n", pool);
VG_(get_and_pp_StackTrace)
(VG_(get_running_tid)(), MEMPOOL_DEBUG_STACKTRACE_DEPTH);
}
@@ -592,7 +592,7 @@
}
}
- VG_(message)(Vg_UserMsg,
+ VG_(message)(Vg_UserMsg,
"Total mempools active: %d pools, %d chunks\n",
total_pools, total_chunks);
tick = 0;
@@ -607,7 +607,7 @@
if (chunks[i]->data > chunks[i+1]->data) {
VG_(message)(Vg_UserMsg,
"Mempool chunk %d / %d is out of order "
- "wrt. its successor",
+ "wrt. its successor\n",
i+1, n_chunks);
bad = 1;
}
@@ -617,7 +617,7 @@
for (i = 0; i < n_chunks-1; i++) {
if (chunks[i]->data + chunks[i]->szB > chunks[i+1]->data ) {
VG_(message)(Vg_UserMsg,
- "Mempool chunk %d / %d overlaps with its successor",
+ "Mempool chunk %d / %d overlaps with its successor\n",
i+1, n_chunks);
bad = 1;
}
@@ -625,11 +625,12 @@
if (bad) {
VG_(message)(Vg_UserMsg,
- "Bad mempool (%d chunks), dumping chunks for inspection:",
- n_chunks);
+ "Bad mempool (%d chunks), dumping chunks for inspection:\n",
+ n_chunks);
for (i = 0; i < n_chunks; ++i) {
VG_(message)(Vg_UserMsg,
- "Mempool chunk %d / %d: %ld bytes [%lx,%lx), allocated:",
+ "Mempool chunk %d / %d: %ld bytes "
+ "[%lx,%lx), allocated:\n",
i+1,
n_chunks,
chunks[i]->szB + 0UL,
@@ -647,7 +648,8 @@
MC_Mempool* mp;
if (VG_(clo_verbosity) > 2) {
- VG_(message)(Vg_UserMsg, "mempool_alloc(0x%lx, 0x%lx, %ld)", pool, addr, szB);
+ VG_(message)(Vg_UserMsg, "mempool_alloc(0x%lx, 0x%lx, %ld)\n",
+ pool, addr, szB);
VG_(get_and_pp_StackTrace) (tid, MEMPOOL_DEBUG_STACKTRACE_DEPTH);
}
@@ -675,7 +677,7 @@
}
if (VG_(clo_verbosity) > 2) {
- VG_(message)(Vg_UserMsg, "mempool_free(0x%lx, 0x%lx)", pool, addr);
+ VG_(message)(Vg_UserMsg, "mempool_free(0x%lx, 0x%lx)\n", pool, addr);
VG_(get_and_pp_StackTrace) (tid, MEMPOOL_DEBUG_STACKTRACE_DEPTH);
}
@@ -688,7 +690,7 @@
if (VG_(clo_verbosity) > 2) {
VG_(message)(Vg_UserMsg,
- "mempool_free(0x%lx, 0x%lx) freed chunk of %ld bytes",
+ "mempool_free(0x%lx, 0x%lx) freed chunk of %ld bytes\n",
pool, addr, mc->szB + 0UL);
}
@@ -706,7 +708,8 @@
VgHashNode** chunks;
if (VG_(clo_verbosity) > 2) {
- VG_(message)(Vg_UserMsg, "mempool_trim(0x%lx, 0x%lx, %ld)", pool, addr, szB);
+ VG_(message)(Vg_UserMsg, "mempool_trim(0x%lx, 0x%lx, %ld)\n",
+ pool, addr, szB);
VG_(get_and_pp_StackTrace) (tid, MEMPOOL_DEBUG_STACKTRACE_DEPTH);
}
@@ -815,7 +818,7 @@
MC_Mempool* mp;
if (VG_(clo_verbosity) > 2) {
- VG_(message)(Vg_UserMsg, "move_mempool(0x%lx, 0x%lx)", poolA, poolB);
+ VG_(message)(Vg_UserMsg, "move_mempool(0x%lx, 0x%lx)\n", poolA, poolB);
VG_(get_and_pp_StackTrace)
(VG_(get_running_tid)(), MEMPOOL_DEBUG_STACKTRACE_DEPTH);
}
@@ -839,7 +842,7 @@
ThreadId tid = VG_(get_running_tid)();
if (VG_(clo_verbosity) > 2) {
- VG_(message)(Vg_UserMsg, "mempool_change(0x%lx, 0x%lx, 0x%lx, %ld)",
+ VG_(message)(Vg_UserMsg, "mempool_change(0x%lx, 0x%lx, 0x%lx, %ld)\n",
pool, addrA, addrB, szB);
VG_(get_and_pp_StackTrace) (tid, MEMPOOL_DEBUG_STACKTRACE_DEPTH);
}
@@ -900,14 +903,16 @@
}
VG_(message)(Vg_UserMsg,
- "malloc/free: in use at exit: %'llu bytes in %'lu blocks.",
- nbytes, nblocks);
+ "malloc/free: in use at exit: %'llu bytes in %'lu blocks.\n",
+ nbytes, nblocks
+ );
VG_(message)(Vg_UserMsg,
- "malloc/free: %'lu allocs, %'lu frees, %'llu bytes allocated.",
- cmalloc_n_mallocs,
- cmalloc_n_frees, cmalloc_bs_mallocd);
+ "malloc/free: %'lu allocs, %'lu frees, %'llu bytes allocated.\n",
+ cmalloc_n_mallocs,
+ cmalloc_n_frees, cmalloc_bs_mallocd
+ );
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_UserMsg, "");
+ VG_(message)(Vg_UserMsg, "\n");
}
/*--------------------------------------------------------------------*/
Property changes on: trunk/memcheck/tests/linux/brk.c
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/brk.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/brk.vgtest
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/capget.c
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/capget.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/capget.vgtest
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/stack_switch.c
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/stack_switch.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/stack_switch.vgtest
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/timerfd-syscall.c
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/timerfd-syscall.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/timerfd-syscall.stdout.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/timerfd-syscall.vgtest
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/with-space.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/with-space.stdout.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/memcheck/tests/linux/with-space.vgtest
___________________________________________________________________
Name: svn:mergeinfo
-
Modified: trunk/memcheck/tests/long_namespace_xml.stderr.exp
===================================================================
--- trunk/memcheck/tests/long_namespace_xml.stderr.exp 2009-07-15 14:49:17 UTC (rev 10466)
+++ trunk/memcheck/tests/long_namespace_xml.stderr.exp 2009-07-15 14:49:40 UTC (rev 10467)
@@ -2,7 +2,8 @@
<valgrindoutput>
-<protocolversion>3</protocolversion>
+<protocolversion...
[truncated message content] |
|
From: <sv...@va...> - 2009-07-15 14:49:30
|
Author: sewardj
Date: 2009-07-15 15:49:17 +0100 (Wed, 15 Jul 2009)
New Revision: 10466
Log:
Merge drd/ changes from branches/MESSAGING_TIDYUP r10464.
See trunk r10465 commit message for details.
Modified:
trunk/drd/drd_barrier.c
trunk/drd/drd_clientobj.c
trunk/drd/drd_cond.c
trunk/drd/drd_error.c
trunk/drd/drd_load_store.c
trunk/drd/drd_main.c
trunk/drd/drd_malloc_wrappers.c
trunk/drd/drd_mutex.c
trunk/drd/drd_rwlock.c
trunk/drd/drd_semaphore.c
trunk/drd/drd_suppression.c
trunk/drd/drd_thread.c
trunk/drd/tests/boost_thread.cpp
trunk/drd/tests/boost_thread.stderr.exp
trunk/drd/tests/boost_thread.vgtest
trunk/drd/tests/pth_barrier.c
trunk/drd/tests/pth_cond_race3.stderr.exp
trunk/drd/tests/pth_cond_race3.vgtest
trunk/drd/tests/rwlock_race.c
trunk/drd/tests/rwlock_test.c
trunk/drd/tests/tc09_bad_unlock.stderr.exp-glibc2.8
Modified: trunk/drd/drd_barrier.c
===================================================================
--- trunk/drd/drd_barrier.c 2009-07-15 14:48:32 UTC (rev 10465)
+++ trunk/drd/drd_barrier.c 2009-07-15 14:49:17 UTC (rev 10466)
@@ -257,7 +257,7 @@
if (reinitialization)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] barrier_reinit %s 0x%lx count %ld -> %ld",
+ "[%d/%d] barrier_reinit %s 0x%lx count %ld -> %ld\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
barrier_get_typename(p),
@@ -268,7 +268,7 @@
else
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] barrier_init %s 0x%lx",
+ "[%d/%d] barrier_init %s 0x%lx\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
barrier_get_typename(p),
@@ -302,7 +302,7 @@
if (s_trace_barrier)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] barrier_destroy %s 0x%lx",
+ "[%d/%d] barrier_destroy %s 0x%lx\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
barrier_get_typename(p),
@@ -349,20 +349,20 @@
* not. The only cause I know of that can trigger this is that libgomp.so
* has been compiled with --enable-linux-futex.
*/
- VG_(message)(Vg_UserMsg, "");
+ VG_(message)(Vg_UserMsg, "\n");
VG_(message)(Vg_UserMsg,
"Please verify whether gcc has been configured"
- " with option --disable-linux-futex.");
+ " with option --disable-linux-futex.\n");
VG_(message)(Vg_UserMsg,
- "See also the section about OpenMP in the DRD manual.");
- VG_(message)(Vg_UserMsg, "");
+ "See also the section about OpenMP in the DRD manual.\n");
+ VG_(message)(Vg_UserMsg, "\n");
}
tl_assert(p);
if (s_trace_barrier)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] barrier_pre_wait %s 0x%lx iteration %ld",
+ "[%d/%d] barrier_pre_wait %s 0x%lx iteration %ld\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
barrier_get_typename(p),
@@ -416,7 +416,7 @@
if (s_trace_barrier)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] barrier_post_wait %s 0x%lx iteration %ld%s",
+ "[%d/%d] barrier_post_wait %s 0x%lx iteration %ld%s\n",
VG_(get_running_tid)(),
tid,
p ? barrier_get_typename(p) : "(?)",
Modified: trunk/drd/drd_clientobj.c
===================================================================
--- trunk/drd/drd_clientobj.c 2009-07-15 14:48:32 UTC (rev 10465)
+++ trunk/drd/drd_clientobj.c 2009-07-15 14:49:17 UTC (rev 10466)
@@ -134,7 +134,7 @@
if (s_trace_clientobj)
{
- VG_(message)(Vg_UserMsg, "Adding client object 0x%lx of type %d", a1, t);
+ VG_(message)(Vg_UserMsg, "Adding client object 0x%lx of type %d\n", a1, t);
}
p = VG_(OSetGen_AllocNode)(s_clientobj_set, sizeof(*p));
@@ -179,7 +179,7 @@
if (s_trace_clientobj)
{
- VG_(message)(Vg_UserMsg, "Removing client object 0x%lx of type %d",
+ VG_(message)(Vg_UserMsg, "Removing client object 0x%lx of type %d\n",
p->any.a1, p->any.type);
}
Modified: trunk/drd/drd_cond.c
===================================================================
--- trunk/drd/drd_cond.c 2009-07-15 14:48:32 UTC (rev 10465)
+++ trunk/drd/drd_cond.c 2009-07-15 14:49:17 UTC (rev 10466)
@@ -125,7 +125,7 @@
if (DRD_(s_trace_cond))
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] cond_init cond 0x%lx",
+ "[%d/%d] cond_init cond 0x%lx\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
cond);
@@ -154,7 +154,7 @@
if (DRD_(s_trace_cond))
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] cond_destroy cond 0x%lx",
+ "[%d/%d] cond_destroy cond 0x%lx\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
cond);
@@ -197,7 +197,7 @@
if (DRD_(s_trace_cond))
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] cond_pre_wait cond 0x%lx",
+ "[%d/%d] cond_pre_wait cond 0x%lx\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
cond);
@@ -252,7 +252,7 @@
if (DRD_(s_trace_cond))
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] cond_post_wait cond 0x%lx",
+ "[%d/%d] cond_post_wait cond 0x%lx\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
cond);
@@ -311,7 +311,7 @@
if (DRD_(s_trace_cond))
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] cond_signal cond 0x%lx",
+ "[%d/%d] cond_signal cond 0x%lx\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
cond);
@@ -326,7 +326,7 @@
if (DRD_(s_trace_cond))
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] cond_broadcast cond 0x%lx",
+ "[%d/%d] cond_broadcast cond 0x%lx\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
cond);
Modified: trunk/drd/drd_error.c
===================================================================
--- trunk/drd/drd_error.c 2009-07-15 14:48:32 UTC (rev 10465)
+++ trunk/drd/drd_error.c 2009-07-15 14:49:17 UTC (rev 10466)
@@ -85,7 +85,7 @@
{
tl_assert(cl->any.first_observed_at);
VG_(message)(Vg_UserMsg,
- "%s 0x%lx was first observed at:",
+ "%s 0x%lx was first observed at:\n",
DRD_(clientobj_type_name)(cl->any.type),
obj);
VG_(pp_ExeContext)(cl->any.first_observed_at);
@@ -96,41 +96,64 @@
void drd_report_data_race(Error* const err, const DataRaceErrInfo* const dri)
{
AddrInfo ai;
- const unsigned descr_size = 256;
- Char* descr1 = VG_(malloc)("drd.error.drdr2.1", descr_size);
- Char* descr2 = VG_(malloc)("drd.error.drdr2.2", descr_size);
+ XArray* /* of HChar */ descr1
+ = VG_(newXA)( VG_(malloc), "drd.error.drdr2.1",
+ VG_(free), sizeof(HChar) );
+ XArray* /* of HChar */ descr2
+ = VG_(newXA)( VG_(malloc), "drd.error.drdr2.2",
+ VG_(free), sizeof(HChar) );
+
tl_assert(dri);
tl_assert(dri->addr);
tl_assert(dri->size > 0);
tl_assert(descr1);
tl_assert(descr2);
- descr1[0] = 0;
- descr2[0] = 0;
- VG_(get_data_description)(descr1, descr2, descr_size, dri->addr);
- if (descr1[0] == 0)
+ (void) VG_(get_data_description)(descr1, descr2, dri->addr);
+ /* If there's nothing in descr1/2, free them. Why is it safe to to
+ VG_(indexXA) at zero here? Because VG_(get_data_description)
+ guarantees to zero terminate descr1/2 regardless of the outcome
+ of the call. So there's always at least one element in each XA
+ after the call.
+ */
+ if (0 == VG_(strlen)( VG_(indexXA)( descr1, 0 ))) {
+ VG_(deleteXA)( descr1 );
+ descr1 = NULL;
+ }
+ if (0 == VG_(strlen)( VG_(indexXA)( descr2, 0 ))) {
+ VG_(deleteXA)( descr2 );
+ descr2 = NULL;
+ }
+ /* Assume (assert) that VG_(get_data_description) fills in descr1
+ before it fills in descr2 */
+ if (descr1 == NULL)
+ tl_assert(descr2 == NULL);
+ /* So anyway. Do we have something useful? */
+ if (descr1 == NULL)
{
+ /* No. Do Plan B. */
describe_malloced_addr(dri->addr, dri->size, &ai);
}
VG_(message)(Vg_UserMsg,
- "Conflicting %s by thread %d/%d at 0x%08lx size %ld",
+ "Conflicting %s by thread %d/%d at 0x%08lx size %ld\n",
dri->access_type == eStore ? "store" : "load",
DRD_(DrdThreadIdToVgThreadId)(dri->tid),
dri->tid,
dri->addr,
dri->size);
VG_(pp_ExeContext)(VG_(get_error_where)(err));
- if (descr1[0])
+ if (descr1 != NULL)
{
- VG_(message)(Vg_UserMsg, "%s", descr1);
- VG_(message)(Vg_UserMsg, "%s", descr2);
+ VG_(message)(Vg_UserMsg, "%s\n", (HChar*)VG_(indexXA)(descr1, 0));
+ if (descr2 != NULL)
+ VG_(message)(Vg_UserMsg, "%s\n", (HChar*)VG_(indexXA)(descr2, 0));
}
else if (ai.akind == eMallocd && ai.lastchange)
{
VG_(message)(Vg_UserMsg,
"Address 0x%lx is at offset %ld from 0x%lx."
- " Allocation context:",
+ " Allocation context:\n",
dri->addr, ai.rwoffset, dri->addr - ai.rwoffset);
VG_(pp_ExeContext)(ai.lastchange);
}
@@ -144,13 +167,13 @@
if (sect_kind != Vg_SectUnknown)
{
VG_(message)(Vg_UserMsg,
- "Allocation context: %s section of %s",
+ "Allocation context: %s section of %s\n",
VG_(pp_SectKind)(sect_kind),
sect_name);
}
else
{
- VG_(message)(Vg_UserMsg, "Allocation context: unknown.");
+ VG_(message)(Vg_UserMsg, "Allocation context: unknown.\n");
}
}
if (s_show_conflicting_segments)
@@ -160,8 +183,10 @@
dri->access_type);
}
- VG_(free)(descr2);
- VG_(free)(descr1);
+ if (descr2)
+ VG_(deleteXA)(descr2);
+ if (descr1)
+ VG_(deleteXA)(descr1);
}
static Bool drd_tool_error_eq(VgRes res, Error* e1, Error* e2)
@@ -169,6 +194,12 @@
return False;
}
+static void drd_tool_error_before_pp(Error* const e)
+{
+ /* No need to do anything; drd_tool_error_pp does all
+ the work. */
+}
+
static void drd_tool_error_pp(Error* const e)
{
static DrdThreadId s_last_tid_printed = 1;
@@ -178,7 +209,7 @@
if (err_extra && *err_extra != s_last_tid_printed)
{
- VG_UMSG("%s:", DRD_(thread_get_name)(*err_extra));
+ VG_(umsg)("%s:\n", DRD_(thread_get_name)(*err_extra));
s_last_tid_printed = *err_extra;
}
@@ -194,7 +225,7 @@
if (p->recursion_count >= 0)
{
VG_(message)(Vg_UserMsg,
- "%s: mutex 0x%lx, recursion count %d, owner %d.",
+ "%s: mutex 0x%lx, recursion count %d, owner %d.\n",
VG_(get_error_string)(e),
p->mutex,
p->recursion_count,
@@ -203,7 +234,7 @@
else
{
VG_(message)(Vg_UserMsg,
- "The object at address 0x%lx is not a mutex.",
+ "The object at address 0x%lx is not a mutex.\n",
p->mutex);
}
VG_(pp_ExeContext)(VG_(get_error_where)(e));
@@ -213,7 +244,7 @@
case CondErr: {
CondErrInfo* cdei =(CondErrInfo*)(VG_(get_error_extra)(e));
VG_(message)(Vg_UserMsg,
- "%s: cond 0x%lx",
+ "%s: cond 0x%lx\n",
VG_(get_error_string)(e),
cdei->cond);
VG_(pp_ExeContext)(VG_(get_error_where)(e));
@@ -223,7 +254,7 @@
case CondDestrErr: {
CondDestrErrInfo* cdi = (CondDestrErrInfo*)(VG_(get_error_extra)(e));
VG_(message)(Vg_UserMsg,
- "%s: cond 0x%lx, mutex 0x%lx locked by thread %d/%d",
+ "%s: cond 0x%lx, mutex 0x%lx locked by thread %d/%d\n",
VG_(get_error_string)(e),
cdi->cond, cdi->mutex,
DRD_(DrdThreadIdToVgThreadId)(cdi->owner), cdi->owner);
@@ -236,7 +267,7 @@
VG_(message)(Vg_UserMsg,
"Probably a race condition: condition variable 0x%lx has"
" been signaled but the associated mutex 0x%lx is not"
- " locked by the signalling thread.",
+ " locked by the signalling thread.\n",
cei->cond, cei->mutex);
VG_(pp_ExeContext)(VG_(get_error_where)(e));
first_observed(cei->cond);
@@ -246,7 +277,7 @@
case CondWaitErr: {
CondWaitErrInfo* cwei = (CondWaitErrInfo*)(VG_(get_error_extra)(e));
VG_(message)(Vg_UserMsg,
- "%s: condition variable 0x%lx, mutexes 0x%lx and 0x%lx",
+ "%s: condition variable 0x%lx, mutexes 0x%lx and 0x%lx\n",
VG_(get_error_string)(e),
cwei->cond,
cwei->mutex1,
@@ -261,7 +292,7 @@
SemaphoreErrInfo* sei = (SemaphoreErrInfo*)(VG_(get_error_extra)(e));
tl_assert(sei);
VG_(message)(Vg_UserMsg,
- "%s: semaphore 0x%lx",
+ "%s: semaphore 0x%lx\n",
VG_(get_error_string)(e),
sei->semaphore);
VG_(pp_ExeContext)(VG_(get_error_where)(e));
@@ -272,14 +303,14 @@
BarrierErrInfo* bei = (BarrierErrInfo*)(VG_(get_error_extra)(e));
tl_assert(bei);
VG_(message)(Vg_UserMsg,
- "%s: barrier 0x%lx",
+ "%s: barrier 0x%lx\n",
VG_(get_error_string)(e),
bei->barrier);
VG_(pp_ExeContext)(VG_(get_error_where)(e));
if (bei->other_context)
{
VG_(message)(Vg_UserMsg,
- "Conflicting wait call by thread %d/%d:",
+ "Conflicting wait call by thread %d/%d:\n",
DRD_(DrdThreadIdToVgThreadId)(bei->other_tid),
bei->other_tid);
VG_(pp_ExeContext)(bei->other_context);
@@ -291,7 +322,7 @@
RwlockErrInfo* p = (RwlockErrInfo*)(VG_(get_error_extra)(e));
tl_assert(p);
VG_(message)(Vg_UserMsg,
- "%s: rwlock 0x%lx.",
+ "%s: rwlock 0x%lx.\n",
VG_(get_error_string)(e),
p->rwlock);
VG_(pp_ExeContext)(VG_(get_error_where)(e));
@@ -302,10 +333,10 @@
HoldtimeErrInfo* p =(HoldtimeErrInfo*)(VG_(get_error_extra)(e));
tl_assert(p);
tl_assert(p->acquired_at);
- VG_(message)(Vg_UserMsg, "Acquired at:");
+ VG_(message)(Vg_UserMsg, "Acquired at:\n");
VG_(pp_ExeContext)(p->acquired_at);
VG_(message)(Vg_UserMsg,
- "Lock on %s 0x%lx was held during %d ms (threshold: %d ms).",
+ "Lock on %s 0x%lx was held during %d ms (threshold: %d ms).\n",
VG_(get_error_string)(e),
p->synchronization_object,
p->hold_time_ms,
@@ -316,13 +347,13 @@
}
case GenericErr: {
//GenericErrInfo* gei =(GenericErrInfo*)(VG_(get_error_extra)(e));
- VG_(message)(Vg_UserMsg, "%s", VG_(get_error_string)(e));
+ VG_(message)(Vg_UserMsg, "%s\n", VG_(get_error_string)(e));
VG_(pp_ExeContext)(VG_(get_error_where)(e));
break;
}
default:
VG_(message)(Vg_UserMsg,
- "%s",
+ "%s\n",
VG_(get_error_string)(e));
VG_(pp_ExeContext)(VG_(get_error_where)(e));
break;
@@ -436,6 +467,7 @@
{
// Tool error reporting.
VG_(needs_tool_errors)(drd_tool_error_eq,
+ drd_tool_error_before_pp,
drd_tool_error_pp,
False,
drd_tool_error_update_extra,
Modified: trunk/drd/drd_load_store.c
===================================================================
--- trunk/drd/drd_load_store.c 2009-07-15 14:48:32 UTC (rev 10465)
+++ trunk/drd/drd_load_store.c 2009-07-15 14:49:17 UTC (rev 10466)
@@ -90,7 +90,7 @@
vc = DRD_(vc_aprint)(DRD_(thread_get_vc)(DRD_(thread_get_running_tid)()));
VG_(message)(Vg_UserMsg,
- "%s 0x%lx size %ld (vg %d / drd %d / vc %s)",
+ "%s 0x%lx size %ld (vg %d / drd %d / vc %s)\n",
access_type == eLoad
? "load "
: access_type == eStore
Modified: trunk/drd/drd_main.c
===================================================================
--- trunk/drd/drd_main.c 2009-07-15 14:48:32 UTC (rev 10465)
+++ trunk/drd/drd_main.c 2009-07-15 14:49:17 UTC (rev 10466)
@@ -468,7 +468,7 @@
if (DRD_(thread_get_trace_fork_join)())
{
VG_(message)(Vg_DebugMsg,
- "drd_pre_thread_create creator = %d/%d, created = %d",
+ "drd_pre_thread_create creator = %d/%d, created = %d\n",
creator, drd_creator, created);
}
}
@@ -487,7 +487,7 @@
if (DRD_(thread_get_trace_fork_join)())
{
VG_(message)(Vg_DebugMsg,
- "drd_post_thread_create created = %d/%d",
+ "drd_post_thread_create created = %d/%d\n",
vg_created, drd_created);
}
if (! DRD_(get_check_stack_accesses)())
@@ -510,7 +510,7 @@
if (DRD_(thread_get_trace_fork_join)())
{
VG_(message)(Vg_DebugMsg,
- "drd_thread_finished tid = %d/%d%s",
+ "drd_thread_finished tid = %d/%d%s\n",
vg_tid,
drd_tid,
DRD_(thread_get_joinable)(drd_tid)
@@ -525,7 +525,7 @@
- DRD_(thread_get_stack_min_min)(drd_tid));
VG_(message)(Vg_UserMsg,
"thread %d/%d%s finished and used %ld bytes out of %ld"
- " on its stack. Margin: %ld bytes.",
+ " on its stack. Margin: %ld bytes.\n",
vg_tid,
drd_tid,
DRD_(thread_get_joinable)(drd_tid)
@@ -581,47 +581,47 @@
ULong pu_join = DRD_(thread_get_update_conflict_set_join_count)();
VG_(message)(Vg_UserMsg,
- " thread: %lld context switches.",
+ " thread: %lld context switches.\n",
DRD_(thread_get_context_switch_count)());
VG_(message)(Vg_UserMsg,
- "confl set: %lld full updates and %lld partial updates;",
+ "confl set: %lld full updates and %lld partial updates;\n",
DRD_(thread_get_compute_conflict_set_count)(),
pu);
VG_(message)(Vg_UserMsg,
- " %lld partial updates during segment creation,",
+ " %lld partial updates during segment creation,\n",
pu_seg_cr);
VG_(message)(Vg_UserMsg,
- " %lld because of mutex/sema/cond.var. operations,",
+ " %lld because of mutex/sema/cond.var. operations,\n",
pu_mtx_cv);
VG_(message)(Vg_UserMsg,
- " %lld because of barrier/rwlock operations and",
+ " %lld because of barrier/rwlock operations and\n",
pu - pu_seg_cr - pu_mtx_cv - pu_join);
VG_(message)(Vg_UserMsg,
" %lld partial updates because of thread join"
- " operations.",
+ " operations.\n",
pu_join);
VG_(message)(Vg_UserMsg,
- " segments: created %lld segments, max %lld alive,",
+ " segments: created %lld segments, max %lld alive,\n",
DRD_(sg_get_segments_created_count)(),
DRD_(sg_get_max_segments_alive_count)());
VG_(message)(Vg_UserMsg,
- " %lld discard points and %lld merges.",
+ " %lld discard points and %lld merges.\n",
DRD_(thread_get_discard_ordered_segments_count)(),
DRD_(sg_get_segment_merge_count)());
VG_(message)(Vg_UserMsg,
"segmnt cr: %lld mutex, %lld rwlock, %lld semaphore and"
- " %lld barrier.",
+ " %lld barrier.\n",
DRD_(get_mutex_segment_creation_count)(),
DRD_(get_rwlock_segment_creation_count)(),
DRD_(get_semaphore_segment_creation_count)(),
DRD_(get_barrier_segment_creation_count)());
VG_(message)(Vg_UserMsg,
" bitmaps: %lld level one"
- " and %lld level two bitmaps were allocated.",
+ " and %lld level two bitmaps were allocated.\n",
DRD_(bm_get_bitmap_creation_count)(),
DRD_(bm_get_bitmap2_creation_count)());
VG_(message)(Vg_UserMsg,
- " mutex: %lld non-recursive lock/unlock events.",
+ " mutex: %lld non-recursive lock/unlock events.\n",
DRD_(get_mutex_lock_count)());
DRD_(print_malloc_stats)();
}
Modified: trunk/drd/drd_malloc_wrappers.c
===================================================================
--- trunk/drd/drd_malloc_wrappers.c 2009-07-15 14:48:32 UTC (rev 10465)
+++ trunk/drd/drd_malloc_wrappers.c 2009-07-15 14:49:17 UTC (rev 10466)
@@ -360,14 +360,14 @@
}
VG_(message)(Vg_DebugMsg,
- "malloc/free: in use at exit: %lu bytes in %lu blocks.",
+ "malloc/free: in use at exit: %lu bytes in %lu blocks.\n",
nbytes, nblocks);
VG_(message)(Vg_DebugMsg,
- "malloc/free: %lu allocs, %lu frees, %lu bytes allocated.",
+ "malloc/free: %lu allocs, %lu frees, %lu bytes allocated.\n",
s_cmalloc_n_mallocs,
s_cmalloc_n_frees, s_cmalloc_bs_mallocd);
if (VG_(clo_verbosity) > 1)
- VG_(message)(Vg_DebugMsg, " ");
+ VG_(message)(Vg_DebugMsg, " \n");
}
/*--------------------------------------------------------------------*/
Modified: trunk/drd/drd_mutex.c
===================================================================
--- trunk/drd/drd_mutex.c 2009-07-15 14:48:32 UTC (rev 10465)
+++ trunk/drd/drd_mutex.c 2009-07-15 14:49:17 UTC (rev 10466)
@@ -92,7 +92,7 @@
if (s_trace_mutex)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] mutex_destroy %s 0x%lx rc %d owner %d",
+ "[%d/%d] mutex_destroy %s 0x%lx rc %d owner %d\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
DRD_(mutex_get_typename)(p),
@@ -171,7 +171,7 @@
if (s_trace_mutex)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] mutex_init %s 0x%lx",
+ "[%d/%d] mutex_init %s 0x%lx\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
DRD_(mutex_type_name)(mutex_type),
@@ -235,7 +235,7 @@
if (s_trace_mutex)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] %s %s 0x%lx rc %d owner %d",
+ "[%d/%d] %s %s 0x%lx rc %d owner %d\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
trylock ? "pre_mutex_lock " : "mutex_trylock ",
@@ -290,7 +290,7 @@
if (s_trace_mutex)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] %s %s 0x%lx rc %d owner %d%s",
+ "[%d/%d] %s %s 0x%lx rc %d owner %d%s\n",
VG_(get_running_tid)(),
drd_tid,
post_cond_wait ? "cond_post_wait " : "post_mutex_lock",
@@ -328,7 +328,7 @@
VG_(message)(Vg_UserMsg,
"The impossible happened: mutex 0x%lx is locked"
" simultaneously by two threads (recursion count %d,"
- " owners %d and %d) !",
+ " owners %d and %d) !\n",
p->a1, p->recursion_count, p->owner, drd_tid);
p->owner = drd_tid;
}
@@ -359,7 +359,7 @@
if (s_trace_mutex)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] mutex_unlock %s 0x%lx rc %d",
+ "[%d/%d] mutex_unlock %s 0x%lx rc %d\n",
vg_tid,
drd_tid,
p ? DRD_(mutex_get_typename)(p) : "(?)",
@@ -388,7 +388,7 @@
tl_assert(p);
if (p->mutex_type != mutex_type)
{
- VG_(message)(Vg_UserMsg, "??? mutex 0x%lx: type changed from %d into %d",
+ VG_(message)(Vg_UserMsg, "??? mutex 0x%lx: type changed from %d into %d\n",
p->a1, p->mutex_type, mutex_type);
}
tl_assert(p->mutex_type == mutex_type);
Modified: trunk/drd/drd_rwlock.c
===================================================================
--- trunk/drd/drd_rwlock.c 2009-07-15 14:48:32 UTC (rev 10465)
+++ trunk/drd/drd_rwlock.c 2009-07-15 14:49:17 UTC (rev 10466)
@@ -211,7 +211,7 @@
if (DRD_(s_trace_rwlock))
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] rwlock_destroy 0x%lx",
+ "[%d/%d] rwlock_destroy 0x%lx\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
p->a1);
@@ -279,7 +279,7 @@
if (DRD_(s_trace_rwlock))
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] rwlock_init 0x%lx",
+ "[%d/%d] rwlock_init 0x%lx\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
rwlock);
@@ -337,7 +337,7 @@
if (DRD_(s_trace_rwlock))
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] pre_rwlock_rdlock 0x%lx",
+ "[%d/%d] pre_rwlock_rdlock 0x%lx\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
rwlock);
@@ -350,7 +350,7 @@
{
VG_(message)(Vg_UserMsg,
"reader-writer lock 0x%lx is already locked for"
- " writing by calling thread",
+ " writing by calling thread\n",
p->a1);
}
}
@@ -370,7 +370,7 @@
if (DRD_(s_trace_rwlock))
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] post_rwlock_rdlock 0x%lx",
+ "[%d/%d] post_rwlock_rdlock 0x%lx\n",
VG_(get_running_tid)(),
drd_tid,
rwlock);
@@ -411,7 +411,7 @@
if (DRD_(s_trace_rwlock))
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] pre_rwlock_wrlock 0x%lx",
+ "[%d/%d] pre_rwlock_wrlock 0x%lx\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
rwlock);
@@ -452,7 +452,7 @@
if (DRD_(s_trace_rwlock))
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] post_rwlock_wrlock 0x%lx",
+ "[%d/%d] post_rwlock_wrlock 0x%lx\n",
VG_(get_running_tid)(),
drd_tid,
rwlock);
@@ -494,7 +494,7 @@
if (DRD_(s_trace_rwlock))
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] rwlock_unlock 0x%lx",
+ "[%d/%d] rwlock_unlock 0x%lx\n",
vg_tid,
drd_tid,
rwlock);
Modified: trunk/drd/drd_semaphore.c
===================================================================
--- trunk/drd/drd_semaphore.c 2009-07-15 14:48:32 UTC (rev 10465)
+++ trunk/drd/drd_semaphore.c 2009-07-15 14:49:17 UTC (rev 10466)
@@ -177,7 +177,7 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_init 0x%lx value %u",
+ "[%d/%d] semaphore_init 0x%lx value %u\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
semaphore,
@@ -219,7 +219,7 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_destroy 0x%lx value %u",
+ "[%d/%d] semaphore_destroy 0x%lx value %u\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
semaphore,
@@ -275,7 +275,7 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_wait 0x%lx value %u -> %u",
+ "[%d/%d] semaphore_wait 0x%lx value %u -> %u\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
semaphore,
@@ -340,7 +340,7 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_post 0x%lx value %u -> %u",
+ "[%d/%d] semaphore_post 0x%lx value %u -> %u\n",
VG_(get_running_tid)(),
DRD_(thread_get_running_tid)(),
semaphore,
Modified: trunk/drd/drd_suppression.c
===================================================================
--- trunk/drd/drd_suppression.c 2009-07-15 14:48:32 UTC (rev 10465)
+++ trunk/drd/drd_suppression.c 2009-07-15 14:49:17 UTC (rev 10466)
@@ -61,7 +61,7 @@
{
if (DRD_(s_trace_suppression))
{
- VG_(message)(Vg_DebugMsg, "start suppression of 0x%lx sz %ld (%s)",
+ VG_(message)(Vg_DebugMsg, "start suppression of 0x%lx sz %ld (%s)\n",
a1, a2 - a1, reason);
}
@@ -74,7 +74,7 @@
{
if (DRD_(s_trace_suppression))
{
- VG_(message)(Vg_DebugMsg, "finish suppression of 0x%lx sz %ld",
+ VG_(message)(Vg_DebugMsg, "finish suppression of 0x%lx sz %ld\n",
a1, a2 - a1);
VG_(get_and_pp_StackTrace)(VG_(get_running_tid)(), 12);
}
@@ -82,7 +82,7 @@
tl_assert(a1 < a2);
if (! DRD_(is_suppressed)(a1, a2))
{
- VG_(message)(Vg_DebugMsg, "?? [0x%lx,0x%lx[ not suppressed ??", a1, a2);
+ VG_(message)(Vg_DebugMsg, "?? [0x%lx,0x%lx[ not suppressed ??\n", a1, a2);
VG_(get_and_pp_StackTrace)(VG_(get_running_tid)(), 12);
tl_assert(False);
}
@@ -148,7 +148,7 @@
{
VG_(message)(Vg_DebugMsg,
"stop_using_mem(0x%lx, %ld) finish suppression of"
- " 0x%lx", a1, a2 - a1, b);
+ " 0x%lx\n", a1, a2 - a1, b);
}
}
}
Modified: trunk/drd/drd_thread.c
===================================================================
--- trunk/drd/drd_thread.c 2009-07-15 14:48:32 UTC (rev 10465)
+++ trunk/drd/drd_thread.c 2009-07-15 14:49:17 UTC (rev 10466)
@@ -351,7 +351,7 @@
", new vc: %s", vc);
VG_(free)(vc);
}
- VG_(message)(Vg_DebugMsg, "%s", msg);
+ VG_(message)(Vg_DebugMsg, "%s\n", msg);
VG_(free)(msg);
}
@@ -584,7 +584,7 @@
{
VG_(message)(Vg_DebugMsg,
"Context switch from thread %d/%d to thread %d/%d;"
- " segments: %llu",
+ " segments: %llu\n",
s_vg_running_tid, DRD_(g_drd_running_tid),
DRD_(DrdThreadIdToVgThreadId)(drd_tid), drd_tid,
DRD_(sg_get_segments_alive_count)());
@@ -783,7 +783,7 @@
vc_min = DRD_(vc_aprint)(&thread_vc_min);
vc_max = DRD_(vc_aprint)(&thread_vc_max);
VG_(message)(Vg_DebugMsg,
- "Discarding ordered segments -- min vc is %s, max vc is %s",
+ "Discarding ordered segments -- min vc is %s, max vc is %s\n",
vc_min, vc_max);
VG_(free)(vc_min);
VG_(free)(vc_max);
@@ -973,7 +973,7 @@
char *str1, *str2;
str1 = DRD_(vc_aprint)(&DRD_(g_threadinfo)[joiner].last->vc);
str2 = DRD_(vc_aprint)(&DRD_(g_threadinfo)[joinee].last->vc);
- VG_(message)(Vg_DebugMsg, "Before join: joiner %s, joinee %s",
+ VG_(message)(Vg_DebugMsg, "Before join: joiner %s, joinee %s\n",
str1, str2);
VG_(free)(str1);
VG_(free)(str2);
@@ -1001,7 +1001,7 @@
{
char* str;
str = DRD_(vc_aprint)(&DRD_(g_threadinfo)[joiner].last->vc);
- VG_(message)(Vg_DebugMsg, "After join: %s", str);
+ VG_(message)(Vg_DebugMsg, "After join: %s\n", str);
VG_(free)(str);
}
}
@@ -1031,7 +1031,7 @@
char *str1, *str2;
str1 = DRD_(vc_aprint)(&old_vc);
str2 = DRD_(vc_aprint)(&DRD_(g_threadinfo)[tid].last->vc);
- VG_(message)(Vg_DebugMsg, "thread %d: vc %s -> %s", tid, str1, str2);
+ VG_(message)(Vg_DebugMsg, "thread %d: vc %s -> %s\n", tid, str1, str2);
VG_(free)(str1);
VG_(free)(str2);
}
@@ -1174,7 +1174,7 @@
{
const ThreadId vg_tid = DRD_(DrdThreadIdToVgThreadId)(tid);
- VG_(message)(Vg_UserMsg, "%s (thread %d/%d)", msg, vg_tid, tid);
+ VG_(message)(Vg_UserMsg, "%s (thread %d/%d)\n", msg, vg_tid, tid);
if (vg_tid != VG_INVALID_THREADID)
{
@@ -1190,7 +1190,7 @@
else
{
VG_(message)(Vg_UserMsg,
- " (thread finished, call stack no longer available)");
+ " (thread finished, call stack no longer available)\n");
}
}
@@ -1328,7 +1328,7 @@
str = DRD_(vc_aprint)(&DRD_(g_threadinfo)[tid].last->vc);
VG_(message)(Vg_DebugMsg,
- "computing conflict set for thread %d/%d with vc %s",
+ "computing conflict set for thread %d/%d with vc %s\n",
DRD_(DrdThreadIdToVgThreadId)(tid), tid, str);
VG_(free)(str);
}
@@ -1342,7 +1342,7 @@
char* vc;
vc = DRD_(vc_aprint)(&p->vc);
- VG_(message)(Vg_DebugMsg, "conflict set: thread [%d] at vc %s",
+ VG_(message)(Vg_DebugMsg, "conflict set: thread [%d] at vc %s\n",
tid, vc);
VG_(free)(vc);
}
@@ -1363,7 +1363,7 @@
str = DRD_(vc_aprint)(&q->vc);
VG_(message)(Vg_DebugMsg,
- "conflict set: [%d] merging segment %s",
+ "conflict set: [%d] merging segment %s\n",
j, str);
VG_(free)(str);
}
@@ -1377,7 +1377,7 @@
str = DRD_(vc_aprint)(&q->vc);
VG_(message)(Vg_DebugMsg,
- "conflict set: [%d] ignoring segment %s",
+ "conflict set: [%d] ignoring segment %s\n",
j, str);
VG_(free)(str);
}
@@ -1394,9 +1394,9 @@
if (s_trace_conflict_set_bm)
{
- VG_(message)(Vg_DebugMsg, "[%d] new conflict set:", tid);
+ VG_(message)(Vg_DebugMsg, "[%d] new conflict set:\n", tid);
DRD_(bm_print)(*conflict_set);
- VG_(message)(Vg_DebugMsg, "[%d] end of new conflict set.", tid);
+ VG_(message)(Vg_DebugMsg, "[%d] end of new conflict set.\n", tid);
}
}
@@ -1424,7 +1424,7 @@
str = DRD_(vc_aprint)(&DRD_(g_threadinfo)[tid].last->vc);
VG_(message)(Vg_DebugMsg,
- "updating conflict set for thread %d/%d with vc %s",
+ "updating conflict set for thread %d/%d with vc %s\n",
DRD_(DrdThreadIdToVgThreadId)(tid), tid, str);
VG_(free)(str);
}
@@ -1456,7 +1456,7 @@
str = DRD_(vc_aprint)(&q->vc);
VG_(message)(Vg_DebugMsg,
- "conflict set: [%d] merging segment %s", j, str);
+ "conflict set: [%d] merging segment %s\n", j, str);
VG_(free)(str);
}
DRD_(bm_mark)(DRD_(g_conflict_set), DRD_(sg_bm)(q));
@@ -1469,7 +1469,7 @@
str = DRD_(vc_aprint)(&q->vc);
VG_(message)(Vg_DebugMsg,
- "conflict set: [%d] ignoring segment %s", j, str);
+ "conflict set: [%d] ignoring segment %s\n", j, str);
VG_(free)(str);
}
}
@@ -1503,9 +1503,9 @@
if (s_trace_conflict_set_bm)
{
- VG_(message)(Vg_DebugMsg, "[%d] updated conflict set:", tid);
+ VG_(message)(Vg_DebugMsg, "[%d] updated conflict set:\n", tid);
DRD_(bm_print)(DRD_(g_conflict_set));
- VG_(message)(Vg_DebugMsg, "[%d] end of updated conflict set.", tid);
+ VG_(message)(Vg_DebugMsg, "[%d] end of updated conflict set.\n", tid);
}
tl_assert(thread_conflict_set_up_to_date(DRD_(g_drd_running_tid)));
Property changes on: trunk/drd/tests/boost_thread.cpp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/drd/tests/boost_thread.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/drd/tests/boost_thread.vgtest
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/drd/tests/pth_barrier.c
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/drd/tests/pth_cond_race3.stderr.exp
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/drd/tests/pth_cond_race3.vgtest
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/drd/tests/rwlock_race.c
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/drd/tests/rwlock_test.c
___________________________________________________________________
Name: svn:mergeinfo
-
Property changes on: trunk/drd/tests/tc09_bad_unlock.stderr.exp-glibc2.8
___________________________________________________________________
Name: svn:mergeinfo
-
|
|
From: <sv...@va...> - 2009-07-15 14:48:42
|
Author: sewardj Date: 2009-07-15 15:48:32 +0100 (Wed, 15 Jul 2009) New Revision: 10465 Log: Merge coregrind/ changes from branches/MESSAGING_TIDYUP r10464. This commit tidies up and rationalises what could be called the "messaging" system -- that part of V to do with presenting output to the user. In particular it brings significant improvements to XML output. Changes are: * XML and normal text output now have separate file descriptors, which solves longstanding problems for XML consumers caused by the XML output getting polluted by unexpected non-XML output. * This also means that we no longer have to hardwire all manner of output settings (verbosity, etc) when XML is requested. * The XML output format has been revised, cleaned up, and made more suitable for use by error detecting tools in general (various Memcheck-specific features have been removed). XML output is enabled for Ptrcheck and Helgrind, and Memcheck is updated to the new format. * One side effect is that the behaviour of VG_(message) has been made to be consistent with printf: it no longer automatically adds a newline at the end of the output. This means multiple calls to it can be used to build up a single line message; or a single call can write a multi-line message. The ==pid== preamble is automatically inserted at each newline. * VG_(message)(Vg_UserMsg, ..args..) now has the abbreviated form VG_(UMSG)(..args..); ditto VG_(DMSG) for Vg_DebugMsg and VG_(EMSG) for Vg_DebugExtraMsg. A couple of other useful printf derivatives have been added to pub_tool_libcprint.h, most particularly VG_(vcbprintf). * There's a small change in the core-tool interface to do with error handling: VG_(needs_tool_errors) has a new method void (*before_pp_Error)(Error* err) which, if non-NULL, is called just before void (*pp_Error)(Error* err). This is to give tools the chance to look at errors before any part of them is printed, so they can print any XML preamble they like. * coregrind/m_errormgr.c has been overhauled and cleaned up, and is a bit simpler and more commented. In particular pp_Error and VG_(maybe_record_error) are significantly changed. The diff is huge, but mostly very boring. Most of the changes are of the form - VG_(message)(Vg_UserMsg, "this is a message %d", n); + VG_(message)(Vg_UserMsg, "this is a message %d\n", n); Unfortunately as a result of this, it touches a large number of source files. Modified: trunk/coregrind/m_commandline.c trunk/coregrind/m_coredump/coredump-elf.c trunk/coregrind/m_debugger.c trunk/coregrind/m_debuginfo/d3basics.c trunk/coregrind/m_debuginfo/debuginfo.c trunk/coregrind/m_debuginfo/readdwarf.c trunk/coregrind/m_debuginfo/readdwarf3.c trunk/coregrind/m_debuginfo/readelf.c trunk/coregrind/m_debuginfo/readpdb.c trunk/coregrind/m_debuginfo/readstabs.c trunk/coregrind/m_debuginfo/readxcoff.c trunk/coregrind/m_debuginfo/storage.c trunk/coregrind/m_demangle/demangle.c trunk/coregrind/m_errormgr.c trunk/coregrind/m_execontext.c trunk/coregrind/m_libcassert.c trunk/coregrind/m_libcprint.c trunk/coregrind/m_libcproc.c trunk/coregrind/m_main.c trunk/coregrind/m_mallocfree.c trunk/coregrind/m_options.c trunk/coregrind/m_redir.c trunk/coregrind/m_replacemalloc/replacemalloc_core.c trunk/coregrind/m_scheduler/scheduler.c trunk/coregrind/m_sigframe/sigframe-amd64-linux.c trunk/coregrind/m_sigframe/sigframe-ppc32-aix5.c trunk/coregrind/m_sigframe/sigframe-ppc32-linux.c trunk/coregrind/m_sigframe/sigframe-ppc64-aix5.c trunk/coregrind/m_sigframe/sigframe-ppc64-linux.c trunk/coregrind/m_sigframe/sigframe-x86-linux.c trunk/coregrind/m_signals.c trunk/coregrind/m_stacks.c trunk/coregrind/m_stacktrace.c trunk/coregrind/m_syswrap/syswrap-aix5.c trunk/coregrind/m_syswrap/syswrap-amd64-linux.c trunk/coregrind/m_syswrap/syswrap-generic.c trunk/coregrind/m_syswrap/syswrap-linux.c trunk/coregrind/m_syswrap/syswrap-main.c trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c trunk/coregrind/m_syswrap/syswrap-x86-linux.c trunk/coregrind/m_tooliface.c trunk/coregrind/m_translate.c trunk/coregrind/m_transtab.c trunk/coregrind/m_ume/elf.c trunk/coregrind/m_ume/main.c trunk/coregrind/m_ume/script.c trunk/coregrind/m_wordfm.c trunk/coregrind/pub_core_libcprint.h trunk/coregrind/pub_core_options.h trunk/coregrind/pub_core_tooliface.h [... diff too large to include ...] |
Author: sewardj Date: 2009-07-15 12:01:56 +0100 (Wed, 15 Jul 2009) New Revision: 10464 Log: Merge revs 10413:10463 from trunk (== resync with trunk 10463). Added: branches/MESSAGING_TIDYUP/drd/tests/custom_alloc.c branches/MESSAGING_TIDYUP/exp-bbv/ branches/MESSAGING_TIDYUP/none/tests/syslog.c branches/MESSAGING_TIDYUP/none/tests/syslog.stderr.exp branches/MESSAGING_TIDYUP/none/tests/syslog.vgtest Removed: branches/MESSAGING_TIDYUP/drd/tests/recursive_mutex.stdout.exp Modified: branches/MESSAGING_TIDYUP/ branches/MESSAGING_TIDYUP/Makefile.am branches/MESSAGING_TIDYUP/Makefile.vex.am branches/MESSAGING_TIDYUP/NEWS branches/MESSAGING_TIDYUP/README branches/MESSAGING_TIDYUP/configure.in branches/MESSAGING_TIDYUP/coregrind/m_machine.c branches/MESSAGING_TIDYUP/coregrind/m_main.c branches/MESSAGING_TIDYUP/coregrind/m_scheduler/scheduler.c branches/MESSAGING_TIDYUP/coregrind/m_syswrap/priv_syswrap-darwin.h branches/MESSAGING_TIDYUP/coregrind/m_syswrap/priv_syswrap-linux.h branches/MESSAGING_TIDYUP/coregrind/m_syswrap/syswrap-amd64-linux.c branches/MESSAGING_TIDYUP/coregrind/m_syswrap/syswrap-darwin.c branches/MESSAGING_TIDYUP/coregrind/m_syswrap/syswrap-linux.c branches/MESSAGING_TIDYUP/coregrind/m_syswrap/syswrap-ppc32-linux.c branches/MESSAGING_TIDYUP/coregrind/m_syswrap/syswrap-ppc64-linux.c branches/MESSAGING_TIDYUP/coregrind/m_syswrap/syswrap-x86-linux.c branches/MESSAGING_TIDYUP/darwin9.supp branches/MESSAGING_TIDYUP/docs/xml/manual.xml branches/MESSAGING_TIDYUP/docs/xml/valgrind-manpage.xml branches/MESSAGING_TIDYUP/drd/drd_load_store.c branches/MESSAGING_TIDYUP/drd/tests/ branches/MESSAGING_TIDYUP/drd/tests/Makefile.am branches/MESSAGING_TIDYUP/drd/tests/custom_alloc.vgtest branches/MESSAGING_TIDYUP/drd/tests/pth_cleanup_handler.c branches/MESSAGING_TIDYUP/drd/tests/recursive_mutex.c branches/MESSAGING_TIDYUP/drd/tests/recursive_mutex.stderr.exp branches/MESSAGING_TIDYUP/drd/tests/recursive_mutex.vgtest branches/MESSAGING_TIDYUP/drd/tests/tsan_unittest.cpp branches/MESSAGING_TIDYUP/exp-bbv/bbv_main.c branches/MESSAGING_TIDYUP/exp-bbv/docs/ branches/MESSAGING_TIDYUP/exp-bbv/tests/ branches/MESSAGING_TIDYUP/exp-bbv/tests/amd64-linux/ branches/MESSAGING_TIDYUP/exp-bbv/tests/ppc32-linux/ branches/MESSAGING_TIDYUP/exp-bbv/tests/x86-linux/ branches/MESSAGING_TIDYUP/exp-bbv/tests/x86/ branches/MESSAGING_TIDYUP/exp-ptrcheck/h_main.c branches/MESSAGING_TIDYUP/exp-ptrcheck/sg_main.c branches/MESSAGING_TIDYUP/exp-ptrcheck/sg_main.h branches/MESSAGING_TIDYUP/glibc-2.X-drd.supp branches/MESSAGING_TIDYUP/include/valgrind.h branches/MESSAGING_TIDYUP/include/vki/vki-linux.h branches/MESSAGING_TIDYUP/memcheck/docs/mc-manual.xml branches/MESSAGING_TIDYUP/memcheck/mc_main.c branches/MESSAGING_TIDYUP/memcheck/mc_translate.c branches/MESSAGING_TIDYUP/memcheck/tests/ branches/MESSAGING_TIDYUP/memcheck/tests/Makefile.am branches/MESSAGING_TIDYUP/memcheck/tests/atomic_incs.c branches/MESSAGING_TIDYUP/memcheck/tests/atomic_incs.stdout.exp-32bit branches/MESSAGING_TIDYUP/memcheck/tests/custom_alloc.c branches/MESSAGING_TIDYUP/memcheck/tests/darwin/scalar.c branches/MESSAGING_TIDYUP/memcheck/tests/darwin/scalar.stderr.exp branches/MESSAGING_TIDYUP/memcheck/tests/linux/ branches/MESSAGING_TIDYUP/memcheck/tests/long_namespace_xml.stderr.exp branches/MESSAGING_TIDYUP/memcheck/tests/x86-linux/ branches/MESSAGING_TIDYUP/memcheck/tests/x86-linux/scalar.c branches/MESSAGING_TIDYUP/memcheck/tests/x86-linux/scalar.stderr.exp branches/MESSAGING_TIDYUP/memcheck/tests/xml1.stderr.exp32 branches/MESSAGING_TIDYUP/memcheck/tests/xml1.stderr.exp64 branches/MESSAGING_TIDYUP/mpi/ branches/MESSAGING_TIDYUP/nightly/ branches/MESSAGING_TIDYUP/none/tests/ branches/MESSAGING_TIDYUP/none/tests/Makefile.am branches/MESSAGING_TIDYUP/none/tests/amd64/ branches/MESSAGING_TIDYUP/none/tests/amd64/bug127521-64.vgtest branches/MESSAGING_TIDYUP/none/tests/cmdline1.stdout.exp branches/MESSAGING_TIDYUP/none/tests/cmdline2.stdout.exp branches/MESSAGING_TIDYUP/none/tests/x86-linux/ branches/MESSAGING_TIDYUP/none/tests/x86/ branches/MESSAGING_TIDYUP/tests/Makefile.am branches/MESSAGING_TIDYUP/tests/filter_stderr_basic branches/MESSAGING_TIDYUP/tests/x86_amd64_features.c [... diff too large to include ...] |
|
From: Ashley P. <as...@pi...> - 2009-07-15 09:50:00
|
On Wed, 2009-07-15 at 08:21 +1000, Nicholas Nethercote wrote: > On Wed, Jul 15, 2009 at 8:14 AM, Ashley Pittman<as...@pi...> wrote: > >> +# The contents of this file don't matter, as we don't call LibVEX_version() > >> +# from Valgrind. > >> +# Nb: generating a file and putting it in $(srcdir) rather than $(builddir) > >> +# seems like bad form... this should be fixed if VPATH builds are made to > >> +# work. > >> +priv/main_vex_svnversion.h: > >> + echo "\"version\"" > $(srcdir)/priv/main_vex_svnversion.h > > > > Can't we just do away with this header file all together, automatically > > generating it with static contents seems a little odd. > > It is odd. The problem is that Vex can be built standalone as well as > part of Valgrind. In Valgrind we now never call LibVEX_version() so > we can use a dummy version of that file, but for standalone Vex builds > the svnversion stuff is still present. So to get rid of it you'll > need to convince Julian to do away with LibVEX_version() altogether. Couldn't this just as easily be done via a #define, -DMAIN_VEX_SUBVERSION=0 or something? Even better would it be possible to put the version string in the define itself? Something like -DVER_SUBVERSION=`svnversion` when building VEX standalone and -DVEX_SUBERVSION=version in valgrind. There does seem little point in having this function in Valgrind if it's return value is a hard-coded meaningless string, I'm not aware of what other projects VEX works with so can't comment on the ABI issue there. Ashley, -- Ashley Pittman, Bath, UK. Padb - A parallel job inspection tool for cluster computing http://padb.pittman.org.uk |