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
(12) |
2
(11) |
3
(8) |
|
4
(9) |
5
(10) |
6
(18) |
7
(8) |
8
(12) |
9
(23) |
10
(14) |
|
11
(15) |
12
(31) |
13
(45) |
14
(28) |
15
(20) |
16
(16) |
17
(9) |
|
18
(18) |
19
(26) |
20
(49) |
21
(14) |
22
(18) |
23
(24) |
24
(28) |
|
25
(39) |
26
(17) |
27
(27) |
28
(27) |
29
(14) |
30
(44) |
|
|
From: <sv...@va...> - 2005-09-22 23:58:44
|
Author: sewardj
Date: 2005-09-23 00:58:38 +0100 (Fri, 23 Sep 2005)
New Revision: 4724
Log:
Simplify the sanity checker a little, and make it able to deal with
the case where one SkAnon? segment is corresponds to two adjacent
un-merged kernel segments.
Modified:
branches/ASPACEM/coregrind/m_aspacemgr/aspacemgr.c
Modified: branches/ASPACEM/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
--- branches/ASPACEM/coregrind/m_aspacemgr/aspacemgr.c 2005-09-22 21:28:1=
1 UTC (rev 4723)
+++ branches/ASPACEM/coregrind/m_aspacemgr/aspacemgr.c 2005-09-22 23:58:3=
8 UTC (rev 4724)
@@ -124,7 +124,11 @@
=20
/* ------ end of STATE for the address-space manager ------ */
=20
+// Forwards decls
+static void aspacem_exit ( Int );
+static Int find_nsegment_idx ( Addr a );
=20
+
/*-----------------------------------------------------------------*/
/*--- ---*/
/*--- Stuff to make aspacem almost completely independent of ---*/
@@ -132,9 +136,6 @@
/*--- ---*/
/*-----------------------------------------------------------------*/
=20
-// Forwards decl
-static void aspacem_exit ( Int );
-
//--------------------------------------------------------------
// Simple assert and assert-like fns, which avoid dependence on
// m_libcassert, and hence on the entire debug-info reader swamp
@@ -804,85 +805,90 @@
/* Check the segment array corresponds with the kernel's view of
memory layout. sync_check_ok returns True if no anomalies were
found, else False. In the latter case the mismatching segments are
- displayed. */
+ displayed.=20
=20
-static Int sync_check_i =3D 0;
+ The general idea is: we get the kernel to show us all its segments
+ and also the gaps in between. For each such interval, try and find
+ a sequence of appropriate intervals in our segment array which
+ cover or more than cover the kernel's interval, and which all have
+ suitable kinds/permissions etc.=20
+
+ Although any specific kernel interval is not matched exactly to a
+ valgrind interval or sequence thereof, eventually any disagreement
+ on mapping boundaries will be detected. This is because, if for
+ example valgrind's intervals cover a greater range than the current
+ kernel interval, it must be the case that a neighbouring free-space
+ interval belonging to valgrind cannot cover the neighbouring
+ free-space interval belonging to the kernel. So the disagreement
+ is detected.
+
+ In other words, we examine each kernel interval in turn, and check
+ we do not disagree over the range of that interval. Because all of
+ the address space is examined, any disagreements must eventually be
+ detected.
+*/
+
static Bool sync_check_ok =3D False;
=20
static void sync_check_mapping_callback ( Addr addr, SizeT len, UInt pro=
t,
UInt dev, UInt ino, ULong offs=
et,=20
const UChar* filename )
{
+ Int iLo, iHi, i;
+
/* If a problem has already been detected, don't continue comparing
segments, so as to avoid flooding the output with error
messages. */
if (!sync_check_ok)
return;
=20
- /* The start of this kernel mapping should fall within the
- current segment.*/
- if (addr < nsegments[sync_check_i].start ||
- addr > nsegments[sync_check_i].end) {
- sync_check_ok =3D False;
- VG_(debugLog)(0,"aspacem",
- "sync_check_mapping_callback: segment mismatch: V's =
seg:\n");
- show_nsegment_full( 0, &nsegments[sync_check_i] );
- goto show_kern_seg;
- }
+ if (len =3D=3D 0)
+ return;
=20
- /* Check that any segments that fall within this mapping
- have attributes which match the mapping. */
- while (sync_check_i < nsegments_used &&
- nsegments[sync_check_i].start < addr+len &&
- nsegments[sync_check_i].end >=3D addr ) {
- Bool same;
+ /* The kernel should not give us wraparounds. */
+ aspacem_assert(addr <=3D addr + len - 1);=20
+
+ iLo =3D find_nsegment_idx( addr );
+ iHi =3D find_nsegment_idx( addr + len - 1 );
+
+ /* These 5 should be guaranteed by find_nsegment_idx. */
+ aspacem_assert(0 <=3D iLo && iLo < nsegments_used);
+ aspacem_assert(0 <=3D iHi && iHi < nsegments_used);
+ aspacem_assert(iLo <=3D iHi);
+ aspacem_assert(nsegments[iLo].start <=3D addr );
+ aspacem_assert(nsegments[iHi].end >=3D addr + len - 1 );
+
+ /* NSegments iLo .. iHi inclusive should agree with the presented
+ data. */
+ for (i =3D iLo; i <=3D iHi; i++) {
+
+ Bool same, cmp_offsets;
=20
/* compare the kernel's offering against ours. */
- same =3D nsegments[sync_check_i].kind =3D=3D SkAnonC
- || nsegments[sync_check_i].kind =3D=3D SkAnonV
- || nsegments[sync_check_i].kind =3D=3D SkFileC
- || nsegments[sync_check_i].kind =3D=3D SkFileV;
+ same =3D nsegments[i].kind =3D=3D SkAnonC
+ || nsegments[i].kind =3D=3D SkAnonV
+ || nsegments[i].kind =3D=3D SkFileC
+ || nsegments[i].kind =3D=3D SkFileV;
+
+ cmp_offsets
+ =3D nsegments[i].kind =3D=3D SkFileC || nsegments[i].kind =3D=3D=
SkFileV;
+
same =3D same
- && nsegments[sync_check_i].dev =3D=3D dev
- && nsegments[sync_check_i].ino =3D=3D ino
- && nsegments[sync_check_i].start-nsegments[sync_check_i].of=
fset =3D=3D addr-offset;
+ && nsegments[i].dev =3D=3D dev
+ && nsegments[i].ino =3D=3D ino
+ && (cmp_offsets=20
+ ? nsegments[i].start-nsegments[i].offset =3D=3D addr-=
offset
+ : True);
if (!same) {
sync_check_ok =3D False;
- VG_(debugLog)(0,"aspacem",
- "sync_check_mapping_callback: segment mismatch: V=
's seg:\n");
- show_nsegment_full( 0, &nsegments[sync_check_i] );
+ VG_(debugLog)(
+ 0,"aspacem",
+ "sync_check_mapping_callback: segment mismatch: V's seg:\n=
");
+ show_nsegment_full( 0, &nsegments[i] );
goto show_kern_seg;
}
-
- sync_check_i++;
}
=20
- /* The end of this kernel mapping should fall within the
- previous segment.*/
- if (addr+len-1 < nsegments[sync_check_i-1].start ||
- addr+len-1 > nsegments[sync_check_i-1].end) {
- sync_check_ok =3D False;
- VG_(debugLog)(0,"aspacem",
- "sync_check_mapping_callback: segment mismatch: V's =
seg:\n");
- show_nsegment_full( 0, &nsegments[sync_check_i-1] );
- goto show_kern_seg;
- }
-
- /* If this mapping ended in the middle of a segment then reduce
- sync_check_i by one so that we continue from that segment with
- the next mapping or gap. */
- if (addr+len-1 < nsegments[sync_check_i-1].end)
- sync_check_i--;
-
- /* If we've run out of segments and there is still part of a
- mapping unaccounted for then fail. */
- if (sync_check_i =3D=3D nsegments_used &&
- addr+len-1 > nsegments[sync_check_i-1].end) {
- sync_check_ok =3D False;
- VG_(debugLog)(0,"aspacem","sync_check_mapping_callback: out of seg=
ments\n");
- goto show_kern_seg;
- }
-
/* Looks harmless. Keep going. */
return;
=20
@@ -898,73 +904,50 @@
=20
static void sync_check_gap_callback ( Addr addr, SizeT len )
{
+ Int iLo, iHi, i;
+
/* If a problem has already been detected, don't continue comparing
segments, so as to avoid flooding the output with error
messages. */
if (!sync_check_ok)
return;
=20
- if (addr+len-1 > nsegments[nsegments_used-1].end)
- len =3D nsegments[nsegments_used-1].end-addr+1;
+ if (len =3D=3D 0)
+ return;
=20
- /* The start of this kernel mapping should fall within the
- current segment.*/
- if (addr < nsegments[sync_check_i].start ||
- addr > nsegments[sync_check_i].end) {
- sync_check_ok =3D False;
- VG_(debugLog)(0,"aspacem",
- "sync_check_gap_callback: segment mismatch: V's seg:=
\n");
- show_nsegment_full( 0, &nsegments[sync_check_i] );
- goto show_kern_gap;
- }
+ /* The kernel should not give us wraparounds. */
+ aspacem_assert(addr <=3D addr + len - 1);=20
=20
- /* Check that any segments that fall within this gap
- have attributes which match the mapping. */
- while (sync_check_i < nsegments_used &&
- nsegments[sync_check_i].start <=3D addr+len-1 &&
- nsegments[sync_check_i].end >=3D addr ) {
- Bool same;
+ iLo =3D find_nsegment_idx( addr );
+ iHi =3D find_nsegment_idx( addr + len - 1 );
=20
+ /* These 5 should be guaranteed by find_nsegment_idx. */
+ aspacem_assert(0 <=3D iLo && iLo < nsegments_used);
+ aspacem_assert(0 <=3D iHi && iHi < nsegments_used);
+ aspacem_assert(iLo <=3D iHi);
+ aspacem_assert(nsegments[iLo].start <=3D addr );
+ aspacem_assert(nsegments[iHi].end >=3D addr + len - 1 );
+
+ /* NSegments iLo .. iHi inclusive should agree with the presented
+ data. */
+ for (i =3D iLo; i <=3D iHi; i++) {
+
+ Bool same;
+ =20
/* compare the kernel's offering against ours. */
- same =3D nsegments[sync_check_i].kind =3D=3D SkFree
- || nsegments[sync_check_i].kind =3D=3D SkResvn;
+ same =3D nsegments[i].kind =3D=3D SkFree
+ || nsegments[i].kind =3D=3D SkResvn;
+
if (!same) {
sync_check_ok =3D False;
- VG_(debugLog)(0,"aspacem",
- "sync_check_gap_callback: segment mismatch: V's s=
eg:\n");
- show_nsegment_full( 0, &nsegments[sync_check_i] );
+ VG_(debugLog)(
+ 0,"aspacem",
+ "sync_check_mapping_callback: segment mismatch: V's gap:\n=
");
+ show_nsegment_full( 0, &nsegments[i] );
goto show_kern_gap;
}
-
- sync_check_i++;
}
=20
- /* The end of this kernel mapping should fall within the
- previous segment.*/
- if (addr+len-1 < nsegments[sync_check_i-1].start ||
- addr+len-1 > nsegments[sync_check_i-1].end) {
- sync_check_ok =3D False;
- VG_(debugLog)(0,"aspacem",
- "sync_check_gap_callback: segment mismatch: V's seg:=
\n");
- show_nsegment_full( 0, &nsegments[sync_check_i-1] );
- goto show_kern_gap;
- }
-
- /* If this gap ended in the middle of a segment then reduce
- sync_check_i by one so that we continue from that segment with
- the next mapping or gap. */
- if (addr+len-1 < nsegments[sync_check_i-1].end)=20
- sync_check_i--;
-
- /* If we've run out of segments and there is still part of a
- gap unaccounted for then fail. */
- if (sync_check_i =3D=3D nsegments_used &&
- addr+len-1 > nsegments[sync_check_i-1].end) {
- sync_check_ok =3D False;
- VG_(debugLog)(0,"aspacem","sync_check_gap_callback: out of segment=
s\n");
- goto show_kern_gap;
- }
-
/* Looks harmless. Keep going. */
return;
=20
@@ -977,9 +960,9 @@
return;
}
=20
-static Bool do_sync_check ( HChar* fn, HChar* file, Int line )
+
+ Bool do_sync_check ( HChar* fn, HChar* file, Int line )
{
- sync_check_i =3D 0;
sync_check_ok =3D True;
if (0)
VG_(debugLog)(0,"aspacem", "do_sync_check %s:%d\n", file,line);
@@ -994,7 +977,7 @@
# if 0
{
HChar buf[100];
- VG_(am_show_nsegments)(0,"post segfault");
+ VG_(am_show_nsegments)(0,"post syncheck failure");
VG_(sprintf)(buf, "/bin/cat /proc/%d/maps", VG_(getpid)());
VG_(system)(buf);
}
|
Author: njn
Date: 2005-09-22 22:28:11 +0100 (Thu, 22 Sep 2005)
New Revision: 4723
Log:
Now building a single libcoregrind.a instead of multiple sub-libraries.
Simple VPATH builds now work, but make distcheck is still broken. I don'=
t
know how to fix it without converting Vex to use automake/autoconf.
Removed:
branches/ASPACEM/coregrind/m_aspacemgr/Makefile.am
branches/ASPACEM/coregrind/m_debuginfo/Makefile.am
branches/ASPACEM/coregrind/m_demangle/Makefile.am
branches/ASPACEM/coregrind/m_dispatch/Makefile.am
branches/ASPACEM/coregrind/m_replacemalloc/Makefile.am
branches/ASPACEM/coregrind/m_scheduler/Makefile.am
branches/ASPACEM/coregrind/m_sigframe/Makefile.am
branches/ASPACEM/coregrind/m_syswrap/Makefile.am
Modified:
branches/ASPACEM/Makefile.tool.am
branches/ASPACEM/configure.in
branches/ASPACEM/coregrind/Makefile.am
branches/ASPACEM/coregrind/m_demangle/cp-demangle.c
branches/ASPACEM/coregrind/m_demangle/cplus-dem.c
branches/ASPACEM/coregrind/m_demangle/safe-ctype.c
branches/ASPACEM/tests/filter_stderr_basic
Modified: branches/ASPACEM/Makefile.tool.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/Makefile.tool.am 2005-09-22 15:38:39 UTC (rev 4722)
+++ branches/ASPACEM/Makefile.tool.am 2005-09-22 21:28:11 UTC (rev 4723)
@@ -5,26 +5,19 @@
include $(top_srcdir)/Makefile.tool-flags.am
include $(top_srcdir)/Makefile.tool-inplace.am
=20
-LIBREPLACEMALLOC =3D $(top_builddir)/coregrind/m_replacemalloc/libreplac=
emalloc_toolpreload.a
+LIBREPLACEMALLOC =3D $(top_builddir)/coregrind/libreplacemalloc_toolprel=
oad.a
=20
-## Nb: libscheduler.a must precede libdispatch.a in this list.
COREGRIND_LIBS =3D \
- $(top_builddir)/coregrind/libcoregrind_singles.a \
- $(top_builddir)/coregrind/m_aspacemgr/libaspacemgr.a \
- $(top_builddir)/coregrind/m_debuginfo/libdebuginfo.a \
- $(top_builddir)/coregrind/m_demangle/libdemangle.a \
- $(top_builddir)/coregrind/m_scheduler/libscheduler.a \
- $(top_builddir)/coregrind/m_dispatch/libdispatch.a \
- $(top_builddir)/coregrind/m_replacemalloc/libreplacemalloc_core.a \
- $(top_builddir)/coregrind/m_sigframe/libsigframe.a \
- $(top_builddir)/coregrind/m_syswrap/libsyswrap.a \
+ $(top_builddir)/coregrind/libcoregrind.a \
@VEX_DIR@/libvex.a
=20
+.PHONY: @VEX_DIR@/libvex.a
+
@VEX_DIR@/libvex.a: @VEX_DIR@/priv/main/vex_svnversion.h
- $(MAKE) -C @VEX_DIR@ libvex.a
+ $(MAKE) -C @VEX_DIR@ CC=3D"$(CC)" libvex.a EXTRA_CFLAGS=3D"@ARCH_CORE_A=
M_CFLAGS@"
=20
@VEX_DIR@/priv/main/vex_svnversion.h:
- $(MAKE) -C @VEX_DIR@ version
+ $(MAKE) -C @VEX_DIR@ CC=3D"$(CC)" version
=20
## Nb: do not call this variables "TOOL_LINKADD" and "TOOL_LDFLAGS" -- t=
hat
## makes automake think we are building something called "TOOLS".
Modified: branches/ASPACEM/configure.in
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/configure.in 2005-09-22 15:38:39 UTC (rev 4722)
+++ branches/ASPACEM/configure.in 2005-09-22 21:28:11 UTC (rev 4723)
@@ -450,14 +450,6 @@
include/Makefile=20
auxprogs/Makefile
coregrind/Makefile=20
- coregrind/m_aspacemgr/Makefile=20
- coregrind/m_debuginfo/Makefile=20
- coregrind/m_demangle/Makefile=20
- coregrind/m_dispatch/Makefile=20
- coregrind/m_replacemalloc/Makefile=20
- coregrind/m_scheduler/Makefile=20
- coregrind/m_sigframe/Makefile=20
- coregrind/m_syswrap/Makefile=20
addrcheck/Makefile
addrcheck/tests/Makefile
addrcheck/docs/Makefile
Modified: branches/ASPACEM/coregrind/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/Makefile.am 2005-09-22 15:38:39 UTC (rev 4=
722)
+++ branches/ASPACEM/coregrind/Makefile.am 2005-09-22 21:28:11 UTC (rev 4=
723)
@@ -1,29 +1,14 @@
include $(top_srcdir)/Makefile.all.am
include $(top_srcdir)/Makefile.core-AM_CPPFLAGS.am
=20
-MODULES =3D \
- m_aspacemgr \
- m_debuginfo \
- m_demangle \
- m_dispatch \
- m_replacemalloc \
- m_scheduler \
- m_sigframe \
- m_syswrap
-
-## When building, we are only interested in the current arch/OS/platform=
.
-## But when doing 'make dist', we are interested in every arch/OS/platfo=
rm.
-## That's what DIST_SUBDIRS specifies.
-SUBDIRS =3D $(MODULES) .
-
-DIST_SUBDIRS =3D $(MODULES) .
-
AM_CPPFLAGS +=3D -DVG_LIBDIR=3D"\"$(valdir)"\" \
-DKICKSTART_BASE=3D@KICKSTART_BASE@
=20
default.supp: $(SUPP_FILES)
=20
-noinst_LIBRARIES =3D libcoregrind_singles.a
+noinst_LIBRARIES =3D \
+ libcoregrind.a \
+ libreplacemalloc_toolpreload.a
=20
bin_PROGRAMS =3D \
valgrind
@@ -31,6 +16,14 @@
val_PROGRAMS =3D \
vg_preload_core.so
=20
+# Remember to include all the arch-specific files in the distribution.
+EXTRA_DIST =3D \
+ $(addsuffix .S,$(addprefix m_dispatch/dispatch-,$(VG_ARCH_ALL)))=
\
+ $(addsuffix .c,$(addprefix m_sigframe/sigframe-,$(VG_PLATFORM_AL=
L))) \
+ $(addsuffix .S,$(addprefix m_syswrap/syscall-,$(VG_PLATFORM_ALL)=
)) \
+ $(addsuffix .c,$(addprefix m_syswrap/syswrap-,$(VG_OS_ALL))) \
+ $(addsuffix .c,$(addprefix m_syswrap/syswrap-,$(VG_PLATFORM_ALL)=
))
+
noinst_HEADERS =3D \
coregrind.h \
pub_core_aspacemgr.h \
@@ -80,7 +73,18 @@
vki_unistd.h \
vki_unistd-amd64-linux.h\
vki_unistd-ppc32-linux.h\
- vki_unistd-x86-linux.h
+ vki_unistd-x86-linux.h \
+ m_debuginfo/priv_symtab.h \
+ m_debuginfo/priv_symtypes.h \
+ m_demangle/ansidecl.h \
+ m_demangle/dyn-string.h \
+ m_demangle/demangle.h \
+ m_demangle/safe-ctype.h \
+ m_scheduler/priv_sema.h \
+ m_syswrap/priv_types_n_macros.h \
+ m_syswrap/priv_syswrap-generic.h \
+ m_syswrap/priv_syswrap-linux.h \
+ m_syswrap/priv_syswrap-main.h
=20
BUILT_SOURCES =3D=20
CLEANFILES =3D=20
@@ -89,7 +93,7 @@
m_launcher.c \
m_debuglog.c
=20
-libcoregrind_singles_a_SOURCES =3D \
+libcoregrind_a_SOURCES =3D \
m_commandline.c \
m_cpuid.S \
m_clientstate.c \
@@ -122,8 +126,39 @@
m_trampoline.S \
m_translate.c \
m_transtab.c \
- m_ume.c
+ m_ume.c \
+ m_aspacemgr/read_procselfmaps.c \
+ m_aspacemgr/aspacemgr.c \
+ m_debuginfo/dwarf.c \
+ m_debuginfo/stabs.c \
+ m_debuginfo/symtab.c \
+ m_debuginfo/symtypes.c \
+ m_demangle/cp-demangle.c \
+ m_demangle/cplus-dem.c \
+ m_demangle/demangle.c \
+ m_demangle/dyn-string.c \
+ m_demangle/safe-ctype.c \
+ m_dispatch/dispatch-@VG_ARCH@.S \
+ m_replacemalloc/replacemalloc_core.c \
+ m_scheduler/scheduler.c \
+ m_scheduler/sema.c \
+ m_sigframe/sigframe-@VG_PLATFORM@.c \
+ m_syswrap/syscall-@VG_PLATFORM@.S \
+ m_syswrap/syswrap-generic.c \
+ m_syswrap/syswrap-@VG_OS@.c \
+ m_syswrap/syswrap-@VG_PLATFORM@.c \
+ m_syswrap/syswrap-main.c
=20
+libreplacemalloc_toolpreload_a_SOURCES =3D m_replacemalloc/vg_replace_ma=
lloc.c
+libreplacemalloc_toolpreload_a_CFLAGS =3D $(PIC_AM_CFLAGS)
+
+m_dispatch/dispatch-@VG_ARCH@.S: libvex_guest_offsets.h
+m_syswrap/syscall-@VG_PLATFORM@.S: libvex_guest_offsets.h
+m_syswrap/syswrap-main.c: libvex_guest_offsets.h
+
+libvex_guest_offsets.h:
+ $(MAKE) -C @VEX_DIR@ pub/libvex_guest_offsets.h
+
vg_preload_core_so_SOURCES =3D vg_preloaded.c
vg_preload_core_so_CFLAGS =3D $(AM_CFLAGS) -fpic
vg_preload_core_so_LDADD =3D -ldl
Deleted: branches/ASPACEM/coregrind/m_aspacemgr/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_aspacemgr/Makefile.am 2005-09-22 15:38:3=
9 UTC (rev 4722)
+++ branches/ASPACEM/coregrind/m_aspacemgr/Makefile.am 2005-09-22 21:28:1=
1 UTC (rev 4723)
@@ -1,8 +0,0 @@
-include $(top_srcdir)/Makefile.all.am
-include $(top_srcdir)/Makefile.core-AM_CPPFLAGS.am
-
-noinst_LIBRARIES =3D libaspacemgr.a
-
-libaspacemgr_a_SOURCES =3D \
- read_procselfmaps.c \
- aspacemgr.c
Deleted: branches/ASPACEM/coregrind/m_debuginfo/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_debuginfo/Makefile.am 2005-09-22 15:38:3=
9 UTC (rev 4722)
+++ branches/ASPACEM/coregrind/m_debuginfo/Makefile.am 2005-09-22 21:28:1=
1 UTC (rev 4723)
@@ -1,14 +0,0 @@
-include $(top_srcdir)/Makefile.all.am
-include $(top_srcdir)/Makefile.core-AM_CPPFLAGS.am
-
-noinst_HEADERS =3D \
- priv_symtab.h \
- priv_symtypes.h
-
-noinst_LIBRARIES =3D libdebuginfo.a
-
-libdebuginfo_a_SOURCES =3D \
- dwarf.c \
- stabs.c \
- symtab.c \
- symtypes.c
Deleted: branches/ASPACEM/coregrind/m_demangle/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_demangle/Makefile.am 2005-09-22 15:38:39=
UTC (rev 4722)
+++ branches/ASPACEM/coregrind/m_demangle/Makefile.am 2005-09-22 21:28:11=
UTC (rev 4723)
@@ -1,22 +0,0 @@
-include $(top_srcdir)/Makefile.all.am
-include $(top_srcdir)/Makefile.core-AM_CPPFLAGS.am
-
-noinst_HEADERS =3D \
- ansidecl.h \
- dyn-string.h \
- demangle.h \
- safe-ctype.h=20
-
-noinst_LIBRARIES =3D libdemangle.a
-
-libdemangle_a_SOURCES =3D \
- cp-demangle.c \
- cplus-dem.c \
- demangle.c \
- dyn-string.c \
- safe-ctype.c
-
-## Ignore harmless warnings for these ones
-cp-demangle.o: CFLAGS +=3D -Wno-unused -Wno-shadow=20
-cplus-dem.o: CFLAGS +=3D -Wno-unused
-
Modified: branches/ASPACEM/coregrind/m_demangle/cp-demangle.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
--- branches/ASPACEM/coregrind/m_demangle/cp-demangle.c 2005-09-22 15:38:=
39 UTC (rev 4722)
+++ branches/ASPACEM/coregrind/m_demangle/cp-demangle.c 2005-09-22 21:28:=
11 UTC (rev 4723)
@@ -710,14 +710,14 @@
argument list ARG_LIST. */
=20
static string_list_t
-template_arg_list_get_arg (arg_list, index)
+template_arg_list_get_arg (arg_list, index2)
template_arg_list_t arg_list;
- int index;
+ int index2;
{
string_list_t arg =3D arg_list->first_argument;
/* Scan down the list of arguments to find the one at position
INDEX. */
- while (index--)
+ while (index2--)
{
arg =3D arg->next;
if (arg =3D=3D NULL)
@@ -966,7 +966,7 @@
demangling_t dm;
int c;
{
- static char *error_message =3D NULL;
+ //static char *error_message =3D NULL; // unused
=20
if (peek_char (dm) =3D=3D c)
{
@@ -2988,7 +2988,7 @@
demangle_template_args (dm)
demangling_t dm;
{
- int first =3D 1;
+ //int first =3D 1; // unused
dyn_string_t old_last_source_name;
dyn_string_t new_name;
template_arg_list_t arg_list =3D template_arg_list_new ();
@@ -3894,6 +3894,7 @@
/* Demangle NAME in the G++ V3 ABI demangling style, and return either
zero, indicating that some error occurred, or a demangling_t
holding the results. */
+__attribute__((unused))
static demangling_t
demangle_v3_with_details (name)
const char *name;
Modified: branches/ASPACEM/coregrind/m_demangle/cplus-dem.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
--- branches/ASPACEM/coregrind/m_demangle/cplus-dem.c 2005-09-22 15:38:39=
UTC (rev 4722)
+++ branches/ASPACEM/coregrind/m_demangle/cplus-dem.c 2005-09-22 21:28:11=
UTC (rev 4723)
@@ -54,7 +54,7 @@
char * realloc ();
#endif*/
=20
-#include <demangle.h>
+#include "demangle.h"
#include "dyn-string.h"
#undef CURRENT_DEMANGLING_STYLE
#define CURRENT_DEMANGLING_STYLE work->options
@@ -3852,7 +3852,7 @@
int done =3D 0;
int success =3D 1;
char buf[10];
- unsigned int dec =3D 0;
+ //unsigned int dec =3D 0; // unused
string btype;
type_kind_t tk =3D tk_integral;
=20
Modified: branches/ASPACEM/coregrind/m_demangle/safe-ctype.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
--- branches/ASPACEM/coregrind/m_demangle/safe-ctype.c 2005-09-22 15:38:3=
9 UTC (rev 4722)
+++ branches/ASPACEM/coregrind/m_demangle/safe-ctype.c 2005-09-22 21:28:1=
1 UTC (rev 4723)
@@ -30,7 +30,7 @@
unsigned char. */
=20
#include "ansidecl.h"
-#include <safe-ctype.h>
+#include "safe-ctype.h"
/*#include <stdio.h>*/ /* for EOF */
=20
/* Shorthand */
Deleted: branches/ASPACEM/coregrind/m_dispatch/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_dispatch/Makefile.am 2005-09-22 15:38:39=
UTC (rev 4722)
+++ branches/ASPACEM/coregrind/m_dispatch/Makefile.am 2005-09-22 21:28:11=
UTC (rev 4723)
@@ -1,16 +0,0 @@
-include $(top_srcdir)/Makefile.all.am
-include $(top_srcdir)/Makefile.core-AM_CPPFLAGS.am
-
-noinst_LIBRARIES =3D libdispatch.a
-
-# Remember to include all the arch-specific files in the distribution.
-EXTRA_DIST =3D \
- $(addsuffix .S,$(addprefix dispatch-,$(VG_ARCH_ALL)))
-
-libdispatch_a_SOURCES =3D \
- dispatch-@VG_ARCH@.S
-
-dispatch-@VG_ARCH@.S: libvex_guest_offsets.h
-
-libvex_guest_offsets.h:
- $(MAKE) -C @VEX_DIR@ pub/libvex_guest_offsets.h
Deleted: branches/ASPACEM/coregrind/m_replacemalloc/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_replacemalloc/Makefile.am 2005-09-22 15:=
38:39 UTC (rev 4722)
+++ branches/ASPACEM/coregrind/m_replacemalloc/Makefile.am 2005-09-22 21:=
28:11 UTC (rev 4723)
@@ -1,16 +0,0 @@
-include $(top_srcdir)/Makefile.all.am
-include $(top_srcdir)/Makefile.core-AM_CPPFLAGS.am
-
-noinst_LIBRARIES =3D \
- libreplacemalloc_core.a \
- libreplacemalloc_toolpreload.a
-
-libreplacemalloc_core_a_SOURCES =3D \
- replacemalloc_core.c
-
-libreplacemalloc_toolpreload_a_SOURCES =3D \
- vg_replace_malloc.c
-libreplacemalloc_toolpreload_a_CFLAGS =3D \
- $(PIC_AM_CFLAGS)
-
-
Deleted: branches/ASPACEM/coregrind/m_scheduler/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_scheduler/Makefile.am 2005-09-22 15:38:3=
9 UTC (rev 4722)
+++ branches/ASPACEM/coregrind/m_scheduler/Makefile.am 2005-09-22 21:28:1=
1 UTC (rev 4723)
@@ -1,12 +0,0 @@
-include $(top_srcdir)/Makefile.all.am
-include $(top_srcdir)/Makefile.core-AM_CPPFLAGS.am
-
-noinst_HEADERS =3D \
- priv_sema.h
-
-noinst_LIBRARIES =3D libscheduler.a
-
-libscheduler_a_SOURCES =3D \
- scheduler.c \
- sema.c
-
Deleted: branches/ASPACEM/coregrind/m_sigframe/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_sigframe/Makefile.am 2005-09-22 15:38:39=
UTC (rev 4722)
+++ branches/ASPACEM/coregrind/m_sigframe/Makefile.am 2005-09-22 21:28:11=
UTC (rev 4723)
@@ -1,11 +0,0 @@
-include $(top_srcdir)/Makefile.all.am
-include $(top_srcdir)/Makefile.core-AM_CPPFLAGS.am
-
-# Remember to include all the platform-specific files in the distributio=
n.
-EXTRA_DIST =3D \
- $(addsuffix .c,$(addprefix sigframe-,$(VG_PLATFORM_ALL)))
-
-noinst_LIBRARIES =3D libsigframe.a
-
-libsigframe_a_SOURCES =3D \
- sigframe-@VG_PLATFORM@.c
Deleted: branches/ASPACEM/coregrind/m_syswrap/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_syswrap/Makefile.am 2005-09-22 15:38:39 =
UTC (rev 4722)
+++ branches/ASPACEM/coregrind/m_syswrap/Makefile.am 2005-09-22 21:28:11 =
UTC (rev 4723)
@@ -1,29 +0,0 @@
-include $(top_srcdir)/Makefile.all.am
-include $(top_srcdir)/Makefile.core-AM_CPPFLAGS.am
-
-# Remember to include all the OS/platform-specific files in the distribu=
tion.
-EXTRA_DIST =3D \
- $(addsuffix .S,$(addprefix syscall-,$(VG_PLATFORM_ALL))) \
- $(addsuffix .c,$(addprefix syswrap-,$(VG_OS_ALL))) \
- $(addsuffix .c,$(addprefix syswrap-,$(VG_PLATFORM_ALL)))
-
-noinst_HEADERS =3D \
- priv_types_n_macros.h \
- priv_syswrap-generic.h \
- priv_syswrap-linux.h \
- priv_syswrap-main.h
-
-noinst_LIBRARIES =3D libsyswrap.a
-
-libsyswrap_a_SOURCES =3D \
- syscall-@VG_PLATFORM@.S \
- syswrap-generic.c \
- syswrap-@VG_OS@.c \
- syswrap-@VG_PLATFORM@.c \
- syswrap-main.c
-
-syscall-@VG_PLATFORM@.S: libvex_guest_offsets.h
-syswrap-main.c: libvex_guest_offsets.h
-
-libvex_guest_offsets.h:
- $(MAKE) -C @VEX_DIR@ pub/libvex_guest_offsets.h
Modified: branches/ASPACEM/tests/filter_stderr_basic
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/tests/filter_stderr_basic 2005-09-22 15:38:39 UTC (r=
ev 4722)
+++ branches/ASPACEM/tests/filter_stderr_basic 2005-09-22 21:28:11 UTC (r=
ev 4723)
@@ -19,8 +19,8 @@
sed "/Estimated CPU clock rate is [0-9]* MHz/d" |
sed "/For more details, rerun with: -v/d" |
=20
-# Anonymise line numbers in vg_replace_malloc.c
-sed "s/vg_replace_malloc.c:[0-9]*/vg_replace_malloc.c:.../" |
+# Anonymise line numbers in vg_replace_malloc.c, remove dirname if prese=
nt
+sed "s/\(m_replacemalloc\/\)\?vg_replace_malloc.c:[0-9]*/vg_replace_mall=
oc.c:.../" |
=20
# Anonymise vg_intercept lines
#sed "s/vg_intercept.c:[0-9]*/vg_intercept.c:.../" |
|
|
From: Nicholas N. <nj...@cs...> - 2005-09-22 21:08:21
|
Dear Valgrind User, We'd like you to participate in the second official Valgrind survey. It can be found at: http://www.valgrind.org/gallery/surveys.html Our first survey was in November 2003. It was very useful and we made a number of changes to how we do things as a result (the above page links to a list of some of these changes). Valgrind has changed a lot since then. This is your chance to let us know what you think about Valgrind and how it can be improved. This survey is shorter and better focused than the 2003 survey. We'd like you to respond, even if you filled out the 2003 survey, or filled out an intermediate survey on the website in the time between now and then -- the survey evolved over that time, and we'd like all the responses to be from the same time period. If you know a Valgrind user who doesn't read the lists, please forward this message to them. If you are worried about privacy: the survey can be taken anonymously, although the survey explains why we prefer that you include your name and email address. You don't have to answer any question you don't want to, but we encourage you to answer all of them. We won't reveal your name or email address to anyone outside the Valgrind team. Your response is confidential; we won't make raw data public, only summaries (which may include anonymous quotes). The only exception to this is if you answer "yes" to question 16 about mentioning your project on the Valgrind website. We will collect up the responses about one week from now (the exact time depends on the response rate, we'll keep it open longer if responses are still coming in), and post the analysis and results some time afterwards. Thank you for your participation. The Valgrind Team |
|
From: <sv...@va...> - 2005-09-22 20:37:58
|
Author: njn Date: 2005-09-22 21:37:43 +0100 (Thu, 22 Sep 2005) New Revision: 201 Log: Added Mini-XML, FLTK, CUPS. Modified: trunk/gallery/users.html Modified: trunk/gallery/users.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/gallery/users.html 2005-09-22 20:32:00 UTC (rev 200) +++ trunk/gallery/users.html 2005-09-22 20:37:43 UTC (rev 201) @@ -416,6 +416,13 @@ <li><a href=3D"http://www.vrjuggler.org/">VR Juggler:</a> an open source library for developing cross platform virtual reality applications.</li> + + <li><a href=3D"http://www.easysw.com/~mike/mxml/">Mini-XML:</a> + a small XML parsing library.</li> + + <li><a href=3D"http://www.fltk.org/">Fast Light Toolkit (FLTK):</a> + a cross-platform C++ GUI toolkit for UNIX, Linux, Windows and MacOS= X.</li> + = =20 </ul> =20 =20 @@ -481,9 +488,12 @@ an open source suite providing seamless file and print services to SMB/CIFS clients.</li> =20 + <li><a href=3D"http://www.cups.org/">Common UNIX Printing System (CUPS)= :</a> + a portable printing layer for UNIX-based operating systems.</li> + <li><a href=3D"http://www.xinetd.org/">Xinetd:</a> a secure and powerful replacement for inetd, the internet - services daemon. (Example bug found.)</li> + services daemon.</li> =20 <li><a href=3D"http://www.ntop.org/">ntop:</a> a network traffic probe that shows network usage.</li> |
|
From: <sv...@va...> - 2005-09-22 20:32:04
|
Author: njn Date: 2005-09-22 21:32:00 +0100 (Thu, 22 Sep 2005) New Revision: 200 Log: more tweaks Modified: trunk/gallery/surveys.html Modified: trunk/gallery/surveys.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/gallery/surveys.html 2005-09-22 20:29:22 UTC (rev 199) +++ trunk/gallery/surveys.html 2005-09-22 20:32:00 UTC (rev 200) @@ -23,10 +23,11 @@ <a name=3D"surveys_03_05"></a> <h3>Ongoing Surveys : December 2003--August 2005</h3> =20 -<p>We had an ongoing survey on the Valgrind website during this period, -which evolved. We received around 40 reponses, which gave us more -information, and also let us strip back the survey to the most important -questions. Thank you to all those who responded. +<p>We had an ongoing survey on the Valgrind website during this period. +The survey evolved greatly during this time. We received around 40 +responses, which gave us more information, and also let us refine and +shorten it in preparation for the September 2005 survey. Thank you to a= ll +those who responded. =20 =20 <a name=3D"survey_03"></a> |
|
From: <sv...@va...> - 2005-09-22 20:29:26
|
Author: njn Date: 2005-09-22 21:29:22 +0100 (Thu, 22 Sep 2005) New Revision: 199 Log: tweaks Modified: trunk/gallery/surveys.html trunk/index.html trunk/info/news.html Modified: trunk/gallery/surveys.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/gallery/surveys.html 2005-09-22 20:26:18 UTC (rev 198) +++ trunk/gallery/surveys.html 2005-09-22 20:29:22 UTC (rev 199) @@ -1,11 +1,8 @@ <h1>Surveys</h1> =20 -<a name=3D"survey-current"></a> -<h3><a href=3D"/gallery/survey_current/survey.html">Current - Survey</a></h3> - <a name=3D"survey_05"></a> -<h3>Survey 2 : September 2005</h3> +<h3><a href=3D"/gallery/survey_current/survey.html">Survey 2 :=20 + September 2005</a></h3> =20 <p>Beginning Thursday, September 22, we are running our=20 <a href=3D"/gallery/survey_current/survey.html">second official survey</= a>. Modified: trunk/index.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/index.html 2005-09-22 20:26:18 UTC (rev 198) +++ trunk/index.html 2005-09-22 20:29:22 UTC (rev 199) @@ -38,7 +38,7 @@ <ul> =20 <li><p>September 22 2005: Please fill out our=20 - <a href=3D"/gallery/survey_current/survey.html">survey</a>. We will cl= ose + <a href=3D"/gallery/surveys.html">survey</a>. We will close the survey in about one week's time, depending on the response rate. </p></li> =20 Modified: trunk/info/news.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/info/news.html 2005-09-22 20:26:18 UTC (rev 198) +++ trunk/info/news.html 2005-09-22 20:29:22 UTC (rev 199) @@ -8,7 +8,7 @@ <ul> =20 <li><p>September 22 2005: Please fill out our=20 - <a href=3D"/gallery/survey_current/survey.html">survey</a>. We will cl= ose + <a href=3D"/gallery/surveys.html">survey</a>. We will close the survey in about one week's time, depending on the response rate. </p></li> =20 |
|
From: <sv...@va...> - 2005-09-22 20:26:30
|
Author: njn
Date: 2005-09-22 21:26:18 +0100 (Thu, 22 Sep 2005)
New Revision: 198
Log:
Put stuff in place for the survey.
Modified:
trunk/gallery/survey_current/survey.html
trunk/gallery/surveys.html
trunk/index.html
trunk/info/news.html
Modified: trunk/gallery/survey_current/survey.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/gallery/survey_current/survey.html 2005-09-22 19:44:37 UTC (rev=
197)
+++ trunk/gallery/survey_current/survey.html 2005-09-22 20:26:18 UTC (rev=
198)
@@ -3,7 +3,7 @@
include( 'submitted.php' );
} else {
?>
-<h1>Current Survey</h1>
+<h1>September 2005 Survey</h1>
=20
<h3>General Instructions</h3>
=20
Modified: trunk/gallery/surveys.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/gallery/surveys.html 2005-09-22 19:44:37 UTC (rev 197)
+++ trunk/gallery/surveys.html 2005-09-22 20:26:18 UTC (rev 198)
@@ -4,21 +4,36 @@
<h3><a href=3D"/gallery/survey_current/survey.html">Current
Survey</a></h3>
=20
-<p>Let your opinions about Valgrind be heard: complete our
-<a href=3D"/gallery/survey_current/survey.html">current survey</a>.
-Even if you completed the last survey, we'd like your response to this
-survey, as it will give us more precise and directly useful
-information.</p>
+<a name=3D"survey_05"></a>
+<h3>Survey 2 : September 2005</h3>
=20
+<p>Beginning Thursday, September 22, we are running our=20
+<a href=3D"/gallery/survey_current/survey.html">second official survey</=
a>.
+Even if you completed a prior survey, we'd like your response to this
+survey, because the questions have probably changed since you last
+responded.</p>
+
<p>Survey responses tell us what is good and bad about Valgrind,
sate our curiosity about how it is used, and encourage us to
continue our efforts. By completing the survey, you are
supporting Valgrind, and helping us to improve it.</p>
=20
+<p>We will close the survey in a week or so, depending on the response
+rate. We will collate the responses and post an analysis some time afte=
r
+that. Thank you for your participation.</p>
=20
=20
+<a name=3D"surveys_03_05"></a>
+<h3>Ongoing Surveys : December 2003--August 2005</h3>
+
+<p>We had an ongoing survey on the Valgrind website during this period,
+which evolved. We received around 40 reponses, which gave us more
+information, and also let us strip back the survey to the most important
+questions. Thank you to all those who responded.
+
+
<a name=3D"survey_03"></a>
-<h3>Survey : November 2003</h3>
+<h3>Survey 1 : November 2003</h3>
=20
<p>We ran our first survey in November 2003. The 116 responses
gave us a huge amount of information, and taught us a great deal
Modified: trunk/index.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/index.html 2005-09-22 19:44:37 UTC (rev 197)
+++ trunk/index.html 2005-09-22 20:26:18 UTC (rev 198)
@@ -37,17 +37,15 @@
=20
<ul>
=20
+ <li><p>September 22 2005: Please fill out our=20
+ <a href=3D"/gallery/survey_current/survey.html">survey</a>. We will cl=
ose
+ the survey in about one week's time, depending on the response rate.
+ </p></li>
+
<li><p>August 29 2005: Valgrind 3.0.1, for x86-linux and amd64-linux,=20
is available
(<a href=3D"/info/release-notes-3.0.1.txt">release notes</a>).</p></li>
=20
- <li><p>August 1 2005: A new stable version, 2.4.1, is
- available.</p></li>
-
- <li><p>March 12, 2005: The Valgrind website has been overhauled,
- and moved to <a href=3D"http://www.valgrind.org">www.valgrind.org</a>.
- Many thanks to KDE for hosting the previous website.</p></li>
-
<li><p>March 12, 2005: A new mailing list,
<?php echo vglink( 'vgannounce'); ?>, has been created. This low-volum=
e
list will receive announcements of new Valgrind releases.
Modified: trunk/info/news.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/info/news.html 2005-09-22 19:44:37 UTC (rev 197)
+++ trunk/info/news.html 2005-09-22 20:26:18 UTC (rev 198)
@@ -7,6 +7,11 @@
=20
<ul>
=20
+ <li><p>September 22 2005: Please fill out our=20
+ <a href=3D"/gallery/survey_current/survey.html">survey</a>. We will cl=
ose
+ the survey in about one week's time, depending on the response rate.
+ </p></li>
+
<li><p>August 29 2005: A bug-fix release, 3.0.1 is available
for x86-linux and amd64-linux
(<a href=3D"/info/release-notes-3.0.1.txt">release notes</a>).
|
|
From: <sv...@va...> - 2005-09-22 19:44:48
|
Author: njn Date: 2005-09-22 20:44:37 +0100 (Thu, 22 Sep 2005) New Revision: 197 Log: minor thing Modified: trunk/gallery/survey_current/survey.html Modified: trunk/gallery/survey_current/survey.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/gallery/survey_current/survey.html 2005-09-13 23:47:22 UTC (rev= 196) +++ trunk/gallery/survey_current/survey.html 2005-09-22 19:44:37 UTC (rev= 197) @@ -287,8 +287,9 @@ encourages more thoughtful responses if your name is attached. And pa= rtly because sometimes we respond to surveys -- for example, sometimes we c= an point out that a feature that a responder thought was missing is actua= lly - implemented. As for your country, we're just curious to see how widel= y - Valgrind is used! + implemented. We won't pass your name or email on to anyone outside th= e + Valgrind team. As for your country, we're just curious to see how wid= ely + Valgrind is used. </td></tr> </table> =20 |
|
From: <sv...@va...> - 2005-09-22 15:38:50
|
Author: sewardj
Date: 2005-09-22 16:38:39 +0100 (Thu, 22 Sep 2005)
New Revision: 4722
Log:
Finish off first pass at command-line-arg handling. I'm less than
convinced I understand this stuff properly.
Modified:
branches/ASPACEM/coregrind/m_commandline.c
branches/ASPACEM/coregrind/m_main.c
branches/ASPACEM/coregrind/m_syswrap/syswrap-generic.c
branches/ASPACEM/coregrind/pub_core_main.h
Modified: branches/ASPACEM/coregrind/m_commandline.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
--- branches/ASPACEM/coregrind/m_commandline.c 2005-09-22 12:41:42 UTC (r=
ev 4721)
+++ branches/ASPACEM/coregrind/m_commandline.c 2005-09-22 15:38:39 UTC (r=
ev 4722)
@@ -80,6 +80,9 @@
=20
If args-for-v includes --command-line-only=3Dyes, then the extra
sources (env vars, files) are not consulted.
+
+ Note that args-for-c[0] is the first real arg for the client, not
+ its executable name.
*/
=20
=20
Modified: branches/ASPACEM/coregrind/m_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
--- branches/ASPACEM/coregrind/m_main.c 2005-09-22 12:41:42 UTC (rev 4721=
)
+++ branches/ASPACEM/coregrind/m_main.c 2005-09-22 15:38:39 UTC (rev 4722=
)
@@ -104,13 +104,6 @@
Startup stuff =20
------------------------------------------------------------------ */
=20
-/* The name of the stage1 (main) executable */
-static HChar* name_of_stage1 =3D NULL;
-
-/* our argc/argv */
-//static Int vg_argc;
-//static Char **vg_argv;
-
/* This should get some address inside the stack on which we gained
control (eg, it could be the SP at startup). It doesn't matter
exactly where in the stack it is. This value is passed to the
@@ -235,27 +228,33 @@
=20
If this is missing, then it is added.
=20
+ Also, remove any binding for VALGRIND_LAUNCHER=3D. The client should
+ not be able to see this.
+
If this needs to handle any more variables it should be hacked
into something table driven. The copy is VG_(malloc)'d space.
*/
static HChar** setup_client_env ( HChar** origenv, const HChar* toolname=
)
{
- static const HChar preload_core_so[] =3D "vg_preload_core.so";
- static const HChar ld_preload[] =3D "LD_PRELOAD=3D";
- static const Int ld_preload_len =3D sizeof(ld_preload)-1;
- Bool ld_preload_done =3D False;
- Int vgliblen =3D VG_(strlen)(VG_(libdir));
+ HChar* preload_core_so =3D "vg_preload_core.so";
+ HChar* ld_preload =3D "LD_PRELOAD=3D";
+ HChar* v_launcher =3D VALGRIND_LAUNCHER "=3D";
+ Int ld_preload_len =3D VG_(strlen)( ld_preload );
+ Int v_launcher_len =3D VG_(strlen)( v_launcher );
+ Bool ld_preload_done =3D False;
+ Int vglib_len =3D VG_(strlen)(VG_(libdir));
+
HChar** cpp;
HChar** ret;
HChar* preload_tool_path;;
- Int envc;
+ Int envc, i;
=20
/* Alloc space for the vgpreload_core.so path and vgpreload_<tool>.so
paths. We might not need the space for vgpreload_<tool>.so, but i=
t
doesn't hurt to over-allocate briefly. The 16s are just cautious
slop. */
- Int preload_core_path_len =3D vgliblen + sizeof(preload_core_so) + 16=
;
- Int preload_tool_path_len =3D vgliblen + VG_(strlen)(toolname) + 16=
;
+ Int preload_core_path_len =3D vglib_len + sizeof(preload_core_so) + 1=
6;
+ Int preload_tool_path_len =3D vglib_len + VG_(strlen)(toolname) + 1=
6;
Int preload_string_len =3D preload_core_path_len + preload_tool_pa=
th_len;
HChar* preload_string =3D VG_(malloc)(preload_string_len);
vg_assert(preload_string);
@@ -320,6 +319,18 @@
ret[envc++] =3D cp;
}
=20
+ /* ret[0 .. envc-1] is live now. */
+ /* Find and remove a binding for VALGRIND_LAUNCHER. */
+ for (i =3D 0; i < envc; i++)
+ if (0 =3D=3D VG_(memcmp(ret[i], v_launcher, v_launcher_len)))
+ break;
+
+ if (i < envc) {
+ for (; i < envc-1; i++)
+ ret[i] =3D ret[i+1];
+ envc--;
+ }
+
VG_(free)(preload_string);
ret[envc] =3D NULL;
=20
@@ -404,6 +415,7 @@
Addr client_SP; /* client stack base (initial SP) */
Addr clstack_start;
Int i;
+ Bool have_exename;
=20
vg_assert(VG_IS_PAGE_ALIGNED(clstack_end+1));
=20
@@ -413,7 +425,8 @@
/* =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D compu=
te sizes =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D */
=20
/* first of all, work out how big the client stack will be */
- stringsize =3D 0;
+ stringsize =3D 0;
+ have_exename =3D VG_(args_the_exename) !=3D NULL;
=20
/* paste on the extra args if the loader needs them (ie, the #!=20
interpreter and its argument) */
@@ -428,11 +441,14 @@
}
=20
/* now scan the args we're given... */
+ if (have_exename)
+ stringsize +=3D VG_(strlen)( VG_(args_the_exename) ) + 1;
+
for (i =3D 0; i < VG_(args_for_client).used; i++) {
argc++;
stringsize +=3D VG_(strlen)( VG_(args_for_client).strs[i] ) + 1;
}
- =20
+
/* ...and the environment */
envc =3D 0;
for (cpp =3D orig_envp; cpp && *cpp; cpp++) {
@@ -454,14 +470,15 @@
=20
/* OK, now we know how big the client stack is */
stacksize =3D
- sizeof(Word) + /* argc */
- sizeof(char **)*argc + /* argv */
- sizeof(char **) + /* terminal NULL */
- sizeof(char **)*envc + /* envp */
- sizeof(char **) + /* terminal NULL */
- auxsize + /* auxv */
- VG_ROUNDUP(stringsize, sizeof(Word)) +/* strings (aligned) */
- VKI_PAGE_SIZE; /* page for trampoline code */
+ sizeof(Word) + /* argc */
+ (have_exename ? sizeof(char **) : 0) + /* argc[0] =3D=3D exename =
*/
+ sizeof(char **)*argc + /* argv */
+ sizeof(char **) + /* terminal NULL */
+ sizeof(char **)*envc + /* envp */
+ sizeof(char **) + /* terminal NULL */
+ auxsize + /* auxv */
+ VG_ROUNDUP(stringsize, sizeof(Word)) + /* strings (aligned) */
+ VKI_PAGE_SIZE; /* page for trampoline code */
=20
if (0) VG_(printf)("stacksize =3D %d\n", stacksize);
=20
@@ -520,14 +537,14 @@
vg_assert(!res.isError);=20
}
=20
- /* =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D copy =
client stack =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
*/
+ /* =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D creat=
e client stack =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
*/
=20
ptr =3D (Addr*)client_SP;
=20
- /* --- argc --- */
- *ptr++ =3D argc; /* client argc */
+ /* --- client argc --- */
+ *ptr++ =3D argc + (have_exename ? 1 : 0);
=20
- /* --- argv --- */
+ /* --- client argv --- */
if (info->interp_name) {
*ptr++ =3D (Addr)copy_str(&strtab, info->interp_name);
VG_(free)(info->interp_name);
@@ -536,8 +553,12 @@
*ptr++ =3D (Addr)copy_str(&strtab, info->interp_args);
VG_(free)(info->interp_args);
}
- for (i =3D 0; i < VG_(args_for_client).used; ptr++, i++) {
- *ptr =3D (Addr)copy_str(&strtab, *cpp);
+
+ if (have_exename)
+ *ptr++ =3D (Addr)copy_str(&strtab, VG_(args_the_exename));
+
+ for (i =3D 0; i < VG_(args_for_client).used; i++) {
+ *ptr++ =3D (Addr)copy_str(&strtab, VG_(args_for_client).strs[i]);
}
*ptr++ =3D 0;
=20
@@ -1589,14 +1610,7 @@
}
}
=20
-// Build "/proc/self/fd/<execfd>".
-Char* VG_(build_child_exename)( void )
-{
- vg_assert(name_of_stage1);
- return VG_(arena_strdup)(VG_AR_CORE, name_of_stage1);
-}
=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=3D=3D=3D=3D=3D=3D*/
/*=3D=3D=3D File descriptor setup =
=3D=3D=3D*/
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
Modified: branches/ASPACEM/coregrind/m_syswrap/syswrap-generic.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
--- branches/ASPACEM/coregrind/m_syswrap/syswrap-generic.c 2005-09-22 12:=
41:42 UTC (rev 4721)
+++ branches/ASPACEM/coregrind/m_syswrap/syswrap-generic.c 2005-09-22 15:=
38:39 UTC (rev 4722)
@@ -2384,9 +2384,13 @@
// but it seems to work nonetheless...
PRE(sys_execve)
{
- Char* path; /* path to executable */
+ Char* path =3D NULL; /* path to executable */
Char** envp =3D NULL;
+ Char** argv =3D NULL;
+ Char** arg2copy;
+ Char* launcher_basename =3D NULL;
ThreadState* tst;
+ Int i, j, tot_args;
=20
PRINT("sys_execve ( %p(%s), %p, %p )", ARG1, ARG1, ARG2, ARG3);
PRE_REG_READ3(vki_off_t, "execve",
@@ -2397,17 +2401,15 @@
if (ARG3 !=3D 0)
pre_argv_envp( ARG3, tid, "execve(envp)", "execve(envp[i])" );
=20
- path =3D (Char *)ARG1;
-
vg_assert(VG_(is_valid_tid)(tid));
tst =3D VG_(get_ThreadState)(tid);
=20
/* Erk. If the exec fails, then the following will have made a
mess of things which makes it hard for us to continue. The
right thing to do is piece everything together again in
- POST(execve), but that's hard work. Instead, we make an effort
- to check that the execve will work before actually calling
- exec. */
+ POST(execve), but that's close to impossible. Instead, we make
+ an effort to check that the execve will work before actually
+ doing it. */
{
struct vki_stat st;
SysRes r =3D VG_(stat)((Char *)ARG1, &st);
@@ -2426,33 +2428,115 @@
}
}
=20
+ /* Check more .. that the name at least begins in client-accessible
+ storage. */
+ if (!VG_(am_is_valid_for_client)( ARG1, 1, VKI_PROT_READ )) {
+ SET_STATUS_Failure( VKI_EFAULT );
+ return;
+ }
+
+ /* After this point, we can't recover if the execve fails. */
+ VG_(debugLog)(1, "syswrap", "Exec of %s\n", (Char*)ARG1);
+
/* Resistance is futile. Nuke all other threads. POSIX mandates
this. (Really, nuke them all, since the new process will make
its own new thread.) */
VG_(nuke_all_threads_except)( tid, VgSrc_ExitSyscall );
VG_(reap_threads)(tid);
=20
+ // Set up the child's exe path.
+ //
+ if (VG_(clo_trace_children)) {
+
+ // We want to exec the launcher. Get its pre-remembered path.
+ path =3D VG_(name_of_launcher);
+ // VG_(name_of_launcher) should have been acquired by m_main at
+ // startup.
+ vg_assert(path);
+
+ launcher_basename =3D VG_(strrchr)(path, '/');
+ if (launcher_basename =3D=3D NULL || launcher_basename[1] =3D=3D 0=
) {
+ launcher_basename =3D path; // hmm, tres dubious
+ } else {
+ launcher_basename++;
+ }
+
+ } else {
+ path =3D (Char*)ARG1;
+ }
+
+ // Set up the child's environment.
+ //
// Remove the valgrind-specific stuff from the environment so the
// child doesn't get vg_preload_core.so, vg_preload_TOOL.so, etc. =20
// This is done unconditionally, since if we are tracing the child,
- // stage1/2 will set up the appropriate client environment.
+ // the child valgrind will set up the appropriate client environment.
// Nb: we make a copy of the environment before trying to mangle it
// as it might be in read-only memory (this was bug #101881).
- if (ARG3 !=3D 0) {
+ //
+ // Then, if tracing the child, set VALGRIND_LIB for it.
+ //
+ if (ARG3 =3D=3D 0) {
+ envp =3D NULL;
+ } else {
envp =3D VG_(env_clone)( (Char**)ARG3 );
+ if (envp =3D=3D NULL) goto hosed;
VG_(env_remove_valgrind_env_stuff)( envp );
}
=20
if (VG_(clo_trace_children)) {
// Set VALGRIND_LIB in ARG3 (the environment)
- VG_(env_setenv)( (Char***)&ARG3, VALGRIND_LIB, VG_(libdir));
+ VG_(env_setenv)( &envp, VALGRIND_LIB, VG_(libdir));
+ }
=20
- // Create executable name: "/proc/self/fd/<vgexecfd>", update ARG1
- path =3D VG_(build_child_exename)();
+ // Set up the child's args. If not tracing it, they are
+ // simply ARG2. Otherwise, they are
+ //
+ // [launcher_basename] ++ VG_(args_for_valgrind) ++ [ARG1] ++ ARG2[1.=
.]
+ //
+ // except that the first VG_(args_for_valgrind_noexecpass) args
+ // are omitted.
+ //
+ if (!VG_(clo_trace_children)) {
+ argv =3D (Char**)ARG2;
+ } else {
+ vg_assert( VG_(args_for_valgrind_noexecpass) >=3D 0 );
+ vg_assert( VG_(args_for_valgrind_noexecpass)=20
+ <=3D VG_(args_for_valgrind).used );
+ /* how many args in total will there be? */
+ // launcher basename
+ tot_args =3D 1;
+ // V's args
+ tot_args +=3D VG_(args_for_valgrind).used;
+ tot_args -=3D VG_(args_for_valgrind_noexecpass);
+ // name of client exe
+ tot_args++;
+ // args for client exe, skipping [0]
+ arg2copy =3D (Char**)ARG2;
+ if (arg2copy && arg2copy[0]) {
+ for (i =3D 1; arg2copy[i]; i++)
+ tot_args++;
+ }
+ // allocate
+ argv =3D VG_(malloc)( (tot_args+1) * sizeof(HChar*) );
+ if (argv =3D=3D 0) goto hosed;
+ // copy
+ j =3D 0;
+ argv[j++] =3D launcher_basename;
+ for (i =3D 0; i < VG_(args_for_valgrind).used; i++) {
+ if (i < VG_(args_for_valgrind_noexecpass))
+ continue;
+ argv[j++] =3D VG_(args_for_valgrind).strs[i];
+ }
+ argv[j++] =3D (Char*)ARG1;
+ if (arg2copy && arg2copy[0])
+ for (i =3D 1; arg2copy[i]; i++)
+ argv[j++] =3D arg2copy[i];
+ argv[j++] =3D NULL;
+ // check
+ vg_assert(j =3D=3D tot_args+1);
}
=20
- VG_(debugLog)(1, "syswrap", "Exec of %s\n", (HChar*)ARG1);
-
/* restore the DATA rlimit for the child */
VG_(setrlimit)(VKI_RLIMIT_DATA, &VG_(client_rlimit_data));
=20
@@ -2477,9 +2561,8 @@
vki_sigset_t allsigs;
vki_siginfo_t info;
static const struct vki_timespec zero =3D { 0, 0 };
- Int i;
=20
- for(i =3D 1; i < VG_(max_signal); i++) {
+ for (i =3D 1; i < VG_(max_signal); i++) {
struct vki_sigaction sa;
VG_(do_sys_sigaction)(i, NULL, &sa);
if (sa.ksa_handler =3D=3D VKI_SIG_IGN)
@@ -2499,19 +2582,21 @@
=20
if (0) {
Char **cpp;
- VG_(printf)("exec: %s\n", (Char *)path);
- for (cpp =3D (Char **)ARG2; cpp && *cpp; cpp++)
+ VG_(printf)("exec: %s\n", path);
+ for (cpp =3D argv; cpp && *cpp; cpp++)
VG_(printf)("argv: %s\n", *cpp);
- for (cpp =3D (Char **)ARG3; cpp && *cpp; cpp++)
- VG_(printf)("env: %s\n", *cpp);
+ if (0)
+ for (cpp =3D envp; cpp && *cpp; cpp++)
+ VG_(printf)("env: %s\n", *cpp);
}
=20
SET_STATUS_from_SysRes(=20
- VG_(do_syscall3)(__NR_execve, (UWord)path, ARG2, ARG3)=20
+ VG_(do_syscall3)(__NR_execve, (UWord)path, (UWord)argv, (UWord)env=
p)=20
);
=20
- /* If we got here, then the execve failed. We've already made too
- much of a mess of ourselves to continue, so we have to abort. */
+ /* If we got here, then the execve failed. We've already made way
+ too much of a mess to continue, so we have to abort. */
+ hosed:
VG_(message)(Vg_UserMsg, "execve(%p(%s), %p, %p) failed, errno %d",
ARG1, ARG1, ARG2, ARG3, RES_unchecked);
VG_(message)(Vg_UserMsg, "EXEC FAILED: I can't recover from "
Modified: branches/ASPACEM/coregrind/pub_core_main.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
--- branches/ASPACEM/coregrind/pub_core_main.h 2005-09-22 12:41:42 UTC (r=
ev 4721)
+++ branches/ASPACEM/coregrind/pub_core_main.h 2005-09-22 15:38:39 UTC (r=
ev 4722)
@@ -38,9 +38,6 @@
// things.
//--------------------------------------------------------------------
=20
-// Help set up the child used when doing execve() with --trace-children=3D=
yes
-Char* VG_(build_child_exename) ( void );
-
// Do everything which needs doing before the process finally ends,
// like printing reports, etc
extern void VG_(shutdown_actions_NORETURN) (
|
|
From: <sv...@va...> - 2005-09-22 12:41:47
|
Author: sewardj
Date: 2005-09-22 13:41:42 +0100 (Thu, 22 Sep 2005)
New Revision: 4721
Log:
- x86 build fix
- change ownership (V -> C) of trampoline page after initial debuginfo
read, not before
Modified:
branches/ASPACEM/coregrind/m_main.c
branches/ASPACEM/coregrind/m_redir.c
branches/ASPACEM/coregrind/m_syswrap/syswrap-x86-linux.c
branches/ASPACEM/coregrind/pub_core_redir.h
Modified: branches/ASPACEM/coregrind/m_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
--- branches/ASPACEM/coregrind/m_main.c 2005-09-22 11:34:48 UTC (rev 4720=
)
+++ branches/ASPACEM/coregrind/m_main.c 2005-09-22 12:41:42 UTC (rev 4721=
)
@@ -2120,10 +2120,8 @@
// p: aspacem [so can change ownership of sysinfo pages]
//--------------------------------------------------------------
if (!need_help) {=20
- Bool setup_redirects_succeeded;
VG_(debugLog)(1, "main", "Initialise redirects\n");
- setup_redirects_succeeded =3D VG_(setup_code_redirect_table)();
- vg_assert(setup_redirects_succeeded);
+ VG_(setup_code_redirect_table)();
}
=20
//--------------------------------------------------------------
@@ -2214,6 +2212,25 @@
}
=20
//--------------------------------------------------------------
+ // Tell aspacem of ownership change of the asm helpers, so that
+ // m_translate allows them to be translated. However, only do this
+ // after the initial debug info read, since making a hole in the
+ // address range for the stage2 binary confuses the debug info reader=
.
+ // p: aspacem
+ //--------------------------------------------------------------
+ { Bool change_ownership_v_c_OK;
+ Addr co_start =3D VG_PGROUNDDN( (Addr)&VG_(trampoline_stuff_start=
) );
+ Addr co_endPlus =3D VG_PGROUNDUP( (Addr)&VG_(trampoline_stuff_end) =
);
+ VG_(debugLog)(1,"redir",
+ "transfer ownership V -> C of 0x%llx .. 0x%llx\n",
+ (ULong)co_start, (ULong)co_endPlus-1 );
+
+ change_ownership_v_c_OK=20
+ =3D VG_(am_change_ownership_v_to_c)( co_start, co_endPlus - co_s=
tart );
+ vg_assert(change_ownership_v_c_OK);
+ }
+
+ //--------------------------------------------------------------
// Tell the tool about the initial client memory permissions
// p: aspacem
// p: mallocfree
Modified: branches/ASPACEM/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
--- branches/ASPACEM/coregrind/m_redir.c 2005-09-22 11:34:48 UTC (rev 472=
0)
+++ branches/ASPACEM/coregrind/m_redir.c 2005-09-22 12:41:42 UTC (rev 472=
1)
@@ -32,7 +32,6 @@
=20
#include "pub_core_basics.h"
#include "pub_core_debuglog.h"
-#include "pub_core_aspacemgr.h" // VG_(am_change_ownership_v_to_c)
#include "pub_core_debuginfo.h"
#include "pub_core_libcbase.h"
#include "pub_core_libcassert.h"
@@ -342,7 +341,7 @@
return r->to_addr;
}
=20
-Bool VG_(setup_code_redirect_table) ( void )
+void VG_(setup_code_redirect_table) ( void )
{
#if defined(VGP_x86_linux)
/* Redirect _dl_sysinfo_int80, which is glibc's default system call
@@ -373,15 +372,6 @@
#else
# error Unknown platform
#endif
-
- { Addr co_start =3D VG_PGROUNDDN( (Addr)&VG_(trampoline_stuff_start=
) );
- Addr co_endPlus =3D VG_PGROUNDUP( (Addr)&VG_(trampoline_stuff_end) =
);
- VG_(debugLog)(1,"redir",
- "transfer ownership V -> C of 0x%llx .. 0x%llx\n",
- (ULong)co_start, (ULong)co_endPlus-1 );
- return=20
- VG_(am_change_ownership_v_to_c)( co_start, co_endPlus - co_start=
);
- }
}
=20
/* Z-decode a symbol into library:func form, eg=20
Modified: branches/ASPACEM/coregrind/m_syswrap/syswrap-x86-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
--- branches/ASPACEM/coregrind/m_syswrap/syswrap-x86-linux.c 2005-09-22 1=
1:34:48 UTC (rev 4720)
+++ branches/ASPACEM/coregrind/m_syswrap/syswrap-x86-linux.c 2005-09-22 1=
2:41:42 UTC (rev 4721)
@@ -40,7 +40,6 @@
#include "pub_core_debuglog.h"
#include "pub_core_libcbase.h"
#include "pub_core_libcassert.h"
-#include "pub_core_libcmman.h"
#include "pub_core_libcprint.h"
#include "pub_core_libcproc.h"
#include "pub_core_libcsignal.h"
Modified: branches/ASPACEM/coregrind/pub_core_redir.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
--- branches/ASPACEM/coregrind/pub_core_redir.h 2005-09-22 11:34:48 UTC (=
rev 4720)
+++ branches/ASPACEM/coregrind/pub_core_redir.h 2005-09-22 12:41:42 UTC (=
rev 4721)
@@ -68,9 +68,8 @@
// before translating a basic block.
extern Addr VG_(code_redirect) ( Addr orig );
=20
-/* Set up some default redirects. Returns False if failed, in which
- case the start-up of Valgrind can be considered to have failed. */
-extern Bool VG_(setup_code_redirect_table) ( void );
+/* Set up some default redirects. */
+extern void VG_(setup_code_redirect_table) ( void );
=20
extern void VG_(resolve_existing_redirs_with_seginfo)(SegInfo *si);
=20
|
|
From: <sv...@va...> - 2005-09-22 11:34:55
|
Author: sewardj
Date: 2005-09-22 12:34:48 +0100 (Thu, 22 Sep 2005)
New Revision: 4720
Log:
Overhaul and simplify command line and environment handling. Currently
half-baked; do not use.
Added:
branches/ASPACEM/include/pub_tool_clientstate.h
Modified:
branches/ASPACEM/cachegrind/cg_main.c
branches/ASPACEM/coregrind/Makefile.am
branches/ASPACEM/coregrind/m_clientstate.c
branches/ASPACEM/coregrind/m_commandline.c
branches/ASPACEM/coregrind/m_debugger.c
branches/ASPACEM/coregrind/m_launcher.c
branches/ASPACEM/coregrind/m_libcproc.c
branches/ASPACEM/coregrind/m_main.c
branches/ASPACEM/coregrind/m_syswrap/syswrap-generic.c
branches/ASPACEM/coregrind/pub_core_clientstate.h
branches/ASPACEM/coregrind/pub_core_commandline.h
branches/ASPACEM/coregrind/pub_core_libcproc.h
branches/ASPACEM/coregrind/pub_core_main.h
branches/ASPACEM/include/Makefile.am
branches/ASPACEM/include/pub_tool_libcproc.h
branches/ASPACEM/massif/ms_main.c
Modified: branches/ASPACEM/cachegrind/cg_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
--- branches/ASPACEM/cachegrind/cg_main.c 2005-09-21 12:01:37 UTC (rev 47=
19)
+++ branches/ASPACEM/cachegrind/cg_main.c 2005-09-22 11:34:48 UTC (rev 47=
20)
@@ -42,6 +42,7 @@
#include "pub_tool_options.h"
#include "pub_tool_profile.h"
#include "pub_tool_tooliface.h"
+#include "pub_tool_clientstate.h"
=20
#include "cg_arch.h"
#include "cg_sim.c"
@@ -894,11 +895,12 @@
// "cmd:" line
VG_(strcpy)(buf, "cmd:");
VG_(write)(fd, (void*)buf, VG_(strlen)(buf));
- for (i =3D 0; i < VG_(client_argc); i++) {
- if (VG_(client_argv)[i] =3D=3D NULL)
+ for (i =3D 0; i < VG_(args_for_client).used; i++) {
+ if (VG_(args_for_client).strs[i] =3D=3D NULL)
continue;
VG_(write)(fd, " ", 1);
- VG_(write)(fd, VG_(client_argv)[i], VG_(strlen)(VG_(client_argv)[=
i]));
+ VG_(write)(fd, VG_(args_for_client).strs[i],=20
+ VG_(strlen)(VG_(args_for_client).strs[i]));
}
// "events:" line
VG_(sprintf)(buf, "\nevents: Ir I1mr I2mr Dr D1mr D2mr Dw D1mw D2mw\n=
");
Modified: branches/ASPACEM/coregrind/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/Makefile.am 2005-09-21 12:01:37 UTC (rev 4=
719)
+++ branches/ASPACEM/coregrind/Makefile.am 2005-09-22 11:34:48 UTC (rev 4=
720)
@@ -87,7 +87,6 @@
=20
valgrind_SOURCES =3D \
m_launcher.c \
- m_commandline.c \
m_debuglog.c
=20
libcoregrind_singles_a_SOURCES =3D \
Modified: branches/ASPACEM/coregrind/m_clientstate.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
--- branches/ASPACEM/coregrind/m_clientstate.c 2005-09-21 12:01:37 UTC (r=
ev 4719)
+++ branches/ASPACEM/coregrind/m_clientstate.c 2005-09-22 11:34:48 UTC (r=
ev 4720)
@@ -39,20 +39,46 @@
/*--- ---*/
/*-----------------------------------------------------------------*/
=20
+/* Client address space, lowest to highest (see top of ume.c) */
// TODO: get rid of as many of these as possible.
=20
-/* Client address space, lowest to highest (see top of ume.c) */
-Addr VG_(client_base); /* client address space limits */
-Addr VG_(client_end);
+Addr VG_(client_base) =3D 0; /* client address space limits */
+Addr VG_(client_end) =3D 0;
=20
-Addr VG_(clstk_base);
-Addr VG_(clstk_end);
-UWord VG_(clstk_id);
+Addr VG_(clstk_base) =3D 0;
+Addr VG_(clstk_end) =3D 0;
+UWord VG_(clstk_id) =3D 0;
=20
-Addr VG_(brk_base) =3D 0; /* start of brk */
-Addr VG_(brk_limit) =3D 0; /* current brk */
+Addr VG_(brk_base) =3D 0; /* start of brk */
+Addr VG_(brk_limit) =3D 0; /* current brk */
=20
=20
+// Command line pieces, after they have been extracted from argv in
+// m_main.main(). The payload vectors are allocated in VG_AR_TOOL
+// (the default arena). They are never freed.
+
+/* Args for the client. */
+XArrayStrings VG_(args_for_client) =3D {0,0,NULL};
+
+/* Args for V (augments, then those from the launcher). */
+XArrayStrings VG_(args_for_valgrind) =3D {0,0,NULL};
+
+/* How many of the above not to pass on at execve time? */
+Int VG_(args_for_valgrind_noexecpass) =3D 0;
+
+/* The name of the client executable, as specified on the command
+ line. */
+HChar* VG_(args_the_exename) =3D NULL;
+
+// Client's original rlimit data and rlimit stack
+struct vki_rlimit VG_(client_rlimit_data);
+struct vki_rlimit VG_(client_rlimit_stack);
+
+// Name of the launcher, as extracted from VALGRIND_LAUNCHER at
+// startup.
+HChar* VG_(name_of_launcher) =3D NULL;
+
+
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
Modified: branches/ASPACEM/coregrind/m_commandline.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
--- branches/ASPACEM/coregrind/m_commandline.c 2005-09-21 12:01:37 UTC (r=
ev 4719)
+++ branches/ASPACEM/coregrind/m_commandline.c 2005-09-22 11:34:48 UTC (r=
ev 4720)
@@ -28,6 +28,7 @@
The GNU General Public License is contained in the file COPYING.
*/
=20
+// TODO: prune these
#include "pub_core_basics.h"
#include "pub_core_commandline.h"
#include "pub_core_libcassert.h"
@@ -37,7 +38,94 @@
#include "pub_core_libcproc.h"
#include "pub_core_mallocfree.h"
#include "pub_core_options.h"
+#include "pub_core_clientstate.h"
=20
+
+/* Add a string to an expandable array of strings. */
+static void add_string ( XArrayStrings* xa, HChar* str )
+{
+ Int i;
+ HChar** strs2;
+ vg_assert(xa->used >=3D 0);
+ vg_assert(xa->size >=3D 0);
+ vg_assert(xa->used <=3D xa->size);
+ if (xa->strs =3D=3D NULL) vg_assert(xa->size =3D=3D 0);
+
+ if (xa->used =3D=3D xa->size) {
+ xa->size =3D xa->size=3D=3D0 ? 2 : 2*xa->size;
+ strs2 =3D VG_(malloc)( xa->size * sizeof(HChar*) );
+ for (i =3D 0; i < xa->used; i++)
+ strs2[i] =3D xa->strs[i];
+ if (xa->strs)=20
+ VG_(free)(xa->strs);
+ xa->strs =3D strs2;
+ }
+ vg_assert(xa->used < xa->size);
+ xa->strs[xa->used++] =3D str;
+}
+
+
+/* Split up the args presented by the launcher to m_main.main(), and
+ park them in VG_(args_for_client), VG_(args_for_valgrind),
+ VG_(args_for_valgrind_extras) and VG_(args_the_exename). The
+ latter are acquired from $VALGRIND_OPTS, ./.valgrindrc and
+ ~/.valgrindrc.=20
+*/
+/* Scheme: args look like this:
+
+ args-for-v exe_name args-for-c
+
+ args-for-v are taken until either they don't start with '-' or
+ a "--" is seen.
+
+ If args-for-v includes --command-line-only=3Dyes, then the extra
+ sources (env vars, files) are not consulted.
+*/
+
+
+void VG_(split_up_argv)( Int argc, HChar** argv )
+{
+ Int i;
+ Bool augment =3D True;
+ static Bool already_called =3D False;
+
+ /* This function should be called once, at startup, and then never
+ again. */
+ vg_assert(!already_called);
+ already_called =3D True;
+
+ /* Collect up the args-for-V. */
+ i =3D 1; /* skip the exe (stage2) name. */
+ for (; i < argc; i++) {
+ vg_assert(argv[i]);
+ if (0 =3D=3D VG_(strcmp)(argv[i], "--")) {
+ i++;
+ break;
+ }
+ if (0 =3D=3D VG_(strcmp)(argv[i], "--command-line-only=3Dyes"))
+ augment =3D False;
+ if (argv[i][0] !=3D '-')
+ break;
+ add_string( &VG_(args_for_valgrind), argv[i] );
+ }
+
+ /* Should now be looking at the exe name. */
+ if (i < argc) {
+ vg_assert(argv[i]);
+ VG_(args_the_exename) =3D argv[i];
+ i++;
+ }
+
+ /* The rest are args for the client. */
+ for (; i < argc; i++) {
+ vg_assert(argv[i]);
+ add_string( &VG_(args_for_client), argv[i] );
+ }
+
+
+}
+
+
// Note that we deliberately don't free the malloc'd memory. See commen=
t
// at call site.
static char* get_file_clo(char* dir)
@@ -107,6 +195,7 @@
// files.
static void augment_command_line(Int* vg_argc_inout, char*** vg_argv_ino=
ut)
{
+#if 0
int vg_argc0 =3D *vg_argc_inout;
char** vg_argv0 =3D *vg_argv_inout;
=20
@@ -173,81 +262,5 @@
=20
*vg_argc_inout =3D vg_argc0;
*vg_argv_inout =3D vg_argv0;
+#endif
}
-
-void VG_(get_command_line)( int argc, char** argv,
- Int* vg_argc_out, Char*** vg_argv_out,=20
- char*** cl_argv_out )
-{
- int vg_argc0;
- char** vg_argv0;
- char** cl_argv;
- char* env_clo =3D VG_(getenv)(VALGRINDCLO);
-
- if (env_clo !=3D NULL && *env_clo !=3D '\0') {
- char *cp;
- char **cpp;
-
- /* OK, VALGRINDCLO is set, which means we must be a child of anoth=
er
- Valgrind process using --trace-children, so we're getting all o=
ur
- arguments from VALGRINDCLO, and the entire command line belongs=
to
- the client (including argv[0]) */
- vg_argc0 =3D 1; /* argv[0] */
- for (cp =3D env_clo; *cp; cp++)
- if (*cp =3D=3D VG_CLO_SEP)
- vg_argc0++;
-
- vg_argv0 =3D VG_(malloc)(sizeof(char **) * (vg_argc0 + 1));
- vg_assert(vg_argv0);
-
- cpp =3D vg_argv0;
-
- *cpp++ =3D "valgrind"; /* nominal argv[0] */
- *cpp++ =3D env_clo;
-
- // Replace the VG_CLO_SEP args separator with '\0'
- for (cp =3D env_clo; *cp; cp++) {
- if (*cp =3D=3D VG_CLO_SEP) {
- *cp++ =3D '\0'; /* chop it up in place */
- *cpp++ =3D cp;
- }
- }
- *cpp =3D NULL;
- cl_argv =3D argv;
-
- } else {
- Bool noaugment =3D False;
-
- /* Count the arguments on the command line. */
- vg_argv0 =3D argv;
-
- for (vg_argc0 =3D 1; vg_argc0 < argc; vg_argc0++) {
- Char* arg =3D argv[vg_argc0];
- if (arg[0] !=3D '-') /* exe name */
- break;
- if (VG_STREQ(arg, "--")) { /* dummy arg */
- vg_argc0++;
- break;
- }
- VG_BOOL_CLO(arg, "--command-line-only", noaugment)
- }
- cl_argv =3D &argv[vg_argc0];
-
- /* Get extra args from VALGRIND_OPTS and .valgrindrc files.
- Note we don't do this if getting args from VALGRINDCLO, as=20
- those extra args will already be present in VALGRINDCLO.
- (We also don't do it when --command-line-only=3Dyes.) */
- if (!noaugment)
- augment_command_line(&vg_argc0, &vg_argv0);
- }
-
- if (0) {
- Int i;
- for (i =3D 0; i < vg_argc0; i++)
- VG_(printf)("vg_argv0[%d]=3D\"%s\"\n", i, vg_argv0[i]);
- }
-
- *vg_argc_out =3D vg_argc0;
- *vg_argv_out =3D (Char**)vg_argv0;
- *cl_argv_out =3D cl_argv;
-}
Modified: branches/ASPACEM/coregrind/m_debugger.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
--- branches/ASPACEM/coregrind/m_debugger.c 2005-09-21 12:01:37 UTC (rev =
4719)
+++ branches/ASPACEM/coregrind/m_debugger.c 2005-09-22 11:34:48 UTC (rev =
4720)
@@ -30,6 +30,7 @@
=20
#include "pub_core_basics.h"
#include "pub_core_threadstate.h"
+#include "pub_core_clientstate.h"
#include "pub_core_debugger.h"
#include "pub_core_libcbase.h"
#include "pub_core_libcprint.h"
Modified: branches/ASPACEM/coregrind/m_launcher.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
--- branches/ASPACEM/coregrind/m_launcher.c 2005-09-21 12:01:37 UTC (rev =
4719)
+++ branches/ASPACEM/coregrind/m_launcher.c 2005-09-22 11:34:48 UTC (rev =
4720)
@@ -28,27 +28,20 @@
The GNU General Public License is contained in the file COPYING.
*/
=20
-#include <ctype.h>
+/* Note: this is a "normal" program and not part of Valgrind proper,
+ and so it doesn't have to conform to Valgrind's arcane rules on
+ no-glibc-usage etc. */
+
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <assert.h>
=20
-#include "pub_core_basics.h"
-#include "pub_core_commandline.h"
#include "pub_core_debuglog.h"
-#include "pub_core_libcassert.h"
-#include "pub_core_libcbase.h"
-#include "pub_core_libcfile.h"
-#include "pub_core_libcprint.h"
-#include "pub_core_libcproc.h" // For VALGRINDLIB
-#include "pub_core_mallocfree.h"
+#include "pub_core_libcproc.h" // For VALGRIND_LIB, VALGRIND_LAUNCHER
=20
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <assert.h>
=20
=20
#define PATH_MAX 4096 /* POSIX refers to this a lot but I dunno
@@ -66,68 +59,57 @@
int main(int argc, char** argv, char** envp)
{
int i, j, loglevel, r;
- Int vg_argc;
- Char **vg_argv;
- char **cl_argv;
const char *toolname =3D NULL;
const char *cp;
char *toolfile;
- char stage1_name[PATH_MAX+1];
+ char launcher_name[PATH_MAX+1];
char* new_line;
char** new_env;
=20
/* Start the debugging-log system ASAP. First find out how many=20
- "-d"s were specified. This is a pre-scan of the command line. */
+ "-d"s were specified. This is a pre-scan of the command line.
+ At the same time, look for the tool name. */
loglevel =3D 0;
for (i =3D 1; i < argc; i++) {
- if (argv[i][0] !=3D '-')
- break;
- if (0 =3D=3D strcmp(argv[i], "--"))=20
- break;
- if (0 =3D=3D strcmp(argv[i], "-d"))=20
- loglevel++;
+ if (argv[i][0] !=3D '-')
+ break;
+ if (0 =3D=3D strcmp(argv[i], "--"))=20
+ break;
+ if (0 =3D=3D strcmp(argv[i], "-d"))=20
+ loglevel++;
+ if (0 =3D=3D strncmp(argv[i], "--tool=3D", 7))=20
+ toolname =3D argv[i] + 7;
}
=20
/* ... and start the debug logger. Now we can safely emit logging
messages all through startup. */
VG_(debugLog_startup)(loglevel, "Stage 1");
=20
- /* Get the full command line */
- VG_(get_command_line)(argc, argv, &vg_argc, &vg_argv, &cl_argv);
-
- /* Look for a --tool switch */
- for (i =3D 1; i < vg_argc; i++) {
- if (0 =3D=3D strncmp(vg_argv[i], "--tool=3D", 7))=20
- toolname =3D vg_argv[i] + 7;
- }
-
/* Make sure we know which tool we're using */
if (toolname) {
- VG_(debugLog)(1, "stage1", "tool %s requested\n", toolname);
+ VG_(debugLog)(1, "launcher", "tool '%s' requested\n", toolname);
} else {
- VG_(debugLog)(1, "stage1", "no tool requested, defaulting to memch=
eck\n");
+ VG_(debugLog)(1, "launcher",=20
+ "no tool requested, defaulting to 'memcheck'\n");
toolname =3D "memcheck";
}
=20
- /* Figure out the name of this executable, so we can tell
- stage2. */
- memset(stage1_name, 0, PATH_MAX+1);
- r =3D readlink("/proc/self/exe", stage1_name, PATH_MAX);
+ /* Figure out the name of this executable (viz, the launcher), so
+ we can tell stage2. stage2 will use the name for recursive
+ invokations of valgrind on child processes. */
+ memset(launcher_name, 0, PATH_MAX+1);
+ r =3D readlink("/proc/self/exe", launcher_name, PATH_MAX);
if (r =3D=3D -1)
barf("readlink(\"/proc/self/exe\") failed.");
=20
- r =3D setenv(VALGRINDSTAGE1, stage1_name, 1/*overwrite*/);
- if (r !=3D 0)
- barf("setenv(VALGRINDSTAGE1) failed.");
-
- /* tediously augment the env: VALGRINDSTAGE1=3Dstage1_name */
- new_line =3D malloc(strlen(VALGRINDSTAGE1) + 1=20
- + strlen(stage1_name) + 1);
+ /* tediously augment the env: VALGRIND_LAUNCHER=3Dlauncher_name */
+ new_line =3D malloc(strlen(VALGRIND_LAUNCHER) + 1=20
+ + strlen(launcher_name) + 1);
if (new_line =3D=3D NULL)
barf("malloc of new_line failed.");
- strcpy(new_line, VALGRINDSTAGE1);
+ strcpy(new_line, VALGRIND_LAUNCHER);
strcat(new_line, "=3D");
- strcat(new_line, stage1_name);
+ strcat(new_line, launcher_name);
=20
for (j =3D 0; envp[j]; j++)
;
@@ -140,18 +122,19 @@
new_env[i++] =3D NULL;
assert(i =3D=3D j+2);
=20
+ /* Establish the correct VALGRIND_LIB. */
+ cp =3D getenv(VALGRIND_LIB);
=20
- cp =3D getenv(VALGRINDLIB);
-
if (cp !=3D NULL)
valgrind_lib =3D cp;
=20
+ /* Build the stage2 invokation, and execve it. Bye! */
toolfile =3D malloc(strlen(valgrind_lib) + strlen(toolname) + 2);
if (toolfile =3D=3D NULL)
barf("malloc of toolfile failed.");
sprintf(toolfile, "%s/%s", valgrind_lib, toolname);
=20
- VG_(debugLog)(1, "stage1", "launching %s\n", toolfile);
+ VG_(debugLog)(1, "launcher", "launching %s\n", toolfile);
=20
execve(toolfile, argv, new_env);
=20
@@ -160,103 +143,3 @@
=20
exit(1);
}
-
-void* VG_(malloc) ( SizeT nbytes )
-{
- return malloc(nbytes);
-}
-
-Bool VG_(isspace) ( Char c )
-{
- return isspace(c);
-}
-
-Int VG_(strcmp) ( const Char* s1, const Char* s2 )
-{
- return strcmp(s1, s2);
-}
-
-Char *VG_(getenv)(Char *varname)
-{
- return getenv(varname);
-}
-
-SysRes VG_(open) ( const Char* pathname, Int flags, Int mode )
-{
- SysRes res;
- Int fd;
- if ((fd =3D open(pathname, flags, mode)) < 0) {
- res.isError =3D True;
- res.val =3D errno;
- } else {
- res.isError =3D False;
- res.val =3D fd;
- }
- return res;
-}
-
-void VG_(close) ( Int fd )
-{
- close(fd);
- return;
-}
-
-Int VG_(read) ( Int fd, void* buf, Int count)
-{
- return read(fd, buf, count);
-}
-
-Int VG_(fsize) ( Int fd )
-{
- struct stat buf;
- return fstat(fd, &buf) =3D=3D 0 ? buf.st_size : (-1);
-}
-
-UInt VG_(snprintf) ( Char* buf, Int size, const HChar *format, ... )
-{
- va_list vargs;
- UInt n;
-
- va_start(vargs, format);
- n =3D vsnprintf(buf, size, format, vargs);
- va_end(vargs);
-
- return n;
-}
-
-void VG_(assert_fail) ( Bool isCore, const Char* expr, const Char* file,=
=20
- Int line, const Char* fn, const HChar* format, .=
.. )
-{
- va_list vargs;
- Char buf[256];
-
- va_start(vargs, format);
- vsprintf(buf, format, vargs);
- va_end(vargs);
-
- fprintf(stderr, "\nvalgrind: %s:%d (%s): Assertion '%s' failed.\n",
- file, line, fn, expr );
- if (!strcmp(buf, ""))
- fprintf(stderr, "valgrind: %s\n", buf);
-
- exit(1);
-}
-
-static Bool isterm ( Char c )
-{
- return ( VG_(isspace)(c) || 0 =3D=3D c );
-}
-
-Int VG_(strcmp_ws) ( const Char* s1, const Char* s2 )
-{
- while (True) {
- if (isterm(*s1) && isterm(*s2)) return 0;
- if (isterm(*s1)) return -1;
- if (isterm(*s2)) return 1;
-
- if (*(UChar*)s1 < *(UChar*)s2) return -1;
- if (*(UChar*)s1 > *(UChar*)s2) return 1;
-
- s1++; s2++;
- }
-}
Modified: branches/ASPACEM/coregrind/m_libcproc.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
--- branches/ASPACEM/coregrind/m_libcproc.c 2005-09-21 12:01:37 UTC (rev =
4719)
+++ branches/ASPACEM/coregrind/m_libcproc.c 2005-09-22 11:34:48 UTC (rev =
4720)
@@ -35,6 +35,7 @@
#include "pub_core_libcproc.h"
#include "pub_core_mallocfree.h"
#include "pub_core_syscall.h"
+#include "pub_core_clientstate.h"
#include "vki_unistd.h"
=20
/* ---------------------------------------------------------------------
@@ -213,12 +214,9 @@
VG_(sprintf)(buf, "%s*", VG_(libdir));
mash_colon_env(ld_library_path_str, buf);
=20
- // Remove VALGRIND_CLO variable.
- VG_(env_unsetenv)(envp, VALGRINDCLO);
+ // Remove VALGRIND_LAUNCHER variable.
+ VG_(env_unsetenv)(envp, VALGRIND_LAUNCHER);
=20
- // Remove VALGRIND_STAGE1 variable.
- VG_(env_unsetenv)(envp, VALGRINDSTAGE1);
-
// XXX if variable becomes empty, remove it completely?
=20
VG_(arena_free)(VG_AR_CORE, buf);
@@ -311,9 +309,6 @@
Resource limits
------------------------------------------------------------------ */
=20
-struct vki_rlimit VG_(client_rlimit_data);
-struct vki_rlimit VG_(client_rlimit_stack);
-
/* Support for getrlimit. */
Int VG_(getrlimit) (Int resource, struct vki_rlimit *rlim)
{
Modified: branches/ASPACEM/coregrind/m_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
--- branches/ASPACEM/coregrind/m_main.c 2005-09-21 12:01:37 UTC (rev 4719=
)
+++ branches/ASPACEM/coregrind/m_main.c 2005-09-22 11:34:48 UTC (rev 4720=
)
@@ -108,8 +108,8 @@
static HChar* name_of_stage1 =3D NULL;
=20
/* our argc/argv */
-static Int vg_argc;
-static Char **vg_argv;
+//static Int vg_argc;
+//static Char **vg_argv;
=20
/* This should get some address inside the stack on which we gained
control (eg, it could be the SP at startup). It doesn't matter
@@ -228,24 +228,23 @@
=20
/* Prepare the client's environment. This is basically a copy of our
environment, except:
- LD_PRELOAD=3D$VALGRINDLIB/vg_preload_core.so:($VALGRINDLIB/vgpreloa=
d_TOOL.so:)?$LD_PRELOAD
=20
+ LD_PRELOAD=3D$VALGRIND_LIB/vg_preload_core.so:
+ ($VALGRIND_LIB/vgpreload_TOOL.so:)?
+ $LD_PRELOAD
+
If this is missing, then it is added.
=20
- Yummy. String hacking in C.
-
If this needs to handle any more variables it should be hacked
- into something table driven.
- */
-static HChar **fix_environment(HChar **origenv, const HChar *toolname)
+ into something table driven. The copy is VG_(malloc)'d space.
+*/
+static HChar** setup_client_env ( HChar** origenv, const HChar* toolname=
)
{
static const HChar preload_core_so[] =3D "vg_preload_core.so";
static const HChar ld_preload[] =3D "LD_PRELOAD=3D";
- static const HChar valgrind_clo[] =3D VALGRINDCLO "=3D";
- static const Int ld_preload_len =3D sizeof(ld_preload)-1;
- static const Int valgrind_clo_len =3D sizeof(valgrind_clo)-1;
- Bool ld_preload_done =3D False;
- Int vgliblen =3D VG_(strlen)(VG_(libdir));
+ static const Int ld_preload_len =3D sizeof(ld_preload)-1;
+ Bool ld_preload_done =3D False;
+ Int vgliblen =3D VG_(strlen)(VG_(libdir));
HChar** cpp;
HChar** ret;
HChar* preload_tool_path;;
@@ -260,7 +259,7 @@
Int preload_string_len =3D preload_core_path_len + preload_tool_pa=
th_len;
HChar* preload_string =3D VG_(malloc)(preload_string_len);
vg_assert(preload_string);
- =20
+
/* Determine if there's a vgpreload_<tool>.so file, and setup
preload_string. */
preload_tool_path =3D VG_(malloc)(preload_tool_path_len);
@@ -279,7 +278,7 @@
VG_(debugLog)(1, "main", "preload_string =3D %s\n", preload_string);
=20
/* Count the original size of the env */
- envc =3D 0; /* trailing NULL */
+ envc =3D 0;
for (cpp =3D origenv; cpp && *cpp; cpp++)
envc++;
=20
@@ -307,8 +306,6 @@
*cpp =3D cp;
=20
ld_preload_done =3D True;
- } else if (VG_(memcmp)(*cpp, valgrind_clo, valgrind_clo_len) =3D=3D=
0) {
- *cpp =3D "";
}
}
=20
@@ -329,7 +326,6 @@
return ret;
}
=20
-extern char **environ; /* our environment */
=20
/* Add a string onto the string table, and return its address */
static char *copy_str(char **tab, const char *str)
@@ -386,7 +382,6 @@
new stack. The returned value is the SP value for the client. */
static=20
Addr setup_client_stack( void* init_sp,
- char** orig_argv,=20
char** orig_envp,=20
const struct exeinfo *info,
UInt** client_auxv,
@@ -403,11 +398,12 @@
const struct ume_auxv *cauxv;
unsigned stringsize; /* total size of strings in bytes */
unsigned auxsize; /* total size of auxv in bytes */
- int argc; /* total argc */
- int envc; /* total number of env vars */
+ Int argc; /* total argc */
+ Int envc; /* total number of env vars */
unsigned stacksize; /* total client stack size */
Addr client_SP; /* client stack base (initial SP) */
Addr clstack_start;
+ Int i;
=20
vg_assert(VG_IS_PAGE_ALIGNED(clstack_end+1));
=20
@@ -432,9 +428,9 @@
}
=20
/* now scan the args we're given... */
- for (cpp =3D orig_argv; *cpp; cpp++) {
+ for (i =3D 0; i < VG_(args_for_client).used; i++) {
argc++;
- stringsize +=3D VG_(strlen)(*cpp) + 1;
+ stringsize +=3D VG_(strlen)( VG_(args_for_client).strs[i] ) + 1;
}
=20
/* ...and the environment */
@@ -540,7 +536,7 @@
*ptr++ =3D (Addr)copy_str(&strtab, info->interp_args);
VG_(free)(info->interp_args);
}
- for (cpp =3D orig_argv; *cpp; ptr++, cpp++) {
+ for (i =3D 0; i < VG_(args_for_client).used; ptr++, i++) {
*ptr =3D (Addr)copy_str(&strtab, *cpp);
}
*ptr++ =3D 0;
@@ -654,7 +650,7 @@
vg_assert((strtab-stringbase) =3D=3D stringsize);
=20
/* We know the initial SP is pointing at argc/argv */
- VG_(client_argc) =3D *(Int*)client_SP;
+ // VG_(client_argc) =3D *(Int*)client_SP;
VG_(client_argv) =3D (Char**)(client_SP + sizeof(HWord));
=20
if (0) VG_(printf)("startup SP =3D %p\n", client_SP);
@@ -748,7 +744,7 @@
return False;
}
=20
-static const char* find_executable(const char* exec)
+static HChar* find_executable ( HChar* exec )
{
vg_assert(NULL !=3D exec);
VG_(strncpy)( executable_name, exec, VKI_PATH_MAX-1 );
@@ -756,7 +752,7 @@
=20
if (VG_(strchr)(executable_name, '/') =3D=3D NULL) {
/* no '/' - we need to search the path */
- char *path =3D VG_(getenv)("PATH");
+ HChar *path =3D VG_(getenv)("PATH");
scan_colsep(path, match_executable);
}
return executable_name;
@@ -802,37 +798,26 @@
/*=3D=3D=3D Loading the client =
=3D=3D=3D*/
/*=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D*/
=20
-static void load_client(char* cl_argv[], const char* exec, Int need_help=
,
- /*out*/struct exeinfo* info, /*out*/Addr* client_eip)
+/* Load the client whose name is VG_(argv_the_exename). */
+
+static void load_client ( /*OUT*/struct exeinfo* info,=20
+ /*OUT*/Addr* client_eip)
{
- // If they didn't specify an executable with --exec, and didn't speci=
fy=20
- // --help, then use client argv[0] (searching $PATH if necessary).
- if (NULL =3D=3D exec && !need_help) {
- if (cl_argv[0] =3D=3D NULL ||=20
- ( NULL =3D=3D (exec =3D find_executable(cl_argv[0])) ) )
- {
- missing_prog();
- }
- }
+ HChar* exec;
+ Int ret;
=20
+ vg_assert( VG_(args_the_exename) !=3D NULL);
+ exec =3D find_executable( VG_(args_the_exename) );
+
VG_(memset)(info, 0, sizeof(*info));
info->exe_base =3D VG_(client_base);
info->exe_end =3D VG_(client_end);
- info->argv =3D cl_argv;
=20
- if (need_help) {
- VG_(clexecfd) =3D -1;
- } else {
- Int ret;
- /* HACK: assumes VG_(open) always succeeds */
- VG_(clexecfd) =3D VG_(open)(exec, VKI_O_RDONLY, VKI_S_IRUSR)
- .val;
- ret =3D VG_(do_exec)(exec, info);
- if (ret !=3D 0) {
- VG_(printf)("valgrind: do_exec(%s) failed: %s\n",
- exec, VG_(strerror)(ret));
- VG_(exit)(127);
- }
+ ret =3D VG_(do_exec)(exec, info);
+ if (ret !=3D 0) {
+ VG_(printf)("valgrind: do_exec(%s) failed: %s\n",
+ exec, VG_(strerror)(ret));
+ VG_(exit)(127);
}
=20
/* Copy necessary bits of 'info' that were filled in */
@@ -973,33 +958,36 @@
VG_(exit)(0);
}
=20
-static void pre_process_cmd_line_options
- ( Int* need_help, HChar** tool, HChar** exec )
-{
- UInt i;
=20
- LibVEX_default_VexControl(& VG_(clo_vex_control));
+/* Peer at previously set up VG_(args_for_valgrind) and extract any
+ request for help and also the tool name. */
=20
+static void get_helprequest_and_toolname ( Int* need_help, HChar** tool =
)
+{
+ UInt i;
+ HChar* str;
+
/* parse the options we have (only the options we care about now) */
- for (i =3D 1; i < vg_argc; i++) {
+ for (i =3D 0; i < VG_(args_for_valgrind).used; i++) {
=20
- if (VG_STREQ(vg_argv[i], "--version")) {
+ str =3D VG_(args_for_valgrind).strs[i];
+ vg_assert(str);
+
+ if (VG_STREQ(str, "--version")) {
VG_(printf)("valgrind-" VERSION "\n");
VG_(exit)(0);
=20
- } else if (VG_CLO_STREQ(vg_argv[i], "--help") ||
- VG_CLO_STREQ(vg_argv[i], "-h")) {
+ } else if (VG_CLO_STREQ(str, "--help") ||
+ VG_CLO_STREQ(str, "-h")) {
*need_help =3D 1;
=20
- } else if (VG_CLO_STREQ(vg_argv[i], "--help-debug")) {
+ } else if (VG_CLO_STREQ(str, "--help-debug")) {
*need_help =3D 2;
=20
// The tool has already been determined, but we need to know it he=
re.
- } else if (VG_CLO_STREQN(7, vg_argv[i], "--tool=3D")) {
- *tool =3D &vg_argv[i][7];
+ } else if (VG_CLO_STREQN(7, str, "--tool=3D")) {
+ *tool =3D &str[7];
=20
- } else if (VG_CLO_STREQN(7, vg_argv[i], "--exec=3D")) {
- *exec =3D &vg_argv[i][7];
}
}
}
@@ -1024,10 +1012,10 @@
config_error("Please use absolute paths in "
"./configure --prefix=3D... or --libdir=3D...");
=20
- for (i =3D 1; i < vg_argc; i++) {
+ for (i =3D 0; i < VG_(args_for_valgrind).used; i++) {
=20
- Char* arg =3D vg_argv[i];
- Char* colon =3D arg;
+ HChar* arg =3D VG_(args_for_valgrind).strs[i];
+ HChar* colon =3D arg;
=20
/* Look for a colon in the switch name */
while (*colon && *colon !=3D ':' && *colon !=3D '=3D')
@@ -1224,7 +1212,7 @@
VG_(bad_option)(arg);
}
skip_arg:
- if (arg !=3D vg_argv[i]) {
+ if (arg !=3D VG_(args_for_valgrind).strs[i]) {
VG_(free)(arg);
}
}
@@ -1504,8 +1492,8 @@
VG_(message)(Vg_UserMsg,=20
"My PID =3D %d, parent PID =3D %d. Prog and args are:",
VG_(getpid)(), VG_(getppid)() );
- for (i =3D 0; i < VG_(client_argc); i++)=20
- VG_(message)(Vg_UserMsg, " %s", VG_(client_argv)[i]);
+ for (i =3D 0; i < VG_(args_for_client).used; i++)=20
+ VG_(message)(Vg_UserMsg, " %s", VG_(args_for_client).strs[i])=
;
if (VG_(clo_log_file_qualifier)) {
HChar* val =3D VG_(getenv)(VG_(clo_log_file_qualifier));
VG_(message)(Vg_UserMsg, "");
@@ -1537,17 +1525,18 @@
VG_(message)(Vg_UserMsg, "");
VG_(message)(Vg_UserMsg, "<args>");
VG_(message)(Vg_UserMsg, " <vargv>");
- for (i =3D 0; i < vg_argc; i++) {
+ for (i =3D 0; i < VG_(args_for_valgrind).used; i++) {
HChar* tag =3D i=3D=3D0 ? "exe" : "arg";
- VG_(message)(Vg_UserMsg, " <%s>%t</%s>",=20
- tag, vg_argv[i], tag);
+ VG_(message)(Vg_UserMsg,=20
+ " <%s>%t</%s>",=20
+ tag, VG_(args_for_valgrind).strs[i], tag);
}
VG_(message)(Vg_UserMsg, " </vargv>");
VG_(message)(Vg_UserMsg, " <argv>");
- for (i =3D 0; i < VG_(client_argc); i++) {
+ for (i =3D 0; i < VG_(args_for_client).used; i++) {
HChar* tag =3D i=3D=3D0 ? "exe" : "arg";
VG_(message)(Vg_UserMsg, " <%s>%t</%s>",=20
- tag, VG_(client_argv)[i], tag);
+ tag, VG_(args_for_client).strs[i], tag=
);
}
VG_(message)(Vg_UserMsg, " </argv>");
VG_(message)(Vg_UserMsg, "</args>");
@@ -1559,12 +1548,12 @@
VG_(message)(Vg_DebugMsg, "");
VG_(message)(Vg_DebugMsg, "Valgrind library directory: %s", VG_(li=
bdir));
VG_(message)(Vg_DebugMsg, "Command line");
- for (i =3D 0; i < VG_(client_argc); i++)
- VG_(message)(Vg_DebugMsg, " %s", VG_(client_argv)[i]);
+ for (i =3D 0; i < VG_(args_for_client).used; i++)
+ VG_(message)(Vg_DebugMsg, " %s", VG_(args_for_client).strs[i]=
);
=20
VG_(message)(Vg_DebugMsg, "Startup, with flags:");
- for (i =3D 1; i < vg_argc; i++) {
- VG_(message)(Vg_DebugMsg, " %s", vg_argv[i]);
+ for (i =3D 0; i < VG_(args_for_valgrind).used; i++) {
+ VG_(message)(Vg_DebugMsg, " %s", VG_(args_for_valgrind).strs[=
i]);
}
=20
VG_(message)(Vg_DebugMsg, "Contents of /proc/version:");
@@ -1600,66 +1589,6 @@
}
}
=20
-// Build the string for VALGRINDCLO.
-Char* VG_(build_child_VALGRINDCLO)( Char* exename )
-{
- /* If we're tracing the children, then we need to start it
- with our starter+arguments, which are copied into VALGRINDCLO,
- except the --exec=3D option is changed if present.
- */
- Int i;
- Char *exec;
- Char *cp;
- Char *optvar;
- Int optlen, execlen;
-
- // All these allocated blocks are not free - because we're either
- // going to exec, or panic when we fail.
-
- // Create --exec=3D option: "--exec=3D<exename>"
- exec =3D VG_(arena_malloc)(VG_AR_CORE,=20
- VG_(strlen)( exename ) + 7/*--exec=3D*/ + 1/=
*\0*/);
- vg_assert(NULL !=3D exec);
- VG_(sprintf)(exec, "--exec=3D%s", exename);
-
- // Allocate space for optvar (may overestimate by counting --exec twi=
ce,
- // no matter)
- optlen =3D 1;
- for (i =3D 0; i < vg_argc; i++)
- optlen +=3D VG_(strlen)(vg_argv[i]) + 1;
- optlen +=3D VG_(strlen)(exec)+1;
- optvar =3D VG_(arena_malloc)(VG_AR_CORE, optlen);
-
- // Copy all valgrind args except the old --exec (if present)
- // VG_CLO_SEP is the separator.
- cp =3D optvar;
- for (i =3D 1; i < vg_argc; i++) {
- Char *arg =3D vg_argv[i];
- =20
- if (VG_CLO_STREQN(7, arg, "--exec=3D")) {
- // don't copy existing --exec=3D arg
- } else if (VG_CLO_STREQ(arg, "--")) {
- // stop at "--"
- break;
- } else {
- // copy non "--exec" arg
- Int len =3D VG_(strlen)(arg);
- VG_(memcpy)(cp, arg, len);
- cp +=3D len;
- *cp++ =3D VG_CLO_SEP;
- }
- }
- // Add the new --exec=3D option
- execlen =3D VG_(strlen)(exec);
- VG_(memcpy)(cp, exec, execlen);
- cp +=3D execlen;
- *cp++ =3D VG_CLO_SEP;
-
- *cp =3D '\0';
-
- return optvar;
-}
-
// Build "/proc/self/fd/<execfd>".
Char* VG_(build_child_exename)( void )
{
@@ -1894,19 +1823,17 @@
=20
Int main(Int argc, HChar **argv, HChar **envp)
{
- HChar** cl_argv;
- HChar* tool =3D "memcheck"; // default to Memcheck
- HChar* exec =3D NULL;
- HChar** env;
- Int need_help =3D 0; // 0 =3D no, 1 =3D --help, 2 =3D --help=
-debug
- struct exeinfo info;
- Addr initial_client_IP;
- Addr initial_client_SP;
- Addr clstack_top;
- SizeT clstack_max_size;
- UInt* client_auxv;
- Int loglevel, i;
+ HChar* tool =3D "memcheck"; // default to Memcheck
+ HChar** env =3D NULL;
+ Int need_help =3D 0; // 0 =3D no, 1 =3D --help, 2 =3D --h=
elp-debug
+ Addr initial_client_IP =3D 0;
+ Addr initial_client_SP =3D 0;
+ Addr clstack_top =3D 0;
+ SizeT clstack_max_size =3D 0;
+ UInt* client_auxv;
+ Int loglevel, i;
struct vki_rlimit zero =3D { 0, 0 };
+ struct exeinfo info;
=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
//
@@ -2005,10 +1932,17 @@
//=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=20
//--------------------------------------------------------------
- // Extract the stage1 name from the environment.
+ // Look for alternative libdir =20
+ { HChar *cp =3D VG_(getenv)(VALGRIND_LIB);
+ if (cp !=3D NULL)
+ VG_(libdir) =3D cp;
+ }
+
+ //--------------------------------------------------------------
+ // Extract the launcher name from the environment.
VG_(debugLog)(1, "main", "Getting stage1's name\n");
- name_of_stage1 =3D VG_(getenv)(VALGRINDSTAGE1);
- if (name_of_stage1 =3D=3D NULL) {
+ VG_(name_of_launcher) =3D VG_(getenv)(VALGRIND_LAUNCHER);
+ if (VG_(name_of_launcher) =3D=3D NULL) {
VG_(printf)("valgrind: You cannot run '%s' directly.\n", argv[0]);
VG_(printf)("valgrind: You should use $prefix/bin/valgrind.\n");
VG_(exit)(1);
@@ -2039,15 +1973,6 @@
scan_auxv(init_sp);
}
=20
- //--------------------------------------------------------------
- // Look for alternative libdir =20
- // p: none
- //--------------------------------------------------------------
- { HChar *cp =3D VG_(getenv)(VALGRINDLIB);
- if (cp !=3D NULL)
- VG_(libdir) =3D cp;
- }
-
//=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
// Command line argument handling order:
// * If --help/--help-debug are present, show usage message=20
@@ -2058,86 +1983,95 @@
//=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
=20
//--------------------------------------------------------------
- // Get valgrind args + client args (inc. from VALGRIND_OPTS/.valgrind=
rc).
- // Pre-process the command line.
- // p: none
+ // Split up argv into: C args, V args, V extra args, and exename.
+ // p: dynamic memory allocation
//--------------------------------------------------------------
+ VG_(debugLog)(1, "main", "Split up command line");
+ VG_(split_up_argv)( argc, argv );
+ if (0) {
+ for (i =3D 0; i < VG_(args_for_valgrind).used; i++)
+ VG_(printf)("varg %s\n", VG_(args_for_valgrind).strs[i]);
+ VG_(printf)(" exe %s\n", VG_(args_the_exename));
+ for (i =3D 0; i < VG_(args_for_client).used; i++)
+ VG_(printf)("carg %s\n", VG_(args_for_client).strs[i]);
+ }
+
+ //--------------------------------------------------------------
+ // Extract tool name and whether help has been requested.
+ // Note we can't print the help message yet, even if requested,
+ // because the tool has not been initialised.
+ // p: split_up_argv [for VG_(args_for_valgrind)]
+ //--------------------------------------------------------------
VG_(debugLog)(1, "main", "Preprocess command line opts\n");
- VG_(get_command_line)(argc, argv, &vg_argc, &vg_argv, &cl_argv);
- pre_process_cmd_line_options(&need_help, &tool, &exec);
+ get_helprequest_and_toolname(&need_help, &tool);
=20
- // TODO: this should be done in pre_process_cmd_line_options().
- /* If this process was created by exec done by another Valgrind
- process, the arguments will only show up at this point. Hence
- we need to also snoop around in vg_argv to see if anyone is
- asking for debug logging. */
- if (loglevel =3D=3D 0) {
- for (i =3D 1; i < vg_argc; i++) {
- if (vg_argv[i][0] !=3D '-')
- break;
- if (VG_STREQ(vg_argv[i], "--"))=20
- break;
- if (VG_STREQ(vg_argv[i], "-d"))=20
- loglevel++;
- }
- VG_(debugLog_startup)(loglevel, "Stage 2 (second go)");
- }
+ // Set default vex control params
+ LibVEX_default_VexControl(& VG_(clo_vex_control));
=20
//--------------------------------------------------------------
// Load client executable, finding in $PATH if necessary
// 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, &initial_client_IP);
+ if (!need_help) {
+ VG_(debugLog)(1, "main", "Loading client\n");
=20
+ if (VG_(args_the_exename) =3D=3D NULL)
+ missing_prog();
+
+ load_client(&info, &initial_client_IP);
+ }
+
//--------------------------------------------------------------
// Set up client's environment
// p: set-libdir [for VG_(libdir)]
// p: pre_process_cmd_line_options [for tool]
//--------------------------------------------------------------
- VG_(debugLog)(1, "main", "Setup client env\n");
- env =3D fix_environment(envp, tool);
+ if (!need_help) {
+ VG_(debugLog)(1, "main", "Setup client env\n");
+ env =3D setup_client_env(envp, tool);
+ }
=20
//--------------------------------------------------------------
// Setup client stack, eip, and VG_(client_arg[cv])
// 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;
- SizeT m1 =3D 1024 * 1024;
- SizeT m8 =3D 8 * m1;
- clstack_max_size =3D (SizeT)VG_(client_rlimit_stack).rlim_cur;
- if (clstack_max_size < m1) clstack_max_size =3D m1;
- if (clstack_max_size > m8) clstack_max_size =3D m8;
- clstack_max_size =3D VG_PGROUNDUP(clstack_max_size);
+ if (!need_help) {
+ void* init_sp =3D argv - 1;
+ SizeT m1 =3D 1024 * 1024;
+ SizeT m8 =3D 8 * m1;
+ VG_(debugLog)(1, "main", "Setup client stack\n");
+ clstack_max_size =3D (SizeT)VG_(client_rlimit_stack).rlim_cur;
+ if (clstack_max_size < m1) clstack_max_size =3D m1;
+ if (clstack_max_size > m8) clstack_max_size =3D m8;
+ clstack_max_size =3D VG_PGROUNDUP(clstack_max_size);
=20
- initial_client_SP
- =3D setup_client_stack( init_sp, cl_argv, env, &info,
- &client_auxv, clstack_top, clstack_max_si=
ze);
+ initial_client_SP
+ =3D setup_client_stack( init_sp, env,=20
+ &info, &client_auxv,=20
+ clstack_top, clstack_max_size );
=20
- VG_(free)(env);
+ VG_(free)(env);
+
+ VG_(debugLog)(2, "main",
+ "Client info: "
+ "entry=3D%p client_SP=3D%p brkbase=3D%p\n",
+ (void*)initial_client_IP,=20
+ (void*)initial_client_SP,
+ (void*)VG_(brk_base) );
}
=20
- VG_(debugLog)(2, "main",
- "Client info: "
- "entry=3D%p client_SP=3D%p vg_argc=3D%d brkbase=3D%p=
\n",
- (void*)initial_client_IP,=20
- (void*)initial_client_SP, vg_argc,=20
- (void*)VG_(brk_base) );
-
//--------------------------------------------------------------
// Setup client data (brk) segment. Initially a 1-page segment
// which abuts a shrinkable reservation.=20
// p: load_client() [for 'info' and hence VG_(brk_base)]
//--------------------------------------------------------------
- VG_(debugLog)(1, "main", "Setup client data (brk) segment\n");
- {=20
+ if (!need_help) {=20
SizeT m1 =3D 1024 * 1024;
SizeT m8 =3D 8 * m1;
SizeT dseg_max_size =3D (SizeT)VG_(client_rlimit_data).rlim_cur;
+ VG_(debugLog)(1, "main", "Setup client data (brk) segment\n");
if (dseg_max_size < m1) dseg_max_size =3D m1;
if (dseg_max_size > m8) dseg_max_size =3D m8;
dseg_max_size =3D VG_PGROUNDUP(dseg_max_size);
@@ -2175,25 +2109,31 @@
// p: aspacem [??]
// p: pre_clo_init [for 'VG_(details).avg_translation_sizeB']
//--------------------------------------------------------------
- VG_(debugLog)(1, "main", "Initialise TT/TC\n");
- VG_(init_tt_tc)();
+ if (!need_help) {
+ VG_(debugLog)(1, "main", "Initialise TT/TC\n");
+ VG_(init_tt_tc)();
+ }
=20
//--------------------------------------------------------------
// Initialise the redirect table.
// p: init_tt_tc [so it can call VG_(search_transtab) safely]
// p: aspacem [so can change ownership of sysinfo pages]
//--------------------------------------------------------------
- VG_(debugLog)(1, "main", "Initialise redirects\n");
- { Bool setup_redirects_succeeded =3D VG_(setup_code_redirect_table)()=
;
- vg_assert(setup_redirects_succeeded);
+ if (!need_help) {=20
+ Bool setup_redirects_succeeded;
+ VG_(debugLog)(1, "main", "Initialise redirects\n");
+ setup_redirects_succeeded =3D VG_(setup_code_redirect_table)();
+ vg_assert(setup_redirects_succeeded);
}
=20
//--------------------------------------------------------------
// setup file descriptors
// p: n/a
//--------------------------------------------------------------
- VG_(debugLog)(1, "main", "Setup file descriptors\n");
- setup_file_descriptors();
+ if (!need_help) {
+ VG_(debugLog)(1, "main", "Setup file descriptors\n");
+ setup_file_descriptors();
+ }
=20
//--------------------------------------------------------------
// Init tool part 2: pre_clo_init
@@ -2292,9 +2232,16 @@
for (i =3D 0; i < n_seg_starts; i++) {
seg =3D VG_(am_find_nsegment)( seg_starts[i] );
vg_assert(seg);
- if (seg->kind =3D=3D SkFileC || seg->kind =3D=3D SkAnonC)
+ if (seg->kind =3D=3D SkFileC || seg->kind =3D=3D SkAnonC) {
+ VG_(debugLog)(2, "main",=20
+ "tell tool about %010lx-%010lx %c%c%c\n",
+ seg->start, seg->end,
+ seg->hasR ? 'r' : '-',
+ seg->hasW ? 'w' : '-',
+ seg->hasX ? 'x' : '-' );
VG_TRACK( new_mem_startup, seg->start, seg->end+1-seg->start,=
=20
seg->hasR, seg->hasW, seg->hasX );
+ }
}
=20
VG_(free)( seg_starts );
@@ -2307,6 +2254,16 @@
vg_assert(initial_client_SP <=3D seg->end);
/* Stuff below the initial SP is unaddressable. */
VG_TRACK( die_mem_stack, seg->start, initial_client_SP - seg->start=
);
+ VG_(debugLog)(2, "main", "mark stack inaccessible %010lx-%010lx\n",
+ seg->start, initial_client_SP-1 );
+
+ /* Also the assembly helpers. */
+ VG_TRACK( new_mem_startup,
+ (Addr)&VG_(trampoline_stuff_start),
+ &VG_(trampoline_stuff_end) - &VG_(trampoline_stuff_start)=
,
+ False, /* readable? */
+ False, /* writable? */
+ True /* executable? */ );
}
=20
//--------------------------------------------------------------
@@ -2376,19 +2333,6 @@
}
=20
//--------------------------------------------------------------
- // Tell the tool about permissions in our handwritten assembly
- // helpers.
- // p: init tool [for 'new_mem_startup']
- //--------------------------------------------------------------
- VG_(debugLog)(1, "main", "Tell tool about permissions for asm helpers=
\n");
- VG_TRACK( new_mem_startup,
- (Addr)&VG_(trampoline_stuff_start),
- &VG_(trampoline_stuff_end) - &VG_(trampoline_stuff_start),
- False, /* readable? */
- False, /* writable? */
- True /* executable? */ );
-
- //--------------------------------------------------------------
// Verbosity message
// p: end_rdtsc_calibration [so startup message is printed first]
//--------------------------------------------------------------
Modified: branches/ASPACEM/coregrind/m_syswrap/syswrap-generic.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
--- branches/ASPACEM/coregrind/m_syswrap/syswrap-generic.c 2005-09-21 12:=
01:37 UTC (rev 4719)
+++ branches/ASPACEM/coregrind/m_syswrap/syswrap-generic.c 2005-09-22 11:=
34:48 UTC (rev 4720)
@@ -2444,12 +2444,9 @@
}
=20
if (VG_(clo_trace_children)) {
- Char* optvar =3D VG_(build_child_VALGRINDCLO)( (Char*)ARG1 );
+ // Set VALGRIND_LIB in ARG3 (the environment)
+ VG_(env_setenv)( (Char***)&ARG3, VALGRIND_LIB, VG_(libdir));
=20
- // Set VALGRINDCLO and VALGRINDLIB in ARG3 (the environment)
- VG_(env_setenv)( (Char***)&ARG3, VALGRINDCLO, optvar);
- VG_(env_setenv)( (Char***)&ARG3, VALGRINDLIB, VG_(libdir));
-
// Create executable name: "/proc/self/fd/<vgexecfd>", update ARG1
path =3D VG_(build_child_exename)();
}
Modified: branches/ASPACEM/coregrind/pub_core_clientstate.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
--- branches/ASPACEM/coregrind/pub_core_clientstate.h 2005-09-21 12:01:37=
UTC (rev 4719)
+++ branches/ASPACEM/coregrind/pub_core_clientstate.h 2005-09-22 11:34:48=
UTC (rev 4720)
@@ -37,7 +37,10 @@
// client don't live here; they instead live in m_threadstate.h.
//--------------------------------------------------------------------
=20
+#include "pub_tool_clientstate.h"
+
// Address space globals
+
extern Addr VG_(client_base); // client address space limits
extern Addr VG_(client_end);
=20
@@ -48,7 +51,18 @@
extern Addr VG_(brk_base); // start of brk
extern Addr VG_(brk_limit); // current brk
=20
+// Client's executable file descriptor.
+extern Int VG_(clexecfd);
=20
+// Client's original rlimit data and rlimit stack
+extern struct vki_rlimit VG_(client_rlimit_data);
+extern struct vki_rlimit VG_(client_rlimit_stack);
+
+// Name of the launcher, as extracted from VALGRIND_LAUNCHER at
+// startup.
+extern HChar* VG_(name_of_launcher);
+
+
#endif // __PUB_CORE_CLIENTSTATE_H
=20
/*--------------------------------------------------------------------*/
Modified: branches/ASPACEM/coregrind/pub_core_commandline.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
--- branches/ASPACEM/coregrind/pub_core_commandline.h 2005-09-21 12:01:37=
UTC (rev 4719)
+++ branches/ASPACEM/coregrind/pub_core_commandline.h 2005-09-22 11:34:48=
UTC (rev 4720)
@@ -31,12 +31,15 @@
#ifndef __PUB_CORE_COMMANDLINE_H
#define __PUB_CORE_COMMANDLINE_H
=20
-#define VG_CLO_SEP '\01'
=20
-extern void VG_(get_command_line)( int argc, char** argv,
- Int* vg_argc_out, Char*** vg_argv_out=
,=20
- char*** cl_argv_out=
);
+/* Split up the args presented by the launcher to m_main.main(), and
+ park them in VG_(args_for_client), VG_(args_for_valgrind) and
+ VG_(args_for_valgrind_extras). The latter are acquired from
+ $VALGRIND_OPTS, ./.valgrindrc and ~/.valgrindrc. */
=20
+extern void VG_(split_up_argv)( Int argc, HChar** argv );
+
+
#endif // __PUB_CORE_COMMANDLINE_H
=20
/*--------------------------------------------------------------------*/
Modified: branches/ASPACEM/coregrind/pub_core_libcproc.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
--- branches/ASPACEM/coregrind/pub_core_libcproc.h 2005-09-21 12:01:37 UT=
C (rev 4719)
+++ branches/ASPACEM/coregrind/pub_core_libcproc.h 2005-09-22 11:34:48 UT=
C (rev 4720)
@@ -41,37 +41,19 @@
/* The directory we look for all our auxillary files in. Useful for
running Valgrind out of a build tree without having to do "make
install". */
-#define VALGRINDLIB "VALGRINDLIB"
+#define VALGRIND_LIB "VALGRIND_LIB"
=20
/* Additional command-line arguments; they are overridden by actual
command-line option. Each argument is separated by spaces. There
is no quoting mechanism. */
-#define VALGRINDOPTS "VALGRIND_OPTS"
+#define VALGRIND_OPTS "VALGRIND_OPTS"
=20
/* The full name of Valgrind's stage1 (launcher) executable. This is
set by stage1 and read by stage2, and is used for recursive
invokations of Valgrind on child processes. */
-#define VALGRINDSTAGE1 "VALGRIND_STAGE1"
+#define VALGRIND_LAUNCHER "VALGRIND_LAUNCHER"
=20
=20
-/* If this variable is present in the environment, then valgrind will
- not parse the command line for options at all; all options come
- from this variable. Arguments are terminated by ^A (\001). There
- is no quoting mechanism.
-
- This variable is not expected to be set by anything other than
- Valgrind itself, as part of its handling of execve with
- --trace-children=3Dyes. This variable should not be present in the
- client environment. */
-#define VALGRINDCLO "_VALGRIND_CLO"
-
-// Client's executable file descriptor.
-extern Int VG_(clexecfd);
-
-// Client's original rlimit data and rlimit stack
-extern struct vki_rlimit VG_(client_rlimit_data);
-extern struct vki_rlimit VG_(client_rlimit_stack);
-
// Environment manipulations
extern Char **VG_(env_setenv) ( Char ***envp, const Char* varname,
const Char *val );
Modified: branches/ASPACEM/coregrind/pub_core_main.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
--- branches/ASPACEM/coregrind/pub_core_main.h 2005-09-21 12:01:37 UTC (r=
ev 4719)
+++ branches/ASPACEM/coregrind/pub_core_main.h 2005-09-22 11:34:48 UTC (r=
ev 4720)
@@ -39,8 +39,7 @@
//--------------------------------------------------------------------
=20
// Help set up the child used when doing execve() with --trace-children=3D=
yes
-Char* VG_(build_child_VALGRINDCLO) ( Char* exename );
-Char* VG_(build_child_exename) ( void );
+Char* VG_(build_child_exename) ( void );
=20
// Do everything which needs doing before the process finally ends,
// like printing reports, etc
Modified: branches/ASPACEM/include/Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/include/Makefile.am 2005-09-21 12:01:37 UTC (rev 471=
9)
+++ branches/ASPACEM/include/Makefile.am 2005-09-22 11:34:48 UTC (rev 472=
0)
@@ -5,6 +5,7 @@
pub_tool_basics.h \
pub_tool_basics_asm.h \
pub_tool_aspacemgr.h \
+ pub_tool_clientstate.h \
pub_tool_cpuid.h \
pub_tool_debuginfo.h \
pub_tool_errormgr.h \
Added: branches/ASPACEM/include/pub_tool_clientstate.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
--- branches/ASPACEM/include/pub_tool_clientstate.h 2005-09-21 12:01:37 U=
TC (rev 4719)
+++ branches/ASPACEM/include/pub_tool_clientstate.h 2005-09-22 11:34:48 U=
TC (rev 4720)
@@ -0,0 +1,74 @@
+
+/*--------------------------------------------------------------------*/
+/*--- Misc client state info pub_tool_clientstate.h ---*/
+/*--------------------------------------------------------------------*/
+
+/*
+ This file is part of Valgrind, a dynamic binary instrumentation
+ framework.
+
+ Copyright (C) 2000-2005 Julian Seward
+ js...@ac...
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307, USA.
+
+ The GNU General Public License is contained in the file COPYING.
+*/
+
+#ifndef __PUB_TOOL_CLIENTSTATE_H
+#define __PUB_TOOL_CLIENTSTATE_H
+
+
+// Command line pieces, after they have been extracted from argv in
+// m_main.main(). These are all NULL-terminated vectors.
+
+/* Expandable arrays of strings. */
+typedef
+ struct {
+ Int size;
+ Int used;
+ HChar** strs;
+ }
+ XArrayStrings;
+
+/* Args for the client. */
+extern XArrayStrings VG_(args_for_client);
+
+/* Args for V. This is the concatenation of the following:
+ - contents of ~/.valgrindrc
+ - contents of $VALGRIND_OPTS
+ - contents of ./.valgrindrc
+ - args from the command line
+ Only the last of these is passed onwards to child Valgrinds at
+ client sys_execve, since the children will re-acquire the first=20
+ 3 categories for themselves. Therefore we also record the=20
+ number of these no-pass-at-execve arguments. */
+extern XArrayStrings VG_(args_for_valgrind);
+
+/* Number of leading args in VG_(args_for_valgrind) not to pass on at
+ exec time. */
+extern Int VG_(args_for_valgrind_noexecpass);
+
+/* The name of the client executable, as specified on the command
+ line. */
+extern HChar* VG_(args_the_exename);
+
+
+#endif // __PUB_TOOL_CLIENTSTATE_H
+
+/*--------------------------------------------------------------------*/
+/*--- end ---*/
+/*--------------------------------------------------------------------*/
Modified: branches/ASPACEM/include/pub_tool_libcproc.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
--- branches/ASPACEM/include/pub_tool_libcproc.h 2005-09-21 12:01:37 UTC =
(rev 4719)
+++ branches/ASPACEM/include/pub_tool_libcproc.h 2005-09-22 11:34:48 UTC =
(rev 4720)
@@ -36,7 +36,6 @@
------------------------------------------------------------------ */
=20
/* Client args and environment (which can be inspected with VG_(getenv)(=
). */
-extern Int VG_(client_argc);
extern Char** VG_(client_argv);
extern Char** VG_(client_envp);
=20
Modified: branches/ASPACEM/massif/ms_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
--- branches/ASPACEM/massif/ms_main.c 2005-09-21 12:01:37 UTC (rev 4719)
+++ branches/ASPACEM/massif/ms_main.c 2005-09-22 11:34:48 UTC (rev 4720)
@@ -50,6 +50,7 @@
#include "pub_tool_replacemalloc.h"
#include "pub_tool_stacktrace.h"
#include "pub_tool_tooliface.h"
+#include "pub_tool_clientstate.h"
=20
#include "valgrind.h" // For {MALLOC,FREE}LIKE_BLOCK
=20
@@ -1374,8 +1375,8 @@
=20
// File header, including command line
SPRINTF(buf, "JOB \"");
- for (i =3D 0; i < VG_(client_argc); i++)
- SPRINTF(buf, "%s ", VG_(client_argv)[i]);
+ for (i =3D 0; i < VG_(args_for_client).used; i++)
+ SPRINTF(buf, "%s ", VG_(args_for_client).strs[i]);
SPRINTF(buf, /*" (%d ms/s...
[truncated message content] |
|
From: <js...@ac...> - 2005-09-22 03:00:45
|
Nightly build on phoenix ( SuSE 9.1 ) started at 2005-09-22 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 == 185 tests, 2 stderr failures, 0 stdout failures ================= none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <to...@co...> - 2005-09-22 02:41:29
|
Nightly build on dunsmere ( athlon, Fedora Core 4 ) started at 2005-09-22 03:30:05 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 187 tests, 5 stderr failures, 0 stdout failures ================= memcheck/tests/leak-tree (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-09-22 02:28:44
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2005-09-22 03:15:03 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 186 tests, 14 stderr failures, 0 stdout failures ================= memcheck/tests/addressable (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (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/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-09-22 02:25:52
|
Nightly build on ginetta ( i686, Red Hat 8.0 ) started at 2005-09-22 03:10:13 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 186 tests, 2 stderr failures, 0 stdout failures ================= none/tests/faultstatus (stderr) none/tests/x86/int (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 186 tests, 2 stderr failures, 1 stdout failure ================= none/tests/faultstatus (stderr) none/tests/x86/int (stderr) none/tests/x86/yield (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Sep 22 03:19:33 2005 --- new.short Thu Sep 22 03:25:45 2005 *************** *** 8,13 **** ! == 186 tests, 2 stderr failures, 1 stdout failure ================= none/tests/faultstatus (stderr) none/tests/x86/int (stderr) - none/tests/x86/yield (stdout) --- 8,12 ---- ! == 186 tests, 2 stderr failures, 0 stdout failures ================= none/tests/faultstatus (stderr) none/tests/x86/int (stderr) |
|
From: Tom H. <th...@cy...> - 2005-09-22 02:21:27
|
Nightly build on dellow ( x86_64, Fedora Core 4 ) started at 2005-09-22 03:10:10 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 164 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) |
|
From: Tom H. <th...@cy...> - 2005-09-22 02:19:16
|
Nightly build on aston ( x86_64, Fedora Core 3 ) started at 2005-09-22 03:05:13 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 164 tests, 6 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) |
|
From: Tom H. <th...@cy...> - 2005-09-22 02:13:59
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2005-09-22 03:00:03 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 164 tests, 7 stderr failures, 0 stdout failures ================= memcheck/tests/sigprocmask (stderr) memcheck/tests/strchr (stderr) memcheck/tests/vgtest_ume (stderr) memcheck/tests/weirdioctl (stderr) memcheck/tests/xml1 (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) |