diff options
author | Yury Gribov <y.gribov@samsung.com> | 2014-10-28 10:33:04 +0000 |
---|---|---|
committer | Yury Gribov <ygribov@gcc.gnu.org> | 2014-10-28 10:33:04 +0000 |
commit | fed4de37b870faad50374a63aa1cf68a97963da6 (patch) | |
tree | d89db50eee01910485a109af95f83b25923b4462 /gcc/testsuite/c-c++-common/asan | |
parent | fd960af2df5a437302039f248a542354ee4cddcf (diff) | |
download | gcc-fed4de37b870faad50374a63aa1cf68a97963da6.zip gcc-fed4de37b870faad50374a63aa1cf68a97963da6.tar.gz gcc-fed4de37b870faad50374a63aa1cf68a97963da6.tar.bz2 |
Enable -fsanitize-recover for KASan.
2014-10-28 Yury Gribov <y.gribov@samsung.com>
gcc/
* asan.c (report_error_func): Add noabort path.
(check_func): Ditto. Formatting.
(asan_expand_check_ifn): Handle noabort path.
* common.opt (flag_sanitize_recover): Add SANITIZE_KERNEL_ADDRESS
to default value.
* doc/invoke.texi (-fsanitize-recover=): Mention KASan.
* opts.c (finish_options): Reword comment.
* sanitizer.def: Add noabort ASan builtins.
gcc/testsuite/
* c-c++-common/asan/kasan-recover-1.c: New test.
* c-c++-common/asan/kasan-recover-2.c: New test.
* c-c++-common/asan/instrument-with-calls-1.c: Get rid of -save-temps.
* c-c++-common/asan/instrument-with-calls-2.c: Likewise.
* c-c++-common/asan/instrument-with-calls-3.c: Likewise.
* c-c++-common/asan/kasan-recover-1.c: Likewise.
* c-c++-common/asan/kasan-recover-2.c: Likewise.
* c-c++-common/asan/no-asan-globals.c: Likewise.
* c-c++-common/asan/no-instrument-reads.c: Likewise.
* c-c++-common/asan/no-instrument-writes.c: Likewise.
* c-c++-common/asan/no-use-after-return.c: Likewise.
From-SVN: r216778
Diffstat (limited to 'gcc/testsuite/c-c++-common/asan')
9 files changed, 36 insertions, 21 deletions
diff --git a/gcc/testsuite/c-c++-common/asan/instrument-with-calls-1.c b/gcc/testsuite/c-c++-common/asan/instrument-with-calls-1.c index 80f7620..a08b98a 100644 --- a/gcc/testsuite/c-c++-common/asan/instrument-with-calls-1.c +++ b/gcc/testsuite/c-c++-common/asan/instrument-with-calls-1.c @@ -1,5 +1,5 @@ -/* { dg-do assemble } */ -/* { dg-options "--param asan-instrumentation-with-call-threshold=0 -save-temps" } */ +/* { dg-do compile } */ +/* { dg-options "--param asan-instrumentation-with-call-threshold=0" } */ void f(char *a, int *b) { *b = *a; @@ -7,4 +7,3 @@ void f(char *a, int *b) { /* { dg-final { scan-assembler "__asan_load1" } } */ /* { dg-final { scan-assembler "__asan_store4" } } */ -/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/c-c++-common/asan/instrument-with-calls-2.c b/gcc/testsuite/c-c++-common/asan/instrument-with-calls-2.c index 04fdad0..217410c 100644 --- a/gcc/testsuite/c-c++-common/asan/instrument-with-calls-2.c +++ b/gcc/testsuite/c-c++-common/asan/instrument-with-calls-2.c @@ -1,5 +1,5 @@ -/* { dg-do assemble } */ -/* { dg-options "--param asan-instrumentation-with-call-threshold=1 -save-temps" } */ +/* { dg-do compile } */ +/* { dg-options "--param asan-instrumentation-with-call-threshold=1" } */ int x; @@ -13,4 +13,3 @@ void f(int *a, int *b) { /* { dg-final { scan-assembler-not "__asan_report_store4" } } */ /* { dg-final { scan-assembler "__asan_load4" } } */ /* { dg-final { scan-assembler-not "__asan_report_load4" } } */ -/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/c-c++-common/asan/instrument-with-calls-3.c b/gcc/testsuite/c-c++-common/asan/instrument-with-calls-3.c index 3712c7a5..6dbd549 100644 --- a/gcc/testsuite/c-c++-common/asan/instrument-with-calls-3.c +++ b/gcc/testsuite/c-c++-common/asan/instrument-with-calls-3.c @@ -1,5 +1,5 @@ -/* { dg-do assemble } */ -/* { dg-options "--param asan-instrumentation-with-call-threshold=0 -save-temps" } */ +/* { dg-do compile } */ +/* { dg-options "--param asan-instrumentation-with-call-threshold=0" } */ struct A { char x[7]; @@ -11,5 +11,4 @@ void f(struct A *x, struct A *y) { /* { dg-final { scan-assembler "__asan_loadN" } } */ /* { dg-final { scan-assembler "__asan_storeN" } } */ -/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/c-c++-common/asan/kasan-recover-1.c b/gcc/testsuite/c-c++-common/asan/kasan-recover-1.c new file mode 100644 index 0000000..b7d3dda --- /dev/null +++ b/gcc/testsuite/c-c++-common/asan/kasan-recover-1.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-fno-sanitize=address -fsanitize=kernel-address --param asan-instrumentation-with-call-threshold=100" } */ + +void +foo (int *p) +{ + *p = 0; +} + +/* { dg-final { scan-assembler "__asan_report_store4_noabort" } } */ + diff --git a/gcc/testsuite/c-c++-common/asan/kasan-recover-2.c b/gcc/testsuite/c-c++-common/asan/kasan-recover-2.c new file mode 100644 index 0000000..03f29c1 --- /dev/null +++ b/gcc/testsuite/c-c++-common/asan/kasan-recover-2.c @@ -0,0 +1,11 @@ +/* { dg-do compile } */ +/* { dg-options "-fno-sanitize=address -fsanitize=kernel-address" } */ + +void +foo (int *p) +{ + *p = 0; +} + +/* { dg-final { scan-assembler "__asan_store4_noabort" } } */ + diff --git a/gcc/testsuite/c-c++-common/asan/no-asan-globals.c b/gcc/testsuite/c-c++-common/asan/no-asan-globals.c index 70a1f95..9bed29e 100644 --- a/gcc/testsuite/c-c++-common/asan/no-asan-globals.c +++ b/gcc/testsuite/c-c++-common/asan/no-asan-globals.c @@ -1,5 +1,5 @@ -/* { dg-do assemble } */ -/* { dg-options "-save-temps --param asan-globals=0" } */ +/* { dg-do compile } */ +/* { dg-options "--param asan-globals=0" } */ volatile int ten = 10; @@ -10,4 +10,3 @@ int main() { } /* { dg-final { scan-assembler-not "__asan_register_globals" } } */ -/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/c-c++-common/asan/no-instrument-reads.c b/gcc/testsuite/c-c++-common/asan/no-instrument-reads.c index df75878..00e96df 100644 --- a/gcc/testsuite/c-c++-common/asan/no-instrument-reads.c +++ b/gcc/testsuite/c-c++-common/asan/no-instrument-reads.c @@ -1,5 +1,5 @@ -/* { dg-do assemble } */ -/* { dg-options "--param asan-instrument-reads=0 -save-temps" } */ +/* { dg-do compile } */ +/* { dg-options "--param asan-instrument-reads=0" } */ volatile int ten = 10; @@ -10,4 +10,3 @@ int main() { } /* { dg-final { scan-assembler-not "__asan_load" } } */ -/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/c-c++-common/asan/no-instrument-writes.c b/gcc/testsuite/c-c++-common/asan/no-instrument-writes.c index c1500b9..45370a2 100644 --- a/gcc/testsuite/c-c++-common/asan/no-instrument-writes.c +++ b/gcc/testsuite/c-c++-common/asan/no-instrument-writes.c @@ -1,5 +1,5 @@ -/* { dg-do assemble } */ -/* { dg-options "--param asan-instrument-writes=0 -save-temps" } */ +/* { dg-do compile } */ +/* { dg-options "--param asan-instrument-writes=0" } */ volatile int ten = 10; @@ -10,4 +10,3 @@ int main() { } /* { dg-final { scan-assembler-not "__asan_store" } } */ -/* { dg-final { cleanup-saved-temps } } */ diff --git a/gcc/testsuite/c-c++-common/asan/no-use-after-return.c b/gcc/testsuite/c-c++-common/asan/no-use-after-return.c index f326e0c..afbc112 100644 --- a/gcc/testsuite/c-c++-common/asan/no-use-after-return.c +++ b/gcc/testsuite/c-c++-common/asan/no-use-after-return.c @@ -1,5 +1,5 @@ -/* { dg-do assemble } */ -/* { dg-options "--param asan-use-after-return=0 -save-temps" } */ +/* { dg-do compile } */ +/* { dg-options "--param asan-use-after-return=0" } */ extern void f(char *); @@ -10,4 +10,3 @@ int main() { } /* { dg-final { scan-assembler-not "__asan_option_detect_stack_use_after_return" } } */ -/* { dg-final { cleanup-saved-temps } } */ |