Author: sewardj
Date: 2008-02-26 19:37:27 +0000 (Tue, 26 Feb 2008)
New Revision: 7484

Log:
Make changes to improve robustness of these tests.  Further changes
will be necessary.



Modified:
   branches/DATASYMS/memcheck/tests/varinfo1.c
   branches/DATASYMS/memcheck/tests/varinfo1.stderr.exp
   branches/DATASYMS/memcheck/tests/varinfo2.c
   branches/DATASYMS/memcheck/tests/varinfo2.stderr.exp
   branches/DATASYMS/memcheck/tests/varinfo3.c
   branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp
   branches/DATASYMS/memcheck/tests/varinfo4.c
   branches/DATASYMS/memcheck/tests/varinfo4.stderr.exp
   branches/DATASYMS/memcheck/tests/varinfo5so.c
   branches/DATASYMS/memcheck/tests/varinfo6.c
   branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp


Modified: branches/DATASYMS/memcheck/tests/varinfo1.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo1.c 2008-02-26 19:13:04 UTC (rev 
7483)
+++ branches/DATASYMS/memcheck/tests/varinfo1.c 2008-02-26 19:37:27 UTC (rev 
7484)
@@ -18,11 +18,16 @@
    its best guess as to what "a" actually is.  a must be
    addressible. */
 
-void croak ( void* a )
+void croak ( void* aV )
 {
-  volatile char undef;
-  *(char*)a = undef;
+  char* a = (char*)aV;
+  char* undefp = malloc(1);
+  char saved = *a;
+  assert(undefp);
+  *a = *undefp;
   VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
+  *a = saved;
+  free(undefp);
 }
 
 #include <stdio.h>

Modified: branches/DATASYMS/memcheck/tests/varinfo1.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo1.stderr.exp        2008-02-26 
19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo1.stderr.exp        2008-02-26 
19:37:27 UTC (rev 7484)
@@ -1,43 +1,43 @@
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo1.c:25)
-   by 0x........: main (varinfo1.c:44)
+   at 0x........: croak (varinfo1.c:28)
+   by 0x........: main (varinfo1.c:49)
  Address 0x........ is 1 bytes inside a block of size 3 alloc'd
    at 0x........: malloc (vg_replace_malloc.c:...)
-   by 0x........: main (varinfo1.c:42)
+   by 0x........: main (varinfo1.c:47)
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo1.c:25)
-   by 0x........: main (varinfo1.c:47)
+   at 0x........: croak (varinfo1.c:28)
+   by 0x........: main (varinfo1.c:52)
  Location 0x........ is 0 bytes inside global var "global_u1"
- declared at varinfo1.c:30
+ declared at varinfo1.c:35
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo1.c:25)
-   by 0x........: main (varinfo1.c:48)
+   at 0x........: croak (varinfo1.c:28)
+   by 0x........: main (varinfo1.c:53)
  Location 0x........ is 0 bytes inside global var "global_i1"
- declared at varinfo1.c:32
+ declared at varinfo1.c:37
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo1.c:25)
-   by 0x........: main (varinfo1.c:49)
+   at 0x........: croak (varinfo1.c:28)
+   by 0x........: main (varinfo1.c:54)
  Location 0x........ is 0 bytes inside global_u2[3],
- a global variable declared at varinfo1.c:34
+ a global variable declared at varinfo1.c:39
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo1.c:25)
-   by 0x........: main (varinfo1.c:50)
+   at 0x........: croak (varinfo1.c:28)
+   by 0x........: main (varinfo1.c:55)
  Location 0x........ is 0 bytes inside global_i2[7],
- a global variable declared at varinfo1.c:36
+ a global variable declared at varinfo1.c:41
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo1.c:25)
-   by 0x........: main (varinfo1.c:51)
+   at 0x........: croak (varinfo1.c:28)
+   by 0x........: main (varinfo1.c:56)
  Location 0x........ is 0 bytes inside local var "local"
- declared at varinfo1.c:41, in frame #1 of thread 1
+ declared at varinfo1.c:46, in frame #1 of thread 1
 
 ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
-malloc/free: 1 allocs, 1 frees, 3 bytes allocated.
+malloc/free: 7 allocs, 7 frees, 9 bytes allocated.
 For a detailed leak analysis,  rerun with: --leak-check=yes
 For counts of detected errors, rerun with: -v

Modified: branches/DATASYMS/memcheck/tests/varinfo2.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo2.c 2008-02-26 19:13:04 UTC (rev 
7483)
+++ branches/DATASYMS/memcheck/tests/varinfo2.c 2008-02-26 19:37:27 UTC (rev 
7484)
@@ -18,11 +18,16 @@
    its best guess as to what "a" actually is.  a must be
    addressible. */
 
-void croak ( void* a )
+void croak ( void* aV )
 {
-  volatile char undef;
-  *(char*)a = undef;
+  char* a = (char*)aV;
+  char* undefp = malloc(1);
+  char saved = *a;
+  assert(undefp);
+  *a = *undefp;
   VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
+  *a = saved;
+  free(undefp);
 }
 
 #include <stdio.h>

Modified: branches/DATASYMS/memcheck/tests/varinfo2.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo2.stderr.exp        2008-02-26 
19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo2.stderr.exp        2008-02-26 
19:37:27 UTC (rev 7484)
@@ -1,27 +1,27 @@
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo2.c:25)
-   by 0x........: foo (varinfo2.c:36)
-   by 0x........: main (varinfo2.c:46)
+   at 0x........: croak (varinfo2.c:28)
+   by 0x........: foo (varinfo2.c:41)
+   by 0x........: main (varinfo2.c:51)
  Location 0x........ is 0 bytes inside var[7],
- declared at varinfo2.c:34, in frame #1 of thread 1
+ declared at varinfo2.c:39, in frame #1 of thread 1
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo2.c:25)
-   by 0x........: foo (varinfo2.c:38)
-   by 0x........: main (varinfo2.c:46)
+   at 0x........: croak (varinfo2.c:28)
+   by 0x........: foo (varinfo2.c:43)
+   by 0x........: main (varinfo2.c:51)
  Location 0x........ is 2 bytes inside var.bar,
- declared at varinfo2.c:37, in frame #1 of thread 1
+ declared at varinfo2.c:42, in frame #1 of thread 1
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo2.c:25)
-   by 0x........: foo (varinfo2.c:41)
-   by 0x........: main (varinfo2.c:46)
+   at 0x........: croak (varinfo2.c:28)
+   by 0x........: foo (varinfo2.c:46)
+   by 0x........: main (varinfo2.c:51)
  Location 0x........ is 1 byte inside local var "var"
- declared at varinfo2.c:32, in frame #1 of thread 1
+ declared at varinfo2.c:37, in frame #1 of thread 1
 
 ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
-malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
+malloc/free: 3 allocs, 3 frees, 3 bytes allocated.
 For a detailed leak analysis,  rerun with: --leak-check=yes
 For counts of detected errors, rerun with: -v

Modified: branches/DATASYMS/memcheck/tests/varinfo3.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo3.c 2008-02-26 19:13:04 UTC (rev 
7483)
+++ branches/DATASYMS/memcheck/tests/varinfo3.c 2008-02-26 19:37:27 UTC (rev 
7484)
@@ -18,11 +18,16 @@
    its best guess as to what "a" actually is.  a must be
    addressible. */
 
-void croak ( void* a )
+void croak ( void* aV )
 {
-  volatile char undef;
-  *(char*)a = undef;
+  char* a = (char*)aV;
+  char* undefp = malloc(1);
+  char saved = *a;
+  assert(undefp);
+  *a = *undefp;
   VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
+  *a = saved;
+  free(undefp);
 }
 
 #include <stdio.h>

Modified: branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp        2008-02-26 
19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp        2008-02-26 
19:37:27 UTC (rev 7484)
@@ -1,64 +1,64 @@
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo3.c:25)
-   by 0x........: foo (varinfo3.c:49)
-   by 0x........: main (varinfo3.c:61)
+   at 0x........: croak (varinfo3.c:28)
+   by 0x........: foo (varinfo3.c:54)
+   by 0x........: main (varinfo3.c:66)
  Location 0x........ is 0 bytes inside static_global_def[1],
- declared at varinfo3.c:30, in frame #0 of thread 1
+ declared at varinfo3.c:35, in frame #0 of thread 1
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo3.c:25)
-   by 0x........: foo (varinfo3.c:50)
-   by 0x........: main (varinfo3.c:61)
+   at 0x........: croak (varinfo3.c:28)
+   by 0x........: foo (varinfo3.c:55)
+   by 0x........: main (varinfo3.c:66)
  Location 0x........ is 0 bytes inside nonstatic_global_def[2],
- a global variable declared at varinfo3.c:31
+ a global variable declared at varinfo3.c:36
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo3.c:25)
-   by 0x........: foo (varinfo3.c:51)
-   by 0x........: main (varinfo3.c:61)
+   at 0x........: croak (varinfo3.c:28)
+   by 0x........: foo (varinfo3.c:56)
+   by 0x........: main (varinfo3.c:66)
  Location 0x........ is 0 bytes inside static_global_undef[3],
- declared at varinfo3.c:32, in frame #0 of thread 1
+ declared at varinfo3.c:37, in frame #0 of thread 1
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo3.c:25)
-   by 0x........: foo (varinfo3.c:52)
-   by 0x........: main (varinfo3.c:61)
+   at 0x........: croak (varinfo3.c:28)
+   by 0x........: foo (varinfo3.c:57)
+   by 0x........: main (varinfo3.c:66)
  Location 0x........ is 0 bytes inside nonstatic_global_undef[4],
- a global variable declared at varinfo3.c:33
+ a global variable declared at varinfo3.c:38
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo3.c:25)
-   by 0x........: bar (varinfo3.c:37)
-   by 0x........: foo (varinfo3.c:53)
-   by 0x........: main (varinfo3.c:61)
- Address 0x........ is 5 bytes inside data symbol "static_local_def.2751"
+   at 0x........: croak (varinfo3.c:28)
+   by 0x........: bar (varinfo3.c:42)
+   by 0x........: foo (varinfo3.c:58)
+   by 0x........: main (varinfo3.c:66)
+ Address 0x........ is 5 bytes inside data symbol "static_local_def.2919"
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo3.c:25)
-   by 0x........: bar (varinfo3.c:38)
-   by 0x........: foo (varinfo3.c:53)
-   by 0x........: main (varinfo3.c:61)
+   at 0x........: croak (varinfo3.c:28)
+   by 0x........: bar (varinfo3.c:43)
+   by 0x........: foo (varinfo3.c:58)
+   by 0x........: main (varinfo3.c:66)
  Location 0x........ is 0 bytes inside nonstatic_local_def[6],
- declared at varinfo3.c:46, in frame #2 of thread 1
+ declared at varinfo3.c:51, in frame #2 of thread 1
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo3.c:25)
-   by 0x........: bar (varinfo3.c:39)
-   by 0x........: foo (varinfo3.c:53)
-   by 0x........: main (varinfo3.c:61)
- Address 0x........ is 7 bytes inside data symbol "static_local_undef.2753"
+   at 0x........: croak (varinfo3.c:28)
+   by 0x........: bar (varinfo3.c:44)
+   by 0x........: foo (varinfo3.c:58)
+   by 0x........: main (varinfo3.c:66)
+ Address 0x........ is 7 bytes inside data symbol "static_local_undef.2921"
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo3.c:25)
-   by 0x........: bar (varinfo3.c:40)
-   by 0x........: foo (varinfo3.c:53)
-   by 0x........: main (varinfo3.c:61)
+   at 0x........: croak (varinfo3.c:28)
+   by 0x........: bar (varinfo3.c:45)
+   by 0x........: foo (varinfo3.c:58)
+   by 0x........: main (varinfo3.c:66)
  Location 0x........ is 0 bytes inside nonstatic_local_undef[8],
- declared at varinfo3.c:48, in frame #2 of thread 1
+ declared at varinfo3.c:53, in frame #2 of thread 1
 
 ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
-malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
+malloc/free: 8 allocs, 8 frees, 8 bytes allocated.
 For a detailed leak analysis,  rerun with: --leak-check=yes
 For counts of detected errors, rerun with: -v

Modified: branches/DATASYMS/memcheck/tests/varinfo4.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo4.c 2008-02-26 19:13:04 UTC (rev 
7483)
+++ branches/DATASYMS/memcheck/tests/varinfo4.c 2008-02-26 19:37:27 UTC (rev 
7484)
@@ -18,11 +18,16 @@
    its best guess as to what "a" actually is.  a must be
    addressible. */
 
-void croak ( void* a )
+void croak ( void* aV )
 {
-  volatile char undef;
-  *(char*)a = undef;
+  char* a = (char*)aV;
+  char* undefp = malloc(1);
+  char saved = *a;
+  assert(undefp);
+  *a = *undefp;
   VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
+  *a = saved;
+  free(undefp);
 }
 
 #include <stdio.h>

Modified: branches/DATASYMS/memcheck/tests/varinfo4.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo4.stderr.exp        2008-02-26 
19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo4.stderr.exp        2008-02-26 
19:37:27 UTC (rev 7484)
@@ -1,27 +1,27 @@
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo4.c:25)
-   by 0x........: blah (varinfo4.c:42)
-   by 0x........: main (varinfo4.c:51)
+   at 0x........: croak (varinfo4.c:28)
+   by 0x........: blah (varinfo4.c:47)
+   by 0x........: main (varinfo4.c:56)
  Location 0x........ is 1 byte inside a[3].xyzzy[21].c1,
- declared at varinfo4.c:40, in frame #1 of thread 1
+ declared at varinfo4.c:45, in frame #1 of thread 1
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo4.c:25)
-   by 0x........: blah (varinfo4.c:43)
-   by 0x........: main (varinfo4.c:51)
+   at 0x........: croak (varinfo4.c:28)
+   by 0x........: blah (varinfo4.c:48)
+   by 0x........: main (varinfo4.c:56)
  Location 0x........ is 0 bytes inside a[5].bong,
- declared at varinfo4.c:40, in frame #1 of thread 1
+ declared at varinfo4.c:45, in frame #1 of thread 1
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo4.c:25)
-   by 0x........: blah (varinfo4.c:44)
-   by 0x........: main (varinfo4.c:51)
+   at 0x........: croak (varinfo4.c:28)
+   by 0x........: blah (varinfo4.c:49)
+   by 0x........: main (varinfo4.c:56)
  Location 0x........ is 1 byte inside a[3].xyzzy[21].c2[2],
- declared at varinfo4.c:40, in frame #1 of thread 1
+ declared at varinfo4.c:45, in frame #1 of thread 1
 
 ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
-malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
+malloc/free: 3 allocs, 3 frees, 3 bytes allocated.
 For a detailed leak analysis,  rerun with: --leak-check=yes
 For counts of detected errors, rerun with: -v

Modified: branches/DATASYMS/memcheck/tests/varinfo5so.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo5so.c       2008-02-26 19:13:04 UTC 
(rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo5so.c       2008-02-26 19:37:27 UTC 
(rev 7484)
@@ -25,7 +25,7 @@
   char* undefp = malloc(1);
   char saved = *a;
   assert(undefp);
-  *(char*)a = *undefp;
+  *a = *undefp;
   VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
   *a = saved;
   free(undefp);

Modified: branches/DATASYMS/memcheck/tests/varinfo6.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo6.c 2008-02-26 19:13:04 UTC (rev 
7483)
+++ branches/DATASYMS/memcheck/tests/varinfo6.c 2008-02-26 19:37:27 UTC (rev 
7484)
@@ -1,4 +1,12 @@
 
+/* Test the variable identification machinery in a non-toy sized
+   program.  Also, the croak() call in BZ2_decompress causes Valgrind
+   to try to describe a local variable (i) that has at least a dozen
+   independent live ranges (hence, is really that many independent
+   variables).  Hence it tests the machinery's ability to correctly
+   handle a variable which has multiple live ranges and hence multiple
+   non-overlapping areas in which it actually exists.
+*/
 
 /* Relevant compile flags are:
 
@@ -16,16 +24,18 @@
    its best guess as to what "a" actually is.  a must be
    addressible. */
 
-void croak ( void* a )
+void croak ( void* aV )
 {
-  volatile char saved = *(char*)a;
-  volatile char undef;
-  *(char*)a = undef;
+  char* a = (char*)aV;
+  char* undefp = malloc(1);
+  char saved = *a;
+  assert(undefp);
+  *a = *undefp;
   VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
-  *(char*)a = saved;
+  *a = saved;
+  free(undefp);
 }
 
-
 // This benchmark is basically bzip2 (mashed to be a single file)
 // compressing and decompressing some data.  It tests Valgrind's handling of
 // realistic and "difficult" (ie. lots of branches and memory accesses)
@@ -2810,7 +2820,7 @@
 #define SETMASK (1 << 21)
 #define CLEARMASK (~(SETMASK))
 
-static __attribute__((noinline))
+/*static*/ __attribute__((noinline))
 void mainSort ( UInt32* ptr, 
                 UChar*  block,
                 UInt16* quadrant, 
@@ -3092,6 +3102,7 @@
       ftab [ 0 .. 65536 ] destroyed
       arr1 [0 .. nblock-1] holds sorted order
 */
+__attribute__((noinline))
 void BZ2_blockSort ( EState* s )
 {
    UInt32* ptr    = s->ptr; 
@@ -4043,6 +4054,7 @@
 
 
 /*---------------------------------------------------*/
+__attribute__((noinline))
 void BZ2_compressBlock ( EState* s, Bool is_last_block )
 {
    if (s->nblock > 0) {

Modified: branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp        2008-02-26 
19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp        2008-02-26 
19:37:27 UTC (rev 7484)
@@ -1,27 +1,27 @@
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo6.c:24)
-   by 0x........: mainSort (varinfo6.c:2989)
-   by 0x........: BZ2_blockSort (varinfo6.c:3132)
-   by 0x........: BZ2_compressBlock (varinfo6.c:4060)
-   by 0x........: handle_compress (varinfo6.c:4778)
-   by 0x........: BZ2_bzCompress (varinfo6.c:4848)
-   by 0x........: BZ2_bzBuffToBuffCompress (varinfo6.c:5655)
-   by 0x........: main (varinfo6.c:6505)
+   at 0x........: croak (varinfo6.c:34)
+   by 0x........: mainSort (varinfo6.c:2999)
+   by 0x........: BZ2_blockSort (varinfo6.c:3143)
+   by 0x........: BZ2_compressBlock (varinfo6.c:4072)
+   by 0x........: handle_compress (varinfo6.c:4790)
+   by 0x........: BZ2_bzCompress (varinfo6.c:4860)
+   by 0x........: BZ2_bzBuffToBuffCompress (varinfo6.c:5667)
+   by 0x........: main (varinfo6.c:6517)
  Location 0x........ is 2 bytes inside local var "budget"
- declared at varinfo6.c:3104, in frame #2 of thread 1
+ declared at varinfo6.c:3115, in frame #2 of thread 1
 
 Uninitialised byte(s) found during client check request
-   at 0x........: croak (varinfo6.c:24)
-   by 0x........: BZ2_decompress (varinfo6.c:1689)
-   by 0x........: BZ2_bzDecompress (varinfo6.c:5218)
-   by 0x........: BZ2_bzBuffToBuffDecompress (varinfo6.c:5703)
-   by 0x........: main (varinfo6.c:6520)
+   at 0x........: croak (varinfo6.c:34)
+   by 0x........: BZ2_decompress (varinfo6.c:1699)
+   by 0x........: BZ2_bzDecompress (varinfo6.c:5230)
+   by 0x........: BZ2_bzBuffToBuffDecompress (varinfo6.c:5715)
+   by 0x........: main (varinfo6.c:6532)
  Location 0x........ is 2 bytes inside local var "i"
- declared at varinfo6.c:1507, in frame #1 of thread 1
+ declared at varinfo6.c:1517, in frame #1 of thread 1
 
 ERROR SUMMARY: 10216 errors from 2 contexts (suppressed: 0 from 0)
 malloc/free: in use at exit: 0 bytes in 0 blocks.
-malloc/free: 37 allocs, 37 frees, 24,358,500 bytes allocated.
+malloc/free: 10,253 allocs, 10,253 frees, 24,368,716 bytes allocated.
 For a detailed leak analysis,  rerun with: --leak-check=yes
 For counts of detected errors, rerun with: -v


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Valgrind-developers mailing list
Valgrind-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-developers

Reply via email to