File tree Expand file tree Collapse file tree 2 files changed +56
-0
lines changed Expand file tree Collapse file tree 2 files changed +56
-0
lines changed Original file line number Diff line number Diff line change 1+ // RUN: %clangxx -fsanitize=local-bounds %s -O3 -o %t && %run %t 1
2+ // RUN: %clangxx -fsanitize=local-bounds %s -O3 -o %t && not --crash %run %t 3
3+
4+ // FIXME: it's always trap for now.
5+
6+ #include < cstdlib>
7+
8+ struct S {
9+ int k;
10+ int l;
11+ };
12+
13+ __attribute__ ((noinline)) void init(S *s) {
14+ __asm__ __volatile__ (" " : : " r" (s) : " memory" );
15+ }
16+
17+ __attribute__ ((noinline, no_sanitize(" memory" ))) int test(char i) {
18+ S a;
19+ init (&a);
20+ S b;
21+ init (&b);
22+ return ((int *)(&a))[i];
23+ }
24+
25+ int main (int argc, char **argv) {
26+ test (argv[1 ][0 ] - ' 0' );
27+ return 0 ;
28+ }
Original file line number Diff line number Diff line change 1+ // RUN: %clangxx -fsanitize=local-bounds %s -O3 -o %t && %run %t 1
2+ // RUN: %clangxx -fsanitize=local-bounds %s -O3 -o %t && not --crash %run %t 3
3+
4+ // FIXME: it's always trap for now.
5+
6+ #include < cstdlib>
7+
8+ struct S {
9+ int k;
10+ int l;
11+ };
12+
13+ __attribute__ ((noinline)) void init(S *s) {
14+ __asm__ __volatile__ (" " : : " r" (s) : " memory" );
15+ }
16+
17+ __attribute__ ((noinline, no_sanitize(" memory" ))) int test(char i) {
18+ S a;
19+ init (&a);
20+ S b;
21+ init (&b);
22+ return ((int *)(&a))[i];
23+ }
24+
25+ int main (int argc, char **argv) {
26+ test (argv[1 ][0 ] - ' 0' );
27+ return 0 ;
28+ }
You can’t perform that action at this time.
0 commit comments