aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2018-02-05 12:01:50 +0100
committerMartin Liska <marxin@gcc.gnu.org>2018-02-05 11:01:50 +0000
commit4c4f3c3fefc61ca5045a6c1d7592786e2cf57499 (patch)
tree47f182084e3c2b708b3cf75ae1acf6cb4705feaf /gcc
parentba26157992975c2cdad2020571cdabf77a5b7c41 (diff)
downloadgcc-4c4f3c3fefc61ca5045a6c1d7592786e2cf57499.zip
gcc-4c4f3c3fefc61ca5045a6c1d7592786e2cf57499.tar.gz
gcc-4c4f3c3fefc61ca5045a6c1d7592786e2cf57499.tar.bz2
Cherry-pick libsanitizer pointer-pair tristate option.
2018-02-05 Martin Liska <mliska@suse.cz> * doc/invoke.texi: Cherry-pick upstream r323995. 2018-02-05 Martin Liska <mliska@suse.cz> * c-c++-common/asan/pointer-compare-1.c: Adjust ASAN_OPTIONS options. * c-c++-common/asan/pointer-compare-2.c: Likewise. * c-c++-common/asan/pointer-subtract-1.c: Likewise. * c-c++-common/asan/pointer-subtract-2.c: Likewise. * c-c++-common/asan/pointer-subtract-3.c: Likewise. * c-c++-common/asan/pointer-subtract-4.c: Likewise. * c-c++-common/asan/pointer-compare-3.c: New test. 2018-02-05 Martin Liska <mliska@suse.cz> * asan/asan_flags.inc: Cherry-pick upstream r323995. * asan/asan_report.cc (CheckForInvalidPointerPair): Cherry-pick upstream r323995. From-SVN: r257387
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/doc/invoke.texi10
-rw-r--r--gcc/testsuite/ChangeLog11
-rw-r--r--gcc/testsuite/c-c++-common/asan/pointer-compare-1.c2
-rw-r--r--gcc/testsuite/c-c++-common/asan/pointer-compare-2.c2
-rw-r--r--gcc/testsuite/c-c++-common/asan/pointer-compare-3.c39
-rw-r--r--gcc/testsuite/c-c++-common/asan/pointer-subtract-1.c2
-rw-r--r--gcc/testsuite/c-c++-common/asan/pointer-subtract-2.c2
-rw-r--r--gcc/testsuite/c-c++-common/asan/pointer-subtract-3.c2
-rw-r--r--gcc/testsuite/c-c++-common/asan/pointer-subtract-4.c2
10 files changed, 66 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 363c617..e5a8c11 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2018-02-05 Martin Liska <mliska@suse.cz>
+
+ * doc/invoke.texi: Cherry-pick upstream r323995.
+
2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
* ira.c (ira_init_register_move_cost): Adjust comment.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index f3d9336..cf6d3ae 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -11165,8 +11165,9 @@ The option must be combined with either @option{-fsanitize=kernel-address} or
The option cannot be combined with @option{-fsanitize=thread}
and/or @option{-fcheck-pointer-bounds}.
Note: By default the check is disabled at run time. To enable it,
-add @code{detect_invalid_pointer_pairs=1} to the environment variable
-@env{ASAN_OPTIONS}.
+add @code{detect_invalid_pointer_pairs=2} to the environment variable
+@env{ASAN_OPTIONS}. Using @code{detect_invalid_pointer_pairs=1} detects
+invalid operation only when both pointers are non-null.
@item -fsanitize=pointer-subtract
@opindex fsanitize=pointer-subtract
@@ -11176,8 +11177,9 @@ The option must be combined with either @option{-fsanitize=kernel-address} or
The option cannot be combined with @option{-fsanitize=thread}
and/or @option{-fcheck-pointer-bounds}.
Note: By default the check is disabled at run time. To enable it,
-add @code{detect_invalid_pointer_pairs=1} to the environment variable
-@env{ASAN_OPTIONS}.
+add @code{detect_invalid_pointer_pairs=2} to the environment variable
+@env{ASAN_OPTIONS}. Using @code{detect_invalid_pointer_pairs=1} detects
+invalid operation only when both pointers are non-null.
@item -fsanitize=thread
@opindex fsanitize=thread
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3a87999..074e6ea 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,14 @@
+2018-02-05 Martin Liska <mliska@suse.cz>
+
+ * c-c++-common/asan/pointer-compare-1.c: Adjust ASAN_OPTIONS
+ options.
+ * c-c++-common/asan/pointer-compare-2.c: Likewise.
+ * c-c++-common/asan/pointer-subtract-1.c: Likewise.
+ * c-c++-common/asan/pointer-subtract-2.c: Likewise.
+ * c-c++-common/asan/pointer-subtract-3.c: Likewise.
+ * c-c++-common/asan/pointer-subtract-4.c: Likewise.
+ * c-c++-common/asan/pointer-compare-3.c: New test.
+
2018-02-05 Richard Sandiford <richard.sandiford@linaro.org>
* gcc.target/aarch64/sve/vcond_4.c: Remove XFAILs.
diff --git a/gcc/testsuite/c-c++-common/asan/pointer-compare-1.c b/gcc/testsuite/c-c++-common/asan/pointer-compare-1.c
index 2cc7395..cf67fe9 100644
--- a/gcc/testsuite/c-c++-common/asan/pointer-compare-1.c
+++ b/gcc/testsuite/c-c++-common/asan/pointer-compare-1.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=1:halt_on_error=0" } */
+/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=2:halt_on_error=0" } */
/* { dg-options "-fsanitize=address,pointer-compare" } */
volatile int v;
diff --git a/gcc/testsuite/c-c++-common/asan/pointer-compare-2.c b/gcc/testsuite/c-c++-common/asan/pointer-compare-2.c
index 5539087..d2142c8 100644
--- a/gcc/testsuite/c-c++-common/asan/pointer-compare-2.c
+++ b/gcc/testsuite/c-c++-common/asan/pointer-compare-2.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=1 halt_on_error=1" } */
+/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=2 halt_on_error=1" } */
/* { dg-options "-fsanitize=address,pointer-compare" } */
volatile int v;
diff --git a/gcc/testsuite/c-c++-common/asan/pointer-compare-3.c b/gcc/testsuite/c-c++-common/asan/pointer-compare-3.c
new file mode 100644
index 0000000..7156e49
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/asan/pointer-compare-3.c
@@ -0,0 +1,39 @@
+/* { dg-do run } */
+/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=1:halt_on_error=1" } */
+/* { dg-options "-fsanitize=address,pointer-compare" } */
+
+int foo(char *p, char *q) {
+ return p <= q;
+}
+
+char global[8192] = {};
+char small_global[7] = {};
+
+int main() {
+ // Heap allocated memory.
+ char *p = (char *)__builtin_malloc(42);
+ int r = foo(p, 0);
+ __builtin_free(p);
+
+ p = (char *)__builtin_malloc(1024);
+ foo(0, p);
+ __builtin_free(p);
+
+ p = (char *)__builtin_malloc(4096);
+ foo(p, 0);
+ __builtin_free(p);
+
+ // Global variable.
+ foo(&global[0], 0);
+ foo(&global[1000], 0);
+
+ p = &small_global[0];
+ foo(p, 0);
+
+ // Stack variable.
+ char stack[10000];
+ foo(&stack[0], 0);
+ foo(0, &stack[9000]);
+
+ return 0;
+}
diff --git a/gcc/testsuite/c-c++-common/asan/pointer-subtract-1.c b/gcc/testsuite/c-c++-common/asan/pointer-subtract-1.c
index 7cbef81..091a33f 100644
--- a/gcc/testsuite/c-c++-common/asan/pointer-subtract-1.c
+++ b/gcc/testsuite/c-c++-common/asan/pointer-subtract-1.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=1 halt_on_error=0" } */
+/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=2 halt_on_error=0" } */
/* { dg-options "-fsanitize=address,pointer-subtract" } */
volatile __PTRDIFF_TYPE__ v;
diff --git a/gcc/testsuite/c-c++-common/asan/pointer-subtract-2.c b/gcc/testsuite/c-c++-common/asan/pointer-subtract-2.c
index 6b65a16..7ef106c 100644
--- a/gcc/testsuite/c-c++-common/asan/pointer-subtract-2.c
+++ b/gcc/testsuite/c-c++-common/asan/pointer-subtract-2.c
@@ -1,5 +1,5 @@
/* { dg-do run } */
-/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=1 halt_on_error=1" } */
+/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=2 halt_on_error=1" } */
/* { dg-options "-fsanitize=address,pointer-subtract" } */
volatile __PTRDIFF_TYPE__ v;
diff --git a/gcc/testsuite/c-c++-common/asan/pointer-subtract-3.c b/gcc/testsuite/c-c++-common/asan/pointer-subtract-3.c
index 5cbcda9..7cae91b 100644
--- a/gcc/testsuite/c-c++-common/asan/pointer-subtract-3.c
+++ b/gcc/testsuite/c-c++-common/asan/pointer-subtract-3.c
@@ -1,5 +1,5 @@
/* { dg-do run { target pthread_h } } */
-/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=1:halt_on_error=1" } */
+/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=2:halt_on_error=1" } */
/* { dg-options "-fsanitize=address,pointer-subtract" } */
/* { dg-additional-options "-pthread" { target pthread } } */
diff --git a/gcc/testsuite/c-c++-common/asan/pointer-subtract-4.c b/gcc/testsuite/c-c++-common/asan/pointer-subtract-4.c
index 820f0aa..af65c59 100644
--- a/gcc/testsuite/c-c++-common/asan/pointer-subtract-4.c
+++ b/gcc/testsuite/c-c++-common/asan/pointer-subtract-4.c
@@ -1,6 +1,6 @@
/* { dg-do run { target pthread_h } } */
/* { dg-shouldfail "asan" } */
-/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=1:halt_on_error=1" } */
+/* { dg-set-target-env-var ASAN_OPTIONS "detect_invalid_pointer_pairs=2:halt_on_error=1" } */
/* { dg-options "-fsanitize=address,pointer-subtract" } */
/* { dg-additional-options "-pthread" { target pthread } } */