1 // RUN: %clangxx_asan -O2 %s -o %t
2 // RUN: not %run %t -2 2>&1 | FileCheck --check-prefix=CHECK-m2 %s
3 // RUN: not %run %t -1 2>&1 | FileCheck --check-prefix=CHECK-m1 %s
6 // RUN: not %run %t 9 2>&1 | FileCheck --check-prefix=CHECK-9 %s
7 // RUN: not %run %t 10 2>&1 | FileCheck --check-prefix=CHECK-10 %s
8 // RUN: not %run %t 30 2>&1 | FileCheck --check-prefix=CHECK-30 %s
9 // RUN: not %run %t 31 2>&1 | FileCheck --check-prefix=CHECK-31 %s
10 // RUN: not %run %t 41 2>&1 | FileCheck --check-prefix=CHECK-41 %s
11 // RUN: not %run %t 42 2>&1 | FileCheck --check-prefix=CHECK-42 %s
12 // RUN: not %run %t 62 2>&1 | FileCheck --check-prefix=CHECK-62 %s
13 // RUN: not %run %t 63 2>&1 | FileCheck --check-prefix=CHECK-63 %s
14 // RUN: not %run %t 73 2>&1 | FileCheck --check-prefix=CHECK-73 %s
15 // RUN: not %run %t 74 2>&1 | FileCheck --check-prefix=CHECK-74 %s
20 int main(int argc
, char **argv
) {
22 int idx
= atoi(argv
[1]);
23 char AAA
[10], BBB
[10], CCC
[10];
24 memset(AAA
, 0, sizeof(AAA
));
25 memset(BBB
, 0, sizeof(BBB
));
26 memset(CCC
, 0, sizeof(CCC
));
29 printf("AAA: %p\ny: %p\nz: %p\np: %p\n", AAA
, BBB
, CCC
, p
);
30 // make sure BBB and CCC are not removed;
31 return *(short*)(p
) + BBB
[argc
% 2] + CCC
[argc
% 2];
33 // CHECK-m2: 'AAA'{{.*}} <== {{.*}}underflows this variable
34 // CHECK-m1: 'AAA'{{.*}} <== {{.*}}partially underflows this variable
35 // CHECK-9: 'AAA'{{.*}} <== {{.*}}partially overflows this variable
36 // CHECK-10: 'AAA'{{.*}} <== {{.*}}overflows this variable
37 // CHECK-30: 'BBB'{{.*}} <== {{.*}}underflows this variable
38 // CHECK-31: 'BBB'{{.*}} <== {{.*}}partially underflows this variable
39 // CHECK-41: 'BBB'{{.*}} <== {{.*}}partially overflows this variable
40 // CHECK-42: 'BBB'{{.*}} <== {{.*}}overflows this variable
41 // CHECK-62: 'CCC'{{.*}} <== {{.*}}underflows this variable
42 // CHECK-63: 'CCC'{{.*}} <== {{.*}}partially underflows this variable
43 // CHECK-73: 'CCC'{{.*}} <== {{.*}}partially overflows this variable
44 // CHECK-74: 'CCC'{{.*}} <== {{.*}}overflows this variable
45 // REQUIRES: shadow-scale-3