|
From: <sv...@va...> - 2006-05-03 00:43:25
|
Author: sewardj
Date: 2006-05-03 01:43:20 +0100 (Wed, 03 May 2006)
New Revision: 5875
Log:
Add another test of permissions range copying (copy_address_range_perms).
Added:
trunk/memcheck/tests/pdb-realloc2.c
trunk/memcheck/tests/pdb-realloc2.stderr.exp
trunk/memcheck/tests/pdb-realloc2.stdout.exp
trunk/memcheck/tests/pdb-realloc2.vgtest
Modified:
trunk/memcheck/tests/Makefile.am
Modified: trunk/memcheck/tests/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
--- trunk/memcheck/tests/Makefile.am 2006-05-02 13:02:01 UTC (rev 5874)
+++ trunk/memcheck/tests/Makefile.am 2006-05-03 00:43:20 UTC (rev 5875)
@@ -86,6 +86,7 @@
partial_load_ok.vgtest partial_load_ok.stderr.exp partial_load_ok.stder=
r.exp64 \
partial_load_dflt.vgtest partial_load_dflt.stderr.exp partial_load_dflt=
.stderr.exp64 \
pdb-realloc.stderr.exp pdb-realloc.vgtest \
+ pdb-realloc2.stderr.exp pdb-realloc2.stdout.exp pdb-realloc2.vgtest \
pipe.stderr.exp pipe.vgtest \
pointer-trace.vgtest \
pointer-trace.stderr.exp pointer-trace.stderr.exp64 \
@@ -150,7 +151,7 @@
nanoleak new_nothrow \
null_socket oset_test overlap \
partiallydefinedeq \
- partial_load pdb-realloc \
+ partial_load pdb-realloc pdb-realloc2 \
pipe pointer-trace \
post-syscall \
realloc1 realloc2 realloc3 \
Added: trunk/memcheck/tests/pdb-realloc2.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/tests/pdb-realloc2.c (rev 0)
+++ trunk/memcheck/tests/pdb-realloc2.c 2006-05-03 00:43:20 UTC (rev 5875=
)
@@ -0,0 +1,111 @@
+
+/* A test which involves copying (using realloc) a block containing
+ some partially defined bytes. Really this is to check that
+ copy_address_range_perms in mc_main.c works. I don't think it's a
+ good test - it may well not exercise all the code in
+ copy_address_range_perms. */
+
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "memcheck/memcheck.h"
+
+typedef unsigned char UChar;
+typedef unsigned int UInt;
+
+
+static UInt seed =3D 0;
+static inline UInt myrand ( UInt size )
+{
+ /* From "Numerical Recipes in C" 2nd Edition */
+ seed =3D 1664525UL * seed + 1013904223UL;
+ return seed % size;
+}
+
+static void barf ( int size, int offset )
+{
+ printf("pdb-realloc2: fail: size %d, offset %d\n", size,offset);
+ exit(1);
+}
+
+void do_test ( int size )
+{
+ int i,j,r;
+ UChar* v;
+ UChar* p =3D malloc(size);
+ assert(p);
+ // fill
+ seed =3D 0;
+ for (i =3D 0; i < size; i++) {
+
+ j =3D myrand( 256 * 25 );
+ //printf("%d\n", j);
+ if (j >=3D 256 * 13) {
+ // def 1s
+ p[i] =3D 0xFF;
+ } else=20
+ if (j >=3D 256 && j < 256*13) {
+ // def 0s
+ p[i] =3D 0;
+ } else {
+ // pdb
+ p[i] &=3D (UChar)j;
+ }
+
+ }
+
+ // copy
+ for (i =3D 1; i <=3D 100; i++) {
+ p =3D realloc(p, size+i);
+ assert(p);
+ }
+
+ // check
+ v =3D malloc(size+100);
+ assert(v);
+ r =3D VALGRIND_GET_VBITS(p,v, size+100);
+ assert(r =3D=3D 1);
+
+ //for (i =3D 0; i < size+100; i++)
+ // printf("%02x ", (UInt)v[i]);
+ //printf("\n");
+
+ seed =3D 0;
+ for (i =3D 0; i < size; i++) {
+
+ j =3D myrand( 256 * 25 );
+
+ if (j >=3D 256) {
+ // expecting a defined value
+ if (v[i] !=3D 0)
+ barf(size, i);
+ } else {
+ // expecting a PDB =3D=3D j
+ if (v[i] !=3D (UChar)j)
+ barf(size,i);
+ }
+
+ }
+
+ // in the extension area, everything should be undefined
+ for (i =3D 0; i < 100; i++) {
+ if (v[size+i] !=3D 0xFF)
+ barf(size, i);
+ }
+
+ free(v);
+ free(p);
+}
+
+int main ( void )
+{
+ int z;
+ for (z =3D 0; z < 100; z++) {
+ printf("pdb_realloc: z =3D %d\n", z);
+ do_test(z);
+ do_test(z + 173);
+ do_test(z + 1731);
+ }
+ printf("pdb-realloc2: done\n");
+ return 0;
+}
Added: trunk/memcheck/tests/pdb-realloc2.stderr.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Added: trunk/memcheck/tests/pdb-realloc2.stdout.exp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/tests/pdb-realloc2.stdout.exp =
(rev 0)
+++ trunk/memcheck/tests/pdb-realloc2.stdout.exp 2006-05-03 00:43:20 UTC =
(rev 5875)
@@ -0,0 +1,101 @@
+pdb_realloc: z =3D 0
+pdb_realloc: z =3D 1
+pdb_realloc: z =3D 2
+pdb_realloc: z =3D 3
+pdb_realloc: z =3D 4
+pdb_realloc: z =3D 5
+pdb_realloc: z =3D 6
+pdb_realloc: z =3D 7
+pdb_realloc: z =3D 8
+pdb_realloc: z =3D 9
+pdb_realloc: z =3D 10
+pdb_realloc: z =3D 11
+pdb_realloc: z =3D 12
+pdb_realloc: z =3D 13
+pdb_realloc: z =3D 14
+pdb_realloc: z =3D 15
+pdb_realloc: z =3D 16
+pdb_realloc: z =3D 17
+pdb_realloc: z =3D 18
+pdb_realloc: z =3D 19
+pdb_realloc: z =3D 20
+pdb_realloc: z =3D 21
+pdb_realloc: z =3D 22
+pdb_realloc: z =3D 23
+pdb_realloc: z =3D 24
+pdb_realloc: z =3D 25
+pdb_realloc: z =3D 26
+pdb_realloc: z =3D 27
+pdb_realloc: z =3D 28
+pdb_realloc: z =3D 29
+pdb_realloc: z =3D 30
+pdb_realloc: z =3D 31
+pdb_realloc: z =3D 32
+pdb_realloc: z =3D 33
+pdb_realloc: z =3D 34
+pdb_realloc: z =3D 35
+pdb_realloc: z =3D 36
+pdb_realloc: z =3D 37
+pdb_realloc: z =3D 38
+pdb_realloc: z =3D 39
+pdb_realloc: z =3D 40
+pdb_realloc: z =3D 41
+pdb_realloc: z =3D 42
+pdb_realloc: z =3D 43
+pdb_realloc: z =3D 44
+pdb_realloc: z =3D 45
+pdb_realloc: z =3D 46
+pdb_realloc: z =3D 47
+pdb_realloc: z =3D 48
+pdb_realloc: z =3D 49
+pdb_realloc: z =3D 50
+pdb_realloc: z =3D 51
+pdb_realloc: z =3D 52
+pdb_realloc: z =3D 53
+pdb_realloc: z =3D 54
+pdb_realloc: z =3D 55
+pdb_realloc: z =3D 56
+pdb_realloc: z =3D 57
+pdb_realloc: z =3D 58
+pdb_realloc: z =3D 59
+pdb_realloc: z =3D 60
+pdb_realloc: z =3D 61
+pdb_realloc: z =3D 62
+pdb_realloc: z =3D 63
+pdb_realloc: z =3D 64
+pdb_realloc: z =3D 65
+pdb_realloc: z =3D 66
+pdb_realloc: z =3D 67
+pdb_realloc: z =3D 68
+pdb_realloc: z =3D 69
+pdb_realloc: z =3D 70
+pdb_realloc: z =3D 71
+pdb_realloc: z =3D 72
+pdb_realloc: z =3D 73
+pdb_realloc: z =3D 74
+pdb_realloc: z =3D 75
+pdb_realloc: z =3D 76
+pdb_realloc: z =3D 77
+pdb_realloc: z =3D 78
+pdb_realloc: z =3D 79
+pdb_realloc: z =3D 80
+pdb_realloc: z =3D 81
+pdb_realloc: z =3D 82
+pdb_realloc: z =3D 83
+pdb_realloc: z =3D 84
+pdb_realloc: z =3D 85
+pdb_realloc: z =3D 86
+pdb_realloc: z =3D 87
+pdb_realloc: z =3D 88
+pdb_realloc: z =3D 89
+pdb_realloc: z =3D 90
+pdb_realloc: z =3D 91
+pdb_realloc: z =3D 92
+pdb_realloc: z =3D 93
+pdb_realloc: z =3D 94
+pdb_realloc: z =3D 95
+pdb_realloc: z =3D 96
+pdb_realloc: z =3D 97
+pdb_realloc: z =3D 98
+pdb_realloc: z =3D 99
+pdb-realloc2: done
Added: trunk/memcheck/tests/pdb-realloc2.vgtest
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/memcheck/tests/pdb-realloc2.vgtest (rev=
0)
+++ trunk/memcheck/tests/pdb-realloc2.vgtest 2006-05-03 00:43:20 UTC (rev=
5875)
@@ -0,0 +1,2 @@
+prog: pdb-realloc2
+vgopts: -q
|