]>
Commit | Line | Data |
---|---|---|
92a42be0 | 1 | // RUN: %clangxx_msan -O0 -g %s -o %t && %run %t >%t.out 2>&1 |
1a4d82fc JJ |
2 | // RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NO-ORIGINS < %t.out |
3 | ||
92a42be0 | 4 | // RUN: %clangxx_msan -fsanitize-memory-track-origins -O0 -g %s -o %t && %run %t >%t.out 2>&1 |
1a4d82fc JJ |
5 | // RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-ORIGINS < %t.out |
6 | ||
92a42be0 | 7 | // RUN: %clangxx_msan -fsanitize-memory-track-origins=2 -O0 -g %s -o %t && %run %t >%t.out 2>&1 |
1a4d82fc JJ |
8 | // RUN: FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-ORIGINS --check-prefix=CHECK-ORIGINS-2 < %t.out |
9 | ||
10 | #include <sanitizer/msan_interface.h> | |
11 | ||
12 | int main(void) { | |
13 | char volatile x; | |
14 | char *p = new char[320]; | |
15 | p[2] = p[5] = 1; | |
16 | p[8] = p[9] = p[10] = p[11] = p[12] = 2; | |
17 | ||
18 | __msan_allocated_memory(p + 4*3, 4); | |
19 | __msan_allocated_memory(p + 4*4, 4); | |
20 | __msan_allocated_memory(p + 4*5, 4); | |
21 | __msan_allocated_memory(p + 4*6, 4); | |
22 | __msan_allocated_memory(p + 4*7, 4); | |
23 | __msan_allocated_memory(p + 4*8, 4); | |
24 | __msan_allocated_memory(p + 4*9, 4); | |
25 | __msan_allocated_memory(p + 4*10, 4); | |
26 | __msan_allocated_memory(p + 4*11, 4); | |
27 | __msan_allocated_memory(p + 4*12, 4); | |
28 | __msan_allocated_memory(p + 4*13, 4); | |
29 | __msan_allocated_memory(p + 4*14, 4); | |
30 | __msan_allocated_memory(p + 4*15, 4); | |
31 | __msan_allocated_memory(p + 4*16, 4); | |
32 | __msan_allocated_memory(p + 4*17, 4); | |
33 | __msan_allocated_memory(p + 4*18, 4); | |
34 | __msan_allocated_memory(p + 4*19, 4); | |
35 | __msan_allocated_memory(p + 4*20, 4); | |
36 | __msan_allocated_memory(p + 4*21, 4); | |
37 | __msan_allocated_memory(p + 4*22, 4); | |
38 | __msan_allocated_memory(p + 4*23, 4); | |
39 | __msan_allocated_memory(p + 4*24, 4); | |
40 | __msan_allocated_memory(p + 4*25, 4); | |
41 | __msan_allocated_memory(p + 4*26, 4); | |
42 | __msan_allocated_memory(p + 4*27, 4); | |
43 | __msan_allocated_memory(p + 4*28, 4); | |
44 | __msan_allocated_memory(p + 4*29, 4); | |
45 | __msan_allocated_memory(p + 4*30, 4); | |
46 | __msan_allocated_memory(p + 4*31, 4); | |
47 | ||
48 | p[19] = x; | |
49 | ||
50 | __msan_print_shadow(p+5, 297); | |
51 | delete[] p; | |
52 | return 0; | |
53 | } | |
54 | ||
55 | // CHECK: Shadow map of [{{.*}}), 297 bytes: | |
56 | ||
57 | // CHECK-NO-ORIGINS: 0x{{.*}}: ..00ffff 00000000 ffffffff ffffffff | |
58 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
59 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
60 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
61 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
62 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
63 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
64 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
65 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
66 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
67 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
68 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
69 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
70 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
71 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
72 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
73 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
74 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff | |
75 | // CHECK-NO-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffff.... ........ | |
76 | ||
77 | // CHECK-ORIGINS: 0x{{.*}}: ..00ffff 00000000 ffffffff ffffffff |A . B C| | |
78 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |D E F G| | |
79 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |H I J K| | |
80 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |L M N O| | |
81 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |P Q R S| | |
82 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |T U V W| | |
83 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |X Y Z *| | |
84 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |* * * A| | |
85 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |A A A A| | |
86 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |A A A A| | |
87 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |A A A A| | |
88 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |A A A A| | |
89 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |A A A A| | |
90 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |A A A A| | |
91 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |A A A A| | |
92 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |A A A A| | |
93 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |A A A A| | |
94 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffffffff ffffffff |A A A A| | |
95 | // CHECK-ORIGINS: 0x{{.*}}: ffffffff ffffffff ffff.... ........ |A A A .| | |
96 | ||
97 | // CHECK-ORIGINS: Origin A (origin_id {{.*}}): | |
98 | // CHECK-ORIGINS: Uninitialized value was created by a heap allocation | |
99 | // CHECK-ORIGINS: #1 {{.*}} in main{{.*}}msan_print_shadow.cc:14 | |
100 | ||
101 | // CHECK-ORIGINS: Origin B (origin_id {{.*}}): | |
92a42be0 | 102 | // CHECK-ORIGINS: Memory was marked as uninitialized |
1a4d82fc JJ |
103 | // CHECK-ORIGINS: #0 {{.*}} in __msan_allocated_memory |
104 | // CHECK-ORIGINS: #1 {{.*}} in main{{.*}}msan_print_shadow.cc:18 | |
105 | ||
106 | // CHECK-ORIGINS: Origin C (origin_id {{.*}}): | |
107 | // CHECK-ORIGINS-2: Uninitialized value was stored to memory at | |
108 | // CHECK-ORIGINS-2: #0 {{.*}} in main{{.*}}msan_print_shadow.cc:48 | |
109 | // CHECK-ORIGINS: Uninitialized value was created by an allocation of 'x' in the stack frame of function 'main' | |
110 | // CHECK-ORIGINS: #0 {{.*}} in main{{.*}}msan_print_shadow.cc:12 | |
111 | ||
112 | // CHECK-ORIGINS: Origin D (origin_id {{.*}}): | |
92a42be0 | 113 | // CHECK-ORIGINS: Memory was marked as uninitialized |
1a4d82fc JJ |
114 | // CHECK-ORIGINS: #0 {{.*}} in __msan_allocated_memory |
115 | // CHECK-ORIGINS: #1 {{.*}} in main{{.*}}msan_print_shadow.cc:20 | |
116 | ||
117 | // ... | |
118 | ||
119 | // CHECK-ORIGINS: Origin Z (origin_id {{.*}}): | |
92a42be0 | 120 | // CHECK-ORIGINS: Memory was marked as uninitialized |
1a4d82fc JJ |
121 | // CHECK-ORIGINS: #0 {{.*}} in __msan_allocated_memory |
122 | // CHECK-ORIGINS: #1 {{.*}} in main{{.*}}msan_print_shadow.cc:42 |