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
(21) |
2
(18) |
3
(19) |
4
(17) |
|
5
(6) |
6
(5) |
7
(9) |
8
(21) |
9
(16) |
10
(21) |
11
(22) |
|
12
(19) |
13
(19) |
14
(8) |
15
(16) |
16
(17) |
17
(16) |
18
(33) |
|
19
(33) |
20
(34) |
21
(32) |
22
(26) |
23
(23) |
24
(16) |
25
(21) |
|
26
(19) |
27
(7) |
28
(29) |
29
(27) |
30
(55) |
|
|
|
From: <sv...@va...> - 2005-06-25 20:49:37
|
Author: njn
Date: 2005-06-25 21:49:33 +0100 (Sat, 25 Jun 2005)
New Revision: 4025
Log:
Made m_debuginfo not depend on m_aspacemgr, breaking the direct circular
dependence between them. (There's still an indirect one via m_libcmman.)
As a result, I was able to move the Segment type declaration into
pub_core_aspacemgr.h, which is a much better spot. I was also able to
remove a couple of #includes.
Modified:
trunk/coregrind/m_aspacemgr/aspacemgr.c
trunk/coregrind/m_debuginfo/symtab.c
trunk/coregrind/m_redir.c
trunk/coregrind/m_stacktrace.c
trunk/coregrind/pub_core_aspacemgr.h
trunk/coregrind/pub_core_debuginfo.h
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-06-25 20:22:43 UTC (rev =
4024)
+++ trunk/coregrind/m_aspacemgr/aspacemgr.c 2005-06-25 20:49:33 UTC (rev =
4025)
@@ -792,13 +792,16 @@
&& ( (addr+len < VG_(valgrind_base) || addr > VG_(valgrind_last))
|| is_stage2
)
- && (flags & (SF_MMAP|SF_NOSYMS)) =3D=3D SF_MMAP) {
+ && (flags & (SF_MMAP|SF_NOSYMS)) =3D=3D SF_MMAP
+ ) {
if (off =3D=3D 0
&& s->fnIdx !=3D -1
&& (prot & (VKI_PROT_READ|VKI_PROT_EXEC)) =3D=3D (VKI_PROT_READ|VKI_P=
ROT_EXEC)
&& len >=3D VKI_PAGE_SIZE
- && VG_(is_object_file)((void *)addr)) {
- s->seginfo =3D VG_(read_seg_symbols)(s);
+ && VG_(is_object_file)((void *)addr)
+ ) {
+ s->seginfo =3D VG_(read_seg_symbols)(s->addr, s->len, s->offset=
,
+ s->filename);
if (s->seginfo !=3D NULL) {
s->flags |=3D SF_DYNLIB;
}
Modified: trunk/coregrind/m_debuginfo/symtab.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_debuginfo/symtab.c 2005-06-25 20:22:43 UTC (rev 402=
4)
+++ trunk/coregrind/m_debuginfo/symtab.c 2005-06-25 20:49:33 UTC (rev 402=
5)
@@ -31,8 +31,6 @@
=20
#include "pub_core_basics.h"
#include "pub_core_threadstate.h"
-#include "pub_core_debuginfo.h" // Needed for pub_core_aspacemgr :(
-#include "pub_core_aspacemgr.h" // For Segment type
#include "pub_core_debuginfo.h"
#include "pub_core_demangle.h"
#include "pub_core_libcbase.h"
@@ -1618,22 +1616,21 @@
address ranges, and as a result the SegInfos in this list describe
disjoint address ranges.=20
*/
-SegInfo *VG_(read_seg_symbols) ( Segment *seg )
+SegInfo *VG_(read_seg_symbols) ( Addr seg_addr, SizeT seg_len,
+ OffT seg_offset, const Char* seg_filena=
me)
{
SegInfo* si;
=20
- vg_assert(seg->seginfo =3D=3D NULL);
-
VGP_PUSHCC(VgpReadSyms);
=20
/* Get the record initialised right. */
si =3D VG_(arena_malloc)(VG_AR_SYMTAB, sizeof(SegInfo));
=20
VG_(memset)(si, 0, sizeof(*si));
- si->start =3D seg->addr;
- si->size =3D seg->len;
- si->foffset =3D seg->offset;
- si->filename =3D VG_(arena_strdup)(VG_AR_SYMTAB, seg->filename);
+ si->start =3D seg_addr;
+ si->size =3D seg_len;
+ si->foffset =3D seg_offset;
+ si->filename =3D VG_(arena_strdup)(VG_AR_SYMTAB, seg_filename);
=20
si->ref =3D 1;
=20
Modified: trunk/coregrind/m_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/m_redir.c 2005-06-25 20:22:43 UTC (rev 4024)
+++ trunk/coregrind/m_redir.c 2005-06-25 20:49:33 UTC (rev 4025)
@@ -31,8 +31,7 @@
*/
=20
#include "pub_core_basics.h"
-#include "pub_core_debuginfo.h" // Needed for pub_core_aspacemgr :(
-#include "pub_core_aspacemgr.h" // Needed for pub_core_redir.h :(
+#include "pub_core_debuginfo.h"
#include "pub_core_libcbase.h"
#include "pub_core_libcassert.h"
#include "pub_core_libcprint.h"
Modified: trunk/coregrind/m_stacktrace.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_stacktrace.c 2005-06-25 20:22:43 UTC (rev 4024)
+++ trunk/coregrind/m_stacktrace.c 2005-06-25 20:49:33 UTC (rev 4025)
@@ -30,7 +30,7 @@
=20
#include "pub_core_basics.h"
#include "pub_core_threadstate.h"
-#include "pub_core_debuginfo.h" // Needed for pub_core_aspacemgr :(
+#include "pub_core_debuginfo.h"
#include "pub_core_aspacemgr.h" // For VG_(is_addressable)()
#include "pub_core_libcbase.h"
#include "pub_core_libcassert.h"
Modified: trunk/coregrind/pub_core_aspacemgr.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/pub_core_aspacemgr.h 2005-06-25 20:22:43 UTC (rev 402=
4)
+++ trunk/coregrind/pub_core_aspacemgr.h 2005-06-25 20:49:33 UTC (rev 402=
5)
@@ -87,6 +87,8 @@
#define SF_CODE (1 << 14) // segment contains cached code
#define SF_DEVICE (1 << 15) // device mapping; avoid careless touching
=20
+typedef struct _Segment Segment;
+
struct _Segment {
UInt prot; // VKI_PROT_*
UInt flags; // SF_*
Modified: trunk/coregrind/pub_core_debuginfo.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/pub_core_debuginfo.h 2005-06-25 20:22:43 UTC (rev 402=
4)
+++ trunk/coregrind/pub_core_debuginfo.h 2005-06-25 20:49:33 UTC (rev 402=
5)
@@ -41,10 +41,9 @@
=20
#include "pub_tool_debuginfo.h"
=20
-typedef struct _Segment Segment;
-
extern Bool VG_(is_object_file) ( const void *hdr );
-extern SegInfo * VG_(read_seg_symbols) ( Segment *seg );
+extern SegInfo *VG_(read_seg_symbols) ( Addr addr, SizeT len,
+ OffT offset, const Char* filenam=
e);
extern void VG_(seginfo_incref) ( SegInfo * );
extern void VG_(seginfo_decref) ( SegInfo *, Addr a );
=20
|
|
From: <sv...@va...> - 2005-06-25 20:23:17
|
Author: njn
Date: 2005-06-25 21:22:43 +0100 (Sat, 25 Jun 2005)
New Revision: 4024
Log:
Avoid m_redir.c importing priv_symtab.h.
Modified:
trunk/coregrind/m_debuginfo/symtab.c
trunk/coregrind/m_redir.c
trunk/include/pub_tool_debuginfo.h
Modified: trunk/coregrind/m_debuginfo/symtab.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_debuginfo/symtab.c 2005-06-25 20:13:05 UTC (rev 402=
3)
+++ trunk/coregrind/m_debuginfo/symtab.c 2005-06-25 20:22:43 UTC (rev 402=
4)
@@ -2580,6 +2580,11 @@
return si->size;
}
=20
+const UChar* VG_(seginfo_soname)(const SegInfo* si)
+{
+ return si->soname;
+}
+
const UChar* VG_(seginfo_filename)(const SegInfo* si)
{
return si->filename;
Modified: trunk/coregrind/m_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/m_redir.c 2005-06-25 20:13:05 UTC (rev 4023)
+++ trunk/coregrind/m_redir.c 2005-06-25 20:22:43 UTC (rev 4024)
@@ -42,7 +42,6 @@
#include "pub_core_skiplist.h"
#include "pub_core_trampoline.h"
#include "pub_core_transtab.h"
-#include "m_debuginfo/priv_symtab.h" // XXX: bad! For SegInfo internal=
s
=20
/*------------------------------------------------------------*/
/*--- General purpose redirection. ---*/
@@ -97,16 +96,16 @@
=20
static CodeRedirect *unresolved_redir =3D NULL;
=20
-static Bool match_lib(const Char *pattern, const SegInfo *si)
+static Bool soname_matches(const Char *pattern, const Char* soname)
{
// pattern must start with "soname:"
vg_assert(NULL !=3D pattern);
vg_assert(0 =3D=3D VG_(strncmp)(pattern, "soname:", 7));
=20
- if (si->soname =3D=3D NULL)
+ if (NULL =3D=3D soname)
return False;
=20
- return VG_(string_match)(pattern + 7, si->soname);
+ return VG_(string_match)(pattern + 7, soname);
}
=20
static inline Bool from_resolved(const CodeRedirect *redir)
@@ -200,7 +199,7 @@
vg_assert(!resolved);
vg_assert(redir->from_sym !=3D NULL);
=20
- if (match_lib(redir->from_lib, si)) {
+ if (soname_matches(redir->from_lib, VG_(seginfo_soname)(si))) {
redir->from_addr =3D VG_(reverse_search_one_symtab)(si, redir->fro=
m_sym);
if (VG_(clo_trace_redir) && redir->from_addr !=3D 0)
VG_(printf)(" bind FROM: %p =3D %s:%s\n",=20
@@ -244,7 +243,7 @@
=20
if (VG_(clo_trace_redir))
VG_(printf)("Considering redirs to/from %s(soname=3D%s)\n",
- si->filename, si->soname);
+ VG_(seginfo_filename)(si), VG_(seginfo_soname)(si));
=20
/* visit each unresolved redir - if it becomes resolved, then
remove it from the unresolved list */
Modified: trunk/include/pub_tool_debuginfo.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/include/pub_tool_debuginfo.h 2005-06-25 20:13:05 UTC (rev 4023)
+++ trunk/include/pub_tool_debuginfo.h 2005-06-25 20:22:43 UTC (rev 4024)
@@ -105,6 +105,7 @@
extern const SegInfo* VG_(next_seginfo) ( const SegInfo *si );
extern Addr VG_(seginfo_start) ( const SegInfo *si );
extern SizeT VG_(seginfo_size) ( const SegInfo *si );
+extern const UChar* VG_(seginfo_soname) ( const SegInfo *si );
extern const UChar* VG_(seginfo_filename) ( const SegInfo *si );
extern ULong VG_(seginfo_sym_offset)( const SegInfo *si );
=20
|
|
From: <sv...@va...> - 2005-06-25 20:13:14
|
Author: njn
Date: 2005-06-25 21:13:05 +0100 (Sat, 25 Jun 2005)
New Revision: 4023
Log:
Remove unneeded cases from match_lib.
Modified:
trunk/coregrind/m_redir.c
Modified: trunk/coregrind/m_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/m_redir.c 2005-06-25 19:52:02 UTC (rev 4022)
+++ trunk/coregrind/m_redir.c 2005-06-25 20:13:05 UTC (rev 4023)
@@ -91,37 +91,22 @@
return buf;
}
=20
-static SkipList sk_resolved_redir =3D VG_SKIPLIST_INIT(CodeRedirect, fro=
m_addr,=20
- VG_(cmp_Addr), straddr, VG_AR_SYMTAB);
+static SkipList sk_resolved_redir =3D=20
+ VG_SKIPLIST_INIT(CodeRedirect, from_addr, VG_(cmp_Addr),=20
+ straddr, VG_AR_SYMTAB);
+
static CodeRedirect *unresolved_redir =3D NULL;
=20
static Bool match_lib(const Char *pattern, const SegInfo *si)
{
- /* pattern =3D=3D NULL matches everything, otherwise use globbing
+ // pattern must start with "soname:"
+ vg_assert(NULL !=3D pattern);
+ vg_assert(0 =3D=3D VG_(strncmp)(pattern, "soname:", 7));
=20
- If the pattern starts with:
- file:, then match filename
- soname:, then match soname
- something else, match filename
- */
- const Char *name =3D si->filename;
-
- if (pattern =3D=3D NULL)
- return True;
-
- if (VG_(strncmp)(pattern, "file:", 5) =3D=3D 0) {
- pattern +=3D 5;
- name =3D si->filename;
- }
- if (VG_(strncmp)(pattern, "soname:", 7) =3D=3D 0) {
- pattern +=3D 7;
- name =3D si->soname;
- }
-
- if (name =3D=3D NULL)
+ if (si->soname =3D=3D NULL)
return False;
=20
- return VG_(string_match)(pattern, name);
+ return VG_(string_match)(pattern + 7, si->soname);
}
=20
static inline Bool from_resolved(const CodeRedirect *redir)
|
|
From: <sv...@va...> - 2005-06-25 19:52:05
|
Author: njn
Date: 2005-06-25 20:52:02 +0100 (Sat, 25 Jun 2005)
New Revision: 4022
Log:
avoid compiler warning
Modified:
trunk/coregrind/m_stacktrace.c
Modified: trunk/coregrind/m_stacktrace.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_stacktrace.c 2005-06-25 19:51:33 UTC (rev 4021)
+++ trunk/coregrind/m_stacktrace.c 2005-06-25 19:52:02 UTC (rev 4022)
@@ -65,6 +65,7 @@
/* Take a snapshot of the client's stack, putting the up to 'n_ips' IPs=20
into 'ips'. In order to be thread-safe, we pass in the thread's IP
and FP. Returns number of IPs put in 'ips'. */
+static
UInt VG_(get_StackTrace2) ( Addr* ips, UInt n_ips,=20
Addr ip, Addr sp, Addr fp,
Addr fp_min, Addr fp_max_orig )
|
|
From: <sv...@va...> - 2005-06-25 19:51:41
|
Author: njn
Date: 2005-06-25 20:51:33 +0100 (Sat, 25 Jun 2005)
New Revision: 4021
Log:
Rename functions to make the type involved clearer.
Modified:
trunk/coregrind/m_debuginfo/symtab.c
trunk/helgrind/hg_main.c
trunk/include/pub_tool_debuginfo.h
Modified: trunk/coregrind/m_debuginfo/symtab.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_debuginfo/symtab.c 2005-06-25 19:45:34 UTC (rev 402=
0)
+++ trunk/coregrind/m_debuginfo/symtab.c 2005-06-25 19:51:33 UTC (rev 402=
1)
@@ -2570,27 +2570,27 @@
return si->next;
}
=20
-Addr VG_(seg_start)(const SegInfo* si)
+Addr VG_(seginfo_start)(const SegInfo* si)
{
return si->start;
}
=20
-SizeT VG_(seg_size)(const SegInfo* si)
+SizeT VG_(seginfo_size)(const SegInfo* si)
{
return si->size;
}
=20
-const UChar* VG_(seg_filename)(const SegInfo* si)
+const UChar* VG_(seginfo_filename)(const SegInfo* si)
{
return si->filename;
}
=20
-ULong VG_(seg_sym_offset)(const SegInfo* si)
+ULong VG_(seginfo_sym_offset)(const SegInfo* si)
{
return si->offset;
}
=20
-VgSectKind VG_(seg_sect_kind)(Addr a)
+VgSectKind VG_(seginfo_sect_kind)(Addr a)
{
SegInfo* si;
VgSectKind ret =3D Vg_SectUnknown;
Modified: trunk/helgrind/hg_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/helgrind/hg_main.c 2005-06-25 19:45:34 UTC (rev 4020)
+++ trunk/helgrind/hg_main.c 2005-06-25 19:51:33 UTC (rev 4021)
@@ -2425,9 +2425,9 @@
si !=3D NULL;=20
si =3D VG_(next_seginfo)(si))=20
{
- Addr base =3D VG_(seg_start)(si);
- SizeT size =3D VG_(seg_size)(si);
- const UChar *filename =3D VG_(seg_filename)(si);
+ Addr base =3D VG_(seginfo_start)(si);
+ SizeT size =3D VG_(seginfo_size)(si);
+ const UChar *filename =3D VG_(seginfo_filename)(si);
=20
if (a >=3D base && a < base+size) {
ai->akind =3D Segment;
@@ -2435,7 +2435,7 @@
ai->rwoffset =3D a - base;
ai->filename =3D filename;
=20
- switch(VG_(seg_sect_kind)(a)) {
+ switch(VG_(seginfo_sect_kind)(a)) {
case Vg_SectText: ai->section =3D "text"; break;
case Vg_SectData: ai->section =3D "data"; break;
case Vg_SectBSS: ai->section =3D "BSS"; break;
Modified: trunk/include/pub_tool_debuginfo.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/include/pub_tool_debuginfo.h 2005-06-25 19:45:34 UTC (rev 4020)
+++ trunk/include/pub_tool_debuginfo.h 2005-06-25 19:51:33 UTC (rev 4021)
@@ -102,11 +102,11 @@
is present or not. */
extern SegInfo* VG_(get_obj) ( Addr a );
=20
-extern const SegInfo* VG_(next_seginfo) ( const SegInfo *si );
-extern Addr VG_(seg_start) ( const SegInfo *si );
-extern SizeT VG_(seg_size) ( const SegInfo *si );
-extern const UChar* VG_(seg_filename) ( const SegInfo *si );
-extern ULong VG_(seg_sym_offset)( const SegInfo *si );
+extern const SegInfo* VG_(next_seginfo) ( const SegInfo *si );
+extern Addr VG_(seginfo_start) ( const SegInfo *si );
+extern SizeT VG_(seginfo_size) ( const SegInfo *si );
+extern const UChar* VG_(seginfo_filename) ( const SegInfo *si );
+extern ULong VG_(seginfo_sym_offset)( const SegInfo *si );
=20
typedef
enum {
@@ -119,7 +119,7 @@
}
VgSectKind;
=20
-extern VgSectKind VG_(seg_sect_kind)(Addr);
+extern VgSectKind VG_(seginfo_sect_kind)(Addr);
=20
#endif // __PUB_TOOL_DEBUGINFO_H
=20
|
|
From: <sv...@va...> - 2005-06-25 19:45:36
|
Author: njn
Date: 2005-06-25 20:45:34 +0100 (Sat, 25 Jun 2005)
New Revision: 4020
Log:
Make the is_stage2 test work when running Valgrind in-place in a=20
source tree.
Modified:
trunk/coregrind/m_aspacemgr/aspacemgr.c
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-06-25 19:33:50 UTC (rev =
4019)
+++ trunk/coregrind/m_aspacemgr/aspacemgr.c 2005-06-25 19:45:34 UTC (rev =
4020)
@@ -738,8 +738,12 @@
static const Bool debug =3D False || mem_debug;
Segment* s;
Int idx;
- HChar* stage2_suffix =3D "lib/valgrind/stage2";
- Bool is_stage2 =3D VG_(strstr)(filename, stage2_suffix) !=3D NULL=
;
+ HChar* stage2_suffix1 =3D "lib/valgrind/stage2";
+ HChar* stage2_suffix2 =3D "coregrind/stage2";
+ Bool is_stage2 =3D False;
+ =20
+ is_stage2 =3D is_stage2 || ( VG_(strstr)(filename, stage2_suffix1) !=3D=
NULL );
+ is_stage2 =3D is_stage2 || ( VG_(strstr)(filename, stage2_suffix2) !=3D=
NULL );
=20
if (debug)
VG_(printf)(
|
|
From: <sv...@va...> - 2005-06-25 19:34:20
|
Author: njn
Date: 2005-06-25 20:33:50 +0100 (Sat, 25 Jun 2005)
New Revision: 4019
Log:
Remove the Segment back-pointer from SegInfo. The only place it was
being used was in resolve_redir(), and due to the way resolve_redir()
is called, the involved test was always failing anyway. So we lose
nothing by removing it except some complexity -- there is no longer a
circularity between Segments and SegInfos.
Modified:
trunk/coregrind/m_debuginfo/priv_symtab.h
trunk/coregrind/m_debuginfo/symtab.c
trunk/coregrind/m_redir.c
Modified: trunk/coregrind/m_debuginfo/priv_symtab.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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_debuginfo/priv_symtab.h 2005-06-25 15:22:10 UTC (re=
v 4018)
+++ trunk/coregrind/m_debuginfo/priv_symtab.h 2005-06-25 19:33:50 UTC (re=
v 4019)
@@ -171,7 +171,6 @@
struct _SegInfo {
struct _SegInfo* next; /* list of SegInfos */
=20
- Segment *seg; /* first segment we're mapped out of */
Int ref;
=20
/* Description of the mapped segment. */
Modified: trunk/coregrind/m_debuginfo/symtab.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_debuginfo/symtab.c 2005-06-25 15:22:10 UTC (rev 401=
8)
+++ trunk/coregrind/m_debuginfo/symtab.c 2005-06-25 19:33:50 UTC (rev 401=
9)
@@ -1648,8 +1648,6 @@
si->cfisi_size =3D si->cfisi_used =3D 0;
si->cfisi_minaddr =3D si->cfisi_maxaddr =3D 0;
=20
- si->seg =3D seg;
-
si->stab_typetab =3D NULL;
=20
si->plt_start =3D si->plt_size =3D 0;
Modified: trunk/coregrind/m_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/m_redir.c 2005-06-25 15:22:10 UTC (rev 4018)
+++ trunk/coregrind/m_redir.c 2005-06-25 19:33:50 UTC (rev 4019)
@@ -210,12 +210,7 @@
Bool resolved;
=20
vg_assert(si !=3D NULL);
- vg_assert(si->seg !=3D NULL);
=20
- /* no redirection from Valgrind segments */
- if (si->seg->flags & SF_VALGRIND)
- return False;
-
resolved =3D from_resolved(redir);
vg_assert(!resolved);
vg_assert(redir->from_sym !=3D NULL);
|
|
From: Julian S. <js...@ac...> - 2005-06-25 16:05:44
|
> > Do not print backtraces in assertion failures. This is an as-yet > > unsuccessful attempt to remove m_libcassert from the huge cycle which > > most of the modules currently live in. > > I understand why you want to break the cycles, but dropping the > backtraces from assertion failures sounds like quite a backward > step to me - are you expecting it to be a temporary measure or > something permanent? It is a backward step. The problem is that having backtraces in assertions drags in an extraordinary amount of stuff: all the debug info reading machinery, which depends on dynamic memory allocation (m_mallocfree). That means you can't legitimately use assertions in the low-level modules that are supposed to be able to operate without dynamic memory allocation (m_debuglog, m_libcbase, and importantly at some point m_aspacemgr), which is mad. An alternative is to reinstate them, but also add a new kind of lightweight no-backtrace assertion for use in aforementioned modules that should be towards the bottom of the graph. That's still a weak solution, though, since there are quite a lot of modules that m_debuginfo depends on, and all of them would have to use this lightweight assertion in order to avoid a circular dependence on m_debuginfo. J |
|
From: Tom H. <to...@co...> - 2005-06-25 15:35:47
|
In message <200...@op...>
sv...@va... wrote:
> Do not print backtraces in assertion failures. This is an as-yet
> unsuccessful attempt to remove m_libcassert from the huge cycle which
> most of the modules currently live in.
I understand why you want to break the cycles, but dropping the
backtraces from assertion failures sounds like quite a backward
step to me - are you expecting it to be a temporary measure or
something permanent?
Tom
--
Tom Hughes (to...@co...)
http://www.compton.nu/
|
|
From: <sv...@va...> - 2005-06-25 15:22:16
|
Author: sewardj
Date: 2005-06-25 16:22:10 +0100 (Sat, 25 Jun 2005)
New Revision: 4018
Log:
Do not print backtraces in assertion failures. This is an as-yet
unsuccessful attempt to remove m_libcassert from the huge cycle which
most of the modules currently live in.
VG_(get_StackTrace2) can now be privatised, but I haven't done so yet.
Modified:
trunk/coregrind/m_libcassert.c
trunk/coregrind/pub_core_stacktrace.h
Modified: trunk/coregrind/m_libcassert.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_libcassert.c 2005-06-25 14:43:05 UTC (rev 4017)
+++ trunk/coregrind/m_libcassert.c 2005-06-25 15:22:10 UTC (rev 4018)
@@ -33,8 +33,8 @@
#include "pub_core_libcbase.h"
#include "pub_core_libcassert.h"
#include "pub_core_libcprint.h"
-#include "pub_core_libcproc.h" // For VG_(gettid)()
-#include "pub_core_stacktrace.h"
+//zz hash inklood "pub_cor_libcproc.h" // For VG_(gettid)()
+//zz hash inklood "pub_cor_stacktrace.h"
#include "pub_core_syscall.h"
#include "pub_core_tooliface.h" // For VG_(details).{name,bug_report=
s_to}
#include "vki_unistd.h"
@@ -43,30 +43,30 @@
Assertery.
------------------------------------------------------------------ */
=20
-#if defined(VGP_x86_linux)
-# define GET_REAL_SP_AND_FP(sp, fp) \
- asm("movl %%esp, %0;" \
- "movl %%ebp, %1;" \
- : "=3Dr" (sp),\
- "=3Dr" (fp));
-#elif defined(VGP_amd64_linux)
-# define GET_REAL_SP_AND_FP(sp, fp) \
- asm("movq %%rsp, %0;" \
- "movq %%rbp, %1;" \
- : "=3Dr" (sp),\
- "=3Dr" (fp));
-#elif defined(VGP_ppc32_linux)
-# define GET_REAL_SP_AND_FP(sp, fp) \
- asm("mr %0,1;" \
- "mr %1,1;" \
- : "=3Dr" (sp),\
- "=3Dr" (fp));
-#else
-# error Unknown platform
-#endif
+//zz #if defined(VGP_x86_linux)
+//zz # define GET_REAL_SP_AND_FP(sp, fp) \
+//zz asm("movl %%esp, %0;" \
+//zz "movl %%ebp, %1;" \
+//zz : "=3Dr" (sp),\
+//zz "=3Dr" (fp));
+//zz #elif defined(VGP_amd64_linux)
+//zz # define GET_REAL_SP_AND_FP(sp, fp) \
+//zz asm("movq %%rsp, %0;" \
+//zz "movq %%rbp, %1;" \
+//zz : "=3Dr" (sp),\
+//zz "=3Dr" (fp));
+//zz #elif defined(VGP_ppc32_linux)
+//zz # define GET_REAL_SP_AND_FP(sp, fp) \
+//zz asm("mr %0,1;" \
+//zz "mr %1,1;" \
+//zz : "=3Dr" (sp),\
+//zz "=3Dr" (fp));
+//zz #else
+//zz # error Unknown platform
+//zz #endif
+//zz=20
+//zz #define BACKTRACE_DEPTH 100 // nice and deep!
=20
-#define BACKTRACE_DEPTH 100 // nice and deep!
-
/* Pull down the entire world */
void VG_(exit)( Int status )
{
@@ -88,7 +88,7 @@
if (VG_(threads)[i].status =3D=3D VgTs_Empty) continue;
VG_(printf)( "\nThread %d: status =3D %s\n", i,=20
VG_(name_of_ThreadStatus)(VG_(threads)[i].status) );
- VG_(get_and_pp_StackTrace)( i, BACKTRACE_DEPTH );
+//zz VG_(get_and_pp_StackTrace)( i, BACKTRACE_DEPTH );
}
VG_(printf)("\n");
}
@@ -96,25 +96,26 @@
__attribute__ ((noreturn))
static void report_and_quit ( const Char* report, Addr ip, Addr sp, Addr=
fp )
{
- Addr stacktop, ips[BACKTRACE_DEPTH];
- ThreadState *tst;
+//zz Addr stacktop;
+//zz Addr ips[BACKTRACE_DEPTH];
+//zz ThreadState *tst;
+//zz=20
+//zz tst =3D VG_(get_ThreadState)( VG_(get_lwp_tid)(VG_(gettid)()) );
+//zz=20
+//zz // If necessary, fake up an ExeContext which is of our actual re=
al CPU
+//zz // state. Could cause problems if we got the panic/exception wi=
thin the
+//zz // execontext/stack dump/symtab code. But it's better than noth=
ing.
+//zz if (0 =3D=3D ip && 0 =3D=3D sp && 0 =3D=3D fp) {
+//zz ip =3D (Addr)__builtin_return_address(0);
+//zz GET_REAL_SP_AND_FP(sp, fp);
+//zz }
+//zz=20
+//zz stacktop =3D tst->os_state.valgrind_stack_base +=20
+//zz tst->os_state.valgrind_stack_szB;
+//zz=20
+//zz VG_(get_StackTrace2)(ips, BACKTRACE_DEPTH, ip, sp, fp, sp, stack=
top);
+//zz VG_(pp_StackTrace) (ips, BACKTRACE_DEPTH);
=20
- tst =3D VG_(get_ThreadState)( VG_(get_lwp_tid)(VG_(gettid)()) );
-
- // If necessary, fake up an ExeContext which is of our actual real CP=
U
- // state. Could cause problems if we got the panic/exception within =
the
- // execontext/stack dump/symtab code. But it's better than nothing.
- if (0 =3D=3D ip && 0 =3D=3D sp && 0 =3D=3D fp) {
- ip =3D (Addr)__builtin_return_address(0);
- GET_REAL_SP_AND_FP(sp, fp);
- }
-
- stacktop =3D tst->os_state.valgrind_stack_base +=20
- tst->os_state.valgrind_stack_szB;
-
- VG_(get_StackTrace2)(ips, BACKTRACE_DEPTH, ip, sp, fp, sp, stacktop);
- VG_(pp_StackTrace) (ips, BACKTRACE_DEPTH);
-
// Don't print this, as it's not terribly interesting and avoids a
// dependence on m_scheduler/, which would be crazy.
//VG_(printf)("\nBasic block ctr is approximately %llu\n", VG_(bbs_do=
ne) );
Modified: trunk/coregrind/pub_core_stacktrace.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/pub_core_stacktrace.h 2005-06-25 14:43:05 UTC (rev 40=
17)
+++ trunk/coregrind/pub_core_stacktrace.h 2005-06-25 15:22:10 UTC (rev 40=
18)
@@ -38,10 +38,10 @@
=20
#include "pub_tool_stacktrace.h"
=20
-// Variant that gives a little more control over the stack-walking.
-extern UInt VG_(get_StackTrace2) ( StackTrace ips, UInt n_ips,=20
- Addr ip, Addr sp, Addr fp,=20
- Addr fp_min, Addr fp_max );
+//zz // Variant that gives a little more control over the stack-walking.
+//zz extern UInt VG_(get_StackTrace2) ( StackTrace ips, UInt n_ips,=20
+//zz Addr ip, Addr sp, Addr fp,=20
+//zz Addr fp_min, Addr fp_max );
=20
#endif // __PUB_CORE_STACKTRACE_H
=20
|
|
From: Nicholas N. <nj...@cs...> - 2005-06-25 14:49:49
|
On Sat, 25 Jun 2005, Ralf Wildenhues wrote: > Do you prefer proposed patches via the bug tracker or are mails to this > list ok? Probably the bug tracker because we can't lose them if they're on there. > For me, pdfxmltex stopped for user input because of a > latex syntax error caused by different xml versions. Without seeing > latex output, it's very confusing to see the build just wait without > load. The other way to solve this would be to invoke latex in batch > mode, and/or redirect stdin to /dev/null. YMMV over the preferred > solution here. I didn't think the PS/PDF route worked at all... N |
|
From: <sv...@va...> - 2005-06-25 14:43:17
|
Author: sewardj
Date: 2005-06-25 15:42:34 +0100 (Sat, 25 Jun 2005)
New Revision: 4016
Log:
A small program to read .dot files created by auxprogs/gen-mdg and
compute the strongly connected components in them.
Added:
trunk/auxprogs/DotToScc.hs
Added: trunk/auxprogs/DotToScc.hs
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/auxprogs/DotToScc.hs 2005-06-24 22:17:38 UTC (rev 4015)
+++ trunk/auxprogs/DotToScc.hs 2005-06-25 14:42:34 UTC (rev 4016)
@@ -0,0 +1,271 @@
+
+-- A program for extracting strongly connected components from a .dot
+-- file created by auxprogs/gen-mdg.
+
+-- How to use: one of the following:
+
+-- compile to an exe: ghc -o dottoscc DotToScc.hs
+-- and then ./dottoscc name_of_file.dot
+
+-- or interpret with runhugs:
+-- runhugs DotToScc.hs name_of_file.dot
+
+-- or run within hugs:
+-- hugs DotToScc.hs
+-- Main> imain "name_of_file.dot"
+
+
+module Main where
+
+import System
+import List ( sort, nub )
+
+usage :: IO ()
+usage =3D putStrLn "usage: dottoscc <name_of_file.dot>"
+
+main :: IO ()
+main =3D do args <- getArgs
+ if length args /=3D 1
+ then usage
+ else imain (head args)
+
+imain :: String -> IO ()
+imain dot_file_name
+ =3D do edges <- read_dot_file dot_file_name
+ let sccs =3D gen_sccs edges
+ let pretty =3D showPrettily sccs
+ putStrLn pretty
+ where
+ showPrettily :: [[String]] -> String
+ showPrettily =3D unlines . concatMap showScc
+
+ showScc elems
+ =3D let n =3D length elems=20
+ in
+ [""]
+ ++ (if n > 1 then [" -- "=20
+ ++ show n ++ " modules in cycle"]=20
+ else [])
+ ++ map (" " ++) elems
+
+
+-- Read a .dot file and return a list of edges
+read_dot_file :: String{-filename-} -> IO [(String,String)]
+read_dot_file dot_file_name
+ =3D do bytes <- readFile dot_file_name
+ let linez =3D lines bytes
+ let edges =3D [(s,d) | Just (s,d) <- map maybe_mk_edge linez]
+ return edges
+ where
+ -- identify lines of the form "text1 -> text2" and return
+ -- text1 and text2
+ maybe_mk_edge :: String -> Maybe (String, String)
+ maybe_mk_edge str
+ =3D case words str of
+ [text1, "->", text2] -> Just (text1, text2)
+ other -> Nothing
+
+
+-- Take the list of edges and return a topologically sorted list of
+-- sccs
+gen_sccs :: [(String,String)] -> [[String]]
+gen_sccs raw_edges
+ =3D let clean_edges =3D sort (nub raw_edges)
+ nodes =3D nub (concatMap (\(s,d) -> [s,d]) clean_edges)
+ ins v =3D [u | (u,w) <- clean_edges, v=3D=3Dw]
+ outs v =3D [w | (u,w) <- clean_edges, v=3D=3Du]
+ components =3D map (sort.utSetToList) (deScc ins outs nodes)
+ in
+ components
+
+
+--------------------------------------------------------------------
+--------------------------------------------------------------------
+--------------------------------------------------------------------
+
+-- Graph-theoretic stuff that does the interesting stuff.
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+deScc :: (Ord a) =3D>
+ (a -> [a]) -> -- The "ins" map
+ (a -> [a]) -> -- The "outs" map
+ [a] -> -- The root vertices
+ [Set a] -- The topologically sorted components
+
+deScc ins outs
+ =3D spanning . depthFirst
+ where depthFirst =3D snd . deDepthFirstSearch outs (utSetEmpty, [])
+ spanning =3D snd . deSpanningSearch ins (utSetEmpty, [])
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+deDepthFirstSearch :: (Ord a) =3D>
+ (a -> [a]) -> -- The map,
+ (Set a, [a]) -> -- state: visited set,
+ -- current sequence of vertic=
es
+ [a] -> -- input vertices sequence
+ (Set a, [a]) -- final state
+
+deDepthFirstSearch
+ =3D foldl . search
+ where
+ search relation (visited, sequence) vertex
+ | utSetElementOf vertex visited =3D (visited, sequence =
)
+ | otherwise =3D (visited', vertex: sequence'=
)
+ where
+ (visited', sequence')
+ =3D deDepthFirstSearch relation
+ (utSetUnion visited (utSetSingleton vertex), =
sequence)
+ (relation vertex)
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+deSpanningSearch :: (Ord a) =3D>
+ (a -> [a]) -> -- The map
+ (Set a, [Set a]) -> -- Current state: visited set,
+ -- current sequence of vertic=
e sets
+ [a] -> -- Input sequence of vertices
+ (Set a, [Set a]) -- Final state
+
+deSpanningSearch
+ =3D foldl . search
+ where
+ search relation (visited, utSetSequence) vertex
+ | utSetElementOf vertex visited =3D (visited, utSetSequ=
ence )
+ | otherwise =3D (visited', utSetFromList (vertex: sequence): utSet=
Sequence)
+ where
+ (visited', sequence)
+ =3D deDepthFirstSearch relation
+ (utSetUnion visited (utSetSingleton vertex), [=
])
+ (relation vertex)
+
+
+
+
+
+--------------------------------------------------------------------
+--------------------------------------------------------------------
+--------------------------------------------------------------------
+-- Most of this set stuff isn't needed.
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+-- =3D=3D=3D set =3D=3D=3D--
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+
+data Set e =3D MkSet [e]
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+unMkSet :: (Ord a) =3D> Set a -> [a]
+
+unMkSet (MkSet s) =3D s
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+utSetEmpty :: (Ord a) =3D> Set a
+
+utSetEmpty =3D MkSet []
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+utSetIsEmpty :: (Ord a) =3D> Set a -> Bool
+
+utSetIsEmpty (MkSet s) =3D s =3D=3D []
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+utSetSingleton :: (Ord a) =3D> a -> Set a
+
+utSetSingleton x =3D MkSet [x]
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+utSetFromList :: (Ord a) =3D> [a] -> Set a
+
+utSetFromList x =3D (MkSet . rmdup . sort) x
+ where rmdup [] =3D []
+ rmdup [x] =3D [x]
+ rmdup (x:y:xs) | x=3D=3Dy =3D rmdup (y:xs)
+ | otherwise =3D x: rmdup (y:xs)
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+utSetToList :: (Ord a) =3D> Set a -> [a]
+
+utSetToList (MkSet xs) =3D xs
+
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+utSetUnion :: (Ord a) =3D> Set a -> Set a -> Set a
+
+utSetUnion (MkSet []) (MkSet []) =3D (MkSet [])
+utSetUnion (MkSet []) (MkSet (b:bs)) =3D (MkSet (b:bs))
+utSetUnion (MkSet (a:as)) (MkSet []) =3D (MkSet (a:as))
+utSetUnion (MkSet (a:as)) (MkSet (b:bs))
+ | a < b =3D MkSet (a: (unMkSet (utSetUnion (MkSet as) (MkSet (b:bs=
)))))
+ | a =3D=3D b =3D MkSet (a: (unMkSet (utSetUnion (MkSet as) (MkSet b=
s))))
+ | a > b =3D MkSet (b: (unMkSet (utSetUnion (MkSet (a:as)) (MkSet b=
s))))
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+utSetIntersection :: (Ord a) =3D> Set a -> Set a -> Set a
+
+utSetIntersection (MkSet []) (MkSet []) =3D (MkSet [])
+utSetIntersection (MkSet []) (MkSet (b:bs)) =3D (MkSet [])
+utSetIntersection (MkSet (a:as)) (MkSet []) =3D (MkSet [])
+utSetIntersection (MkSet (a:as)) (MkSet (b:bs))
+ | a < b =3D utSetIntersection (MkSet as) (MkSet (b:bs))
+ | a =3D=3D b =3D MkSet (a: (unMkSet (utSetIntersection (MkSet as) (=
MkSet bs))))
+ | a > b =3D utSetIntersection (MkSet (a:as)) (MkSet bs)
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+utSetSubtraction :: (Ord a) =3D> Set a -> Set a -> Set a
+
+utSetSubtraction (MkSet []) (MkSet []) =3D (MkSet [])
+utSetSubtraction (MkSet []) (MkSet (b:bs)) =3D (MkSet [])
+utSetSubtraction (MkSet (a:as)) (MkSet []) =3D (MkSet (a:as))
+utSetSubtraction (MkSet (a:as)) (MkSet (b:bs))
+ | a < b =3D MkSet (a: (unMkSet (utSetSubtraction (MkSet as) (MkSet=
(b:bs)))))
+ | a =3D=3D b =3D utSetSubtraction (MkSet as) (MkSet bs)
+ | a > b =3D utSetSubtraction (MkSet (a:as)) (MkSet bs)
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+utSetElementOf :: (Ord a) =3D> a -> Set a -> Bool
+
+utSetElementOf x (MkSet []) =3D False
+utSetElementOf x (MkSet (y:ys)) =3D x=3D=3Dy || (x>y && utSetElementOf=
x (MkSet ys))
+
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+utSetSubsetOf :: (Ord a) =3D> Set a -> Set a -> Bool
+
+utSetSubsetOf (MkSet []) (MkSet bs) =3D True
+utSetSubsetOf (MkSet (a:as)) (MkSet bs)
+ =3D utSetElementOf a (MkSet bs) && utSetSubsetOf (MkSet as) (MkSet b=
s)
+
+
+-- =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D--
+--
+utSetUnionList :: (Ord a) =3D> [Set a] -> Set a
+
+utSetUnionList setList =3D foldl utSetUnion utSetEmpty setList
+
+
|
|
From: <sv...@va...> - 2005-06-25 14:43:17
|
Author: de
Date: 2005-06-25 15:43:05 +0100 (Sat, 25 Jun 2005)
New Revision: 4017
Log:
Added some more targets to the docs.
Removed 'the' from 'the default' in 'parial' opt to be consistent
Added opt info for --avoid-strlen-errors (was missing)
Modified:
trunk/cachegrind/docs/cg-manual.xml
trunk/memcheck/docs/mc-manual.xml
Modified: trunk/cachegrind/docs/cg-manual.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/cachegrind/docs/cg-manual.xml 2005-06-25 14:42:34 UTC (rev 4016=
)
+++ trunk/cachegrind/docs/cg-manual.xml 2005-06-25 14:43:05 UTC (rev 4017=
)
@@ -100,7 +100,7 @@
</sect2>
=20
=20
-<sect2>
+<sect2 id=3D"cache-sim" xreflabel=3D"Cache simulation specifics">
<title>Cache simulation specifics</title>
=20
<para>Cachegrind uses a simulation for a machine with a split L1
@@ -689,7 +689,7 @@
=20
<itemizedlist>
=20
- <listitem>
+ <listitem id=3D"pid">
<para><computeroutput>--pid</computeroutput></para>
<para>Indicates which
<computeroutput>cachegrind.out.pid</computeroutput> file to
@@ -702,7 +702,7 @@
<para>Help and version, as usual.</para>
</listitem>
=20
- <listitem>
+ <listitem id=3D"sort">
<para><computeroutput>--sort=3DA,B,C</computeroutput> [default:
order in
<computeroutput>cachegrind.out.pid</computeroutput>]</para>
@@ -716,7 +716,7 @@
(<computeroutput>--sort=3DD2mr,I2mr</computeroutput>).</para>
</listitem>
=20
- <listitem>
+ <listitem id=3D"show">
<para><computeroutput>--show=3DA,B,C</computeroutput> [default:
all, using order in
<computeroutput>cachegrind.out.pid</computeroutput>]</para>
@@ -726,7 +726,7 @@
use the order in the file).</para>
</listitem>
=20
- <listitem>
+ <listitem id=3D"threshold">
<para><computeroutput>--threshold=3DX</computeroutput>
[default: 99%]</para>
<para>Sets the threshold for the function-by-function
@@ -743,7 +743,7 @@
<para><computeroutput>--sort=3DD2mr:99,D2mw:99</computeroutput></par=
a>
</listitem>
=20
- <listitem>
+ <listitem id=3D"auto">
<para><computeroutput>--auto=3Dno</computeroutput> [default]</para>
<para><computeroutput>--auto=3Dyes</computeroutput></para>
<para>When enabled, automatically annotates every file that
@@ -751,7 +751,7 @@
found. Also gives a list of those that couldn't be found.</para>
</listitem>
=20
- <listitem>
+ <listitem id=3D"context">
<para><computeroutput>--context=3DN</computeroutput> [default:
8]</para>
<para>Print N lines of context before and after each
@@ -760,7 +760,7 @@
(eg. 10,000) to show all source lines.</para>
</listitem>
=20
- <listitem>
+ <listitem id=3D"include">
<para><computeroutput>-I=3D<dir>,
--include=3D<dir></computeroutput> [default: empty
string]</para>
Modified: trunk/memcheck/docs/mc-manual.xml
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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/memcheck/docs/mc-manual.xml 2005-06-25 14:42:34 UTC (rev 4016)
+++ trunk/memcheck/docs/mc-manual.xml 2005-06-25 14:43:05 UTC (rev 4017)
@@ -59,7 +59,7 @@
xreflabel=3D"Command-line flags specific to memcheck">
<title>Command-line flags specific to memcheck</title>
=20
-<itemizedlist>
+<itemizedlist id=3D"leakcheck">
<listitem>
<para><computeroutput>--leak-check=3Dno</computeroutput>
[default]</para>
@@ -73,7 +73,7 @@
messages.</para>
</listitem>
=20
- <listitem>
+ <listitem id=3D"showreach">
<para><computeroutput>--show-reachable=3Dno</computeroutput>
[default]</para>
<para><computeroutput>--show-reachable=3Dyes</computeroutput></para>
@@ -91,7 +91,7 @@
you wanted to.</para>
</listitem>
=20
- <listitem>
+ <listitem id=3D"leakres">
<para><computeroutput>--leak-resolution=3Dlow</computeroutput>
[default]</para>
<para><computeroutput>--leak-resolution=3Dmed</computeroutput></para=
>
@@ -116,7 +116,7 @@
changes how the results are presented.</para>
</listitem>
=20
- <listitem>
+ <listitem id=3D"freelist">
<para><computeroutput>--freelist-vol=3D<number></computeroutput>
[default: 1000000]</para>
<para>When the client program releases memory using free (in
@@ -135,7 +135,7 @@
which would otherwise go undetected.</para>
</listitem>
=20
- <listitem>
+ <listitem id=3D"gcc296">
<para><computeroutput>--workaround-gcc296-bugs=3Dno</computeroutput>
[default]</para>
<para><computeroutput>--workaround-gcc296-bugs=3Dyes</computeroutput=
></para>
@@ -156,9 +156,9 @@
scheduling bug in g++-3.0.4.</para>
</listitem>
=20
- <listitem>
+ <listitem id=3D"partial">
<para><computeroutput>--partial-loads-ok=3Dyes</computeroutput>
- [the default]</para>
+ [default]</para>
<para><computeroutput>--partial-loads-ok=3Dno</computeroutput></para=
>
<para>Controls how Memcheck handles word (4-byte) loads from
addresses for which some bytes are addressible and others are
@@ -173,7 +173,16 @@
is issued, and the resulting V bytes indicate valid data.</para>
</listitem>
=20
- <listitem>
+ <listitem id=3D"strlen">
+ <para><computeroutput>--avoid-strlen-errors=3Dno</computeroutput></p=
ara>
+ <para><computeroutput>--avoid-strlen-errors=3Dyes</computeroutput> [=
default]</para>
+ <para>Enable or disable a heuristic for dealing with highly-optimize=
d=20
+ versions of strlen. These versions of strlen can cause spurious err=
ors=20
+ to be reported by memcheck, so it's usually a good idea to leave thi=
s
+ enabled.</para>
+ </listitem>
+
+ <listitem id=3D"cleanup">
<para><computeroutput>--cleanup=3Dno</computeroutput></para>
<para><computeroutput>--cleanup=3Dyes</computeroutput> [default]</pa=
ra>
<para><command>This is a flag to help debug valgrind itself.
|
|
From: Ralf W. <Ral...@gm...> - 2005-06-25 12:39:48
|
* Ralf Wildenhues wrote on Sat, Jun 25, 2005 at 10:21:44AM CEST: > CHANGES: > * docs/Makefile.am (valid, html-docs, print-docs): > Build documentation below srcdir: cd to srcdir before doing anything; > correctly bail out on the first error. > (print-docs): Output pdfxmltex errors also to terminal, in order to > allow sensible, possibly necessary user interaction with latex. > (dist-hook): Adjust for docs in srcdir. > (install-data-hook): Fix for DESTDIR install. I omitted a part here, without purpose: the last two commands of print-docs were run even if the previous failed. Fixed in patch below. Sorry for the inconvenience. Regards, Ralf Index: docs/Makefile.am =================================================================== --- docs/Makefile.am (Revision 4015) +++ docs/Makefile.am (Arbeitskopie) @@ -37,47 +37,49 @@ all-docs: html-docs print-docs valid: - $(XMLLINT) $(XMLLINT_FLAGS) $(xmldir)/index.xml + cd $(srcdir) && $(XMLLINT) $(XMLLINT_FLAGS) $(xmldir)/index.xml # chunked html html-docs: @echo "Generating html files..." - export XML_CATALOG_FILES=$(XML_CATALOG_FILES) - mkdir -p $(htmldir) - /bin/rm -fr $(htmldir)/ - mkdir -p $(htmldir)/ - mkdir -p $(htmldir)/images - cp $(libdir)/vg_basic.css $(htmldir)/ - cp $(imgdir)/*.png $(htmldir)/images + cd $(srcdir) && \ + export XML_CATALOG_FILES=$(XML_CATALOG_FILES) && \ + mkdir -p $(htmldir) && \ + /bin/rm -fr $(htmldir)/ && \ + mkdir -p $(htmldir)/ && \ + mkdir -p $(htmldir)/images && \ + cp $(libdir)/vg_basic.css $(htmldir)/ && \ + cp $(imgdir)/*.png $(htmldir)/images && \ $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(htmldir)/ $(XSL_HTML_CHUNK_STYLE) $(xmldir)/index.xml # pdf and postscript print-docs: - @echo "Generating PDF file: $(printdir)/index.pdf (please be patient)..."; - export XML_CATALOG_FILES=$(XML_CATALOG_FILES); - mkdir -p $(printdir); - mkdir -p $(printdir)/images; - cp $(imgdir)/massif-graph-sm.png $(printdir)/images; - $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(printdir)/index.fo $(XSL_FO_STYLE) $(xmldir)/index.xml; - (cd $(printdir); \ - pdfxmltex index.fo &> $(LOGFILE); \ - pdfxmltex index.fo &> $(LOGFILE); \ - pdfxmltex index.fo &> $(LOGFILE); \ - echo "Generating PS file: $(printdir)/index.ps ..."; \ - pdftops index.pdf; \ - rm *.log *.aux *.fo *.out) + @echo "Generating PDF file: $(printdir)/index.pdf (please be patient)..." + cd $(srcdir) && \ + export XML_CATALOG_FILES=$(XML_CATALOG_FILES) && \ + mkdir -p $(printdir) && \ + mkdir -p $(printdir)/images && \ + cp $(imgdir)/massif-graph-sm.png $(printdir)/images && \ + $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(printdir)/index.fo $(XSL_FO_STYLE) $(xmldir)/index.xml && \ + (cd $(printdir) && \ + ( pdfxmltex index.fo && \ + pdfxmltex index.fo && \ + pdfxmltex index.fo ) 2>&1 | tee $(LOGFILE) && \ + echo "Generating PS file: $(printdir)/index.ps ..." && \ + pdftops index.pdf && \ + rm -f *.log *.aux *.fo *.out) # If the docs have been built, install them. But don't worry if they have # not -- developers do 'make install' not from a 'make dist'-ified distro all # the time. install-data-hook: if test -r html ; then \ - mkdir -p $(datadir)/doc/valgrind/; \ - cp -r html $(datadir)/doc/valgrind/; \ + mkdir -p $(DESTDIR)$(datadir)/doc/valgrind/; \ + cp -r $(srcdir)/html $(DESTDIR)$(datadir)/doc/valgrind/; \ fi dist-hook: html-docs - cp -r html $(distdir) + cp -r $(srcdir)/html $(distdir) distclean-local: - rm -rf html print + cd $(srcdir) && rm -rf html print |
|
From: Ralf W. <Ral...@gm...> - 2005-06-25 08:21:56
|
Hi there,
Do you prefer proposed patches via the bug tracker or are mails to this
list ok?
Below is an attempt to make building the documentation possible when
srcdir != builddir. There is a decision to make: either to build the
docs in the source tree or in the build tree. The former is easier to
implement, but prevents multiple concurrent builds from different build
trees. (For example: In order to test packages, I like to fire up
something along these lines:
mkdir build-32 build-64 build-icc
# ... (configure and build each of these from the same source tree)
# days later:
( cd $source_tree && svn update )
( cd build-32 && make distcheck > distchecklog 2>&1 </dev/null )&
( cd build-64 && make distcheck > distchecklog 2>&1 </dev/null )&
( cd build-icc && make distcheck > distchecklog 2>&1 </dev/null )&
This won't work reliably then, an arguably small backdraw.
Furthermore, building docs in source might need yet another workaround
for "distcheck" to work with this -- in a later mail.
The latter (building docs in the build tree) is usually harder to get
right because many doc tools are not prepared for such flexibility.
Since valgrind does not builds docs in the "make all" case anyway, here
is a patch to build in the source tree, and to fix a few more glitches
in that area: For me, pdfxmltex stopped for user input because of a
latex syntax error caused by different xml versions. Without seeing
latex output, it's very confusing to see the build just wait without
load. The other way to solve this would be to invoke latex in batch
mode, and/or redirect stdin to /dev/null. YMMV over the preferred
solution here.
Also, I made LOGFILE contain the output of all pdfxmltex runs, not just
the last one.
Then, there is a small DESTDIR-related glitch fixed.
After this, I still can't get it to work, but remaining problems seem
XML version related.
Regards,
Ralf
CHANGES:
* docs/Makefile.am (valid, html-docs, print-docs):
Build documentation below srcdir: cd to srcdir before doing anything;
correctly bail out on the first error.
(print-docs): Output pdfxmltex errors also to terminal, in order to
allow sensible, possibly necessary user interaction with latex.
(dist-hook): Adjust for docs in srcdir.
(install-data-hook): Fix for DESTDIR install.
Index: docs/Makefile.am
===================================================================
--- docs/Makefile.am (Revision 4015)
+++ docs/Makefile.am (Arbeitskopie)
@@ -37,47 +37,49 @@
all-docs: html-docs print-docs
valid:
- $(XMLLINT) $(XMLLINT_FLAGS) $(xmldir)/index.xml
+ cd $(srcdir) && $(XMLLINT) $(XMLLINT_FLAGS) $(xmldir)/index.xml
# chunked html
html-docs:
@echo "Generating html files..."
- export XML_CATALOG_FILES=$(XML_CATALOG_FILES)
- mkdir -p $(htmldir)
- /bin/rm -fr $(htmldir)/
- mkdir -p $(htmldir)/
- mkdir -p $(htmldir)/images
- cp $(libdir)/vg_basic.css $(htmldir)/
- cp $(imgdir)/*.png $(htmldir)/images
+ cd $(srcdir) && \
+ export XML_CATALOG_FILES=$(XML_CATALOG_FILES) && \
+ mkdir -p $(htmldir) && \
+ /bin/rm -fr $(htmldir)/ && \
+ mkdir -p $(htmldir)/ && \
+ mkdir -p $(htmldir)/images && \
+ cp $(libdir)/vg_basic.css $(htmldir)/ && \
+ cp $(imgdir)/*.png $(htmldir)/images && \
$(XSLTPROC) $(XSLTPROC_FLAGS) -o $(htmldir)/ $(XSL_HTML_CHUNK_STYLE) $(xmldir)/index.xml
# pdf and postscript
print-docs:
- @echo "Generating PDF file: $(printdir)/index.pdf (please be patient)...";
- export XML_CATALOG_FILES=$(XML_CATALOG_FILES);
- mkdir -p $(printdir);
- mkdir -p $(printdir)/images;
- cp $(imgdir)/massif-graph-sm.png $(printdir)/images;
- $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(printdir)/index.fo $(XSL_FO_STYLE) $(xmldir)/index.xml;
- (cd $(printdir); \
- pdfxmltex index.fo &> $(LOGFILE); \
- pdfxmltex index.fo &> $(LOGFILE); \
- pdfxmltex index.fo &> $(LOGFILE); \
+ @echo "Generating PDF file: $(printdir)/index.pdf (please be patient)..."
+ cd $(srcdir) && \
+ export XML_CATALOG_FILES=$(XML_CATALOG_FILES) && \
+ mkdir -p $(printdir) && \
+ mkdir -p $(printdir)/images && \
+ cp $(imgdir)/massif-graph-sm.png $(printdir)/images && \
+ $(XSLTPROC) $(XSLTPROC_FLAGS) -o $(printdir)/index.fo $(XSL_FO_STYLE) $(xmldir)/index.xml && \
+ (cd $(printdir) && \
+ ( pdfxmltex index.fo && \
+ pdfxmltex index.fo && \
+ pdfxmltex index.fo ) 2>&1 | tee $(LOGFILE) && \
echo "Generating PS file: $(printdir)/index.ps ..."; \
pdftops index.pdf; \
- rm *.log *.aux *.fo *.out)
+ rm -f *.log *.aux *.fo *.out)
# If the docs have been built, install them. But don't worry if they have
# not -- developers do 'make install' not from a 'make dist'-ified distro all
# the time.
install-data-hook:
if test -r html ; then \
- mkdir -p $(datadir)/doc/valgrind/; \
- cp -r html $(datadir)/doc/valgrind/; \
+ mkdir -p $(DESTDIR)$(datadir)/doc/valgrind/; \
+ cp -r $(srcdir)/html $(DESTDIR)$(datadir)/doc/valgrind/; \
fi
dist-hook: html-docs
- cp -r html $(distdir)
+ cp -r $(srcdir)/html $(distdir)
distclean-local:
- rm -rf html print
+ cd $(srcdir) && rm -rf html print
|
|
From: Tom H. <th...@cy...> - 2005-06-25 03:05:16
|
Nightly build on audi ( i686, Red Hat 9 ) started at 2005-06-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 == 177 tests, 11 stderr failures, 3 stdout failures ================= memcheck/tests/error_counts (stdout) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/xml1 (stderr) corecheck/tests/fdleak_cmsg (stderr) corecheck/tests/pth_cancel1 (stdout) corecheck/tests/pth_cancel1 (stderr) corecheck/tests/pth_cancel2 (stderr) none/tests/faultstatus (stderr) none/tests/pth_blockedsig (stderr) none/tests/x86/int (stderr) none/tests/yield (stdout) |
|
From: <js...@ac...> - 2005-06-25 02:39:52
|
Nightly build on phoenix ( SuSE 9.1 ) started at 2005-06-25 03:30:00 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, 4 stderr failures, 1 stdout failure ================= memcheck/tests/error_counts (stdout) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-tree (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <to...@co...> - 2005-06-25 02:35:56
|
Nightly build on dunsmere ( athlon, Fedora Core 3 ) started at 2005-06-25 03:30:03 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 == 178 tests, 8 stderr failures, 2 stdout failures ================= memcheck/tests/error_counts (stdout) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/selfrun (stdout) none/tests/selfrun (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-06-25 02:21:03
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2005-06-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 == 176 tests, 12 stderr failures, 1 stdout failure ================= 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/match-overrun (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/xml1 (stderr) corecheck/tests/fdleak_cmsg (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-06-25 02:20:30
|
Nightly build on dellow ( x86_64, Fedora Core 3 ) started at 2005-06-25 03:10:04 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 == 157 tests, 12 stderr failures, 3 stdout failures ================= memcheck/tests/brk (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/leak-0 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (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-06-25 02:05:57
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2005-06-25 03:00:03 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 == 157 tests, 13 stderr failures, 2 stdout failures ================= memcheck/tests/brk (stderr) memcheck/tests/error_counts (stdout) memcheck/tests/leak-0 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigaltstack (stderr) memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/toobig-allocs (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) corecheck/tests/fdleak_fcntl (stderr) massif/tests/toobig-allocs (stderr) none/tests/faultstatus (stderr) none/tests/selfrun (stdout) none/tests/selfrun (stderr) |