public inbox for gcc-cvs@sourceware.org help / color / mirror / Atom feed
From: Jakub Jelinek <jakub@gcc.gnu.org> To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-6840] options: Fix up -fsanitize-coverage= [PR104158] Date: Mon, 24 Jan 2022 10:53:53 +0000 (GMT) [thread overview] Message-ID: <20220124105353.CFAF53858409@sourceware.org> (raw) https://gcc.gnu.org/g:cd0377a460db9d8b286e03a701227ebd62132c89 commit r12-6840-gcd0377a460db9d8b286e03a701227ebd62132c89 Author: Jakub Jelinek <jakub@redhat.com> Date: Mon Jan 24 11:51:49 2022 +0100 options: Fix up -fsanitize-coverage= [PR104158] This is incremental patch to fix up -fsanitize-coverage= option handling, allow -fno-sanitize-coverage= again, allow both options together in one option or make -fsanitize-coverage=trace-pc -fsanitize-coverage=trace-cmp actually enable both suboptions rather than the last one. 2022-01-24 Jakub Jelinek <jakub@redhat.com> PR sanitizer/104158 * common.opt (flag_sanitize_coverage): Remove Variable entry. (fsanitize-coverage=): Remove RejectNegative property, add Var(flag_sanitize_coverage) and EnumSet properties. (trace-pc): Add Set(1) property. (trace-cmp): Add Set(2) property. * opts.cc (common_handle_option): Don't handle OPT_fsanitize_coverage_. * gcc.dg/spellcheck-options-24.c: New test. * gcc.dg/sancov/pr104158-1.c: New test. * gcc.dg/sancov/pr104158-2.c: New test. * gcc.dg/sancov/pr104158-3.c: New test. * gcc.dg/sancov/pr104158-4.c: New test. * gcc.dg/sancov/pr104158-5.c: New test. * gcc.dg/sancov/pr104158-6.c: New test. * gcc.dg/sancov/pr104158-7.c: New test. Diff: --- gcc/common.opt | 10 +++------- gcc/opts.cc | 4 ---- gcc/testsuite/gcc.dg/sancov/pr104158-1.c | 11 +++++++++++ gcc/testsuite/gcc.dg/sancov/pr104158-2.c | 11 +++++++++++ gcc/testsuite/gcc.dg/sancov/pr104158-3.c | 11 +++++++++++ gcc/testsuite/gcc.dg/sancov/pr104158-4.c | 11 +++++++++++ gcc/testsuite/gcc.dg/sancov/pr104158-5.c | 11 +++++++++++ gcc/testsuite/gcc.dg/sancov/pr104158-6.c | 11 +++++++++++ gcc/testsuite/gcc.dg/sancov/pr104158-7.c | 5 +++++ gcc/testsuite/gcc.dg/spellcheck-options-24.c | 5 +++++ 10 files changed, 79 insertions(+), 11 deletions(-) diff --git a/gcc/common.opt b/gcc/common.opt index fe7bcf66752..985e6ab6f81 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -223,10 +223,6 @@ unsigned int flag_sanitize Variable unsigned int flag_sanitize_recover = (SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT | SANITIZE_KERNEL_ADDRESS | SANITIZE_KERNEL_HWADDRESS) & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN) -; What the coverage sanitizers should instrument -Variable -unsigned int flag_sanitize_coverage - ; Flag whether a prefix has been added to dump_base_name Variable bool dump_base_name_prefixed = false @@ -1076,17 +1072,17 @@ Common Driver Joined Select what to sanitize. fsanitize-coverage= -Common Joined RejectNegative Enum(sanitize_coverage) +Common Joined Enum(sanitize_coverage) Var(flag_sanitize_coverage) EnumSet Select type of coverage sanitization. Enum Name(sanitize_coverage) Type(int) EnumValue -Enum(sanitize_coverage) String(trace-pc) Value(SANITIZE_COV_TRACE_PC) +Enum(sanitize_coverage) String(trace-pc) Value(SANITIZE_COV_TRACE_PC) Set(1) EnumValue -Enum(sanitize_coverage) String(trace-cmp) Value(SANITIZE_COV_TRACE_CMP) +Enum(sanitize_coverage) String(trace-cmp) Value(SANITIZE_COV_TRACE_CMP) Set(2) fasan-shadow-offset= Common Joined RejectNegative Var(common_deferred_options) Defer diff --git a/gcc/opts.cc b/gcc/opts.cc index 733f3943871..fb906fa0aea 100644 --- a/gcc/opts.cc +++ b/gcc/opts.cc @@ -2621,10 +2621,6 @@ common_handle_option (struct gcc_options *opts, &= ~(SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT); break; - case OPT_fsanitize_coverage_: - opts->x_flag_sanitize_coverage = value; - break; - case OPT_O: case OPT_Os: case OPT_Ofast: diff --git a/gcc/testsuite/gcc.dg/sancov/pr104158-1.c b/gcc/testsuite/gcc.dg/sancov/pr104158-1.c new file mode 100644 index 00000000000..2a3187982ca --- /dev/null +++ b/gcc/testsuite/gcc.dg/sancov/pr104158-1.c @@ -0,0 +1,11 @@ +/* PR sanitizer/104158 */ +/* { dg-do compile } */ +/* { dg-options "-fsanitize-coverage=trace-cmp -fdump-tree-optimized" } */ +/* { dg-final { scan-tree-dump "__sanitizer_cov_trace_cmp" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "__sanitizer_cov_trace_pc" "optimized" } } */ + +int +foo (int a, int b) +{ + return a == b; +} diff --git a/gcc/testsuite/gcc.dg/sancov/pr104158-2.c b/gcc/testsuite/gcc.dg/sancov/pr104158-2.c new file mode 100644 index 00000000000..b143504e29d --- /dev/null +++ b/gcc/testsuite/gcc.dg/sancov/pr104158-2.c @@ -0,0 +1,11 @@ +/* PR sanitizer/104158 */ +/* { dg-do compile } */ +/* { dg-options "-fsanitize-coverage=trace-pc -fdump-tree-optimized" } */ +/* { dg-final { scan-tree-dump-not "__sanitizer_cov_trace_cmp" "optimized" } } */ +/* { dg-final { scan-tree-dump "__sanitizer_cov_trace_pc" "optimized" } } */ + +int +foo (int a, int b) +{ + return a == b; +} diff --git a/gcc/testsuite/gcc.dg/sancov/pr104158-3.c b/gcc/testsuite/gcc.dg/sancov/pr104158-3.c new file mode 100644 index 00000000000..e2a1cfbc635 --- /dev/null +++ b/gcc/testsuite/gcc.dg/sancov/pr104158-3.c @@ -0,0 +1,11 @@ +/* PR sanitizer/104158 */ +/* { dg-do compile } */ +/* { dg-options "-fsanitize-coverage=trace-cmp,trace-pc -fdump-tree-optimized" } */ +/* { dg-final { scan-tree-dump "__sanitizer_cov_trace_cmp" "optimized" } } */ +/* { dg-final { scan-tree-dump "__sanitizer_cov_trace_pc" "optimized" } } */ + +int +foo (int a, int b) +{ + return a == b; +} diff --git a/gcc/testsuite/gcc.dg/sancov/pr104158-4.c b/gcc/testsuite/gcc.dg/sancov/pr104158-4.c new file mode 100644 index 00000000000..9c2e722436e --- /dev/null +++ b/gcc/testsuite/gcc.dg/sancov/pr104158-4.c @@ -0,0 +1,11 @@ +/* PR sanitizer/104158 */ +/* { dg-do compile } */ +/* { dg-options "-fsanitize-coverage=trace-pc,trace-cmp -fdump-tree-optimized" } */ +/* { dg-final { scan-tree-dump "__sanitizer_cov_trace_cmp" "optimized" } } */ +/* { dg-final { scan-tree-dump "__sanitizer_cov_trace_pc" "optimized" } } */ + +int +foo (int a, int b) +{ + return a == b; +} diff --git a/gcc/testsuite/gcc.dg/sancov/pr104158-5.c b/gcc/testsuite/gcc.dg/sancov/pr104158-5.c new file mode 100644 index 00000000000..5b130d0efbf --- /dev/null +++ b/gcc/testsuite/gcc.dg/sancov/pr104158-5.c @@ -0,0 +1,11 @@ +/* PR sanitizer/104158 */ +/* { dg-do compile } */ +/* { dg-options "-fsanitize-coverage=trace-cmp -fsanitize-coverage=trace-pc -fno-sanitize-coverage=trace-cmp -fdump-tree-optimized" } */ +/* { dg-final { scan-tree-dump-not "__sanitizer_cov_trace_cmp" "optimized" } } */ +/* { dg-final { scan-tree-dump "__sanitizer_cov_trace_pc" "optimized" } } */ + +int +foo (int a, int b) +{ + return a == b; +} diff --git a/gcc/testsuite/gcc.dg/sancov/pr104158-6.c b/gcc/testsuite/gcc.dg/sancov/pr104158-6.c new file mode 100644 index 00000000000..3eed1d7206d --- /dev/null +++ b/gcc/testsuite/gcc.dg/sancov/pr104158-6.c @@ -0,0 +1,11 @@ +/* PR sanitizer/104158 */ +/* { dg-do compile } */ +/* { dg-options "-fsanitize-coverage=trace-cmp -fsanitize-coverage=trace-pc -fno-sanitize-coverage=trace-pc,trace-cmp -fdump-tree-optimized" } */ +/* { dg-final { scan-tree-dump-not "__sanitizer_cov_trace_cmp" "optimized" } } */ +/* { dg-final { scan-tree-dump-not "__sanitizer_cov_trace_pc" "optimized" } } */ + +int +foo (int a, int b) +{ + return a == b; +} diff --git a/gcc/testsuite/gcc.dg/sancov/pr104158-7.c b/gcc/testsuite/gcc.dg/sancov/pr104158-7.c new file mode 100644 index 00000000000..aacd23e9512 --- /dev/null +++ b/gcc/testsuite/gcc.dg/sancov/pr104158-7.c @@ -0,0 +1,5 @@ +/* PR sanitizer/104158 */ +/* { dg-do compile } */ +/* { dg-options "-fsanitize-coverage=trace-cmp,trace-cmp -fdump-tree-optimized" } */ +/* { dg-error "invalid argument in option '-fsanitize-coverage=trace-cmp,trace-cmp'" "" { target *-*-* } 0 } */ +/* { dg-message "'trace-cmp' specified multiple times in the same option" "" { target *-*-* } 0 } */ diff --git a/gcc/testsuite/gcc.dg/spellcheck-options-24.c b/gcc/testsuite/gcc.dg/spellcheck-options-24.c new file mode 100644 index 00000000000..1bd6cc29be7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/spellcheck-options-24.c @@ -0,0 +1,5 @@ +/* { dg-do compile } */ +/* { dg-options "-fsanitize-coverage=trace-pc,tracecmp" } */ + +/* { dg-error "unrecognized argument in option '-fsanitize-coverage=trace-pc,tracecmp'" "" { target *-*-* } 0 } */ +/* { dg-message "valid arguments to '-fsanitize-coverage=' are: trace-cmp trace-pc; did you mean 'trace-cmp'?" "" { target *-*-* } 0 } */
reply other threads:[~2022-01-24 10:53 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220124105353.CFAF53858409@sourceware.org \ --to=jakub@gcc.gnu.org \ --cc=gcc-cvs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).