aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/c-c++-common/asan
diff options
context:
space:
mode:
authorYury Gribov <y.gribov@samsung.com>2014-10-28 10:33:04 +0000
committerYury Gribov <ygribov@gcc.gnu.org>2014-10-28 10:33:04 +0000
commitfed4de37b870faad50374a63aa1cf68a97963da6 (patch)
treed89db50eee01910485a109af95f83b25923b4462 /gcc/testsuite/c-c++-common/asan
parentfd960af2df5a437302039f248a542354ee4cddcf (diff)
downloadgcc-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')
-rw-r--r--gcc/testsuite/c-c++-common/asan/instrument-with-calls-1.c5
-rw-r--r--gcc/testsuite/c-c++-common/asan/instrument-with-calls-2.c5
-rw-r--r--gcc/testsuite/c-c++-common/asan/instrument-with-calls-3.c5
-rw-r--r--gcc/testsuite/c-c++-common/asan/kasan-recover-1.c11
-rw-r--r--gcc/testsuite/c-c++-common/asan/kasan-recover-2.c11
-rw-r--r--gcc/testsuite/c-c++-common/asan/no-asan-globals.c5
-rw-r--r--gcc/testsuite/c-c++-common/asan/no-instrument-reads.c5
-rw-r--r--gcc/testsuite/c-c++-common/asan/no-instrument-writes.c5
-rw-r--r--gcc/testsuite/c-c++-common/asan/no-use-after-return.c5
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 } } */