diff options
author | Max Ostapenko <m.ostapenko@partner.samsung.com> | 2014-01-09 09:31:05 +0200 |
---|---|---|
committer | Maxim Ostapenko <chefmax@gcc.gnu.org> | 2014-01-09 09:31:05 +0200 |
commit | b5ebc9914050506a8cc40fd63d8aacbeed65f600 (patch) | |
tree | 58efd7774e722299ff68ff8583b43da062decab9 /gcc/cfgexpand.c | |
parent | b59e0455e1ecaa3183b9c9c8b56286b39c35ee55 (diff) | |
download | gcc-b5ebc9914050506a8cc40fd63d8aacbeed65f600.zip gcc-b5ebc9914050506a8cc40fd63d8aacbeed65f600.tar.gz gcc-b5ebc9914050506a8cc40fd63d8aacbeed65f600.tar.bz2 |
cfgexpand.c (expand_stack_vars): Optionally disable asan stack protection.
2014-01-09 Max Ostapenko <m.ostapenko@partner.samsung.com>
* cfgexpand.c (expand_stack_vars): Optionally disable
asan stack protection.
(expand_used_vars): Likewise.
(partition_stack_vars): Likewise.
* asan.c (asan_emit_stack_protection): Optionally disable
after return stack usage.
(instrument_derefs): Optionally disable memory
access instrumentation.
(instrument_builtin_call): Likewise.
(instrument_strlen_call): Likewise.
(asan_protect_global): Optionally disable
global variables protection.
* doc/invoke.texi: Added doc for new options.
* params.def: Added new options.
* params.h: Likewise.
2014-01-09 Max Ostapenko <m.ostapenko@partner.samsung.com>
* c-c++-common/asan/no-asan-globals.c: New test.
* c-c++-common/asan/no-instrument-reads.c: Likewise.
* c-c++-common/asan/no-instrument-writes.c: Likewise.
* c-c++-common/asan/use-after-return-1.c: Likewise.
* c-c++-common/asan/no-use-after-return.c: Likewise.
From-SVN: r206458
Diffstat (limited to 'gcc/cfgexpand.c')
-rw-r--r-- | gcc/cfgexpand.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 0008be9..5f14d81 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -798,7 +798,7 @@ partition_stack_vars (void) sizes, as the shorter vars wouldn't be adequately protected. Don't do that for "large" (unsupported) alignment objects, those aren't protected anyway. */ - if ((flag_sanitize & SANITIZE_ADDRESS) && isize != jsize + if ((flag_sanitize & SANITIZE_ADDRESS) && ASAN_STACK && isize != jsize && ialign * BITS_PER_UNIT <= MAX_SUPPORTED_STACK_ALIGNMENT) break; @@ -981,7 +981,7 @@ expand_stack_vars (bool (*pred) (size_t), struct stack_vars_data *data) if (alignb * BITS_PER_UNIT <= MAX_SUPPORTED_STACK_ALIGNMENT) { base = virtual_stack_vars_rtx; - if ((flag_sanitize & SANITIZE_ADDRESS) && pred) + if ((flag_sanitize & SANITIZE_ADDRESS) && ASAN_STACK && pred) { HOST_WIDE_INT prev_offset = frame_offset; tree repr_decl = NULL_TREE; @@ -1160,7 +1160,7 @@ defer_stack_allocation (tree var, bool toplevel) /* If stack protection is enabled, *all* stack variables must be deferred, so that we can re-order the strings to the top of the frame. Similarly for Address Sanitizer. */ - if (flag_stack_protect || (flag_sanitize & SANITIZE_ADDRESS)) + if (flag_stack_protect || ((flag_sanitize & SANITIZE_ADDRESS) && ASAN_STACK)) return true; /* We handle "large" alignment via dynamic allocation. We want to handle @@ -1820,7 +1820,7 @@ expand_used_vars (void) expand_stack_vars (stack_protect_decl_phase_2, &data); } - if (flag_sanitize & SANITIZE_ADDRESS) + if ((flag_sanitize & SANITIZE_ADDRESS) && ASAN_STACK) /* Phase 3, any partitions that need asan protection in addition to phase 1 and 2. */ expand_stack_vars (asan_decl_phase_3, &data); |