diff options
author | Kito Cheng <kito.cheng@sifive.com> | 2019-08-19 03:21:44 +0000 |
---|---|---|
committer | Kito Cheng <kito@gcc.gnu.org> | 2019-08-19 03:21:44 +0000 |
commit | 6490e2556dc1ae5346ef73022ff1e415c35742ad (patch) | |
tree | af44f80923754951c1b569f8d66cda8eaf956d12 | |
parent | 88898d1e1ec4e2240b52818cef4981dd85585a31 (diff) | |
download | gcc-6490e2556dc1ae5346ef73022ff1e415c35742ad.zip gcc-6490e2556dc1ae5346ef73022ff1e415c35742ad.tar.gz gcc-6490e2556dc1ae5346ef73022ff1e415c35742ad.tar.bz2 |
PR target/91441 - Turn off -fsanitize=kernel-address if TARGET_ASAN_SHADOW_OFFSET is not implemented.
- -fsanitize=kernel-address will call targetm.asan_shadow_offset ()
at asan_shadow_offset, so it will crash if TARGET_ASAN_SHADOW_OFFSET
is not implemented, that's mean -fsanitize=kernel-address is not
supported for target without TARGET_ASAN_SHADOW_OFFSET implementation.
gcc/ChangeLog:
PR target/91441
* toplev.c (process_options): Check TARGET_ASAN_SHADOW_OFFSET is
implemented for -fsanitize=kernel-address, and merge check logic
with -fsanitize=address.
testsuite/ChangeLog:
PR target/91441
* gcc.target/riscv/pr91441.c: New.
From-SVN: r274631
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/riscv/pr91441.c | 10 | ||||
-rw-r--r-- | gcc/toplev.c | 10 |
4 files changed, 23 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bf0dbe0..fb32bb1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-08-19 Kito Cheng <kito.cheng@sifive.com> + + PR target/91441 + * toplev.c (process_options): Check TARGET_ASAN_SHADOW_OFFSET is + implemented for -fsanitize=kernel-address, and merge check logic + with -fsanitize=address. + 2019-08-18 Iain Sandoe <iain@sandoe.co.uk> * config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Add asserts diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dc44897..96f259e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-08-19 Kito Cheng <kito.cheng@sifive.com> + + PR target/91441 + * gcc.target/riscv/pr91441.c: New. + 2019-08-18 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/91485 diff --git a/gcc/testsuite/gcc.target/riscv/pr91441.c b/gcc/testsuite/gcc.target/riscv/pr91441.c new file mode 100644 index 0000000..593a297 --- /dev/null +++ b/gcc/testsuite/gcc.target/riscv/pr91441.c @@ -0,0 +1,10 @@ +/* PR target/91441 */ +/* { dg-do compile } */ +/* { dg-options "--param asan-stack=1 -fsanitize=kernel-address" } */ + +int *bar(int *); +int *f( int a) +{ + return bar(&a); +} +/* { dg-warning ".'-fsanitize=address' and '-fsanitize=kernel-address' are not supported for this target" "" { target *-*-* } 0 } */ diff --git a/gcc/toplev.c b/gcc/toplev.c index 7e0b921..ddbb8b4 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -1744,7 +1744,7 @@ process_options (void) /* Address Sanitizer needs porting to each target architecture. */ if ((flag_sanitize & SANITIZE_ADDRESS) - && !FRAME_GROWS_DOWNWARD) + && (!FRAME_GROWS_DOWNWARD || targetm.asan_shadow_offset == NULL)) { warning_at (UNKNOWN_LOCATION, 0, "%<-fsanitize=address%> and %<-fsanitize=kernel-address%> " @@ -1752,14 +1752,6 @@ process_options (void) flag_sanitize &= ~SANITIZE_ADDRESS; } - if ((flag_sanitize & SANITIZE_USER_ADDRESS) - && targetm.asan_shadow_offset == NULL) - { - warning_at (UNKNOWN_LOCATION, 0, - "%<-fsanitize=address%> not supported for this target"); - flag_sanitize &= ~SANITIZE_ADDRESS; - } - /* Do not use IPA optimizations for register allocation if profiler is active or patchable function entries are inserted for run-time instrumentation or port does not emit prologue and epilogue as RTL. */ |