summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2014-10-17 15:21:34 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2014-10-17 15:21:34 +0000
commit9b9486117f0981d2a722c072d87b268e60d5e930 (patch)
tree88bc5fc15de1c5a194b54b61591c61b5855ac284
parent4084916f0c309a11997dc4686ef092f0a4406f43 (diff)
downloadppe42-gcc-9b9486117f0981d2a722c072d87b268e60d5e930.tar.gz
ppe42-gcc-9b9486117f0981d2a722c072d87b268e60d5e930.zip
* asan.c (instrument_derefs): Allow instrumentation of odd-sized
accesses even for -fsanitize=address. (execute_sanopt): Only allow use_calls for -fsanitize=kernel-address. * c-c++-common/asan/instrument-with-calls-1.c: Add -fno-sanitize=address -fsanitize=kernel-address to dg-options. * c-c++-common/asan/instrument-with-calls-2.c: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@216408 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/asan.c5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/c-c++-common/asan/instrument-with-calls-1.c2
-rw-r--r--gcc/testsuite/c-c++-common/asan/instrument-with-calls-2.c2
5 files changed, 11 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a5b37aafeb8..32ba5954eb9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2014-10-17 Jakub Jelinek <jakub@redhat.com>
+ * asan.c (instrument_derefs): Allow instrumentation of odd-sized
+ accesses even for -fsanitize=address.
+ (execute_sanopt): Only allow use_calls for -fsanitize=kernel-address.
+
PR tree-optimization/63302
* tree-ssa-reassoc.c (optimize_range_tests_xor,
optimize_range_tests_diff): Use !integer_pow2p () instead of
diff --git a/gcc/asan.c b/gcc/asan.c
index db4e3a0e0ba..7c27fe70d67 100644
--- a/gcc/asan.c
+++ b/gcc/asan.c
@@ -1707,10 +1707,6 @@ instrument_derefs (gimple_stmt_iterator *iter, tree t,
size_in_bytes = int_size_in_bytes (type);
if (size_in_bytes <= 0)
return;
- if ((flag_sanitize & SANITIZE_USER_ADDRESS) != 0
- && ((size_in_bytes & (size_in_bytes - 1)) != 0
- || (unsigned HOST_WIDE_INT) size_in_bytes - 1 >= 16))
- return;
HOST_WIDE_INT bitsize, bitpos;
tree offset;
@@ -2781,6 +2777,7 @@ execute_sanopt (void)
}
bool use_calls = ASAN_INSTRUMENTATION_WITH_CALL_THRESHOLD < INT_MAX
+ && (flag_sanitize & SANITIZE_KERNEL_ADDRESS)
&& asan_num_accesses >= ASAN_INSTRUMENTATION_WITH_CALL_THRESHOLD;
FOR_EACH_BB_FN (bb, cfun)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index b19250749e7..36399624b23 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,9 @@
2014-10-17 Jakub Jelinek <jakub@redhat.com>
+ * c-c++-common/asan/instrument-with-calls-1.c: Add
+ -fno-sanitize=address -fsanitize=kernel-address to dg-options.
+ * c-c++-common/asan/instrument-with-calls-2.c: Likewise.
+
PR tree-optimization/63302
* gcc.c-torture/execute/pr63302.c: New test.
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 80f76205760..32e32a600cb 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-options "-fno-sanitize=address -fsanitize=kernel-address --param asan-instrumentation-with-call-threshold=0 -save-temps" } */
void f(char *a, int *b) {
*b = *a;
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 04fdad09d72..1b361e6270d 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-options "-fno-sanitize=address -fsanitize=kernel-address --param asan-instrumentation-with-call-threshold=1 -save-temps" } */
int x;
OpenPOWER on IntegriCloud