You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
1
(36) |
2
(30) |
|
3
(17) |
4
(21) |
5
(18) |
6
(14) |
7
(23) |
8
(12) |
9
(11) |
|
10
(11) |
11
(12) |
12
(11) |
13
(12) |
14
(11) |
15
(11) |
16
(15) |
|
17
(12) |
18
(15) |
19
(15) |
20
(25) |
21
(26) |
22
(21) |
23
(18) |
|
24
(25) |
25
(28) |
26
(27) |
27
(32) |
28
(13) |
29
(12) |
30
(10) |
|
From: Stephen M.
|
Consider a program like the following:
#include <sys/select.h>
int main(int argc, char **argv) {
int y;
fd_set *set = (fd_set *)&y;
int which = 4;
FD_SET(which, set);
return 0;
}
"FD_SET" is a macro defined to inline to a "bts" instruction:
# define __FD_SET(fd, fdsp) \
__asm__ __volatile__ ("btsl %1,%0" \
: "=m" (__FDS_BITS (fdsp)[__FDELT (fd)]) \
: "r" (((int) (fd)) % __NFDBITS) \
: "cc","memory")
For instance, when I compile with -O (Debian gcc 3.3.5), I get an
instruction like this:
8048362: 0f ab 45 fc bts %eax,0xfffffffc(%ebp)
If I run the program under Valgrind 3, I get warnings like this from
Vex:
==27349== Memcheck, a memory error detector.
==27349== Using LibVEX rev 1139, a library for dynamic binary translation.
==27349== Using valgrind-3.0.0.SVN, a dynamic binary instrumentation framework.
==27349==
vex iropt: fold_Expr: no rule for: Shl8(0x1:I8,0x4:I8)
vex iropt: fold_Expr: no rule for: Shl8(0x0:I8,0x4:I8)
vex iropt: fold_Expr: no rule for: Shl8(0x1:I8,0x4:I8)
We of course first noticed this running a larger example, a server for
the FreeCiv game that uses select() for network connections. In fact,
there appear to be no constant folding rules at all for Shl8 (which
makes a certain amount of sense because GCC doesn't normally seem to
generate 8-bit shifts).
One potential fix would be to add such a case to the constant folding,
as in the attached patch.
Hope this helps,
-- Stephen
Index: priv/ir/iropt.c
===================================================================
--- priv/ir/iropt.c (revision 1139)
+++ priv/ir/iropt.c (working copy)
@@ -1080,6 +1080,14 @@
}
/* -- Shl -- */
+ case Iop_Shl8:
+ vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
+ shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8);
+ if (shift >= 0 && shift <= 7)
+ e2 = IRExpr_Const(IRConst_U8(
+ (e->Iex.Binop.arg1->Iex.Const.con->Ico.U8
+ << shift)));
+ break;
case Iop_Shl32:
vassert(e->Iex.Binop.arg2->Iex.Const.con->tag == Ico_U8);
shift = (Int)(e->Iex.Binop.arg2->Iex.Const.con->Ico.U8);
|
|
From: <sv...@va...> - 2005-04-25 17:08:36
|
Author: sewardj
Date: 2005-04-25 18:08:32 +0100 (Mon, 25 Apr 2005)
New Revision: 3569
Modified:
trunk/coregrind/vg_redir.c
Log:
A bunch of redirections for SuSE 9.2 on amd64.
Modified: trunk/coregrind/vg_redir.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_redir.c 2005-04-25 16:55:44 UTC (rev 3568)
+++ trunk/coregrind/vg_redir.c 2005-04-25 17:08:32 UTC (rev 3569)
@@ -451,6 +451,19 @@
=20
add_redirect_sym_to_sym("soname:libc.so.6", "rawmemchr",
"*vgpreload_memcheck.so*", "glibc232_rawmemch=
r");
+
+ /* amd64-linux (glibc 2.3.3, SuSE 9.2) */
+ /* apparently index is the same thing as strchr */
+ add_redirect_sym_to_sym("soname:libc.so.6", "index",
+ "*vgpreload_memcheck.so*", "strchr");
+
+ add_redirect_sym_to_sym("soname:ld-linux-x86-64.so.2", "strcmp",
+ "*vgpreload_memcheck.so*", "strcmp");
+ add_redirect_sym_to_sym("soname:libc.so.6", "strcmp",
+ "*vgpreload_memcheck.so*", "strcmp");
+
+ add_redirect_sym_to_sym("soname:ld-linux-x86-64.so.2", "strlen",
+ "*vgpreload_memcheck.so*", "strlen");
}
=20
=20
|
|
From: Benoit P. <ben...@en...> - 2005-04-25 16:58:11
|
Le lun 25/04/2005 =E0 18:02, Josef Weidendorfer a =E9crit : > It would be good to have some iterator functions for debug info available= for=20 > tools. Structs are bad wrt. interface stability. Yes.=20 If I want to provide a patch for this (and maybe for other tools) how should I proceed ? > > As the format is extensible, I'd like to keep a new information > > associated with each file name : the soname where it has been found. > > Can I add a so=3D... before fl=3D... ? >=20 > Do you mean the file name of a shared library, or the soname defined in t= he=20 > shared library? The file name of the shared lib is stored in callgrind fi= les=20 > via "ob=3D" (meaning: ELF object). It would be nice if we could use the s= ame. Let's go for ob=3D > BTW, what are you using this for? I'm using this to group source files in the summary. Sources can be grouped by library, or by directory. That's why I don't really mind if it's the filename or the soname, though the filename may be more explicit to developers. > It seems quite natural for me to also do code coverage on this level. The= n you=20 > would also get information for a source line like: "only 20% of instructi= ons=20 > attributed to this source line are executed". It does coverage at debug level, this means that if there are multiple instructions associated with a line you can have 20% of a line executed. But this is not assembler level, the compiler doesn't associate each opcode with a line. For example a for loop line can be executed from 2 places (so either 0%, 50% or 100%). I don't think getting deeper is usefull. Usually you don't want to get assembler coverage for extern libraries. If you are coding in assembler, doesn't your compiler add this information already ? Benoit |
|
From: <sv...@va...> - 2005-04-25 16:55:52
|
Author: tom
Date: 2005-04-25 17:55:44 +0100 (Mon, 25 Apr 2005)
New Revision: 3568
Modified:
trunk/coregrind/m_aspacemgr/aspacemgr.c
Log:
Use %lu for all length values in debug messages or you will sometimes
get nonense on 64 bit platforms.
Modified: trunk/coregrind/m_aspacemgr/aspacemgr.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_aspacemgr/aspacemgr.c 2005-04-25 16:21:17 UTC (rev =
3567)
+++ trunk/coregrind/m_aspacemgr/aspacemgr.c 2005-04-25 16:55:44 UTC (rev =
3568)
@@ -556,7 +556,7 @@
len =3D PGROUNDUP(len);
=20
if (debug)
- VG_(printf)("unmap_range(%p, %d)\n", addr, len);
+ VG_(printf)("unmap_range(%p, %lu)\n", addr, len);
if (0) show_segments("unmap_range(BEFORE)");
end =3D addr+len;
=20
@@ -594,7 +594,7 @@
s->len =3D addr - s->addr;
=20
if (debug)
- VG_(printf)(" case 1: s->len=3D%d\n", s->len);
+ VG_(printf)(" case 1: s->len=3D%lu\n", s->len);
} else if (addr <=3D s->addr && end > s->addr && end < s_end) {
/* this segment's head is truncated by [addr, addr+len)
-> truncate head
@@ -602,7 +602,7 @@
Word delta =3D end - s->addr;
=20
if (debug)
- VG_(printf)(" case 2: s->addr=3D%p s->len=3D%d delta=3D%d\n",=20
+ VG_(printf)(" case 2: s->addr=3D%p s->len=3D%lu delta=3D%d\n",=20
s->addr, s->len, delta);
=20
dump_translations_from(s);
@@ -668,7 +668,7 @@
if (debug)
VG_(printf)(
"\n"
- "map_file_segment(addr=3D%p len=3D%llu prot=3D0x%x flags=3D0x%x=
\n"
+ "map_file_segment(addr=3D%p len=3D%lu prot=3D0x%x flags=3D0x%x\=
n"
" dev=3D0x%4x ino=3D%d off=3D%ld\n"
" filename=3D'%s')\n",
addr, (ULong)len, prot, flags, dev, ino, off, filename);
@@ -780,7 +780,7 @@
static const Bool debug =3D False || mem_debug;
=20
if (debug)
- VG_(printf)("\nmprotect_range(%p, %d, %x)\n", a, len, prot);
+ VG_(printf)("\nmprotect_range(%p, %lu, %x)\n", a, len, prot);
=20
if (0) show_segments( "mprotect_range(before)" );
=20
@@ -821,7 +821,7 @@
=20
if (debug) {
VG_(printf)("\n\n");
- VG_(printf)("find_map_space(%p, %d, %d) ...\n",
+ VG_(printf)("find_map_space(%p, %lu, %d) ...\n",
addr, len, for_client);
}
=20
@@ -923,7 +923,7 @@
ret =3D 0; /* not found */
=20
if (debug)
- VG_(printf)("find_map_space(%p, %d, %d) -> %p\n\n",
+ VG_(printf)("find_map_space(%p, %lu, %d) -> %p\n\n",
addr, len, for_client, ret);
=20
if (fixed) {
|
|
From: <sv...@va...> - 2005-04-25 16:21:21
|
Author: sewardj
Date: 2005-04-25 17:21:17 +0100 (Mon, 25 Apr 2005)
New Revision: 3567
Modified:
trunk/coregrind/amd64-linux/syscalls.c
trunk/coregrind/m_debuglog.c
trunk/coregrind/m_sigframe/sigframe-amd64-linux.c
Log:
amd64 build fixes.
Modified: trunk/coregrind/amd64-linux/syscalls.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/amd64-linux/syscalls.c 2005-04-25 15:49:10 UTC (rev 3=
566)
+++ trunk/coregrind/amd64-linux/syscalls.c 2005-04-25 16:21:17 UTC (rev 3=
567)
@@ -31,6 +31,7 @@
#include "core.h"
#include "ume.h" /* for jmp_with_stack */
#include "pub_core_sigframe.h"
+#include "pub_core_aspacemgr.h"
=20
=20
/* COPIED FROM /usr/include/asm-i386/prctl.h (amd64-linux) */
Modified: trunk/coregrind/m_debuglog.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_debuglog.c 2005-04-25 15:49:10 UTC (rev 3566)
+++ trunk/coregrind/m_debuglog.c 2005-04-25 16:21:17 UTC (rev 3567)
@@ -55,7 +55,9 @@
=20
/* ----- x86-linux specifics ----- */
=20
-#if VG_PLATFORM =3D=3D x86-linux
+/* Arse! Really I want to test VG_PLATFORM, but this does not
+ seem to be possible. */
+#if defined(__i386__) && defined(__linux__)
=20
static UInt local_sys_write_stderr ( HChar* buf, Int n )
{
@@ -80,7 +82,18 @@
return __res;
}
=20
+#elif defined(__x86_64__) && defined(__linux__)
=20
+static UInt local_sys_write_stderr ( HChar* buf, Int n )
+{
+ return 0;
+}
+
+static UInt local_sys_getpid ( void )
+{
+ return 0;
+}
+
#else
#error Unknown VG_PLATFORM
#endif
Modified: trunk/coregrind/m_sigframe/sigframe-amd64-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_sigframe/sigframe-amd64-linux.c 2005-04-25 15:49:10=
UTC (rev 3566)
+++ trunk/coregrind/m_sigframe/sigframe-amd64-linux.c 2005-04-25 16:21:17=
UTC (rev 3567)
@@ -31,6 +31,7 @@
=20
#include "core.h"
#include "pub_core_sigframe.h"
+#include "pub_core_aspacemgr.h"
=20
#include "libvex_guest_amd64.h"
=20
|
|
From: <sv...@va...> - 2005-04-25 16:06:11
|
Author: njn Date: 2005-04-25 17:06:06 +0100 (Mon, 25 Apr 2005) New Revision: 109 Modified: trunk/devel/cvs_svn.html Log: Note that development should be done against the SVN repo. Modified: trunk/devel/cvs_svn.html =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/devel/cvs_svn.html 2005-04-22 15:58:52 UTC (rev 108) +++ trunk/devel/cvs_svn.html 2005-04-25 16:06:06 UTC (rev 109) @@ -15,6 +15,8 @@ The stable valgrind-2.4 line continues to be in CVS at kde.org, at least for now.</p> =20 +<p>If you are doing any development work other than bug fixes for 2.4, p= lease +do them on the 3.0 line against the Subversion repository!</p> =20 =20 <div class=3D"hr_brown"><hr/></div> |
|
From: Josef W. <Jos...@gm...> - 2005-04-25 16:00:07
|
On Monday 25 April 2005 17:08, Benoit Peccatte wrote: > Le ven 22/04/2005 =C3=A0 18:52, Josef Weidendorfer a =C3=A9crit : > > Ah, good. I didn't know you can iterate over debug info in a Valgrind > > tool. > > Well, I didn't use directly valgrind functions. I copied needed > structures from vg_symtab.h into the tool's header. I know that's not > perfectly clean, but it works for now. It would be good to have some iterator functions for debug info available f= or=20 tools. Structs are bad wrt. interface stability. > > header like > > event: Coverage =3D Executed / DebugInfo > > and will calculate everything itself. But note that currently there is = no > > support for parsing "/" in formulas. > > Ok, I understand now. Yes I would need the '/' then, but I can't see > where the '+' is parsed. =46ormulas for derived events are only possible in KCachegrind for the mome= nt.=20 Interpreting formulas should be not to difficult to add in a PERL script li= ke=20 cg_annotate (via "eval"). I'll try. > As the format is extensible, I'd like to keep a new information > associated with each file name : the soname where it has been found. > Can I add a so=3D... before fl=3D... ? Do you mean the file name of a shared library, or the soname defined in the= =20 shared library? The file name of the shared lib is stored in callgrind file= s=20 via "ob=3D" (meaning: ELF object). It would be nice if we could use the sam= e. BTW, what are you using this for? In callgrind, I can relate metrics to=20 instruction addresses, and KCachegrind has assembler annotation. It needs t= he=20 libraries file name to call "objdump" to get disassembled code. It seems quite natural for me to also do code coverage on this level. Then = you=20 would also get information for a source line like: "only 20% of instruction= s=20 attributed to this source line are executed". Josef |
|
From: Benoit P. <ben...@en...> - 2005-04-25 15:56:22
|
Le lun 25/04/2005 =E0 17:42, Nicholas Nethercote a =E9crit : > On Mon, 25 Apr 2005, Benoit Peccatte wrote: >=20 > > In my coverage tool, I need to call VG(demangle). However it is not > > exported from the core. Is there a way to call it properly from a tool = ? >=20 > It would require making it tool-visible by moving it from core.h to=20 > tool.h. Are you printing out function/method names as part of the=20 > coverage information? Exact. > AFAICT a coverage tool will need a couple of other changes to the=20 > core/tool interface -- to provide the ability to get all the debug line=20 > information about a file, which requires one or two extra functions. Yes, now I'm using my own in the tool (mostly pasted from the core), but it would be great if this could be available. > BTW, are you doing this work against the Subversion repository? (See=20 > http://www.valgrind.org/devel/cvs_svn.html) You should do so, as the=20 > intermediate representation has changed significantly in order to support= =20 > multiple architectures such as AMD64 and PPC. Sorry I didn't mention thi= s=20 > earlier. I'm using the svn version from 10 days ago. > How far advanced is your tool? I'll be interested to see how it compares= =20 > with mine :) It should be usable within a few days. |
|
From: <sv...@va...> - 2005-04-25 15:49:16
|
Author: sewardj
Date: 2005-04-25 16:49:10 +0100 (Mon, 25 Apr 2005)
New Revision: 3566
Modified:
trunk/coregrind/vg_main.c
Log:
For the time being, disable chasing across basic block boundaries.
This fools the redirector to the extent that that strlen et al do not
get reliably intercepted, and hence makes memcheck report some false
errors. Fixing the redirector properly really entails getting rid of
the circularity between the two memory allocators, but that is more
than I have time to sort out right now.
Modified: trunk/coregrind/vg_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_main.c 2005-04-25 15:42:57 UTC (rev 3565)
+++ trunk/coregrind/vg_main.c 2005-04-25 15:49:10 UTC (rev 3566)
@@ -1581,6 +1581,15 @@
=20
LibVEX_default_VexControl(& VG_(clo_vex_control));
=20
+ /* For the time being, disable chasing across basic block
+ boundaries. This fools the redirector to the extent that that
+ strlen et al do not get reliably intercepted, and hence makes
+ memcheck report some false errors. Fixing the redirector
+ properly really entails getting rid of the circularity between
+ the two memory allocators, but that is more than I have time to
+ sort out right now. */
+ VG_(clo_vex_control).guest_chase_thresh =3D 0;
+
/* parse the options we have (only the options we care about now) */
for (i =3D 1; i < vg_argc; i++) {
=20
|
|
From: <sv...@va...> - 2005-04-25 15:43:19
|
Author: sewardj
Date: 2005-04-25 16:42:57 +0100 (Mon, 25 Apr 2005)
New Revision: 3565
Modified:
trunk/coregrind/vg_malloc2.c
Log:
Use __FUNCTION__ correctly.
Modified: trunk/coregrind/vg_malloc2.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_malloc2.c 2005-04-25 11:11:44 UTC (rev 3564)
+++ trunk/coregrind/vg_malloc2.c 2005-04-25 15:42:57 UTC (rev 3565)
@@ -390,14 +390,16 @@
if (init_done) {
VG_(printf)(
"\nTool error:\n"
- " __FUNCTION__ cannot be called after the first allocation.\n"=
);
+ "%s cannot be called after the first allocation.\n",
+ __PRETTY_FUNCTION__);
VG_(exit)(1);
}
// This limit is no special figure, just something not too big
if (rz_szB > 128) {
VG_(printf)(
"\nTool error:\n"
- " __FUNCTION__ passed a too-big value (%llu)", (ULong)rz_szB);
+ " %s passed a too-big value (%llu)",=20
+ __PRETTY_FUNCTION__, (ULong)rz_szB);
VG_(exit)(1);
}
client_malloc_redzone_szB =3D rz_szB;
|
|
From: Nicholas N. <nj...@cs...> - 2005-04-25 15:42:16
|
On Mon, 25 Apr 2005, Benoit Peccatte wrote: > In my coverage tool, I need to call VG(demangle). However it is not > exported from the core. Is there a way to call it properly from a tool ? It would require making it tool-visible by moving it from core.h to tool.h. Are you printing out function/method names as part of the coverage information? AFAICT a coverage tool will need a couple of other changes to the core/tool interface -- to provide the ability to get all the debug line information about a file, which requires one or two extra functions. > I found that valgrind sometime calls SK_(discard_basic_block_info) . I > don't understand what this means. Is it that there was an error ? Is is > because the corresponding library was unloaded ? Sometimes Valgrind removes code translations from its cache, usually because the code cache has filled up. If a tool maintains extra state about each translation, it needs to be told to flush that state when translations are removed. To enable this, the tool must call VG_(needs_basic_block_discards)(). Cachegrind uses this facility. Your profiler may or may not need to use this facility, depending on how exactly it works. BTW, are you doing this work against the Subversion repository? (See http://www.valgrind.org/devel/cvs_svn.html) You should do so, as the intermediate representation has changed significantly in order to support multiple architectures such as AMD64 and PPC. Sorry I didn't mention this earlier. How far advanced is your tool? I'll be interested to see how it compares with mine :) N |
|
From: Benoit P. <ben...@en...> - 2005-04-25 15:23:58
|
In my coverage tool, I need to call VG(demangle). However it is not exported from the core. Is there a way to call it properly from a tool ? I found that valgrind sometime calls SK_(discard_basic_block_info) . I don't understand what this means. Is it that there was an error ? Is is because the corresponding library was unloaded ? |
|
From: Benoit P. <ben...@en...> - 2005-04-25 15:09:06
|
Le ven 22/04/2005 =E0 18:52, Josef Weidendorfer a =E9crit : > On Friday 22 April 2005 16:59, Benoit Peccatte wrote: > > > How do you detect source lines with code never executed? > > > > Valgrind reads a part of the dwarf informations (which are available > > when you compile with -g option). Debug informations contain a list of > > locations where code can be found. I read all of them for each segment > > and thus know what could be run. >=20 > Ah, good. I didn't know you can iterate over debug info in a Valgrind too= l. Well, I didn't use directly valgrind functions. I copied needed structures from vg_symtab.h into the tool's header. I know that's not perfectly clean, but it works for now.=20 > > How can I specify or get values for summary such as percentage=20 > > of executed code by function, by file or by soname ? >=20 > As said above, cg_annotate sums up this itself. The same with KCachegrind= . > The formula could be specified on the command line, or given in the data = file. > KCachegrind supports this by adding a line in the header like > event: Coverage =3D Executed / DebugInfo > and will calculate everything itself. But note that currently there is no= =20 > support for parsing "/" in formulas. Ok, I understand now. Yes I would need the '/' then, but I can't see where the '+' is parsed.=20 As the format is extensible, I'd like to keep a new information associated with each file name : the soname where it has been found. Can I add a so=3D... before fl=3D... ? > I just looked, and I think it was for STABS. > See http://kcachegrind.sourceforge.net/patch-0.2b-valgrind-1.0.4.gz, the = part=20 > for vg_symtab2.c. Thanks. > > Yes it is, I work on a big project with many sub directories. I don't > > want the user to find himself where is each source file, especially if > > the software can do it automaticly. >=20 > With KCachegrind, you only have to specify the base of the source tree, i= t=20 > will recurse into subdirs automatically. I thought the same is true for=20 > cg_annotate, but if not, this should be easy to add. The project I'm working on have several files with the same name. This is not sufficient. |
|
From: <js...@ac...> - 2005-04-25 03:02:45
|
Nightly build on phoenix ( SuSE 9.1 ) started at 2005-04-25 03:50:00 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow insn_mmx: valgrind ./insn_mmx insn_mmxext: (skipping, prereq failed: ../../../tests/cputest x86-mmxext) insn_sse: valgrind ./insn_sse insn_sse2: (skipping, prereq failed: ../../../tests/cputest x86-sse2) int: valgrind ./int pushpopseg: valgrind ./pushpopseg rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 201 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/pth_once (stderr) memcheck/tests/scalar (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/writev (stderr) corecheck/tests/fdleak_fcntl (stderr) make: *** [regtest] Error 1 |
|
From: <sv...@va...> - 2005-04-25 02:38:34
|
Author: sewardj
Date: 2005-04-25 03:38:28 +0100 (Mon, 25 Apr 2005)
New Revision: 3563
Modified:
trunk/coregrind/vg_main.c
Log:
More debug printing
Modified: trunk/coregrind/vg_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_main.c 2005-04-25 02:37:56 UTC (rev 3562)
+++ trunk/coregrind/vg_main.c 2005-04-25 02:38:28 UTC (rev 3563)
@@ -2169,15 +2169,15 @@
start allocating more memory (note: heap is OK, it's just mmap
which is the problem here). */
if (start >=3D VG_(client_end) && start < VG_(valgrind_last)) {
- if (0)
- VG_(printf)("init1: %p-%p prot %s\n",
- start, start+size, VG_(prot_str)(prot));
+ VG_(debugLog)(2, "main",
+ "valgrind-seg: %p-%p prot 0x%x file=3D%s\n",
+ start, start+size, prot, filename);
VG_(map_file_segment)(start, size, prot,
- SF_MMAP|SF_NOSYMS|SF_VALGRIND,
- dev, ino, foffset, filename);
+ SF_MMAP|SF_NOSYMS|SF_VALGRIND,
+ dev, ino, foffset, filename);
/* update VG_(valgrind_last) if it looks wrong */
if (start+size > VG_(valgrind_last))
- VG_(valgrind_last) =3D start+size-1;
+ VG_(valgrind_last) =3D start+size-1;
}
}
=20
@@ -2205,9 +2205,9 @@
is_stack_segment=20
=3D (start =3D=3D VG_(clstk_base) && (start+size) =3D=3D VG_(clstk=
_end));
=20
- if (0)
- VG_(printf)("init2: %p-%p prot %s stack=3D%d\n",
- start, start+size, VG_(prot_str)(prot), is_stack_segment);
+ VG_(debugLog)(2, "main",
+ "any-seg: %p-%p prot 0x%x stack=3D%d file=3D%s\n",
+ start, start+size, prot, is_stack_segment, filename);
=20
if (is_stack_segment)
flags =3D SF_STACK | SF_GROWDOWN;
|
|
From: <sv...@va...> - 2005-04-25 02:38:00
|
Author: sewardj
Date: 2005-04-25 03:37:56 +0100 (Mon, 25 Apr 2005)
New Revision: 3562
Modified:
trunk/coregrind/m_debuglog.c
Log:
More printing fine-tuning
Modified: trunk/coregrind/m_debuglog.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_debuglog.c 2005-04-25 02:05:54 UTC (rev 3561)
+++ trunk/coregrind/m_debuglog.c 2005-04-25 02:37:56 UTC (rev 3562)
@@ -456,7 +456,7 @@
if (level > loglevel)
return;
=20
- indent =3D 1*level - 1;
+ indent =3D 2*level - 1;
if (indent < 1) indent =3D 1;
=20
buf.n =3D 0;
|
|
From: Tom H. <to...@co...> - 2005-04-25 02:31:44
|
Nightly build on dunsmere ( athlon, Fedora Core 3 ) started at 2005-04-25 03:30:04 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... failed Last 20 lines of log.verbose follow gcc -Wmissing-prototypes -Winline -Wall -Wshadow -O -g -mpreferred-stack-boundary=2 -DELFSZ=32 -fno-omit-frame-pointer -Wno-long-long -o valgrind -static -g ume.o stage1.o m_debuglog.o jmp_with_stack.o if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../coregrind -I../coregrind -I.. -I../coregrind/x86 -I../coregrind/x86 -I../coregrind/linux -I../coregrind/x86-linux -I../include -I../include -I../include/x86 -I../include/linux -I../include/x86-linux -I/tmp/valgrind.2913/vex/pub -DVG_LIBDIR="\"/tmp/valgrind.2913/Inst/lib/valgrind"\" -I./demangle -DKICKSTART_BASE=0xb0000000 -DVG_PLATFORM="x86-linux" -Wmissing-prototypes -Winline -Wall -Wshadow -O -g -mpreferred-stack-boundary=2 -DELFSZ=32 -fno-omit-frame-pointer -fpie -Wno-long-long -MT stage2-m_errormgr.o -MD -MP -MF ".deps/stage2-m_errormgr.Tpo" -c -o stage2-m_errormgr.o `test -f 'm_errormgr.c' || echo './'`m_errormgr.c; \ then mv -f ".deps/stage2-m_errormgr.Tpo" ".deps/stage2-m_errormgr.Po"; else rm -f ".deps/stage2-m_errormgr.Tpo"; exit 1; fi if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../coregrind -I../coregrind -I.. -I../coregrind/x86 -I../coregrind/x86 -I../coregrind/linux -I../coregrind/x86-linux -I../include -I../include -I../include/x86 -I../include/linux -I../include/x86-linux -I/tmp/valgrind.2913/vex/pub -DVG_LIBDIR="\"/tmp/valgrind.2913/Inst/lib/valgrind"\" -I./demangle -DKICKSTART_BASE=0xb0000000 -DVG_PLATFORM="x86-linux" -Wmissing-prototypes -Winline -Wall -Wshadow -O -g -mpreferred-stack-boundary=2 -DELFSZ=32 -fno-omit-frame-pointer -fpie -Wno-long-long -MT stage2-m_execontext.o -MD -MP -MF ".deps/stage2-m_execontext.Tpo" -c -o stage2-m_execontext.o `test -f 'm_execontext.c' || echo './'`m_execontext.c; \ then mv -f ".deps/stage2-m_execontext.Tpo" ".deps/stage2-m_execontext.Po"; else rm -f ".deps/stage2-m_execontext.Tpo"; exit 1; fi if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../coregrind -I../coregrind -I.. -I../coregrind/x86 -I../coregrind/x86 -I../coregrind/linux -I../coregrind/x86-linux -I../include -I../include -I../include/x86 -I../include/linux -I../include/x86-linux -I/tmp/valgrind.2913/vex/pub -DVG_LIBDIR="\"/tmp/valgrind.2913/Inst/lib/valgrind"\" -I./demangle -DKICKSTART_BASE=0xb0000000 -DVG_PLATFORM="x86-linux" -Wmissing-prototypes -Winline -Wall -Wshadow -O -g -mpreferred-stack-boundary=2 -DELFSZ=32 -fno-omit-frame-pointer -fpie -Wno-long-long -MT stage2-m_stacktrace.o -MD -MP -MF ".deps/stage2-m_stacktrace.Tpo" -c -o stage2-m_stacktrace.o `test -f 'm_stacktrace.c' || echo './'`m_stacktrace.c; \ then mv -f ".deps/stage2-m_stacktrace.Tpo" ".deps/stage2-m_stacktrace.Po"; else rm -f ".deps/stage2-m_stacktrace.Tpo"; exit 1; fi if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../coregrind -I../coregrind -I.. -I../coregrind/x86 -I../coregrind/x86 -I../coregrind/linux -I../coregrind/x86-linux -I../include -I../include -I../include/x86 -I../include/linux -I../include/x86-linux -I/tmp/valgrind.2913/vex/pub -DVG_LIBDIR="\"/tmp/valgrind.2913/Inst/lib/valgrind"\" -I./demangle -DKICKSTART_BASE=0xb0000000 -DVG_PLATFORM="x86-linux" -Wmissing-prototypes -Winline -Wall -Wshadow -O -g -mpreferred-stack-boundary=2 -DELFSZ=32 -fno-omit-frame-pointer -fpie -Wno-long-long -MT stage2-m_debuglog.o -MD -MP -MF ".deps/stage2-m_debuglog.Tpo" -c -o stage2-m_debuglog.o `test -f 'm_debuglog.c' || echo './'`m_debuglog.c; \ then mv -f ".deps/stage2-m_debuglog.Tpo" ".deps/stage2-m_debuglog.Po"; else rm -f ".deps/stage2-m_debuglog.Tpo"; exit 1; fi m_debuglog.c: In function `local_sys_write_stderr': m_debuglog.c:63: error: can't find a register in class `BREG' while reloading `asm' make[4]: *** [stage2-m_debuglog.o] Error 1 make[4]: Leaving directory `/tmp/valgrind.2913/valgrind/coregrind' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/tmp/valgrind.2913/valgrind/coregrind' make[2]: *** [all] Error 2 make[2]: Leaving directory `/tmp/valgrind.2913/valgrind/coregrind' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/tmp/valgrind.2913/valgrind' make: *** [all] Error 2 |
|
From: Tom H. <th...@cy...> - 2005-04-25 02:30:52
|
Nightly build on audi ( i686, Red Hat 9 ) started at 2005-04-25 03:25:02 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 175 tests, 16 stderr failures, 4 stdout failures ================= memcheck/tests/error_counts (stdout) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/mempool (stderr) memcheck/tests/metadata (stdout) memcheck/tests/metadata (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_exit_group (stderr) memcheck/tests/scalar_supp (stderr) memcheck/tests/trivialleak (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) none/tests/x86/sigcontext (stdout) none/tests/x86/sigcontext (stderr) |
|
From: Tom H. <to...@co...> - 2005-04-25 02:26:19
|
Nightly build on dunsmere ( Fedora Core 3 ) started at 2005-04-25 03:20:03 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow insn_mmx: valgrind ./insn_mmx insn_mmxext: valgrind ./insn_mmxext insn_sse: valgrind ./insn_sse insn_sse2: (skipping, prereq failed: ../../../tests/cputest x86-sse2) int: valgrind ./int sh: line 1: 2734 Segmentation fault VALGRINDLIB=/tmp/valgrind.9503/valgrind/.in_place /tmp/valgrind.9503/valgrind/./coregrind/valgrind --command-line-only=yes --memcheck:leak-check=no --addrcheck:leak-check=no --tool=none ./int >int.stdout.out 2>int.stderr.out pushpopseg: valgrind ./pushpopseg rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 207 tests, 4 stderr failures, 0 stdout failures ================= memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_supp (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2005-04-25 02:22:30
|
Nightly build on audi ( Red Hat 9 ) started at 2005-04-25 03:15:02 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow fpu_lazy_eflags: valgrind ./fpu_lazy_eflags insn_basic: valgrind ./insn_basic insn_cmov: valgrind ./insn_cmov insn_fpu: valgrind ./insn_fpu insn_mmx: valgrind ./insn_mmx insn_mmxext: valgrind ./insn_mmxext insn_sse: valgrind ./insn_sse insn_sse2: (skipping, prereq failed: ../../../tests/cputest x86-sse2) int: valgrind ./int pushpopseg: valgrind ./pushpopseg rcl_assert: valgrind ./rcl_assert seg_override: valgrind ./seg_override -- Finished tests in none/tests/x86 ------------------------------------ yield: valgrind ./yield -- Finished tests in none/tests ---------------------------------------- == 206 tests, 1 stderr failure, 0 stdout failures ================= memcheck/tests/scalar (stderr) make: *** [regtest] Error 1 |
|
From: Tom H. <th...@cy...> - 2005-04-25 02:20:51
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2005-04-25 03:15:02 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 174 tests, 21 stderr failures, 4 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/match-overrun (stderr) memcheck/tests/mempool (stderr) memcheck/tests/metadata (stdout) memcheck/tests/metadata (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_exit_group (stderr) memcheck/tests/scalar_supp (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/vgtest_ume (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) none/tests/x86/sigcontext (stdout) none/tests/x86/sigcontext (stderr) |
|
From: Tom H. <th...@cy...> - 2005-04-25 02:16:41
|
Nightly build on honda ( x86_64, Fedora Core 3 ) started at 2005-04-25 03:10:05 BST Checking out vex source tree ... done Building vex ... done Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 156 tests, 84 stderr failures, 21 stdout failures ================= memcheck/tests/addressable (stdout) memcheck/tests/addressable (stderr) memcheck/tests/badaddrvalue (stdout) memcheck/tests/badaddrvalue (stderr) memcheck/tests/badfree-2trace (stderr) memcheck/tests/badfree (stderr) memcheck/tests/badjump (stderr) memcheck/tests/badjump2 (stderr) memcheck/tests/badloop (stderr) memcheck/tests/badpoll (stderr) memcheck/tests/badrw (stderr) memcheck/tests/brk (stderr) memcheck/tests/brk2 (stderr) memcheck/tests/buflen_check (stderr) memcheck/tests/clientperm (stdout) memcheck/tests/clientperm (stderr) memcheck/tests/custom_alloc (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/doublefree (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/errs1 (stderr) memcheck/tests/execve (stderr) memcheck/tests/execve2 (stderr) memcheck/tests/exitprog (stderr) memcheck/tests/fprw (stderr) memcheck/tests/fwrite (stdout) memcheck/tests/fwrite (stderr) memcheck/tests/inits (stderr) memcheck/tests/inline (stdout) memcheck/tests/inline (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/leakotron (stdout) memcheck/tests/malloc1 (stderr) memcheck/tests/malloc2 (stderr) memcheck/tests/malloc3 (stdout) memcheck/tests/malloc3 (stderr) memcheck/tests/manuel1 (stdout) memcheck/tests/manuel1 (stderr) memcheck/tests/manuel2 (stdout) memcheck/tests/manuel2 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/memalign2 (stderr) memcheck/tests/memalign_test (stderr) memcheck/tests/memcmptest (stdout) memcheck/tests/memcmptest (stderr) memcheck/tests/mempool (stderr) memcheck/tests/metadata (stdout) memcheck/tests/metadata (stderr) memcheck/tests/mismatches (stderr) memcheck/tests/mmaptest (stderr) memcheck/tests/nanoleak (stderr) memcheck/tests/nanoleak_supp (stderr) memcheck/tests/new_nothrow (stderr) memcheck/tests/new_override (stdout) memcheck/tests/new_override (stderr) memcheck/tests/null_socket (stderr) memcheck/tests/overlap (stdout) memcheck/tests/overlap (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/post-syscall (stdout) memcheck/tests/post-syscall (stderr) memcheck/tests/realloc1 (stderr) memcheck/tests/realloc2 (stderr) memcheck/tests/realloc3 (stderr) memcheck/tests/scalar (stderr) memcheck/tests/scalar_exit_group (stderr) memcheck/tests/scalar_fork (stderr) memcheck/tests/scalar_supp (stderr) memcheck/tests/scalar_vfork (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/signal2 (stdout) memcheck/tests/signal2 (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/str_tester (stderr) memcheck/tests/supp1 (stderr) memcheck/tests/supp2 (stderr) memcheck/tests/suppfree (stderr) memcheck/tests/threadederrno (stdout) memcheck/tests/threadederrno (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/trivialleak (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stdout) memcheck/tests/weirdioctl (stderr) memcheck/tests/writev (stderr) memcheck/tests/zeropage (stdout) memcheck/tests/zeropage (stderr) corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/fdleak_creat (stderr) corecheck/tests/fdleak_dup (stderr) corecheck/tests/fdleak_dup2 (stderr) corecheck/tests/fdleak_fcntl (stderr) corecheck/tests/fdleak_ipv4 (stderr) corecheck/tests/fdleak_open (stderr) corecheck/tests/fdleak_pipe (stderr) corecheck/tests/fdleak_socketpair (stderr) massif/tests/toobig-allocs (stderr) none/tests/faultstatus (stderr) none/tests/selfrun (stdout) none/tests/selfrun (stderr) none/tests/yield (stdout) |
|
From: Tom H. <th...@cy...> - 2005-04-25 02:11:50
|
Nightly build on alvis ( Red Hat 7.3 ) started at 2005-04-25 03:05:02 BST Checking out source tree ... done Configuring ... done Building ... done Running regression tests ... done Last 20 lines of log.verbose follow == 205 tests, 17 stderr failures, 0 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/distinguished-writes (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/pth_once (stderr) memcheck/tests/scalar (stderr) memcheck/tests/threadederrno (stderr) memcheck/tests/vgtest_ume (stderr) addrcheck/tests/leak-0 (stderr) addrcheck/tests/leak-cycle (stderr) addrcheck/tests/leak-regroot (stderr) addrcheck/tests/leak-tree (stderr) make: *** [regtest] Error 1 |
|
From: <sv...@va...> - 2005-04-25 02:06:03
|
Author: sewardj
Date: 2005-04-25 03:05:54 +0100 (Mon, 25 Apr 2005)
New Revision: 3561
Modified:
trunk/coregrind/vg_main.c
Log:
Print debugging info at various places in the startup sequence.
Modified: trunk/coregrind/vg_main.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/vg_main.c 2005-04-25 02:04:54 UTC (rev 3560)
+++ trunk/coregrind/vg_main.c 2005-04-25 02:05:54 UTC (rev 3561)
@@ -2404,12 +2404,6 @@
build the segment skip-list.
*/
=20
-static int prmap(char *start, char *end, const char *perm, off_t off,=20
- int maj, int min, int ino, void* dummy) {
- printf("mapping %10p-%10p %s %02x:%02x %d\n",
- start, end, perm, maj, min, ino);
- return True;
-}
=20
/* This may be needed before m_mylibc is OK to run. */
static Int local_strcmp ( const HChar* s1, const HChar* s2 )
@@ -2493,14 +2487,11 @@
// Check we were launched by stage1
// p: none
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Doing scan_auxv()\n");
{
- void* init_sp =3D argv - 1;
- padfile =3D scan_auxv(init_sp);
+ void* init_sp =3D argv - 1;
+ padfile =3D scan_auxv(init_sp);
}
- if (0) {
- printf("=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D main() =3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D\n");
- foreach_map(prmap, /*dummy*/NULL);
- }
=20
//--------------------------------------------------------------
// Look for alternative libdir =20
@@ -2516,6 +2507,7 @@
// Pre-process the command line.
// p: none
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Preprocess command line opts\n");
get_command_line(argc, argv, &vg_argc, &vg_argv, &cl_argv);
pre_process_cmd_line_options(&need_help, &tool, &exec);
=20
@@ -2529,6 +2521,7 @@
// p: set-libdir [for VG_(libdir)]
// p: pre_process_cmd_line_options() [for 'tool']
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Loading tool\n");
load_tool(tool, &toolinfo, &preload);
=20
//=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
@@ -2540,6 +2533,7 @@
// Finalise address space layout
// p: load_tool() [for 'toolinfo']
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Laying out remaining space\n");
layout_remaining_space( (Addr) & argc, toolinfo->shadow_ratio );
=20
//--------------------------------------------------------------
@@ -2547,6 +2541,7 @@
// p: pre_process_cmd_line_options() [for 'exec', 'need_help']
// p: layout_remaining_space [so there's space]
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Loading client\n");
load_client(cl_argv, exec, need_help, &info, &client_eip);
=20
//--------------------------------------------------------------
@@ -2562,6 +2557,7 @@
// p: set-libdir [for VG_(libdir)]
// p: load_tool() [for 'preload']
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Setup client env\n");
env =3D fix_environment(envp, preload);
=20
//--------------------------------------------------------------
@@ -2569,18 +2565,20 @@
// p: load_client() [for 'info']
// p: fix_environment() [for 'env']
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Setup client stack\n");
{=20
- void* init_sp =3D argv - 1;
+ void* init_sp =3D argv - 1;
=20
- sp_at_startup =3D setup_client_stack(init_sp, cl_argv, env, &info,
- &client_auxv);
- free(env);
+ sp_at_startup =3D setup_client_stack(init_sp, cl_argv, env, &info,
+ &client_auxv);
+ free(env);
}
=20
- if (0)
- printf("entry=3D%p client esp=3D%p vg_argc=3D%d brkbase=3D%p\n",
- (void*)client_eip, (void*)sp_at_startup, vg_argc,=20
- (void*)VG_(brk_base));
+ VG_(debugLog)(2, "main",
+ "Client info: "
+ "entry=3D%p client esp=3D%p vg_argc=3D%d brkbase=3D%=
p\n",
+ (void*)client_eip, (void*)sp_at_startup, vg_argc,=20
+ (void*)VG_(brk_base) );
=20
//=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
// Finished setting up operating environment. Now initialise
@@ -2591,12 +2589,14 @@
// setup file descriptors
// p: n/a
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Setup file descriptors\n");
setup_file_descriptors();
=20
//--------------------------------------------------------------
// Build segment map (Valgrind segments only)
// p: tl_pre_clo_init() [to setup new_mem_startup tracker]
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Parse /proc/self/maps (round 1)\n");
VG_(parse_procselfmaps) ( build_valgrind_map_callback );
=20
//=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
@@ -2611,6 +2611,7 @@
// p: parse_procselfmaps [so VG segments are setup so tool c=
an
// call VG_(malloc)]
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Initialise the tool\n");
(*toolinfo->tl_pre_clo_init)();
VG_(sanity_check_needs)();
=20
@@ -2627,6 +2628,7 @@
// Determine CPU architecture and subarchitecture
// p: none
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Check CPU arch/subarch\n");
{ Bool ok =3D VGA_(getArchAndSubArch)(
& VG_(vex_arch), & VG_(vex_subarch) );
if (!ok) {
@@ -2652,6 +2654,7 @@
// p: setup_client_stack() [for 'sp_at_startup']
// p: init tool [for 'new_mem_startup']
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Parse /proc/self/maps (round 2)\n");
sp_at_startup___global_arg =3D sp_at_startup;
VG_(parse_procselfmaps) ( build_segment_map_callback ); /* everythin=
g */
sp_at_startup___global_arg =3D 0;
@@ -2683,6 +2686,7 @@
/* Hook to delay things long enough so we can get the pid and
attach GDB in another shell. */
if (VG_(clo_wait_for_gdb)) {
+ VG_(debugLog)(1, "main", "Wait for GDB\n");
VG_(printf)("pid=3D%d, entering delay loop\n", VG_(getpid)());
/* jrs 20050206: I don't understand why this works on x86. On
amd64 the obvious analogues (jump *$rip or jump *$rcx) don't
@@ -2696,13 +2700,16 @@
// Search for file descriptors that are inherited from our parent
// p: process_cmd_line_options [for VG_(clo_track_fds)]
//--------------------------------------------------------------
- if (VG_(clo_track_fds))
+ if (VG_(clo_track_fds)) {
+ VG_(debugLog)(1, "main", "Init preopened fds\n");
VG_(init_preopened_fds)();
+ }
=20
//--------------------------------------------------------------
// Initialise the scheduler
// p: setup_file_descriptors() [else VG_(safe_fd)() breaks]
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Initialise scheduler\n");
VG_(scheduler_init)();
=20
//--------------------------------------------------------------
@@ -2712,6 +2719,7 @@
// setup_client_stack() [for 'sp_at_startup']
// setup_scheduler() [for the rest of state 1 stuff]
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Initialise thread 1's state\n");
VGA_(init_thread1state)(client_eip, sp_at_startup, &VG_(threads)[1].a=
rch );
=20
// Tell the tool that we just wrote to the registers.
@@ -2730,6 +2738,7 @@
// p: n/a
//--------------------------------------------------------------
// Nb: temporarily parks the saved blocking-mask in saved_sigmask.
+ VG_(debugLog)(1, "main", "Initialise signal management\n");
VG_(sigstartup_actions)();
=20
//--------------------------------------------------------------
@@ -2753,8 +2762,10 @@
// Read suppression file
// p: process_cmd_line_options() [for VG_(clo_suppressions)]
//--------------------------------------------------------------
- if (VG_(needs).core_errors || VG_(needs).tool_errors)
+ if (VG_(needs).core_errors || VG_(needs).tool_errors) {
+ VG_(debugLog)(1, "main", "Load suppressions\n");
VG_(load_suppressions)();
+ }
=20
//--------------------------------------------------------------
// Initialise translation table and translation cache
@@ -2762,6 +2773,7 @@
// aren't identified as part of the client, which would waste
// > 20M of virtual address space.]
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Initialise TT/TC\n");
VG_(init_tt_tc)();
=20
//--------------------------------------------------------------
@@ -2769,6 +2781,7 @@
// p: parse_procselfmaps? [XXX for debug info?]
// p: init_tt_tc [so it can call VG_(search_transtab) safely]
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Initialise redirects\n");
VG_(setup_code_redirect_table)();
VGP_(setup_redirects)();
=20
@@ -2795,6 +2808,7 @@
=20
vg_assert(VG_(master_tid) =3D=3D 1);
=20
+ VG_(debugLog)(1, "main", "Running thread 1\n");
VGA_(main_thread_wrapper)(1);
=20
abort();
|
|
From: <sv...@va...> - 2005-04-25 02:05:09
|
Author: sewardj
Date: 2005-04-25 03:04:54 +0100 (Mon, 25 Apr 2005)
New Revision: 3560
Modified:
trunk/coregrind/m_debuglog.c
Log:
Print a bit more prettily.
Modified: trunk/coregrind/m_debuglog.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_debuglog.c 2005-04-25 01:36:56 UTC (rev 3559)
+++ trunk/coregrind/m_debuglog.c 2005-04-25 02:04:54 UTC (rev 3560)
@@ -448,22 +448,27 @@
const HChar* format, ... )
{
UInt ret, pid;
+ Int indent;
va_list vargs;
printf_buf buf;
+
=20
if (level > loglevel)
return;
=20
+ indent =3D 1*level - 1;
+ if (indent < 1) indent =3D 1;
+
buf.n =3D 0;
buf.buf[0] =3D 0;
pid =3D local_sys_getpid();
- (void)myvprintf_str ( add_to_buf, &buf, 0, 1, "<", False );
- (void)myvprintf_int64 ( add_to_buf, &buf, 0, 10, 5, (ULong)pid );
- (void)myvprintf_str ( add_to_buf, &buf, 0, 1, ",", False );
+ (void)myvprintf_str ( add_to_buf, &buf, 0, 2, "--", False );
+ (void)myvprintf_int64 ( add_to_buf, &buf, 0, 10, 1, (ULong)pid );
+ (void)myvprintf_str ( add_to_buf, &buf, 0, 1, ":", False );
(void)myvprintf_int64 ( add_to_buf, &buf, 0, 10, 1, (ULong)level );
- (void)myvprintf_str ( add_to_buf, &buf, 0, 1, ",", False );
+ (void)myvprintf_str ( add_to_buf, &buf, 0, 1, ":", False );
(void)myvprintf_str ( add_to_buf, &buf, 0, 8, (HChar*)modulename, Fal=
se );
- (void)myvprintf_str ( add_to_buf, &buf, 0, 2, "> ", False );
+ (void)myvprintf_str ( add_to_buf, &buf, 0, indent, "", False );
=20
va_start(vargs,format);
=20
|