diff options
author | Jakub Jelinek <jakub@redhat.com> | 2015-01-06 10:52:06 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2015-01-06 10:52:06 +0100 |
commit | fb153d02da077fb18f52372dab68a8cc52ea3a54 (patch) | |
tree | 3c149bb9e260ef1bff00bd67e7a0331e2b04a951 /gcc/opts.c | |
parent | a1954e97e7e41395c48e6913b5902b466bac83b6 (diff) | |
download | gcc-fb153d02da077fb18f52372dab68a8cc52ea3a54.zip gcc-fb153d02da077fb18f52372dab68a8cc52ea3a54.tar.gz gcc-fb153d02da077fb18f52372dab68a8cc52ea3a54.tar.bz2 |
opts.c (common_handle_option): Add support for -fno-sanitize=all and -f{,no-}sanitize-recover=all.
* opts.c (common_handle_option): Add support for
-fno-sanitize=all and -f{,no-}sanitize-recover=all.
* doc/invoke.texi: Document -fno-sanitize=all,
-f{,no-}sanitize-recover=all. Document that
-fsanitize=float-cast-overflow is not enabled
by -fsanitize=undefined. Fix up documentation
of -f{,no-}sanitize-recover.
* c-c++-common/asan/sanitize-all-1.c: New test.
* c-c++-common/ubsan/sanitize-all-1.c: New test.
* c-c++-common/ubsan/sanitize-all-2.c: New test.
* c-c++-common/ubsan/sanitize-all-3.c: New test.
* c-c++-common/ubsan/sanitize-all-4.c: New test.
From-SVN: r219241
Diffstat (limited to 'gcc/opts.c')
-rw-r--r-- | gcc/opts.c | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -1588,6 +1588,7 @@ common_handle_option (struct gcc_options *opts, sizeof "returns-nonnull-attribute" - 1 }, { "object-size", SANITIZE_OBJECT_SIZE, sizeof "object-size" - 1 }, + { "all", ~0, sizeof "all" - 1 }, { NULL, 0, 0 } }; const char *comma; @@ -1611,7 +1612,15 @@ common_handle_option (struct gcc_options *opts, && memcmp (p, spec[i].name, len) == 0) { /* Handle both -fsanitize and -fno-sanitize cases. */ - if (value) + if (value && spec[i].flag == ~0U) + { + if (code == OPT_fsanitize_) + error_at (loc, "-fsanitize=all option is not valid"); + else + *flag |= ~(SANITIZE_USER_ADDRESS | SANITIZE_THREAD + | SANITIZE_LEAK); + } + else if (value) *flag |= spec[i].flag; else *flag &= ~spec[i].flag; |