You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(32) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
1
(15) |
2
(15) |
3
(16) |
4
(16) |
5
(19) |
6
(15) |
|
7
(1) |
8
(4) |
9
|
10
(4) |
11
(14) |
12
(5) |
13
|
|
14
(1) |
15
|
16
|
17
(12) |
18
(25) |
19
(18) |
20
(18) |
|
21
(16) |
22
(1) |
23
(18) |
24
(15) |
25
|
26
(3) |
27
(18) |
|
28
(8) |
29
|
30
(4) |
|
|
|
|
|
From: Niall D. <ndo...@bl...> - 2013-04-17 19:46:20
|
I thought the list might appreciate seeing the improved callgrind in action: https://plus.google.com/photos/103330209479934785641/albums/5867891891426048 561 The patch is submitted for release. It should clear within six weeks. Next step is a callgrind output to XML converter. Any complaints if I write the callgrind output parser in Boost.Spirit Josef? I wouldn't want it to be a maintenance headache. Niall > -----Original Message----- > From: Niall Douglas > Sent: 11 April 2013 16:34 > To: val...@li... > Subject: Re: [Valgrind-developers] Details about forthcoming > cachegrind/callgrind patch adding hardware costs > > > Am 11.04.2013 17:10, schrieb Niall Douglas: > > >>> desc: I1 cache: 32768 B, 64 B, 8-way associative, 153 picosec > > > > > Estimated cost times for a cache line, so a D1 cache access costs 153 > > > picosec, whereas a LL cache access costs 1112 picosec. > > > > Ok. "0.153 ns hit latency" may be more descriptive. > > Is 153 picosec hit latency okay? I try to avoid floating point printing. I > think valgrind's sprint now supports %f, but not %e. I had to write my own > %e formatter which is a challenge without a C math library. > > Also, the read_picosecond_timer() suggests picosec. As that's the minimum > resolution offered by POSIX, that seems the right unit. > > > But these numbers are so small... I assume there is prefetching going on, > and > > you are actually measuring the maximal bandwidth from core to a cache > level. I > > would assume that an unpredictable LL access has a latency more in the > range > > of 15-30 cycles (and not 1ns). > > As I mentioned, I do permute the cache line fetches by reversing the last > eight bits of the cache line indexes to make them appear random-ish. I > *really* wish I could just point you at the code, but it's still tied up in > bureaucracy. > > > I get the impression that we always should do prefetch simulation, and add > an > > event "predicted LL miss" to be not totally off with the some time > estimation. > > It's certainly coming to that with Sandy Bridge and later on Intel. We're > not there yet on ARM. > > > So this somehow is the latency of an add instruction, using registers. I > suppose > > with a multiplication it would be slower, and with a divison even more > so... I.e. > > that does not really match with any definition of "max cost" for me ;-) > > There is a bit of method in the madness there. If I have read it correctly, > according to > http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.84.5816&rep=rep1& > ty > pe=pdf roughly speaking, as an average case, most general purpose code has > an ILP of around 1.0, so if you can calculate the clock speed, you more or > less get average instruction cost. > > So this asks the question, how do you portably calculate the clock speed? > And by portably, I mean no assembler and no OS specific code (POSIX is > okay). It turns out this isn't easy. The best approach I could think of was > to calculate for the add instruction given that it is *probably* reasonably > likely to be the same as the clock speed on most contemporary CPUs [1]. > > Therefore when I use max instruction cost in my calculations, it's really a > proxy for average instruction cost based on a number of reasonable > assumptions. > > [1]: The Qualcomm Krait is not one of these CPUs. It incurs a stochastic > non-linear latency on arithmetic instructions. In the end, what can you do > in this situation. > > > > You'll note the max instruction cost is ~300 picosec while the L1 > > > cache line is ~150 picosec for 64 bytes. I would assume Intel > > > deliberately chose that to ensure that a single arithmetic instruction > > > adding across cache lines can run at single cycle speed. > > > > Ah, so these results are from an Intel processor? > > 101 ps means 1 cycle with 10GHz. I wondered which ARM processor you were > > using to get these impressive figures. So it's more like 3.3GHz and 3 add > > instructions throughput per cycle. > > Correct. Sorry if I confused you. As I must prepare a patch for you guys, > and one which must pass Legal, I ported the work from internal valgrind to > Linux valgrind. Which runs inside a VM on my Intel work PC. Hence the > figures are for that machine. Main memory cost is particularly incorrect > inside a VM. > > I'll backport the patch to internal valgrind once internal peer review > approves it. There's absolutely no reason it shouldn't work seamlessly on > ARM though. > > BTW, this is the custom event I added: > > desc: I1 cache: 32768 B, 64 B, 8-way associative, 157 picosec > desc: D1 cache: 32768 B, 64 B, 8-way associative, 157 picosec > desc: LL cache: 6291456 B, 64 B, 12-way associative, 1120 picosec > desc: main memory: 1362 picosec > desc: max instruct cost: 316 picosec > desc: min instruct cost: 107 picosec > > event: EPpsec = 316 Ir + 1120 I1mr + 1120 D1mr + 1120 D1mw + 1362 ILmr + > 1362 DLmr + 1362 DLmw > event: EPpsec : Estimated Possible Picosecs > > I think that's a reasonable calculation, more or less. > > I'll change "picosec" => "picosec hit latency" shortly. > > Niall |
|
From: <sv...@va...> - 2013-04-17 19:07:51
|
mjw 2013-04-17 20:11:05 +0100 (Wed, 17 Apr 2013)
New Revision: 13371
Log:
Fix -Ttext-segment configure check.
Explicitly test together with -static -nodefaultlibs -nostartfiles to mimic
what the tools linking script does. At least on s390 the test might fail for
a non-static AC_LINK, while it does work when using those other flags too.
Modified files:
trunk/configure.in
Modified: trunk/configure.in (+2 -2)
===================================================================
--- trunk/configure.in 2013-04-17 16:23:22 +01:00 (rev 13370)
+++ trunk/configure.in 2013-04-17 20:11:05 +01:00 (rev 13371)
@@ -1718,10 +1718,10 @@
AC_MSG_CHECKING([if the linker accepts -Wl,-Ttext-segment])
safe_CFLAGS=$CFLAGS
-CFLAGS="-Wl,-Ttext-segment=$valt_load_address_pri_norml"
+CFLAGS="-static -nodefaultlibs -nostartfiles -Wl,-Ttext-segment=$valt_load_address_pri_norml"
AC_LINK_IFELSE(
-[AC_LANG_PROGRAM([ ], [return 0;])],
+[AC_LANG_SOURCE([int _start () { return 0; }])],
[
linker_using_t_text="no"
AC_SUBST([FLAG_T_TEXT], ["-Ttext-segment"])
|
|
From: <sv...@va...> - 2013-04-17 15:20:09
|
mjw 2013-04-17 16:23:22 +0100 (Wed, 17 Apr 2013)
New Revision: 13370
Log:
strchr.vgtest mc_replace_strmem.c [r]index and [__GI_]str[r]chr are the same.
Add memcheck/tests/filter_strchr to make it so for the testcase.
Added files:
trunk/memcheck/tests/filter_strchr
Modified files:
trunk/memcheck/tests/Makefile.am
trunk/memcheck/tests/strchr.vgtest
Modified: trunk/memcheck/tests/strchr.vgtest (+1 -0)
===================================================================
--- trunk/memcheck/tests/strchr.vgtest 2013-04-17 14:48:29 +01:00 (rev 13369)
+++ trunk/memcheck/tests/strchr.vgtest 2013-04-17 16:23:22 +01:00 (rev 13370)
@@ -1,3 +1,4 @@
prog: strchr
vgopts: -q
+stderr_filter: filter_strchr
stderr_filter_args: strchr.c
Property changed: trunk/memcheck/tests/filter_strchr (+0 -0)
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/memcheck/tests/filter_strchr (+8 -0)
===================================================================
--- trunk/memcheck/tests/filter_strchr 2013-04-17 14:48:29 +01:00 (rev 13369)
+++ trunk/memcheck/tests/filter_strchr 2013-04-17 16:23:22 +01:00 (rev 13370)
@@ -0,0 +1,8 @@
+#! /bin/sh
+
+# mc_replace_strmem.c [r]index and [__GI_]str[r]chr are the same.
+./filter_stderr "$@" |
+sed -e "s/: __GI_strchr (mc_replace_strmem.c:/: strchr (mc_replace_strmem.c:/" |
+sed -e "s/: strchr (mc_replace_strmem.c:/: index (mc_replace_strmem.c:/" |
+sed -e "s/: __GI_strrchr (mc_replace_strmem.c:/: strrchr (mc_replace_strmem.c:/" |
+sed -e "s/: strrchr (mc_replace_strmem.c:/: rindex (mc_replace_strmem.c:/"
Modified: trunk/memcheck/tests/Makefile.am (+1 -0)
===================================================================
--- trunk/memcheck/tests/Makefile.am 2013-04-17 14:48:29 +01:00 (rev 13369)
+++ trunk/memcheck/tests/Makefile.am 2013-04-17 16:23:22 +01:00 (rev 13370)
@@ -43,6 +43,7 @@
filter_allocs \
filter_leak_cases_possible \
filter_stderr filter_xml \
+ filter_strchr \
filter_varinfo3 \
filter_memcheck \
filter_memcpy
|
|
From: <sv...@va...> - 2013-04-17 13:45:16
|
mjw 2013-04-17 14:48:29 +0100 (Wed, 17 Apr 2013)
New Revision: 13369
Log:
Simplify read_unitinfo_dwarf2. Only try to read the first DIE.
Bug #305513. We should only read the first DIE of a compilation unit.
Each compilation unit header is followed by a single DW_TAG_compile_unit
(or DW_TAG_partial_unit, but those aren't important here) and its children.
There is no reason to read any of the children at this point. If the first
DIE isn't a DW_TAG_compile_unit we are done, none of the child DIEs will
provide any useful information.
Modified files:
trunk/coregrind/m_debuginfo/readdwarf.c
Modified: trunk/coregrind/m_debuginfo/readdwarf.c (+17 -30)
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c 2013-04-17 11:08:04 +01:00 (rev 13368)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2013-04-17 14:48:29 +01:00 (rev 13369)
@@ -965,12 +965,14 @@
}
/* Read general information for a particular compile unit block in
- * the .debug_info section.
+ * the .debug_info section. In particular read the name, compdir and
+ * stmt_list needed to parse the line number information.
*
* Input: - unitblock is the start of a compilation
* unit block in .debuginfo section
* - debugabbrev is start of .debug_abbrev section
* - debugstr is start of .debug_str section
+ * - debugstr_alt_img is start of .debug_str section in alt debug file
*
* Output: Fill members of ui pertaining to the compilation unit:
* - ui->name is the name of the compilation unit
@@ -990,7 +992,6 @@
{
UInt acode, abcode;
ULong atoffs, blklen;
- Int level;
UShort ver;
UChar addr_size;
@@ -1021,40 +1022,33 @@
end_img = unitblock_img
+ blklen + (ui->dw64 ? 12 : 4); /* End of this block */
- level = 0; /* Level in the abbrev tree */
abbrev_img = debugabbrev_img
+ atoffs; /* Abbreviation data for this block */
- /* Read the compilation unit entries */
- while ( p < end_img ) {
- Bool has_child;
+ /* Read the compilation unit entry - this is always the first DIE.
+ * See DWARF4 para 7.5. */
+ if ( p < end_img ) {
UInt tag;
acode = read_leb128U( &p ); /* abbreviation code */
- if ( acode == 0 ) {
- /* NULL entry used for padding - or last child for a sequence
- - see para 7.5.3 */
- level--;
- continue;
- }
/* Read abbreviation header */
abcode = read_leb128U( &abbrev_img ); /* abbreviation code */
if ( acode != abcode ) {
- /* We are in in children list, and must rewind to a
- * previously declared abbrev code. This code works but is
- * not triggered since we shortcut the parsing once we have
- * read the compile_unit block. This should only occur when
- * level > 0 */
+ /* This isn't illegal, but somewhat unlikely. Normally the
+ * first abbrev describes the first DIE, the compile_unit.
+ * But maybe this abbrevation data is shared with another
+ * or it is a NULL entry used for padding. See para 7.5.3. */
abbrev_img = lookup_abbrev( debugabbrev_img + atoffs, acode );
}
tag = read_leb128U( &abbrev_img );
- has_child = *(abbrev_img++) == 1; /* DW_CHILDREN_yes */
- if ( has_child )
- level++;
+ if ( tag != 0x0011 /*TAG_compile_unit*/ )
+ return; /* Not a compile unit (might be partial) or broken DWARF. */
+ abbrev_img++; /* DW_CHILDREN_yes or DW_CHILDREN_no */
+
/* And loop on entries */
for ( ; ; ) {
/* Read entry definition */
@@ -1151,16 +1145,9 @@
else if ( name == 0x10 ) ui->stmt_list = cval; /* DW_AT_stmt_list */
}
}
- /* Shortcut the parsing once we have read the compile_unit block
- * That's enough info for us, and we are not gdb ! */
- if ( tag == 0x0011 /*TAG_compile_unit*/ )
- break;
- } /* Loop on each sub block */
-
- /* This test would be valid if we were not shortcutting the parsing
- if (level != 0)
- VG_(printf)( "#### Exiting debuginfo block at level %d !!!\n", level );
- */
+ } /* Just read the first DIE, if that wasn't the compile_unit then
+ * this might have been a partial unit or broken DWARF info.
+ * That's enough info for us, and we are not gdb ! */
}
|
|
From: <sv...@va...> - 2013-04-17 11:18:41
|
sewardj 2013-04-17 12:21:58 +0100 (Wed, 17 Apr 2013)
New Revision: 2707
Log:
Remove some unused ifdeffery that allowed disabling QC flag updating
for Neon.
Modified files:
trunk/priv/guest_arm_toIR.c
Modified: trunk/priv/guest_arm_toIR.c (+0 -68)
===================================================================
--- trunk/priv/guest_arm_toIR.c 2013-04-11 14:57:43 +01:00 (rev 2706)
+++ trunk/priv/guest_arm_toIR.c 2013-04-17 12:21:58 +01:00 (rev 2707)
@@ -1267,7 +1267,6 @@
binop(Iop_GetElem32x2, resR, mkU8(1)) );
}
-#if 1
call1 = mkIRExprCCall(
Ity_I32,
0/*regparm*/,
@@ -1287,39 +1286,6 @@
} else {
res = call1;
}
-#else
- if (Q) {
- res = unop(Iop_1Uto32,
- binop(Iop_CmpNE32,
- binop(Iop_Or32,
- binop(Iop_Or32,
- binop(Iop_Xor32,
- args1[0],
- args1[2]),
- binop(Iop_Xor32,
- args1[1],
- args1[3])),
- binop(Iop_Or32,
- binop(Iop_Xor32,
- args2[0],
- args2[2]),
- binop(Iop_Xor32,
- args2[1],
- args2[3]))),
- mkU32(0)));
- } else {
- res = unop(Iop_1Uto32,
- binop(Iop_CmpNE32,
- binop(Iop_Or32,
- binop(Iop_Xor32,
- args1[0],
- args1[2]),
- binop(Iop_Xor32,
- args1[1],
- args1[3])),
- mkU32(0)));
- }
-#endif
return res;
}
@@ -3201,10 +3167,8 @@
tmp = newTemp(Ity_I64);
}
assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
-#ifndef DISABLE_QC_FLAG
assign(tmp, binop(op2, mkexpr(arg_n), mkexpr(arg_m)));
setFlag_QC(mkexpr(res), mkexpr(tmp), Q, condT);
-#endif
DIP("vqadd.%c%d %c%d, %c%d, %c%d\n",
U ? 'u' : 's',
8 << size, reg_t, dreg, reg_t, nreg, reg_t, mreg);
@@ -3613,10 +3577,8 @@
else
tmp = newTemp(Ity_I64);
assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
-#ifndef DISABLE_QC_FLAG
assign(tmp, binop(op2, mkexpr(arg_n), mkexpr(arg_m)));
setFlag_QC(mkexpr(res), mkexpr(tmp), Q, condT);
-#endif
DIP("vqsub.%c%u %c%u, %c%u, %c%u\n",
U ? 'u' : 's', 8 << size,
Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd',
@@ -3801,7 +3763,6 @@
mask = newTemp(Ity_I64);
}
assign(res, binop(op, mkexpr(arg_m), mkexpr(arg_n)));
-#ifndef DISABLE_QC_FLAG
/* Only least significant byte from second argument is used.
Copy this byte to the whole vector element. */
assign(shval, binop(op_shrn,
@@ -3845,7 +3806,6 @@
binop(Q ? Iop_AndV128 : Iop_And64,
mkexpr(arg_m), mkexpr(mask)),
Q, condT);
-#endif
DIP("vqshl.%c%u %c%u, %c%u, %c%u\n",
U ? 'u' : 's', 8 << size,
Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, Q ? 'q' : 'd',
@@ -4116,7 +4076,6 @@
assign(res, binop(op_add,
binop(op, mkexpr(arg_m), mkexpr(arg_n)),
mkexpr(round)));
-#ifndef DISABLE_QC_FLAG
/* If shift is greater or equal to the element size and element is
non-zero, then QC flag should be set. */
esize = (8 << size) - 1;
@@ -4144,7 +4103,6 @@
binop(Q ? Iop_AndV128 : Iop_And64,
mkexpr(arg_m), mkexpr(mask)),
Q, condT);
-#endif
DIP("vqrshl.%c%u %c%u, %c%u, %c%u\n",
U ? 'u' : 's', 8 << size,
Q ? 'q' : 'd', dreg, Q ? 'q' : 'd', mreg, Q ? 'q' : 'd',
@@ -4547,7 +4505,6 @@
vassert(0);
}
assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
-#ifndef DISABLE_QC_FLAG
setFlag_QC(binop(Q ? Iop_AndV128 : Iop_And64,
binop(op2, mkexpr(arg_n),
Q ? mkU128(imm) : mkU64(imm)),
@@ -4555,7 +4512,6 @@
Q ? mkU128(imm) : mkU64(imm))),
Q ? mkU128(0) : mkU64(0),
Q, condT);
-#endif
DIP("vqdmulh.s%u %c%u, %c%u, %c%u\n",
8 << size, Q ? 'q' : 'd',
dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
@@ -4583,7 +4539,6 @@
vassert(0);
}
assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
-#ifndef DISABLE_QC_FLAG
setFlag_QC(binop(Q ? Iop_AndV128 : Iop_And64,
binop(op2, mkexpr(arg_n),
Q ? mkU128(imm) : mkU64(imm)),
@@ -4591,7 +4546,6 @@
Q ? mkU128(imm) : mkU64(imm))),
Q ? mkU128(0) : mkU64(0),
Q, condT);
-#endif
DIP("vqrdmulh.s%u %c%u, %c%u, %c%u\n",
8 << size, Q ? 'q' : 'd',
dreg, Q ? 'q' : 'd', nreg, Q ? 'q' : 'd', mreg);
@@ -5170,7 +5124,6 @@
res = newTemp(Ity_V128);
tmp = newTemp(Ity_V128);
assign(res, binop(op, getDRegI64(nreg), getDRegI64(mreg)));
-#ifndef DISABLE_QC_FLAG
assign(tmp, binop(op2, getQReg(dreg), mkexpr(res)));
setFlag_QC(mkexpr(tmp), binop(add, getQReg(dreg), mkexpr(res)),
True, condT);
@@ -5179,7 +5132,6 @@
binop(cmp, getDRegI64(mreg), mkU64(imm))),
mkU64(0),
False, condT);
-#endif
putQReg(dreg, binop(add, getQReg(dreg), mkexpr(res)), condT);
DIP("vqdml%cl.s%u q%u, d%u, d%u\n", P ? 's' : 'a', 8 << size, dreg,
nreg, mreg);
@@ -5241,13 +5193,11 @@
}
putQReg(dreg, binop(op, getDRegI64(nreg), getDRegI64(mreg)),
condT);
-#ifndef DISABLE_QC_FLAG
setFlag_QC(binop(Iop_And64,
binop(op2, getDRegI64(nreg), mkU64(imm)),
binop(op2, getDRegI64(mreg), mkU64(imm))),
mkU64(0),
False, condT);
-#endif
DIP("vqdmull.s%u q%u, d%u, d%u\n", 8 << size, dreg, nreg, mreg);
return True;
default:
@@ -5496,7 +5446,6 @@
res = newTemp(Ity_V128);
tmp = newTemp(Ity_V128);
assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
-#ifndef DISABLE_QC_FLAG
assign(tmp, binop(op2, getQReg(dreg), mkexpr(res)));
setFlag_QC(binop(Iop_And64,
binop(cmp, mkexpr(arg_n), mkU64(imm)),
@@ -5505,7 +5454,6 @@
False, condT);
setFlag_QC(mkexpr(tmp), binop(add, getQReg(dreg), mkexpr(res)),
True, condT);
-#endif
putQReg(dreg, binop(add, getQReg(dreg), mkexpr(res)), condT);
DIP("vqdml%cl.s%u q%u, d%u, d%u[%u]\n", P ? 's' : 'a', 8 << size,
dreg, nreg, mreg, index);
@@ -5706,13 +5654,11 @@
}
putQReg(dreg, binop(op, mkexpr(arg_n), mkexpr(arg_m)),
condT);
-#ifndef DISABLE_QC_FLAG
setFlag_QC(binop(Iop_And64,
binop(op2, mkexpr(arg_n), mkU64(imm)),
binop(op2, mkexpr(arg_m), mkU64(imm))),
mkU64(0),
False, condT);
-#endif
DIP("vqdmull.s%u q%u, d%u, d%u[%u]\n", 8 << size, dreg, nreg, mreg,
index);
return True;
@@ -5799,7 +5745,6 @@
vassert(0);
}
assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
-#ifndef DISABLE_QC_FLAG
setFlag_QC(binop(Q ? Iop_AndV128 : Iop_And64,
binop(op2, mkexpr(arg_n),
Q ? mkU128(imm) : mkU64(imm)),
@@ -5807,7 +5752,6 @@
Q ? mkU128(imm) : mkU64(imm))),
Q ? mkU128(0) : mkU64(0),
Q, condT);
-#endif
if (Q)
putQReg(dreg, mkexpr(res), condT);
else
@@ -5899,7 +5843,6 @@
vassert(0);
}
assign(res, binop(op, mkexpr(arg_n), mkexpr(arg_m)));
-#ifndef DISABLE_QC_FLAG
setFlag_QC(binop(Q ? Iop_AndV128 : Iop_And64,
binop(op2, mkexpr(arg_n),
Q ? mkU128(imm) : mkU64(imm)),
@@ -5907,7 +5850,6 @@
Q ? mkU128(imm) : mkU64(imm))),
Q ? mkU128(0) : mkU64(0),
Q, condT);
-#endif
if (Q)
putQReg(dreg, mkexpr(res), condT);
else
@@ -6370,10 +6312,8 @@
assign(reg_m, getDRegI64(mreg));
}
assign(res, binop(op, mkexpr(reg_m), mkU8(shift_imm)));
-#ifndef DISABLE_QC_FLAG
assign(tmp, binop(op_rev, mkexpr(res), mkU8(shift_imm)));
setFlag_QC(mkexpr(tmp), mkexpr(reg_m), Q, condT);
-#endif
if (Q)
putQReg(dreg, mkexpr(res), condT);
else
@@ -6563,10 +6503,8 @@
/* VQSHRN, VQSHRUN */
assign(res, binop(op, mkexpr(reg_m), mkU8(shift_imm)));
}
-#ifndef DISABLE_QC_FLAG
setFlag_QC(unop(cvt2, unop(cvt, mkexpr(res))), mkexpr(res),
True, condT);
-#endif
putDRegI64(dreg, unop(cvt, mkexpr(res)), condT);
return True;
case 10:
@@ -6919,7 +6857,6 @@
unop(Q ? Iop_NotV128 : Iop_Not64,
mkexpr(mask)),
neg)));
-#ifndef DISABLE_QC_FLAG
assign(tmp, binop(Q ? Iop_OrV128 : Iop_Or64,
binop(Q ? Iop_AndV128 : Iop_And64,
mkexpr(mask),
@@ -6929,7 +6866,6 @@
mkexpr(mask)),
neg2)));
setFlag_QC(mkexpr(res), mkexpr(tmp), Q, condT);
-#endif
DIP("vqabs.s%u %c%u, %c%u\n", 8 << size, Q ? 'q' : 'd', dreg,
Q ? 'q' : 'd', mreg);
break;
@@ -6962,10 +6898,8 @@
vassert(0);
}
assign(res, binop(op, zero, mkexpr(arg_m)));
-#ifndef DISABLE_QC_FLAG
setFlag_QC(mkexpr(res), binop(op2, zero, mkexpr(arg_m)),
Q, condT);
-#endif
DIP("vqneg.s%u %c%u, %c%u\n", 8 << size, Q ? 'q' : 'd', dreg,
Q ? 'q' : 'd', mreg);
break;
@@ -7463,10 +7397,8 @@
res = newTemp(Ity_I64);
tmp = newTemp(Ity_I64);
assign(res, unop(op, getQReg(mreg)));
-#ifndef DISABLE_QC_FLAG
assign(tmp, unop(op2, getQReg(mreg)));
setFlag_QC(mkexpr(res), mkexpr(tmp), False, condT);
-#endif
putDRegI64(dreg, mkexpr(res), condT);
return True;
} else if (B == 12) {
|
|
From: <sv...@va...> - 2013-04-17 10:04:48
|
tom 2013-04-17 11:08:04 +0100 (Wed, 17 Apr 2013)
New Revision: 13368
Log:
Pay attention to PT_GNU_STACK when deciding what permissions to
use for the client stack.
Modified files:
trunk/coregrind/m_initimg/initimg-linux.c
trunk/coregrind/m_ume/elf.c
trunk/coregrind/pub_core_ume.h
Modified: trunk/coregrind/m_initimg/initimg-linux.c (+1 -1)
===================================================================
--- trunk/coregrind/m_initimg/initimg-linux.c 2013-04-11 18:55:39 +01:00 (rev 13367)
+++ trunk/coregrind/m_initimg/initimg-linux.c 2013-04-17 11:08:04 +01:00 (rev 13368)
@@ -557,7 +557,7 @@
res = VG_(am_mmap_anon_fixed_client)(
anon_start -inner_HACK,
anon_size +inner_HACK,
- VKI_PROT_READ|VKI_PROT_WRITE|VKI_PROT_EXEC
+ info->stack_prot
);
}
if ((!ok) || sr_isError(res)) {
Modified: trunk/coregrind/m_ume/elf.c (+7 -0)
===================================================================
--- trunk/coregrind/m_ume/elf.c 2013-04-11 18:55:39 +01:00 (rev 13367)
+++ trunk/coregrind/m_ume/elf.c 2013-04-17 11:08:04 +01:00 (rev 13368)
@@ -354,6 +354,7 @@
info->phnum = e->e.e_phnum;
info->entry = e->e.e_entry + ebase;
info->phdr = 0;
+ info->stack_prot = VKI_PROT_READ|VKI_PROT_WRITE|VKI_PROT_EXEC;
for (i = 0; i < e->e.e_phnum; i++) {
ESZ(Phdr) *ph = &e->p[i];
@@ -416,6 +417,12 @@
}
break;
+ case PT_GNU_STACK:
+ if ((ph->p_flags & PF_X) == 0) info->stack_prot &= ~VKI_PROT_EXEC;
+ if ((ph->p_flags & PF_W) == 0) info->stack_prot &= ~VKI_PROT_WRITE;
+ if ((ph->p_flags & PF_R) == 0) info->stack_prot &= ~VKI_PROT_READ;
+ break;
+
default:
// do nothing
break;
Modified: trunk/coregrind/pub_core_ume.h (+1 -0)
===================================================================
--- trunk/coregrind/pub_core_ume.h 2013-04-11 18:55:39 +01:00 (rev 13367)
+++ trunk/coregrind/pub_core_ume.h 2013-04-17 11:08:04 +01:00 (rev 13368)
@@ -52,6 +52,7 @@
#if !defined(VGO_darwin)
Addr phdr; // OUT: address phdr was mapped at
Int phnum; // OUT: number of phdrs
+ UInt stack_prot; // OUT: stack permissions
Addr interp_base; // OUT: where interpreter (ld.so) was mapped
#else
Addr stack_start; // OUT: address of start of stack segment (hot)
|
|
From: Lionel U. <lio...@gm...> - 2013-04-14 20:27:41
|
Hello,
This patch enables one to have the following output using 'logcat':
04-14 21:26:04.060 22549 22549 D Valgrind: ==22549== Memcheck, a memory error detector
04-14 21:26:04.060 22549 22549 D Valgrind: ==22549== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al.
04-14 21:26:04.060 22549 22549 D Valgrind: ==22549== Using Valgrind-3.9.0.SVN and LibVEX; rerun with -h for copyright info
04-14 21:26:04.060 22549 22549 D Valgrind: ==22549== Command: /data/log
04-14 21:26:04.060 22549 22549 D Valgrind: ==22549== Parent PID: 20684
04-14 21:26:04.060 22549 22549 D Valgrind: ==22549==
04-14 21:26:04.660 22549 22549 D Test : About to do something stupid ;-)
04-14 21:26:04.660 22549 22549 D Valgrind: ==22549== Conditional jump or move depends on uninitialised value(s)
04-14 21:26:04.660 22549 22549 D Valgrind: ==22549== at 0x8048423: main (in /data/log)
04-14 21:26:04.660 22549 22549 D Valgrind: ==22549==
04-14 21:26:04.660 22549 22549 D Test : Exiting program
04-14 21:26:04.670 22549 22549 D Valgrind: ==22549==
04-14 21:26:04.670 22549 22549 D Valgrind: ==22549== HEAP SUMMARY:
04-14 21:26:04.670 22549 22549 D Valgrind: ==22549== in use at exit: 0 bytes in 0 blocks
04-14 21:26:04.670 22549 22549 D Valgrind: ==22549== total heap usage: 0 allocs, 0 frees, 0 bytes allocated
04-14 21:26:04.670 22549 22549 D Valgrind: ==22549==
04-14 21:26:04.670 22549 22549 D Valgrind: ==22549== All heap blocks were freed -- no leaks are possible
04-14 21:26:04.670 22549 22549 D Valgrind: ==22549==
04-14 21:26:04.670 22549 22549 D Valgrind: ==22549== For counts of detected and suppressed errors, rerun with: -v
04-14 21:26:04.670 22549 22549 D Valgrind: ==22549== Use --track-origins=yes to see where uninitialised values come from
04-14 21:26:04.670 22549 22549 D Valgrind: ==22549== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
I.e. Valgrind's output and the application debug output are put in the
same logging flow making it much easier to identify the scenario that
triggers the specific error Valgrind is reporting.
This is a first quick draft to get comments on what I did before
continuing further if the general principle is agreed upon (the
'\n' search in the sink code is pretty ugly but I did not see
another way to do so).
If this is something that will be accepted, I will send an updated
patch with some improvements (like the ability to configure the
logging channel / priority) and do more tests (for now I only tested
it on Android/x86).
Note that I seem to have broken the 'standard' stderr output (i.e. with
this patch it seems that only --log-devlog works :-) ).
Lionel
PS: and sorry also if the formatting is all messed up, it's been ages
since I sent 'plain text' mails and I had to look-up how to prevent
automatic line 'reflowing' :-)
Index: coregrind/m_libcprint.c
===================================================================
--- coregrind/m_libcprint.c (revision 13367)
+++ coregrind/m_libcprint.c (working copy)
@@ -52,8 +52,16 @@
After startup, the gdbserver monitor command might temporarily
set the fd of log_output_sink to -2 to indicate that output is
to be given to gdb rather than output to the startup fd */
-OutputSink VG_(log_output_sink) = { 2, False }; /* 2 = stderr */
-OutputSink VG_(xml_output_sink) = { -1, False }; /* disabled */
+OutputSink VG_(log_output_sink) = { 2, False /* 2 = stderr */
+#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
+ , False, 0
+#endif
+};
+OutputSink VG_(xml_output_sink) = { -1, False /* disabled */
+#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
+ , False, 0
+#endif
+};
/* Do the low-level send of a message to the logging sink. */
static
@@ -67,6 +75,40 @@
sink->fd = 2;
VG_(write)( sink->fd, msg, nbytes );
}
+#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
+ } else if (sink->is_devlog) {
+ if (sink->fd >= 0)
+ {
+ struct vg_iovec iov[4];
+ Int iovcnt = 3;
+ HChar prio = 3;
+ Int i;
+
+ iov[0].iov_base = &prio;
+ iov[0].iov_len = 1;
+ iov[1].iov_base = "Valgrind";
+ iov[1].iov_len = VG_(strlen)("Valgrind") + 1;
+ if (sink->buf_cnt) {
+ iovcnt += 1;
+ iov[2].iov_base = sink->buf;
+ iov[2].iov_len = sink->buf_cnt;
+ sink->buf_cnt = 0;
+ }
+ i = nbytes - 1;
+ while (i >= 0) {
+ if ((msg[i] == '\n') || (msg[i] == '\0')) break;
+ i -= 1;
+ }
+ if (i != (nbytes - 1)) {
+ sink->buf_cnt = nbytes - (i + 1);
+ VG_(memcpy)(sink->buf, &msg[i + 1], sink->buf_cnt);
+ }
+ iov[iovcnt-1].iov_base = msg;
+ iov[iovcnt-1].iov_len = i + 1;
+
+ VG_(writev)( sink->fd, iov, iovcnt );
+ }
+#else
} else {
/* sink->fd could have been set to -1 in the various
sys-wrappers for sys_fork, if --child-silent-after-fork=yes
@@ -76,6 +118,7 @@
VG_(write)( sink->fd, msg, nbytes );
else if (sink->fd == -2)
VG_(gdb_printf)("%s", msg);
+#endif
}
}
Index: coregrind/m_main.c
===================================================================
--- coregrind/m_main.c (revision 13367)
+++ coregrind/m_main.c (working copy)
@@ -138,6 +138,12 @@
" --log-fd=<number> log messages to file descriptor [2=stderr]\n"
" --log-file=<file> log messages to <file>\n"
" --log-socket=ipaddr:port log messages to socket ipaddr:port\n"
+#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
+" --log-devlog= log messages to Android logging framework\n"
+" --log-devlog=<prio,tag,device> log messages to Android logging framework\n"
+" with specified priority (V,D,I,W,E) / tag\n"
+" to given device (main,radio,...)\n"
+#endif
"\n"
" user options for Valgrind tools that report errors:\n"
" --xml=yes emit error output in XML (some tools only)\n"
@@ -394,6 +400,7 @@
--log-fd= for a fd to write to (default setting, fd = 2)
--log-file= for a file name to write to
--log-socket= for a socket to write to
+ --log-devlog= for logging to Android's framework
As a result of examining these and doing relevant socket/file
opening, a final fd is established. This is stored in
@@ -425,6 +432,9 @@
VgLogTo_Fd,
VgLogTo_File,
VgLogTo_Socket
+#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
+ , VgLogTo_Android
+#endif
} log_to = VgLogTo_Fd, // Where is logging output to be sent?
xml_to = VgLogTo_Fd; // Where is XML output to be sent?
@@ -434,6 +444,10 @@
const HChar* log_fsname_unexpanded = NULL;
const HChar* xml_fsname_unexpanded = NULL;
+#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
+ const HChar *log_devlog_parameters = NULL;
+#endif
+
/* Whether the user has explicitly provided --sigill-diagnostics.
If not explicitly given depends on general verbosity setting. */
Bool sigill_diag_set = False;
@@ -676,6 +690,12 @@
xml_to = VgLogTo_Socket;
}
+#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
+ else if VG_STR_CLO(arg, "--log-devlog", log_devlog_parameters) {
+ log_to = VgLogTo_Android;
+ }
+#endif
+
else if VG_STR_CLO(arg, "--xml-user-comment",
VG_(clo_xml_user_comment)) {}
@@ -951,6 +971,20 @@
break;
}
+#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
+ case VgLogTo_Android: {
+ sres = VG_(open)("/dev/log/main", VKI_O_WRONLY, 0);
+ if (!sr_isError(sres)) {
+ tmp_log_fd = sr_Res(sres);
+ VG_(log_output_sink).is_devlog = True;
+ } else {
+ /* Go back to stderr logging */
+ tmp_log_fd = 2;
+ }
+ break;
+ }
+#endif
+
case VgLogTo_Socket: {
vg_assert(log_fsname_unexpanded != NULL);
vg_assert(VG_(strlen)(log_fsname_unexpanded) <= 900); /* paranoia */
@@ -1063,6 +1097,9 @@
"into safe range, using stderr\n");
VG_(log_output_sink).fd = 2; // stderr
VG_(log_output_sink).is_socket = False;
+#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
+ VG_(log_output_sink).is_devlog = False;
+#endif
} else {
VG_(log_output_sink).fd = tmp_log_fd;
VG_(fcntl)(VG_(log_output_sink).fd, VKI_F_SETFD, VKI_FD_CLOEXEC);
Index: coregrind/pub_core_libcprint.h
===================================================================
--- coregrind/pub_core_libcprint.h (revision 13367)
+++ coregrind/pub_core_libcprint.h (working copy)
@@ -41,7 +41,15 @@
/* An output file descriptor wrapped up with a Bool indicating whether
or not the fd is a socket. */
typedef
- struct { Int fd; Bool is_socket; }
+ struct {
+ Int fd;
+ Bool is_socket;
+#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
+ Bool is_devlog;
+ Int buf_cnt;
+ HChar buf[512];
+#endif
+ }
OutputSink;
/* And the destinations for normal and XML output. */
Index: coregrind/m_libcfile.c
===================================================================
--- coregrind/m_libcfile.c (revision 13367)
+++ coregrind/m_libcfile.c (working copy)
@@ -191,6 +191,22 @@
return ret;
}
+#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
+/* Special for Android to write to /dev/log/XXX */
+Int VG_(writev) ( Int fd, const struct vg_iovec* iov, Int iovcnt)
+{
+ Int ret;
+ SysRes res = VG_(do_syscall3)(__NR_writev, fd, (UWord)iov, iovcnt);
+ if (sr_isError(res)) {
+ ret = - (Int)(Word)sr_Err(res);
+ vg_assert(ret < 0);
+ } else {
+ ret = (Int)(Word)sr_Res(res);
+ vg_assert(ret >= 0);
+ }
+ return ret;
+}
+#endif
Int VG_(pipe) ( Int fd[2] )
{
Index: include/pub_tool_libcfile.h
===================================================================
--- include/pub_tool_libcfile.h (revision 13367)
+++ include/pub_tool_libcfile.h (working copy)
@@ -68,6 +68,13 @@
ULong ctime_nsec;
};
+#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
+struct vg_iovec {
+ void *iov_base;
+ Int iov_len;
+};
+#endif
+
extern SysRes VG_(mknod) ( const HChar* pathname, Int mode, UWord dev );
extern SysRes VG_(open) ( const HChar* pathname, Int flags, Int mode );
/* fd_open words like the open(2) system call:
@@ -76,6 +83,9 @@
extern void VG_(close) ( Int fd );
extern Int VG_(read) ( Int fd, void* buf, Int count);
extern Int VG_(write) ( Int fd, const void* buf, Int count);
+#if defined(VGPV_arm_linux_android) || defined(VGPV_x86_linux_android)
+extern Int VG_(writev) ( Int fd, const struct vg_iovec* iov, Int iovcnt);
+#endif
extern Int VG_(pipe) ( Int fd[2] );
extern Off64T VG_(lseek) ( Int fd, Off64T offset, Int whence );
|
|
From: Rich C. <rc...@wi...> - 2013-04-12 05:18:28
|
valgrind revision: 13367
VEX revision: 2706
C compiler: i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)
GDB: GNU gdb 6.3.50-20050815 (Apple version gdb-1515) (Sat Jan 15 08:30:16 UTC 2011)
Assembler:
C library: unknown
uname -mrs: Darwin 10.8.0 i386
Vendor version: unknown
Nightly build on macx86 ( Darwin 10.8.0 i386 )
Started at 2013-04-11 23:35:00 CDT
Ended at 2013-04-12 00:18:09 CDT
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 512 tests, 82 stderr failures, 4 stdout failures, 3 stderrB failures, 3 stdoutB failures, 1 post failure ==
gdbserver_tests/mchelp (stdoutB)
gdbserver_tests/mchelp (stderrB)
gdbserver_tests/mcinvokeRU (stdoutB)
gdbserver_tests/mcinvokeRU (stderrB)
gdbserver_tests/mcinvokeWS (stdoutB)
gdbserver_tests/mcinvokeWS (stderrB)
memcheck/tests/accounting (stderr)
memcheck/tests/badpoll (stderr)
memcheck/tests/big_blocks_freed_list (stderr)
memcheck/tests/bug287260 (stderr)
memcheck/tests/darwin/aio (stderr)
memcheck/tests/darwin/pth-supp (stderr)
memcheck/tests/darwin/scalar (stderr)
memcheck/tests/deep-backtrace (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/leak-segv-jmp (stderr)
memcheck/tests/lks (stderr)
memcheck/tests/memcmptest (stderr)
memcheck/tests/mismatches (stderr)
memcheck/tests/null_socket (stdout)
memcheck/tests/origin5-bz2 (stderr)
memcheck/tests/overlap (stdout)
memcheck/tests/overlap (stderr)
memcheck/tests/sem (stderr)
memcheck/tests/sendmsg (stderr)
memcheck/tests/test-plo-no (stderr)
memcheck/tests/varinfo3 (stderr)
memcheck/tests/varinfo5 (stderr)
memcheck/tests/vbit-test/vbit-test (stderr)
memcheck/tests/vcpu_fnfns (stdout)
memcheck/tests/writev1 (stderr)
massif/tests/big-alloc (post)
massif/tests/pages_as_heap (stderr)
none/tests/allexec32 (stderr)
none/tests/allexec64 (stderr)
none/tests/async-sigs (stderr)
none/tests/cmdline5 (stderr)
none/tests/execve (stderr)
none/tests/faultstatus (stderr)
none/tests/mmap_fcntl_bug (stderr)
none/tests/nodir (stderr)
none/tests/pth_blockedsig (stderr)
none/tests/require-text-symbol-2 (stderr)
none/tests/rlimit64_nofile (stderr)
none/tests/shell_nosuchfile (stderr)
none/tests/x86/cse_fail (stdout)
helgrind/tests/annotate_hbefore (stderr)
helgrind/tests/annotate_rwlock (stderr)
helgrind/tests/annotate_smart_pointer (stderr)
helgrind/tests/cond_init_destroy (stderr)
helgrind/tests/cond_timedwait_invalid (stderr)
helgrind/tests/free_is_write (stderr)
helgrind/tests/hg01_all_ok (stderr)
helgrind/tests/hg02_deadlock (stderr)
helgrind/tests/hg03_inherit (stderr)
helgrind/tests/hg04_race (stderr)
helgrind/tests/hg05_race2 (stderr)
helgrind/tests/hg06_readshared (stderr)
helgrind/tests/locked_vs_unlocked1_fwd (stderr)
helgrind/tests/locked_vs_unlocked1_rev (stderr)
helgrind/tests/locked_vs_unlocked2 (stderr)
helgrind/tests/locked_vs_unlocked3 (stderr)
helgrind/tests/pth_cond_destroy_busy (stderr)
helgrind/tests/pth_destroy_cond (stderr)
helgrind/tests/rwlock_race (stderr)
helgrind/tests/rwlock_test (stderr)
helgrind/tests/t2t_laog (stderr)
helgrind/tests/tc01_simple_race (stderr)
helgrind/tests/tc02_simple_tls (stderr)
helgrind/tests/tc03_re_excl (stderr)
helgrind/tests/tc04_free_lock (stderr)
helgrind/tests/tc05_simple_race (stderr)
helgrind/tests/tc06_two_races (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
helgrind/tests/tc07_hbl1 (stderr)
helgrind/tests/tc08_hbl2 (stderr)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc10_rec_lock (stderr)
helgrind/tests/tc11_XCHG (stderr)
helgrind/tests/tc12_rwl_trivial (stderr)
helgrind/tests/tc13_laog1 (stderr)
helgrind/tests/tc14_laog_dinphils (stderr)
helgrind/tests/tc15_laog_lockdel (stderr)
helgrind/tests/tc16_byterace (stderr)
helgrind/tests/tc17_sembar (stderr)
helgrind/tests/tc18_semabuse (stderr)
helgrind/tests/tc19_shadowmem (stderr)
helgrind/tests/tc21_pthonce (stderr)
helgrind/tests/tc23_bogus_condwait (stderr)
helgrind/tests/tc24_nonzero_sem (stderr)
drd/tests/annotate_barrier_xml (stderr)
drd/tests/hg03_inherit (stderr)
drd/tests/tc23_bogus_condwait (stderr)
=================================================
./valgrind-new/drd/tests/annotate_barrier_xml.stderr.diff
=================================================
--- annotate_barrier_xml.stderr.exp 2013-04-11 23:56:39.000000000 -0500
+++ annotate_barrier_xml.stderr.out 2013-04-12 00:15:12.000000000 -0500
@@ -188,7 +188,7 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>start_thread</fn>
+ <fn>_pthread_start</fn>
</frame>
</stack>
<auxwhat>Address 0x........ is at offset 0 from 0x.........</auxwhat>
=================================================
./valgrind-new/drd/tests/hg03_inherit.stderr.diff
=================================================
--- hg03_inherit.stderr.exp 2013-04-11 23:56:38.000000000 -0500
+++ hg03_inherit.stderr.out 2013-04-12 00:16:13.000000000 -0500
@@ -12,5 +12,10 @@
Location 0x........ is 0 bytes inside shared[1],
a global variable declared at hg03_inherit.c:11
+Conflicting load by thread 3 at 0x........ size 4
+ at 0x........: ???
+ by 0x........: _pthread_free_pthread_onstack (in /...libc...)
+Allocation context: Data section of /usr/lib/libSystem.B.dylib
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
+
+ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-darwin-amd64
=================================================
--- tc23_bogus_condwait.stderr.exp-darwin-amd64 2013-04-11 23:56:38.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2013-04-12 00:17:40.000000000 -0500
@@ -70,7 +70,7 @@
Process terminating with default action of signal 6 (SIGABRT)
at 0x........: __kill (in /...libc...)
- by 0x........: __assert_rtn (in /...libc...)
- by 0x........: main (tc23_bogus_condwait.c:86)
+ by 0x........: raise (in /...libc...)
+ by 0x........: abort (in /...libc...)
ERROR SUMMARY: 10 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-darwin-x86
=================================================
--- tc23_bogus_condwait.stderr.exp-darwin-x86 2013-04-11 23:56:39.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2013-04-12 00:17:40.000000000 -0500
@@ -66,5 +66,11 @@
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:53)
+Assertion failed: (!r), function main, file tc23_bogus_condwait.c, line 86.
+
+Process terminating with default action of signal 6 (SIGABRT)
+ at 0x........: __kill (in /...libc...)
+ by 0x........: raise (in /...libc...)
+ by 0x........: abort (in /...libc...)
ERROR SUMMARY: 10 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-linux-ppc
=================================================
--- tc23_bogus_condwait.stderr.exp-linux-ppc 2013-04-11 23:56:39.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2013-04-12 00:17:40.000000000 -0500
@@ -3,6 +3,13 @@
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:69)
+Mutex not locked: mutex 0x........, recursion count 0, owner 0.
+ at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
+ by 0x........: main (tc23_bogus_condwait.c:72)
+mutex 0x........ was first observed at:
+ at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+ by 0x........: main (tc23_bogus_condwait.c:51)
+
Thread 3:
Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
@@ -11,15 +18,11 @@
cond 0x........ was first observed at:
at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:56)
-
-Thread 1:
-Mutex not locked: mutex 0x........, recursion count 0, owner 0.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:72)
mutex 0x........ was first observed at:
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:51)
+Thread 1:
The object at address 0x........ is not a mutex.
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:75)
@@ -27,19 +30,6 @@
at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:57)
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:24)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:57)
-
-Thread 1:
Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2.
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:78)
@@ -50,7 +40,7 @@
Thread 3:
Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:28)
+ by 0x........: rescue_me (tc23_bogus_condwait.c:24)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
@@ -76,5 +66,11 @@
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:53)
+Assertion failed: (!r), function main, file tc23_bogus_condwait.c, line 86.
+
+Process terminating with default action of signal 6 (SIGABRT)
+ at 0x........: __kill (in /...libc...)
+ by 0x........: raise (in /...libc...)
+ by 0x........: abort (in /...libc...)
-ERROR SUMMARY: 11 errors from 9 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 10 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-linux-x86
=================================================
--- tc23_bogus_condwait.stderr.exp-linux-x86 2013-04-11 23:56:38.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2013-04-12 00:17:40.000000000 -0500
@@ -3,16 +3,6 @@
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:69)
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:20)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-
-Thread 1:
Mutex not locked: mutex 0x........, recursion count 0, owner 0.
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:72)
@@ -23,7 +13,7 @@
Thread 3:
Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:24)
+ by 0x........: rescue_me (tc23_bogus_condwait.c:20)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
@@ -40,19 +30,6 @@
at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:57)
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:28)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:57)
-
-Thread 1:
Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2.
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:78)
@@ -63,7 +40,7 @@
Thread 3:
Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:32)
+ by 0x........: rescue_me (tc23_bogus_condwait.c:24)
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
cond 0x........ was first observed at:
at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
@@ -89,5 +66,11 @@
at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:53)
+Assertion failed: (!r), function main, file tc23_bogus_condwait.c, line 86.
+
+Process terminating with default action of signal 6 (SIGABRT)
+ at 0x........: __kill (in /...libc...)
+ by 0x........: raise (in /...libc...)
+ by 0x........: abort (in /...libc...)
-ERROR SUMMARY: 12 errors from 10 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 10 errors from 8 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/gdbserver_tests/mchelp.stderrB.diff
=================================================
--- mchelp.stderrB.exp 2013-04-11 23:56:53.000000000 -0500
+++ mchelp.stderrB.out 2013-04-12 00:04:08.000000000 -0500
@@ -1,5 +0,0 @@
-sending command help to pid ....
-sending command help debug to pid ....
-sending command v.kill to pid ....
-readchar: Got EOF
-error reading packet
=================================================
./valgrind-new/gdbserver_tests/mchelp.stdoutB.diff
=================================================
--- mchelp.stdoutB.exp 2013-04-11 23:56:53.000000000 -0500
+++ mchelp.stdoutB.out 2013-04-12 00:04:08.000000000 -0500
@@ -1,96 +0,0 @@
-general valgrind monitor commands:
- help [debug] : monitor command help. With debug: + debugging commands
- v.wait [<ms>] : sleep <ms> (default 0) then continue
- v.info all_errors : show all errors found so far
- v.info last_error : show last error found
- v.info n_errs_found : show the nr of errors found so far
- v.info open_fds : show open file descriptors (only if --track-fds=yes)
- v.kill : kill the Valgrind process
- v.set gdb_output : set valgrind output to gdb
- v.set log_output : set valgrind output to log
- v.set mixed_output : set valgrind output to log, interactive output to gdb
- v.set merge-recursive-frames <num> : merge recursive calls in max <num> frames
- v.set vgdb-error <errornr> : debug me at error >= <errornr>
-
-memcheck monitor commands:
- get_vbits <addr> [<len>]
- returns validity bits for <len> (or 1) bytes at <addr>
- bit values 0 = valid, 1 = invalid, __ = unaddressable byte
- Example: get_vbits 0x........ 10
- make_memory [noaccess|undefined
- |defined|Definedifaddressable] <addr> [<len>]
- mark <len> (or 1) bytes at <addr> with the given accessibility
- check_memory [addressable|defined] <addr> [<len>]
- check that <len> (or 1) bytes at <addr> have the given accessibility
- and outputs a description of <addr>
- leak_check [full*|summary]
- [kinds kind1,kind2,...|reachable|possibleleak*|definiteleak]
- [increased*|changed|any]
- [unlimited*|limited <max_loss_records_output>]
- * = defaults
- where kind is one of definite indirect possible reachable all none
- Examples: leak_check
- leak_check summary any
- leak_check full kinds indirect,possible
- leak_check full reachable any limited 100
- block_list <loss_record_nr>
- after a leak search, shows the list of blocks of <loss_record_nr>
- who_points_at <addr> [<len>]
- shows places pointing inside <len> (default 1) bytes at <addr>
- (with len 1, only shows "start pointers" pointing exactly to <addr>,
- with len > 1, will also show "interior pointers")
-
-general valgrind monitor commands:
- help [debug] : monitor command help. With debug: + debugging commands
- v.wait [<ms>] : sleep <ms> (default 0) then continue
- v.info all_errors : show all errors found so far
- v.info last_error : show last error found
- v.info n_errs_found : show the nr of errors found so far
- v.info open_fds : show open file descriptors (only if --track-fds=yes)
- v.kill : kill the Valgrind process
- v.set gdb_output : set valgrind output to gdb
- v.set log_output : set valgrind output to log
- v.set mixed_output : set valgrind output to log, interactive output to gdb
- v.set merge-recursive-frames <num> : merge recursive calls in max <num> frames
- v.set vgdb-error <errornr> : debug me at error >= <errornr>
-debugging valgrind internals monitor commands:
- v.do expensive_sanity_check_general : do an expensive sanity check now
- v.info gdbserver_status : show gdbserver status
- v.info memory [aspacemgr] : show valgrind heap memory stats
- (with aspacemgr arg, also shows valgrind segments on log ouput)
- v.info exectxt : show stacktraces and stats of all execontexts
- v.info scheduler : show valgrind thread state and stacktrace
- v.set debuglog <level> : set valgrind debug log level to <level>
- v.translate <addr> [<traceflags>] : debug translation of <addr> with <traceflags>
- (default traceflags 0b00100000 : show after instrumentation)
- An additional flag 0b100000000 allows to show gdbserver instrumentation
-
-memcheck monitor commands:
- get_vbits <addr> [<len>]
- returns validity bits for <len> (or 1) bytes at <addr>
- bit values 0 = valid, 1 = invalid, __ = unaddressable byte
- Example: get_vbits 0x........ 10
- make_memory [noaccess|undefined
- |defined|Definedifaddressable] <addr> [<len>]
- mark <len> (or 1) bytes at <addr> with the given accessibility
- check_memory [addressable|defined] <addr> [<len>]
- check that <len> (or 1) bytes at <addr> have the given accessibility
- and outputs a description of <addr>
- leak_check [full*|summary]
- [kinds kind1,kind2,...|reachable|possibleleak*|definiteleak]
- [increased*|changed|any]
- [unlimited*|limited <max_loss_records_output>]
- * = defaults
- where kind is one of definite indirect possible reachable all none
- Examples: leak_check
- leak_check summary any
- leak_check full kinds indirect,possible
- leak_check full reachable any limited 100
- block_list <loss_record_nr>
- after a leak search, shows the list of blocks of <loss_record_nr>
- who_points_at <addr> [<len>]
- shows places pointing inside <len> (default 1) bytes at <addr>
- (with len 1, only shows "start pointers" pointing exactly to <addr>,
- with len > 1, will also show "interior pointers")
-
-monitor command request to kill this process
=================================================
./valgrind-new/gdbserver_tests/mcinvokeRU.stderrB.diff
=================================================
--- mcinvokeRU.stderrB.exp 2013-04-11 23:56:53.000000000 -0500
+++ mcinvokeRU.stderrB.out 2013-04-12 00:04:39.000000000 -0500
@@ -1,14 +1,11 @@
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.kill to pid ....
-readchar: Got EOF
-error reading packet
+./invoker: line 17: 81602 Bus error ./vgdb "$@"
+./invoker: line 17: 81607 Bus error ./vgdb "$@"
+./invoker: line 17: 81609 Bus error ./vgdb "$@"
+./invoker: line 17: 81611 Bus error ./vgdb "$@"
+./invoker: line 17: 81613 Bus error ./vgdb "$@"
+./invoker: line 17: 81615 Bus error ./vgdb "$@"
+./invoker: line 17: 81617 Bus error ./vgdb "$@"
+./invoker: line 17: 81619 Bus error ./vgdb "$@"
+./invoker: line 17: 81621 Bus error ./vgdb "$@"
+./invoker: line 17: 81623 Bus error ./vgdb "$@"
+./invoker: line 19: 81625 Bus error ./vgdb "$@" -c v.kill
=================================================
./valgrind-new/gdbserver_tests/mcinvokeRU.stdoutB.diff
=================================================
--- mcinvokeRU.stdoutB.exp 2013-04-11 23:56:53.000000000 -0500
+++ mcinvokeRU.stdoutB.out 2013-04-12 00:04:38.000000000 -0500
@@ -1,23 +0,0 @@
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-monitor command request to kill this process
=================================================
./valgrind-new/gdbserver_tests/mcinvokeWS.stderrB.diff
=================================================
--- mcinvokeWS.stderrB.exp 2013-04-11 23:56:53.000000000 -0500
+++ mcinvokeWS.stderrB.out 2013-04-12 00:05:09.000000000 -0500
@@ -1,14 +1,11 @@
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.wait 0 to pid ....
-sending command v.kill to pid ....
-readchar: Got EOF
-error reading packet
+./invoker: line 17: 81743 Bus error ./vgdb "$@"
+./invoker: line 17: 81745 Bus error ./vgdb "$@"
+./invoker: line 17: 81747 Bus error ./vgdb "$@"
+./invoker: line 17: 81749 Bus error ./vgdb "$@"
+./invoker: line 17: 81751 Bus error ./vgdb "$@"
+./invoker: line 17: 81753 Bus error ./vgdb "$@"
+./invoker: line 17: 81755 Bus error ./vgdb "$@"
+./invoker: line 17: 81757 Bus error ./vgdb "$@"
+./invoker: line 17: 81759 Bus error ./vgdb "$@"
+./invoker: line 17: 81761 Bus error ./vgdb "$@"
+./invoker: line 19: 81763 Bus error ./vgdb "$@" -c v.kill
=================================================
./valgrind-new/gdbserver_tests/mcinvokeWS.stdoutB.diff
=================================================
--- mcinvokeWS.stdoutB.exp 2013-04-11 23:56:53.000000000 -0500
+++ mcinvokeWS.stdoutB.out 2013-04-12 00:05:09.000000000 -0500
@@ -1,23 +0,0 @@
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-gdbserver: continuing in 0 ms ...
-gdbserver: continuing after wait ...
-monitor command request to kill this process
=================================================
./valgrind-new/helgrind/tests/annotate_hbefore.stderr.diff
=================================================
--- annotate_hbefore.stderr.exp 2013-04-11 23:56:37.000000000 -0500
+++ annotate_hbefore.stderr.out 2013-04-12 00:13:37.000000000 -0500
@@ -0,0 +1,954 @@
+---Thread-Announcement------------------------------------------
+
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+---Thread-Announcement------------------------------------------
+
+Thread #x was created
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_hbefore.c:367)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_hbefore.c:367)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_hbefore.c:367)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_hbefore.c:367)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 2 at 0x........ by thread #x
+Locks held: none
+ ...
+
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/annotate_rwlock.stderr.diff
=================================================
--- annotate_rwlock.stderr.exp 2013-04-11 23:56:37.000000000 -0500
+++ annotate_rwlock.stderr.out 2013-04-12 00:13:39.000000000 -0500
@@ -1,17 +1,191 @@
---Thread-Announcement------------------------------------------
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+---Thread-Announcement------------------------------------------
+
Thread #x was created
...
by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_rwlock.c:164)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_rwlock.c:164)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_rwlock.c:164)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (annotate_rwlock.c:164)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 2 at 0x........ by thread #x
+Locks held: none
+ ...
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/annotate_smart_pointer.stderr.diff
=================================================
--- annotate_smart_pointer.stderr.exp 2013-04-11 23:56:37.000000000 -0500
+++ annotate_smart_pointer.stderr.out 2013-04-12 00:13:42.000000000 -0500
@@ -1,4 +1,1138 @@
+---Thread-Announcement------------------------------------------
+
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+---Thread-Announcement------------------------------------------
+
+Thread #x was created
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: Thread::Create(void* (*)(void*), void*) (annotate_smart_pointer.cpp:145)
+ by 0x........: main (annotate_smart_pointer.cpp:319)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: Thread::Create(void* (*)(void*), void*) (annotate_smart_pointer.cpp:145)
+ by 0x........: main (annotate_smart_pointer.cpp:319)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: Thread::Create(void* (*)(void*), void*) (annotate_smart_pointer.cpp:145)
+ by 0x........: main (annotate_smart_pointer.cpp:319)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: Thread::Create(void* (*)(void*), void*) (annotate_smart_pointer.cpp:145)
+ by 0x........: main (annotate_smart_pointer.cpp:319)
+
+----------------------------------------------------------------
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/cond_init_destroy.stderr.diff
=================================================
--- cond_init_destroy.stderr.exp 2013-04-11 23:56:37.000000000 -0500
+++ cond_init_destroy.stderr.out 2013-04-12 00:13:43.000000000 -0500
@@ -1,3 +1,54 @@
+---Thread-Announcement------------------------------------------
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x: pthread_cond_destroy: destruction of unknown cond var
+ at 0x........: pthread_cond_destroy_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_cond_destroy (hg_intercepts.c:...)
+ by 0x........: main (cond_init_destroy.c:6)
+
+
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/cond_timedwait_invalid.stderr.diff
=================================================
--- cond_timedwait_invalid.stderr.exp 2013-04-11 23:56:37.000000000 -0500
+++ cond_timedwait_invalid.stderr.out 2013-04-12 00:13:44.000000000 -0500
@@ -5,11 +5,51 @@
----------------------------------------------------------------
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
Thread #x's call to pthread_cond_timedwait failed
with error code 22 (EINVAL: Invalid argument)
at 0x........: pthread_cond_timedwait_WRK (hg_intercepts.c:...)
- by 0x........: pthread_cond_timedwait@* (hg_intercepts.c:...)
+ by 0x........: pthread_cond_timedwait$* (hg_intercepts.c:...)
by 0x........: main (cond_timedwait_invalid.c:22)
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/free_is_write.stderr.diff
=================================================
--- free_is_write.stderr.exp 2013-04-11 23:56:37.000000000 -0500
+++ free_is_write.stderr.out 2013-04-12 00:13:46.000000000 -0500
@@ -1,16 +1,277 @@
+---Thread-Announcement------------------------------------------
+
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
Start.
---Thread-Announcement------------------------------------------
Thread #x was created
...
by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
by 0x........: main (free_is_write.c:32)
----Thread-Announcement------------------------------------------
+----------------------------------------------------------------
-Thread #x is the program's root thread
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (free_is_write.c:32)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (free_is_write.c:32)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (free_is_write.c:32)
+
+----------------------------------------------------------------
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/hg01_all_ok.stderr.diff
=================================================
--- hg01_all_ok.stderr.exp 2013-04-11 23:56:37.000000000 -0500
+++ hg01_all_ok.stderr.out 2013-04-12 00:13:47.000000000 -0500
@@ -1,3 +1,1190 @@
+---Thread-Announcement------------------------------------------
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+---Thread-Announcement------------------------------------------
+
+Thread #x was created
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg01_all_ok.c:25)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg01_all_ok.c:25)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg01_all_ok.c:25)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg01_all_ok.c:25)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 2 at 0x........ by thread #x
+Locks held: none
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/hg02_deadlock.stderr.diff
=================================================
--- hg02_deadlock.stderr.exp 2013-04-11 23:56:37.000000000 -0500
+++ hg02_deadlock.stderr.out 2013-04-12 00:13:48.000000000 -0500
@@ -1,14 +1,334 @@
---Thread-Announcement------------------------------------------
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+---Thread-Announcement------------------------------------------
+
+Thread #x was created
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg02_deadlock.c:35)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg02_deadlock.c:35)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg02_deadlock.c:35)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg02_deadlock.c:35)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 2 at 0x........ by thread #x
+Locks held: none
+ ...
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/hg03_inherit.stderr.diff
=================================================
--- hg03_inherit.stderr.exp 2013-04-11 23:56:37.000000000 -0500
+++ hg03_inherit.stderr.out 2013-04-12 00:13:52.000000000 -0500
@@ -1,15 +1,619 @@
---Thread-Announcement------------------------------------------
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+---Thread-Announcement------------------------------------------
+
Thread #x was created
...
by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg03_inherit.c:44)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 4 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg03_inherit.c:44)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg03_inherit.c:44)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg03_inherit.c:44)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 2 at 0x........ by thread #x
+Locks held: none
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/hg04_race.stderr.diff
=================================================
--- hg04_race.stderr.exp 2013-04-11 23:56:37.000000000 -0500
+++ hg04_race.stderr.out 2013-04-12 00:13:54.000000000 -0500
@@ -1,43 +1,347 @@
---Thread-Announcement------------------------------------------
-Thread #x was created
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
+ ...
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (hg04_race.c:21)
---Thread-Announcement------------------------------------------
Thread #x was created
...
by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
by 0x........: main (hg04_race.c:19)
----------------------------------------------------------------
Possible data race during read of size 4 at 0x........ by thread #x
Locks held: none
- at 0x........: th (hg04_race.c:10)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
...
This conflicts with a previous write of size 4 by thread #x
Locks held: none
- at 0x........: th (hg04_race.c:10)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg04_race.c:19)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
...
-Location 0x........ is 0 bytes inside global var "shared"
-declared at hg04_race.c:6
+This conflicts with a previous write of size 4 by thread #x
+Locks held: none
+ ...
+ by 0x........: pthread_create_WRK (hg_intercepts.c:...)
+ by 0x........: pthread_create (hg_intercepts.c:...)
+ by 0x........: main (hg04_race.c:19)
+
+----------------------------------------------------------------
+
+Possible data race during read of size 1 at 0x........ by thread #x
+Locks held: none
+ ...
+
+This conflicts with a previous write of size 4 by thread #x
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/hg05_race2.stderr.diff
=================================================
--- hg05_race2.stderr.exp 2013-04-11 23:56:37.000000000 -0500
+++ hg05_race2.stderr.out 2013-04-12 00:13:56.000000000 -0500
@@ -1,43 +1,347 @@
---Thread-Announcement------------------------------------------
-Thread #x was created
+Thread #x is the program's root thread
+
+----------------------------------------------------------------
+
+Thread #x's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
+ ...
+
+-----------------------------------------...
[truncated message content] |
|
From: Philippe W. <phi...@sk...> - 2013-04-12 03:31:50
|
valgrind revision: 13367 VEX revision: 2706 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) GDB: GNU gdb (GDB) Fedora (7.5.1-37.fc18) Assembler: GNU assembler version 2.23.51.0.1-7.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.7.2-204.fc18.ppc64 ppc64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on gcc110 ( Fedora release 18 (Spherical Cow), ppc64 ) Started at 2013-04-11 20:00:06 PDT Ended at 2013-04-11 20:31:40 PDT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 552 tests, 31 stderr failures, 3 stdout failures, 0 stderrB failures, 0 stdoutB failures, 2 post failures == memcheck/tests/linux/getregset (stdout) memcheck/tests/linux/getregset (stderr) memcheck/tests/ppc64/power_ISA2_05 (stdout) memcheck/tests/supp_unknown (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) massif/tests/big-alloc (post) massif/tests/deep-D (post) helgrind/tests/annotate_rwlock (stderr) helgrind/tests/free_is_write (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/pth_destroy_cond (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Rich C. <rc...@wi...> - 2013-04-12 02:55:45
|
valgrind revision: 13367
VEX revision: 2706
C compiler: gcc (SUSE Linux) 4.7.2 20130108 [gcc-4_7-branch revision 195012]
GDB: GNU gdb (GDB) SUSE (7.5.1-2.1.1)
Assembler: GNU assembler (GNU Binutils; openSUSE 12.3) 2.23.1
C library: GNU C Library (GNU libc) stable release version 2.17 (git c758a6861537)
uname -mrs: Linux 3.7.9-1.1-desktop x86_64
Vendor version: Welcome to openSUSE 12.3 "Dartmouth" Beta 1 - Kernel %r (%t).
Nightly build on ultra ( gcc 4.5.1 Linux 3.7.9-1.1-desktop x86_64 )
Started at 2013-04-11 21:30:01 CDT
Ended at 2013-04-11 21:55:35 CDT
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 645 tests, 1 stderr failure, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/origin5-bz2 (stderr)
=================================================
./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2013-04-11 21:43:34.438325796 -0500
+++ mssnapshot.stderrB.out 2013-04-11 21:47:03.711514360 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=ecb8ef1a6904a2a3ec60a527f415f520c8636158"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=ef5f5dbcb2398c608fef7884e1bfb65be3b5f0ef"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=bd1473e8e6a4c10a14731b5be4b35b4e87db2af7"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2013-04-11 21:43:30.050447823 -0500
+++ origin5-bz2.stderr.out 2013-04-11 21:48:36.581939905 -0500
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- 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:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2013-04-11 21:43:29.907451800 -0500
+++ origin5-bz2.stderr.out 2013-04-11 21:48:36.581939905 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2013-04-11 21:43:29.900451994 -0500
+++ origin5-bz2.stderr.out 2013-04-11 21:48:36.581939905 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2013-04-11 21:43:30.196443763 -0500
+++ origin5-bz2.stderr.out 2013-04-11 21:48:36.581939905 -0500
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2013-04-11 21:43:30.205443512 -0500
+++ origin5-bz2.stderr.out 2013-04-11 21:48:36.581939905 -0500
@@ -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........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
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........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
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........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
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........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
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........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
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........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
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........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
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........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
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........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
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........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
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
<truncated beyond 100 lines>
=================================================
./valgrind-old/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2013-04-11 21:31:11.310991721 -0500
+++ mssnapshot.stderrB.out 2013-04-11 21:34:46.484007978 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=ecb8ef1a6904a2a3ec60a527f415f520c8636158"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=ef5f5dbcb2398c608fef7884e1bfb65be3b5f0ef"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=bd1473e8e6a4c10a14731b5be4b35b4e87db2af7"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2013-04-11 21:31:03.547207622 -0500
+++ origin5-bz2.stderr.out 2013-04-11 21:36:19.026434444 -0500
@@ -75,17 +75,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- 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:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -131,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2013-04-11 21:31:00.430294300 -0500
+++ origin5-bz2.stderr.out 2013-04-11 21:36:19.026434444 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2013-04-11 21:31:03.549207567 -0500
+++ origin5-bz2.stderr.out 2013-04-11 21:36:19.026434444 -0500
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2013-04-11 21:31:00.535291381 -0500
+++ origin5-bz2.stderr.out 2013-04-11 21:36:19.026434444 -0500
@@ -12,7 +12,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2013-04-11 21:31:04.685175977 -0500
+++ origin5-bz2.stderr.out 2013-04-11 21:36:19.026434444 -0500
@@ -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........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,7 @@
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........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,7 @@
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........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,7 @@
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........: mainSort (origin5-bz2.c:2820)
@@ -39,7 +39,7 @@
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........: mainSort (origin5-bz2.c:2823)
@@ -50,7 +50,7 @@
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........: mainSort (origin5-bz2.c:2854)
@@ -61,7 +61,7 @@
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........: mainSort (origin5-bz2.c:2858)
@@ -72,7 +72,7 @@
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........: mainSort (origin5-bz2.c:2963)
@@ -83,7 +83,7 @@
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........: mainSort (origin5-bz2.c:2964)
@@ -94,7 +94,7 @@
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........: fallbackSort (origin5-bz2.c:2269)
@@ -105,7 +105,7 @@
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
<truncated beyond 100 lines>
|
|
From: Christian B. <bor...@de...> - 2013-04-12 02:17:19
|
valgrind revision: 13367 VEX revision: 2706 C compiler: gcc (GCC) 4.6.1 20110908 (Red Hat 4.6.1-9bb4) GDB: GNU gdb (GDB) Fedora (7.5-1bb1.fc15) Assembler: GNU assembler version 2.21.51.0.6-6bb6.fc15 20110118 C library: GNU C Library stable release version 2.14.1 uname -mrs: Linux 3.8.2-60.x.20130313-s390xperformance s390x Vendor version: unknown Nightly build on fedora390 ( Fedora 15 with devel libc/toolchain on z196 (s390x) ) Started at 2013-04-12 03:45:02 CEST Ended at 2013-04-12 04:17:33 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 633 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/linux/timerfd-syscall (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Christian B. <bor...@de...> - 2013-04-12 02:14:50
|
valgrind revision: 13367 VEX revision: 2706 C compiler: gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973] GDB: GNU gdb (GDB) SUSE (7.3-0.6.1) Assembler: GNU assembler (GNU Binutils; SUSE Linux Enterprise 11) 2.21.1 C library: GNU C Library stable release version 2.11.3 (20110527) uname -mrs: Linux 3.0.58-0.6.6-default s390x Vendor version: Welcome to SUSE Linux Enterprise Server 11 SP2 (s390x) - Kernel %r (%t). Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2013-04-12 03:45:01 CEST Ended at 2013-04-12 04:14:40 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 632 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == |
|
From: Niall D. <ndo...@bl...> - 2013-04-11 20:40:04
|
> As part of delving into such, I have put together a whole program path profiler > which is: temporally-preserving, lossless, and capable of capturing long (single- > threaded) application traces. It is currently based upon PIN (www.pintool.org) : > x86_64 Linux, 64-bit only at present. One item on my personal 'todo' list is to > determine whether or not such could be hooked up to valgrind instead of PIN; if > so, I would love to contribute it to valgrind for general use. > > It is available at: http://gorton-machine.org/rick/PathProfiling - which generally > describes my collection approach. The C++ version is a from-scratch rewrite > done in Nov./Dec. 2012. Would that (or some > variant) help fit your needs? Sadly we'd need it running on QNX and ARM. But I'll certainly keep it in mind should profiling improvement suggestions be requested. Niall |
|
From: Niall D. <ndo...@bl...> - 2013-04-11 20:34:19
|
> Am 11.04.2013 17:10, schrieb Niall Douglas: > >>> desc: I1 cache: 32768 B, 64 B, 8-way associative, 153 picosec > > > Estimated cost times for a cache line, so a D1 cache access costs 153 > > picosec, whereas a LL cache access costs 1112 picosec. > > Ok. "0.153 ns hit latency" may be more descriptive. Is 153 picosec hit latency okay? I try to avoid floating point printing. I think valgrind's sprint now supports %f, but not %e. I had to write my own %e formatter which is a challenge without a C math library. Also, the read_picosecond_timer() suggests picosec. As that's the minimum resolution offered by POSIX, that seems the right unit. > But these numbers are so small... I assume there is prefetching going on, and > you are actually measuring the maximal bandwidth from core to a cache level. I > would assume that an unpredictable LL access has a latency more in the range > of 15-30 cycles (and not 1ns). As I mentioned, I do permute the cache line fetches by reversing the last eight bits of the cache line indexes to make them appear random-ish. I *really* wish I could just point you at the code, but it's still tied up in bureaucracy. > I get the impression that we always should do prefetch simulation, and add an > event "predicted LL miss" to be not totally off with the some time estimation. It's certainly coming to that with Sandy Bridge and later on Intel. We're not there yet on ARM. > So this somehow is the latency of an add instruction, using registers. I suppose > with a multiplication it would be slower, and with a divison even more so... I.e. > that does not really match with any definition of "max cost" for me ;-) There is a bit of method in the madness there. If I have read it correctly, according to http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.84.5816&rep=rep1&ty pe=pdf roughly speaking, as an average case, most general purpose code has an ILP of around 1.0, so if you can calculate the clock speed, you more or less get average instruction cost. So this asks the question, how do you portably calculate the clock speed? And by portably, I mean no assembler and no OS specific code (POSIX is okay). It turns out this isn't easy. The best approach I could think of was to calculate for the add instruction given that it is *probably* reasonably likely to be the same as the clock speed on most contemporary CPUs [1]. Therefore when I use max instruction cost in my calculations, it's really a proxy for average instruction cost based on a number of reasonable assumptions. [1]: The Qualcomm Krait is not one of these CPUs. It incurs a stochastic non-linear latency on arithmetic instructions. In the end, what can you do in this situation. > > You'll note the max instruction cost is ~300 picosec while the L1 > > cache line is ~150 picosec for 64 bytes. I would assume Intel > > deliberately chose that to ensure that a single arithmetic instruction > > adding across cache lines can run at single cycle speed. > > Ah, so these results are from an Intel processor? > 101 ps means 1 cycle with 10GHz. I wondered which ARM processor you were > using to get these impressive figures. So it's more like 3.3GHz and 3 add > instructions throughput per cycle. Correct. Sorry if I confused you. As I must prepare a patch for you guys, and one which must pass Legal, I ported the work from internal valgrind to Linux valgrind. Which runs inside a VM on my Intel work PC. Hence the figures are for that machine. Main memory cost is particularly incorrect inside a VM. I'll backport the patch to internal valgrind once internal peer review approves it. There's absolutely no reason it shouldn't work seamlessly on ARM though. BTW, this is the custom event I added: desc: I1 cache: 32768 B, 64 B, 8-way associative, 157 picosec desc: D1 cache: 32768 B, 64 B, 8-way associative, 157 picosec desc: LL cache: 6291456 B, 64 B, 12-way associative, 1120 picosec desc: main memory: 1362 picosec desc: max instruct cost: 316 picosec desc: min instruct cost: 107 picosec event: EPpsec = 316 Ir + 1120 I1mr + 1120 D1mr + 1120 D1mw + 1362 ILmr + 1362 DLmr + 1362 DLmw event: EPpsec : Estimated Possible Picosecs I think that's a reasonable calculation, more or less. I'll change "picosec" => "picosec hit latency" shortly. Niall |
|
From: Rick G. <rcg...@ve...> - 2013-04-11 19:49:17
|
On 4/11/2013 11:31 AM, Niall Douglas wrote: >> An alternative approach that comes to my mind is to collect the hot >> paths, save them, and then post-process with the chip specific >> instruction timings. >> >> .... >> >> That said, if you have further ideas regarding your approach above, I would >> love to hear those for future reference. Collecting useful non-intrusive >> performance data is a problem for all of us anywhere in the software >> industry. >> >> Niall >> Sure - An area of personal long-term interest has been using path profiling to permit better optimizations/more context information/application behavior information. As part of delving into such, I have put together a whole program path profiler which is: temporally-preserving, lossless, and capable of capturing long (single-threaded) application traces. It is currently based upon PIN (www.pintool.org) : x86_64 Linux, 64-bit only at present. One item on my personal 'todo' list is to determine whether or not such could be hooked up to valgrind instead of PIN; if so, I would love to contribute it to valgrind for general use. It is available at: http://gorton-machine.org/rick/PathProfiling - which generally describes my collection approach. The C++ version is a from-scratch rewrite done in Nov./Dec. 2012. Would that (or some variant) help fit your needs? Regards, Richard |
|
From: <sv...@va...> - 2013-04-11 17:55:50
|
mjw 2013-04-11 18:55:39 +0100 (Thu, 11 Apr 2013)
New Revision: 13367
Log:
read_unitinfo_dwarf2 DW_FORM_ref_addr is address size in DWARF version 2.
Bug #305513 contained a patch for some extra robustness checks. But
the real cause of crashing in the read_unitinfo_dwarf2 DWARF reader
seemed to have been this issue where DWARF version 2 DWZ partial_units
were read and DW_FORM_ref_addr had an unexpected size. This combination
is rare. DWARF version 4 is the current default version of GCC.
Modified files:
trunk/coregrind/m_debuginfo/readdwarf.c
Modified: trunk/coregrind/m_debuginfo/readdwarf.c (+3 -3)
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c 2013-04-11 17:17:45 +01:00 (rev 13366)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2013-04-11 18:55:39 +01:00 (rev 13367)
@@ -991,7 +991,7 @@
UInt acode, abcode;
ULong atoffs, blklen;
Int level;
- /* UShort ver; */
+ UShort ver;
UChar addr_size;
UChar* p = unitblock_img;
@@ -1008,7 +1008,7 @@
p += ui->dw64 ? 12 : 4;
/* version should be 2, 3 or 4 */
- /* ver = ML_(read_UShort)(p); */
+ ver = ML_(read_UShort)(p);
p += 2;
/* get offset in abbrev */
@@ -1122,7 +1122,7 @@
case 0x0c: /* FORM_flag */ p++; break;
case 0x0d: /* FORM_sdata */ read_leb128S( &p ); break;
case 0x0f: /* FORM_udata */ read_leb128U( &p ); break;
- case 0x10: /* FORM_ref_addr */ p += ui->dw64 ? 8 : 4; break;
+ case 0x10: /* FORM_ref_addr */ p += (ver == 2) ? addr_size : (ui->dw64 ? 8 : 4); break;
case 0x11: /* FORM_ref1 */ p++; break;
case 0x12: /* FORM_ref2 */ p += 2; break;
case 0x13: /* FORM_ref4 */ p += 4; break;
|
|
From: Josef W. <Jos...@gm...> - 2013-04-11 17:20:32
|
Am 11.04.2013 17:10, schrieb Niall Douglas: >>> desc: I1 cache: 32768 B, 64 B, 8-way associative, 153 picosec > Estimated cost times for a cache line, so a D1 cache access costs 153 > picosec, whereas a LL cache access costs 1112 picosec. Ok. "0.153 ns hit latency" may be more descriptive. But these numbers are so small... I assume there is prefetching going on, and you are actually measuring the maximal bandwidth from core to a cache level. I would assume that an unpredictable LL access has a latency more in the range of 15-30 cycles (and not 1ns). I get the impression that we always should do prefetch simulation, and add an event "predicted LL miss" to be not totally off with the some time estimation. > The max and min instruction cost is a test for CPU ILP, so basically it > determines max instruction cost like this: > > for(many) > a[x]+=a[x-1] > > This forces the CPU to stall waiting for the result of each prior > calculation. So this somehow is the latency of an add instruction, using registers. I suppose with a multiplication it would be slower, and with a divison even more so... I.e. that does not really match with any definition of "max cost" for me ;-) > Min instruction cost looks more like this: > > for(many) > a[x]+=a[x+n] And this then measures the throughput of an add instruction. > You'll note the max instruction cost is ~300 picosec while the L1 cache line > is ~150 picosec for 64 bytes. I would assume Intel deliberately chose that > to ensure that a single arithmetic instruction adding across cache lines can > run at single cycle speed. Ah, so these results are from an Intel processor? 101 ps means 1 cycle with 10GHz. I wondered which ARM processor you were using to get these impressive figures. So it's more like 3.3GHz and 3 add instructions throughput per cycle. Josef |
|
From: <sv...@va...> - 2013-04-11 16:17:52
|
sewardj 2013-04-11 17:17:45 +0100 (Thu, 11 Apr 2013)
New Revision: 13366
Log:
Update.
Modified files:
trunk/NEWS
trunk/docs/internals/3_8_BUGSTATUS.txt
Modified: trunk/NEWS (+19 -0)
===================================================================
--- trunk/NEWS 2013-04-11 14:58:48 +01:00 (rev 13365)
+++ trunk/NEWS 2013-04-11 17:17:45 +01:00 (rev 13366)
@@ -324,7 +324,26 @@
269599] Increase deepest backtrace
FIXED r??
+317444 amd64->IR: 0xC4 0x41 0x2C 0xC2 0xD2 0x8 (vcmpeq_uqps)
+ FIXED 2703 13342
+317461 Fix BMI assembler configure check and avx2/bmi/fma vgtest prereqs
+ FIXED 13343
+
+317463 bmi testcase IR SANITY CHECK FAILURE
+ FIXED 2704
+
+314718 ARM: implement integer divide instruction (sdiv and udiv)
+ FIXED 2706 13365
+
+315689 disInstr(thumb): unhandled instruction: 0xF852 0x0E10 (LDRT)
+ FIXED 2705 13364
+
+317506 memcheck/tests/vbit-test fails with unknown opcode after
+ introduction of new Iops for AVX2, BMI, FMA support
+ FIXED 13347
+
+
Release 3.8.1 (19 September 2012)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.8.1 is a bug fix release. It fixes some assertion failures in 3.8.0
Modified: trunk/docs/internals/3_8_BUGSTATUS.txt (+12 -18)
===================================================================
--- trunk/docs/internals/3_8_BUGSTATUS.txt 2013-04-11 14:58:48 +01:00 (rev 13365)
+++ trunk/docs/internals/3_8_BUGSTATUS.txt 2013-04-11 17:17:45 +01:00 (rev 13366)
@@ -307,15 +307,9 @@
314365 enable VEX to run asm helpers that do callee register saving
In progress; not sure whether this is a good idea
-314718 ARM: implement integer divide instruction (sdiv and udiv)
- HAS_PATCH, but needs working through
-
315199 vgcore file for threaded app does not show which thread crashed
HAS_PATCH; needs review
-315689 disInstr(thumb): unhandled instruction: 0xF852 0x0E10 (LDRT)
- HAS_PATCH; needs looking at
-
315828 massif "internal error" vgPlain_arena_free when RPATH includes
/usr/local/lib
WONTFIX
@@ -376,8 +370,6 @@
inside pthread/mutex methods
FreeBSD+Helgrind weirdness
--- Tue Mar 26 09:52:13 CET 2013
-
317381 helgrind warns about xchg vs suppressed store
No action so far. Not sure there's an easy fix for this.
@@ -388,17 +380,19 @@
extension
Contains plausible infrastructure patch; no insns so far tho
-317444 amd64->IR: 0xC4 0x41 0x2C 0xC2 0xD2 0x8 (vcmpeq_uqps)
- FIXED 2703 13342
+317698 parse_var_DIE: confused by: DW_TAG_compile_unit using
+ Intel 13.0 update 3 compiler
+ Reporter has queried Intel since this might be an ICC bug
-317461 Fix BMI assembler configure check and avx2/bmi/fma vgtest prereqs
- FIXED 13343
+317893 massif terminates without any message
+ Probably just a memory limit thing. Close as a dup, but
+ of what?
-317463] New: bmi testcase IR SANITY CHECK FAILURE
+318030 addHRegUse takes a lot of CPU time; band-aid speedup
+ patch within
+ No action so far
-317506] New: memcheck/tests/vbit-test fails with unknown opcode after
-introduction of new Iops for AVX2, BMI, FMA support
+318050 libmpiwrap fails to compile with out-of-source build
+ Has simple-sounding fix; should commit.
-317698] New: parse_var_DIE: confused by: DW_TAG_compile_unit using
-Intel 13.0 update 3 compiler
-
+Thu Apr 11 18:16:04 CEST 2013
|
|
From: Niall D. <ndo...@bl...> - 2013-04-11 15:31:31
|
> An alternative approach that comes to my mind is to collect the hot > paths, save them, and then post-process with the chip specific > instruction timings. > > Would that work? With my existing patch you already can detach and recombine the chip specific timings from the callgrind/cachegrind counters. We intend to keep a set of known good cpucacheconfig.xml files, one per device, and we intend to execute callgrind only twice per BB10 test item, one for x86 and one for ARM with the latter on a very well endowed, non-mobile device ARM chip as it's painful on real mobile hardware. We then synthesise XML output, one per device. No one is claiming that the estimated times are anything but an abstraction of reality. But they do make useful charts. That said, if you have further ideas regarding your approach above, I would love to hear those for future reference. Collecting useful non-intrusive performance data is a problem for all of us anywhere in the software industry. Niall |
|
From: Niall D. <ndo...@bl...> - 2013-04-11 15:11:13
|
> Am 10.04.2013 22:02, schrieb Niall Douglas: > > The patch is fairly minimal. At the start of cachegrind/callgrind if > > the cache configuration parameters were not supplied, it looks for a > > file called 'cpucacheconfig.xml' if one was not supplied. If that is > > present, it loads it. If it is not present, it calls > > I think this behaviour should be guarded by a command line flag: > e.g. on x86, the timing tests should not run when no cache parameter file is > present, as it will be supplied via CPUID. CPUID can't tell you cache/memory access latencies. The code is clever enough to realize when CPUID has returned cache configuration and it automatically skips the generic tests for cache configuration, running only those tests determining latencies. You may have meant that you want a command line flag that skips the latency tests too? A cpucacheconfig.xml file with zeroed entries is sufficient. Is this too non-obvious though? Perhaps an explicit command line flag would be better. > > desc: I1 cache: 32768 B, 64 B, 8-way associative, 153 picosec > > desc: D1 cache: 32768 B, 64 B, 8-way associative, 153 picosec > > desc: LL cache: 6291456 B, 64 B, 12-way associative, 1112 picosec > > desc: main memory: 1427 picosec > > desc: max instruct cost:302 picosec > > desc: min instruct cost:101 picosec > > What are these times? It would be nice to be more descriptive here (or better in > the manual). Estimated cost times for a cache line, so a D1 cache access costs 153 picosec, whereas a LL cache access costs 1112 picosec. Or, put another way, a L1 cache miss costs 1112 picosec, a LL cache miss costs 1427 picosec etc. The max and min instruction cost is a test for CPU ILP, so basically it determines max instruction cost like this: for(many) a[x]+=a[x-1] This forces the CPU to stall waiting for the result of each prior calculation. Min instruction cost looks more like this: for(many) a[x]+=a[x+n] This lets the CPU execute as many adds in parallel as it can. You'll note the max instruction cost is ~300 picosec while the L1 cache line is ~150 picosec for 64 bytes. I would assume Intel deliberately chose that to ensure that a single arithmetic instruction adding across cache lines can run at single cycle speed. Regarding the documentation, I am happy to update this once we have the patch sorted out and into Legal. I don't need approval for documentation patches thankfully. > Putting all this information behind "desc:" lines is fine for the *_annotate scripts > and KCachegrind, as this information is just forwarded to the user without trying > to parse it. But this also means that tools can not rely on it never to change, or > to have a specific format... I think your idea about custom event counters is a great one for specifying in a guaranteed machine readable way what these numbers mean. I'll have a play with those, maybe today, hopefully tomorrow. I'm currently caught up in GSoC mentor petitioning :( Many thanks for your advice Josef. Niall |
|
From: Rick G. <rcg...@ve...> - 2013-04-11 14:52:05
|
Niall,
An alternative approach that comes to my mind is to collect the hot
paths, save them, and then post-process with the chip specific
instruction timings.
Would that work?
Regards,
Richard
|
|
From: Niall D. <ndo...@bl...> - 2013-04-11 14:45:14
|
> I've just finished the port of my overall patch to Linux valgrind, so
please find
> attached a patch implementing VG_(read_nanosecond_timer). It looks like
your
> bug tracker is for bugs and not feature patches, so please do mention if
you
> want this patch to go elsewhere.
>
> -------------- next part --------------
> A non-text attachment was scrubbed...
> Name: 0002-Separate-patch-for-coregrind-adding-nanosecond-timer.patch
> Type: application/octet-stream
> Size: 3256 bytes
> Desc: not available
Well that's very unhelpful.
Here it is copy and pasted so:
>From 10f7e83c3d91baff94fae3f2ec4b13c7a9812bea Mon Sep 17 00:00:00 2001
From: Niall Douglas <ndo...@ri...>
Date: Wed, 10 Apr 2013 14:47:40 -0400
Subject: [PATCH 2/2] Separate patch for coregrind adding nanosecond timer
resolution.
---
coregrind/m_libcproc.c | 17 +++++++++++------
include/pub_tool_libcproc.h | 7 ++++++-
2 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/coregrind/m_libcproc.c b/coregrind/m_libcproc.c
index e801b25..16ebb19 100644
--- a/coregrind/m_libcproc.c
+++ b/coregrind/m_libcproc.c
@@ -608,9 +608,9 @@ Int VG_(fork) ( void )
Timing stuff
------------------------------------------------------------------ */
-UInt VG_(read_millisecond_timer) ( void )
+ULong VG_(read_nanosecond_timer) ( void )
{
- /* 'now' and 'base' are in microseconds */
+ /* 'now' and 'base' are in nanoseconds */
static ULong base = 0;
ULong now;
@@ -620,12 +620,12 @@ UInt VG_(read_millisecond_timer) ( void )
res = VG_(do_syscall2)(__NR_clock_gettime, VKI_CLOCK_MONOTONIC,
(UWord)&ts_now);
if (sr_isError(res) == 0) {
- now = ts_now.tv_sec * 1000000ULL + ts_now.tv_nsec / 1000;
+ now = ts_now.tv_sec * 1000000000ULL + ts_now.tv_nsec;
} else {
struct vki_timeval tv_now;
res = VG_(do_syscall2)(__NR_gettimeofday, (UWord)&tv_now,
(UWord)NULL);
vg_assert(! sr_isError(res));
- now = tv_now.tv_sec * 1000000ULL + tv_now.tv_usec;
+ now = tv_now.tv_sec * 1000000000ULL + tv_now.tv_usec * 1000;
}
}
@@ -638,7 +638,7 @@ UInt VG_(read_millisecond_timer) ( void )
struct vki_timeval tv_now = { 0, 0 };
res = VG_(do_syscall2)(__NR_gettimeofday, (UWord)&tv_now,
(UWord)NULL);
vg_assert(! sr_isError(res));
- now = sr_Res(res) * 1000000ULL + sr_ResHI(res);
+ now = sr_Res(res) * 1000000000ULL + sr_ResHI(res) * 1000;
}
# else
@@ -649,9 +649,14 @@ UInt VG_(read_millisecond_timer) ( void )
if (base == 0)
base = now;
- return (now - base) / 1000;
+ return (now - base);
}
+UInt VG_(read_millisecond_timer) ( void )
+{
+ ULong now = VG_(read_nanosecond_timer)();
+ return (UInt)(now / 1000000ULL);
+}
/* ---------------------------------------------------------------------
atfork()
diff --git a/include/pub_tool_libcproc.h b/include/pub_tool_libcproc.h
index 2ff3f83..a93e609 100644
--- a/include/pub_tool_libcproc.h
+++ b/include/pub_tool_libcproc.h
@@ -81,9 +81,14 @@ extern Int VG_(getegid) ( void );
Timing
------------------------------------------------------------------ */
-// Returns the number of milliseconds passed since the progam started
+// Returns the number of nanoseconds passed since the progam started
// (roughly; it gets initialised partway through Valgrind's initialisation
// steps).
+extern ULong VG_(read_nanosecond_timer) ( void );
+
+// Returns the number of milliseconds passed since the progam started
+// (roughly; it gets initialised partway through Valgrind's initialisation
+// steps). This is VG_(read_nanosecond_timer) divided by one million.
extern UInt VG_(read_millisecond_timer) ( void );
/* ---------------------------------------------------------------------
--
1.7.11.msysgit.1
Niall
|
|
From: <sv...@va...> - 2013-04-11 13:59:02
|
sewardj 2013-04-11 14:58:48 +0100 (Thu, 11 Apr 2013)
New Revision: 13365
Log:
Add test cases for SDIV and UDIV. Pertains to #314178.
Added files:
trunk/none/tests/arm/intdiv.c
trunk/none/tests/arm/intdiv.stderr.exp
trunk/none/tests/arm/intdiv.stdout.exp
trunk/none/tests/arm/intdiv.vgtest
Modified files:
trunk/none/tests/arm/Makefile.am
Added: trunk/none/tests/arm/intdiv.vgtest (+2 -0)
===================================================================
--- trunk/none/tests/arm/intdiv.vgtest 2013-04-11 11:58:18 +01:00 (rev 13364)
+++ trunk/none/tests/arm/intdiv.vgtest 2013-04-11 14:58:48 +01:00 (rev 13365)
@@ -0,0 +1,2 @@
+prog: intdiv
+vgopts: -q
Added: trunk/none/tests/arm/intdiv.stderr.exp (+0 -0)
===================================================================
Added: trunk/none/tests/arm/intdiv.stdout.exp (+14 -0)
===================================================================
--- trunk/none/tests/arm/intdiv.stdout.exp 2013-04-11 11:58:18 +01:00 (rev 13364)
+++ trunk/none/tests/arm/intdiv.stdout.exp 2013-04-11 14:58:48 +01:00 (rev 13365)
@@ -0,0 +1,14 @@
+000001f4 00000032 -> u:0000000a s:0000000a
+000001f4 ffffffce -> u:00000000 s:fffffff6
+fffffe0c 00000032 -> u:051eb847 s:fffffff6
+fffffe0c ffffffce -> u:00000000 s:0000000a
+00000064 00000007 -> u:0000000e s:0000000e
+ffffff9c 00000007 -> u:24924916 s:fffffff2
+00000064 fffffff9 -> u:00000000 s:fffffff2
+ffffff9c fffffff9 -> u:00000000 s:0000000e
+00000001 00000000 -> u:00000000 s:00000000
+00000000 00000000 -> u:00000000 s:00000000
+ffffffff 00000000 -> u:00000000 s:00000000
+80000000 00000000 -> u:00000000 s:00000000
+7fffffff 00000000 -> u:00000000 s:00000000
+80000000 ffffffff -> u:00000000 s:80000000
Added: trunk/none/tests/arm/intdiv.c (+55 -0)
===================================================================
--- trunk/none/tests/arm/intdiv.c 2013-04-11 11:58:18 +01:00 (rev 13364)
+++ trunk/none/tests/arm/intdiv.c 2013-04-11 14:58:48 +01:00 (rev 13365)
@@ -0,0 +1,55 @@
+
+#include <stdio.h>
+
+typedef signed int Int;
+typedef unsigned int UInt;
+
+__attribute__((noinline)) UInt do_udiv32 ( UInt x, UInt y )
+{
+ UInt res;
+ __asm__ __volatile__(
+ "mov r9, %1 ; mov r10, %2 ; udiv r3,r9,r10 ; mov %0, r3"
+ : "=r"(res) : "r"(x), "r"(y) : "r3", "r9", "r10"
+ );
+ return res;
+}
+
+__attribute__((noinline)) Int do_sdiv32 ( Int x, Int y )
+{
+ UInt res;
+ __asm__ __volatile__(
+ "mov r9, %1 ; mov r10, %2 ; sdiv r3,r9,r10 ; mov %0, r3"
+ : "=r"(res) : "r"(x), "r"(y) : "r3", "r9", "r10"
+ );
+ return res;
+}
+
+void test ( UInt x, UInt y )
+{
+ UInt ru = do_udiv32(x,y);
+ Int rs = do_sdiv32(x,y);
+ printf( "%08x %08x -> u:%08x s:%08x\n", x, y, ru, (UInt)rs);
+}
+
+int main ( void )
+{
+ // Check basic operation
+ test( 500, 50 );
+ test( 500, -50 );
+ test( -500, 50 );
+ test( -500, -50 );
+ // Check for rounding towards zero
+ test( 100, 7 ); // 14.285
+ test( -100, 7 );
+ test( 100, -7 );
+ test( -100, -7 );
+ // Division by zero produces zero
+ test( 1, 0 );
+ test( 0, 0 );
+ test( -1, 0 );
+ test( 0x80000000, 0 );
+ test( 0x7FFFFFFF, 0 );
+ // Test signed range ends
+ test( 0x80000000, -1 ); // unrepresentable as signed 32
+ return 0;
+}
Modified: trunk/none/tests/arm/Makefile.am (+4 -1)
===================================================================
--- trunk/none/tests/arm/Makefile.am 2013-04-11 11:58:18 +01:00 (rev 13364)
+++ trunk/none/tests/arm/Makefile.am 2013-04-11 14:58:48 +01:00 (rev 13365)
@@ -4,6 +4,7 @@
dist_noinst_SCRIPTS = filter_stderr
EXTRA_DIST = \
+ intdiv.stdout.exp intdiv.stderr.exp intdiv.vgtest \
ldrt.stdout.exp ldrt.stderr.exp ldrt.vgtest \
neon128.stdout.exp neon128.stderr.exp neon128.vgtest \
neon64.stdout.exp neon64.stderr.exp neon64.vgtest \
@@ -16,6 +17,7 @@
check_PROGRAMS = \
allexec \
+ intdiv \
ldrt \
neon128 \
neon64 \
@@ -56,4 +58,5 @@
-mfpu=neon \
-mthumb
-ldrt_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 -mthumb
+intdiv_CFLAGS = $(AM_CFLAGS) -g -mcpu=cortex-a15 -mthumb
+ldrt_CFLAGS = $(AM_CFLAGS) -g -mcpu=cortex-a8 -mthumb
|
|
From: <sv...@va...> - 2013-04-11 13:57:53
|
sewardj 2013-04-11 14:57:43 +0100 (Thu, 11 Apr 2013)
New Revision: 2706
Log:
Implement ARM SDIV and UDIV instructions. Fixes #314178. Partially
based on a patch by Ben Cheng, bc...@an.... Also renames two
misnamed PPC helpers.
Modified files:
trunk/priv/guest_arm_toIR.c
trunk/priv/host_arm_isel.c
trunk/priv/host_generic_simd64.c
trunk/priv/host_generic_simd64.h
trunk/priv/host_ppc_isel.c
trunk/priv/main_main.c
Modified: trunk/priv/host_generic_simd64.h (+6 -4)
===================================================================
--- trunk/priv/host_generic_simd64.h 2013-04-11 11:56:42 +01:00 (rev 2705)
+++ trunk/priv/host_generic_simd64.h 2013-04-11 14:57:43 +01:00 (rev 2706)
@@ -161,11 +161,13 @@
extern UInt h_generic_calc_CmpNEZ16x2 ( UInt );
extern UInt h_generic_calc_CmpNEZ8x4 ( UInt );
-extern ULong h_DPBtoBCD ( ULong dpb );
-extern ULong h_BCDtoDPB ( ULong bcd );
+extern ULong h_calc_DPBtoBCD ( ULong dpb );
+extern ULong h_calc_BCDtoDPB ( ULong bcd );
-ULong dpb_to_bcd(ULong chunk); // helper for h_DPBtoBCD
-ULong bcd_to_dpb(ULong chunk); // helper for h_BCDtoDPB
+// Signed and unsigned integer division, that behave like
+// the ARMv7 UDIV and SDIV instructions.
+extern UInt h_calc_udiv32_w_arm_semantics ( UInt, UInt );
+extern Int h_calc_sdiv32_w_arm_semantics ( Int, Int );
#endif /* ndef __VEX_HOST_GENERIC_SIMD64_H */
Modified: trunk/priv/host_generic_simd64.c (+36 -6)
===================================================================
--- trunk/priv/host_generic_simd64.c 2013-04-11 11:56:42 +01:00 (rev 2705)
+++ trunk/priv/host_generic_simd64.c 2013-04-11 14:57:43 +01:00 (rev 2706)
@@ -36,9 +36,10 @@
/* Generic helper functions for doing 64-bit SIMD arithmetic in cases
where the instruction selectors cannot generate code in-line.
These are purely back-end entities and cannot be seen/referenced
- from IR. */
+ from IR. There are also helpers for 32-bit arithmetic in here. */
#include "libvex_basictypes.h"
+#include "main_util.h" // LIKELY, UNLIKELY
#include "host_generic_simd64.h"
@@ -1433,7 +1434,7 @@
#define GET( x, y ) ( ( ( x ) & ( 0x1UL << ( y ) ) ) >> ( y ) )
#define PUT( x, y ) ( ( x )<< ( y ) )
-ULong dpb_to_bcd( ULong chunk )
+static ULong dpb_to_bcd( ULong chunk )
{
Short a, b, c, d, e, f, g, h, i, j, k, m;
Short p, q, r, s, t, u, v, w, x, y;
@@ -1473,7 +1474,7 @@
return value;
}
-ULong bcd_to_dpb( ULong chunk )
+static ULong bcd_to_dpb( ULong chunk )
{
Short a, b, c, d, e, f, g, h, i, j, k, m;
Short p, q, r, s, t, u, v, w, x, y;
@@ -1516,7 +1517,7 @@
return value;
}
-ULong h_DPBtoBCD( ULong dpb )
+ULong h_calc_DPBtoBCD( ULong dpb )
{
ULong result, chunk;
Int i;
@@ -1531,7 +1532,7 @@
return result;
}
-ULong h_BCDtoDPB( ULong bcd )
+ULong h_calc_BCDtoDPB( ULong bcd )
{
ULong result, chunk;
Int i;
@@ -1549,7 +1550,36 @@
#undef GET
#undef PUT
+
+/* ----------------------------------------------------- */
+/* Signed and unsigned integer division, that behave like
+ the ARMv7 UDIV ansd SDIV instructions. */
+/* ----------------------------------------------------- */
+
+UInt h_calc_udiv32_w_arm_semantics ( UInt x, UInt y )
+{
+ // Division by zero --> zero
+ if (UNLIKELY(y == 0)) return 0;
+ // C requires rounding towards zero, which is also what we need.
+ return x / y;
+}
+
+Int h_calc_sdiv32_w_arm_semantics ( Int x, Int y )
+{
+ // Division by zero --> zero
+ if (UNLIKELY(y == 0)) return 0;
+ // The single case that produces an unpresentable result
+ if (UNLIKELY( ((UInt)x) == ((UInt)0x80000000)
+ && ((UInt)y) == ((UInt)0xFFFFFFFF) ))
+ return (Int)(UInt)0x80000000;
+ // Else return the result rounded towards zero. C89 says
+ // this is implementation defined (in the signed case), but gcc
+ // promises to round towards zero. Nevertheless, at startup,
+ // in main_main.c, do a check for that.
+ return x / y;
+}
+
+
/*---------------------------------------------------------------*/
/*--- end host_generic_simd64.c ---*/
/*---------------------------------------------------------------*/
-
Modified: trunk/priv/guest_arm_toIR.c (+83 -0)
===================================================================
--- trunk/priv/guest_arm_toIR.c 2013-04-11 11:56:42 +01:00 (rev 2705)
+++ trunk/priv/guest_arm_toIR.c 2013-04-11 14:57:43 +01:00 (rev 2706)
@@ -13845,6 +13845,51 @@
/* fall through */
}
+ /* --------------------- Integer Divides --------------------- */
+ // SDIV
+ if (BITS8(0,1,1,1,0,0,0,1) == INSN(27,20)
+ && INSN(15,12) == BITS4(1,1,1,1)
+ && INSN(7,4) == BITS4(0,0,0,1)) {
+ UInt rD = INSN(19,16);
+ UInt rM = INSN(11,8);
+ UInt rN = INSN(3,0);
+ if (rD == 15 || rM == 15 || rN == 15) {
+ /* Unpredictable; don't decode; fall through */
+ } else {
+ IRTemp res = newTemp(Ity_I32);
+ IRTemp argL = newTemp(Ity_I32);
+ IRTemp argR = newTemp(Ity_I32);
+ assign(argL, getIRegA(rN));
+ assign(argR, getIRegA(rM));
+ assign(res, binop(Iop_DivS32, mkexpr(argL), mkexpr(argR)));
+ putIRegA(rD, mkexpr(res), condT, Ijk_Boring);
+ DIP("sdiv r%u, r%u, r%u\n", rD, rN, rM);
+ goto decode_success;
+ }
+ }
+
+ // UDIV
+ if (BITS8(0,1,1,1,0,0,1,1) == INSN(27,20)
+ && INSN(15,12) == BITS4(1,1,1,1)
+ && INSN(7,4) == BITS4(0,0,0,1)) {
+ UInt rD = INSN(19,16);
+ UInt rM = INSN(11,8);
+ UInt rN = INSN(3,0);
+ if (rD == 15 || rM == 15 || rN == 15) {
+ /* Unpredictable; don't decode; fall through */
+ } else {
+ IRTemp res = newTemp(Ity_I32);
+ IRTemp argL = newTemp(Ity_I32);
+ IRTemp argR = newTemp(Ity_I32);
+ assign(argL, getIRegA(rN));
+ assign(argR, getIRegA(rM));
+ assign(res, binop(Iop_DivU32, mkexpr(argL), mkexpr(argR)));
+ putIRegA(rD, mkexpr(res), condT, Ijk_Boring);
+ DIP("udiv r%u, r%u, r%u\n", rD, rN, rM);
+ goto decode_success;
+ }
+ }
+
// MLA, MLS
if (BITS8(0,0,0,0,0,0,1,0) == (INSN(27,20) & BITS8(1,1,1,1,1,0,1,0))
&& INSN(7,4) == BITS4(1,0,0,1)) {
@@ -18400,6 +18445,44 @@
}
}
+ /* -------------- SDIV.W Rd, Rn, Rm -------------- */
+ if (INSN0(15,4) == 0xFB9
+ && (INSN1(15,0) & 0xF0F0) == 0xF0F0) {
+ UInt rN = INSN0(3,0);
+ UInt rD = INSN1(11,8);
+ UInt rM = INSN1(3,0);
+ if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) {
+ IRTemp res = newTemp(Ity_I32);
+ IRTemp argL = newTemp(Ity_I32);
+ IRTemp argR = newTemp(Ity_I32);
+ assign(argL, getIRegT(rN));
+ assign(argR, getIRegT(rM));
+ assign(res, binop(Iop_DivS32, mkexpr(argL), mkexpr(argR)));
+ putIRegT(rD, mkexpr(res), condT);
+ DIP("sdiv.w r%u, r%u, r%u\n", rD, rN, rM);
+ goto decode_success;
+ }
+ }
+
+ /* -------------- UDIV.W Rd, Rn, Rm -------------- */
+ if (INSN0(15,4) == 0xFBB
+ && (INSN1(15,0) & 0xF0F0) == 0xF0F0) {
+ UInt rN = INSN0(3,0);
+ UInt rD = INSN1(11,8);
+ UInt rM = INSN1(3,0);
+ if (!isBadRegT(rD) && !isBadRegT(rN) && !isBadRegT(rM)) {
+ IRTemp res = newTemp(Ity_I32);
+ IRTemp argL = newTemp(Ity_I32);
+ IRTemp argR = newTemp(Ity_I32);
+ assign(argL, getIRegT(rN));
+ assign(argR, getIRegT(rM));
+ assign(res, binop(Iop_DivU32, mkexpr(argL), mkexpr(argR)));
+ putIRegT(rD, mkexpr(res), condT);
+ DIP("udiv.w r%u, r%u, r%u\n", rD, rN, rM);
+ goto decode_success;
+ }
+ }
+
/* ------------------ {U,S}MULL ------------------ */
if ((INSN0(15,4) == 0xFB8 || INSN0(15,4) == 0xFBA)
&& INSN1(7,4) == BITS4(0,0,0,0)) {
Modified: trunk/priv/main_main.c (+18 -0)
===================================================================
--- trunk/priv/main_main.c 2013-04-11 11:56:42 +01:00 (rev 2705)
+++ trunk/priv/main_main.c 2013-04-11 14:57:43 +01:00 (rev 2706)
@@ -75,6 +75,14 @@
static const HChar* show_hwcaps ( VexArch arch, UInt hwcaps );
+/* --------- helpers --------- */
+
+__attribute__((noinline))
+static UInt udiv32 ( UInt x, UInt y ) { return x/y; }
+__attribute__((noinline))
+static Int sdiv32 ( Int x, Int y ) { return x/y; }
+
+
/* --------- Initialise the library. --------- */
/* Exported to library client. */
@@ -171,6 +179,16 @@
vassert(sizeof(IRStmt) == 32);
}
+ /* Check that signed integer division on the host rounds towards
+ zero. If not, h_calc_sdiv32_w_arm_semantics() won't work
+ correctly. */
+ /* 100.0 / 7.0 == 14.2857 */
+ vassert(udiv32(100, 7) == 14);
+ vassert(sdiv32(100, 7) == 14);
+ vassert(sdiv32(-100, 7) == -14); /* and not -15 */
+ vassert(sdiv32(100, -7) == -14); /* ditto */
+ vassert(sdiv32(-100, -7) == 14); /* not sure what this proves */
+
/* Really start up .. */
vex_debuglevel = debuglevel;
vex_valgrind_support = valgrind_support;
Modified: trunk/priv/host_ppc_isel.c (+4 -4)
===================================================================
--- trunk/priv/host_ppc_isel.c 2013-04-11 11:56:42 +01:00 (rev 2705)
+++ trunk/priv/host_ppc_isel.c 2013-04-11 14:57:43 +01:00 (rev 2706)
@@ -2077,7 +2077,7 @@
cc = mk_PPCCondCode( Pct_ALWAYS, Pcf_NONE );
- fdescr = (HWord*)h_BCDtoDPB;
+ fdescr = (HWord*)h_calc_BCDtoDPB;
addInstr(env, PPCInstr_Call( cc, (Addr64)(fdescr[0]),
argiregs, RetLocInt) );
@@ -2106,7 +2106,7 @@
cc = mk_PPCCondCode( Pct_ALWAYS, Pcf_NONE );
- fdescr = (HWord*)h_DPBtoBCD;
+ fdescr = (HWord*)h_calc_DPBtoBCD;
addInstr(env, PPCInstr_Call( cc, (Addr64)(fdescr[0]),
argiregs, RetLocInt ) );
@@ -3446,7 +3446,7 @@
addInstr( env, mk_iMOVds_RR( argregs[argreg], tmpLo ) );
cc = mk_PPCCondCode( Pct_ALWAYS, Pcf_NONE );
- target = toUInt( Ptr_to_ULong(h_BCDtoDPB ) );
+ target = toUInt( Ptr_to_ULong(h_calc_BCDtoDPB ) );
addInstr( env, PPCInstr_Call( cc, (Addr64)target,
argiregs, RetLoc2Int ) );
@@ -3486,7 +3486,7 @@
cc = mk_PPCCondCode( Pct_ALWAYS, Pcf_NONE );
- target = toUInt( Ptr_to_ULong( h_DPBtoBCD ) );
+ target = toUInt( Ptr_to_ULong( h_calc_DPBtoBCD ) );
addInstr(env, PPCInstr_Call( cc, (Addr64)target,
argiregs, RetLoc2Int ) );
Modified: trunk/priv/host_arm_isel.c (+4 -0)
===================================================================
--- trunk/priv/host_arm_isel.c 2013-04-11 11:56:42 +01:00 (rev 2705)
+++ trunk/priv/host_arm_isel.c 2013-04-11 14:57:43 +01:00 (rev 2706)
@@ -1374,6 +1374,10 @@
fn = &h_generic_calc_QSub32S; break;
case Iop_QSub16Ux2:
fn = &h_generic_calc_QSub16Ux2; break;
+ case Iop_DivU32:
+ fn = &h_calc_udiv32_w_arm_semantics; break;
+ case Iop_DivS32:
+ fn = &h_calc_sdiv32_w_arm_semantics; break;
default:
break;
}
|
|
From: <sv...@va...> - 2013-04-11 10:58:25
|
sewardj 2013-04-11 11:58:18 +0100 (Thu, 11 Apr 2013)
New Revision: 13364
Log:
Add test cases for (T1) LDRT reg+#imm8. See #315689.
Added files:
trunk/none/tests/arm/ldrt.c
trunk/none/tests/arm/ldrt.stderr.exp
trunk/none/tests/arm/ldrt.stdout.exp
trunk/none/tests/arm/ldrt.vgtest
Modified files:
trunk/none/tests/arm/Makefile.am
Added: trunk/none/tests/arm/ldrt.stdout.exp (+1 -0)
===================================================================
--- trunk/none/tests/arm/ldrt.stdout.exp 2013-04-05 14:19:12 +01:00 (rev 13363)
+++ trunk/none/tests/arm/ldrt.stdout.exp 2013-04-11 11:58:18 +01:00 (rev 13364)
@@ -0,0 +1 @@
+result is 0x87868584 (should be 0x87868584)
Added: trunk/none/tests/arm/ldrt.stderr.exp (+0 -0)
===================================================================
Modified: trunk/none/tests/arm/Makefile.am (+4 -0)
===================================================================
--- trunk/none/tests/arm/Makefile.am 2013-04-05 14:19:12 +01:00 (rev 13363)
+++ trunk/none/tests/arm/Makefile.am 2013-04-11 11:58:18 +01:00 (rev 13364)
@@ -4,6 +4,7 @@
dist_noinst_SCRIPTS = filter_stderr
EXTRA_DIST = \
+ ldrt.stdout.exp ldrt.stderr.exp ldrt.vgtest \
neon128.stdout.exp neon128.stderr.exp neon128.vgtest \
neon64.stdout.exp neon64.stderr.exp neon64.vgtest \
v6intARM.stdout.exp v6intARM.stderr.exp v6intARM.vgtest \
@@ -15,6 +16,7 @@
check_PROGRAMS = \
allexec \
+ ldrt \
neon128 \
neon64 \
v6intARM \
@@ -53,3 +55,5 @@
neon64_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 \
-mfpu=neon \
-mthumb
+
+ldrt_CFLAGS = $(AM_CFLAGS) -g -O0 -mcpu=cortex-a8 -mthumb
Added: trunk/none/tests/arm/ldrt.c (+29 -0)
===================================================================
--- trunk/none/tests/arm/ldrt.c 2013-04-05 14:19:12 +01:00 (rev 13363)
+++ trunk/none/tests/arm/ldrt.c 2013-04-11 11:58:18 +01:00 (rev 13364)
@@ -0,0 +1,29 @@
+
+// This should be compiled as Thumb code, since currently V only
+// handles the T1 encoding of ldrt.
+
+#include <stdio.h>
+#include <malloc.h>
+
+typedef unsigned int UInt;
+
+__attribute__((noinline)) UInt do_ldrt_imm_132 ( unsigned char* p )
+{
+ UInt res;
+ __asm__ __volatile__(
+ "mov r5, %1 ; ldrt r6, [r5, #132] ; mov %0, r6"
+ : "=r"(res) : "r"(p) : "r5", "r6"
+ );
+ return res;
+}
+
+int main ( void )
+{
+ UInt i;
+ unsigned char* b = malloc(256);
+ for (i = 0; i < 256; i++) b[i] = (unsigned char)i;
+ UInt r = do_ldrt_imm_132(b);
+ free(b);
+ printf("result is 0x%08x (should be 0x%08x)\n", r, 0x87868584);
+ return 0;
+}
Added: trunk/none/tests/arm/ldrt.vgtest (+2 -0)
===================================================================
--- trunk/none/tests/arm/ldrt.vgtest 2013-04-05 14:19:12 +01:00 (rev 13363)
+++ trunk/none/tests/arm/ldrt.vgtest 2013-04-11 11:58:18 +01:00 (rev 13364)
@@ -0,0 +1,2 @@
+prog: ldrt
+vgopts: -q
|