Commit 6490e255 by Kito Cheng Committed by Kito Cheng

PR target/91441 - Turn off -fsanitize=kernel-address if…

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
parent 88898d1e
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> 2019-08-18 Iain Sandoe <iain@sandoe.co.uk>
* config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Add asserts * config/rs6000/darwin.h (TARGET_OS_CPP_BUILTINS): Add asserts
......
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> 2019-08-18 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/91485 PR fortran/91485
......
/* 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 } */
...@@ -1744,7 +1744,7 @@ process_options (void) ...@@ -1744,7 +1744,7 @@ process_options (void)
/* Address Sanitizer needs porting to each target architecture. */ /* Address Sanitizer needs porting to each target architecture. */
if ((flag_sanitize & SANITIZE_ADDRESS) if ((flag_sanitize & SANITIZE_ADDRESS)
&& !FRAME_GROWS_DOWNWARD) && (!FRAME_GROWS_DOWNWARD || targetm.asan_shadow_offset == NULL))
{ {
warning_at (UNKNOWN_LOCATION, 0, warning_at (UNKNOWN_LOCATION, 0,
"%<-fsanitize=address%> and %<-fsanitize=kernel-address%> " "%<-fsanitize=address%> and %<-fsanitize=kernel-address%> "
...@@ -1752,14 +1752,6 @@ process_options (void) ...@@ -1752,14 +1752,6 @@ process_options (void)
flag_sanitize &= ~SANITIZE_ADDRESS; 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 /* Do not use IPA optimizations for register allocation if profiler is active
or patchable function entries are inserted for run-time instrumentation or patchable function entries are inserted for run-time instrumentation
or port does not emit prologue and epilogue as RTL. */ or port does not emit prologue and epilogue as RTL. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment