diff options
author | Martin Liska <mliska@suse.cz> | 2018-02-05 12:01:50 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2018-02-05 11:01:50 +0000 |
commit | 4c4f3c3fefc61ca5045a6c1d7592786e2cf57499 (patch) | |
tree | 47f182084e3c2b708b3cf75ae1acf6cb4705feaf /gcc | |
parent | ba26157992975c2cdad2020571cdabf77a5b7c41 (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 10 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/asan/pointer-compare-1.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/asan/pointer-compare-2.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/asan/pointer-compare-3.c | 39 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/asan/pointer-subtract-1.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/asan/pointer-subtract-2.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/asan/pointer-subtract-3.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/c-c++-common/asan/pointer-subtract-4.c | 2 |
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 } } */ |