aboutsummaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2012-11-12 15:51:34 +0000
committerDodji Seketeli <dodji@redhat.com>2012-11-12 15:51:34 +0000
commit4a6f89a1b89f60702ad7920b953af3d2e158469d (patch)
tree4f0f7a2a85c05539f589338ab08d8fab607d18d7 /gcc/toplev.c
parentebf03bf71c50d4261da2103d3f01a079b6ef0167 (diff)
Initial asan cleanups
This patch defines a new asan_shadow_offset target macro, instead of having a mere macro in the asan.c file. It becomes thus cleaner to define the target macro for targets that supports asan, namely x86 for now. The ASAN_SHADOW_SHIFT (which, along with the asan_shadow_offset constant, is used to compute the address of the shadow memory byte for a given memory address) is defined in asan.h. gcc/ChangeLog * toplev.c (process_options): Warn and turn off -faddress-sanitizer if not supported by target. * asan.c: Include target.h. (asan_scale, asan_offset_log_32, asan_offset_log_64, asan_offset_log): Removed. (build_check_stmt): Use ASAN_SHADOW_SHIFT and targetm.asan_shadow_offset (). (asan_instrument): Don't initialize asan_offset_log. * asan.h (ASAN_SHADOW_SHIFT): Define. * target.def (TARGET_ASAN_SHADOW_OFFSET): New hook. * doc/tm.texi.in (TARGET_ASAN_SHADOW_OFFSET): Add it. * doc/tm.texi: Regenerated. * Makefile.in (asan.o): Depend on $(TARGET_H). * config/i386/i386.c (ix86_asan_shadow_offset): New function. (TARGET_ASAN_SHADOW_OFFSET): Define. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@193433 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r--gcc/toplev.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 3ca0736995e..d9dfb2a574e 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -1541,6 +1541,13 @@ process_options (void)
flag_omit_frame_pointer = 0;
}
+ /* Address Sanitizer needs porting to each target architecture. */
+ if (flag_asan && targetm.asan_shadow_offset == NULL)
+ {
+ warning (0, "-faddress-sanitizer not supported for this target");
+ flag_asan = 0;
+ }
+
/* Enable -Werror=coverage-mismatch when -Werror and -Wno-error
have not been set. */
if (!global_options_set.x_warnings_are_errors