diff options
author | mpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-12 10:59:11 +0000 |
---|---|---|
committer | mpolacek <mpolacek@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-05-12 10:59:11 +0000 |
commit | f0158fc01e47f7200d6da7f0377d99a2f0b5b72d (patch) | |
tree | b32bdfac1d9fb7e811bf88e877d9301ba135fdc1 /gcc/opts.c | |
parent | 0f56938bd9293d210ef6a365eadcd122836c3bfd (diff) | |
download | gcc-f0158fc01e47f7200d6da7f0377d99a2f0b5b72d.tar.gz |
PR driver/71063
* opts.c (common_handle_option): Detect missing argument for --help^.
* gcc.dg/opts-7.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@236170 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/opts.c')
-rw-r--r-- | gcc/opts.c | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/gcc/opts.c b/gcc/opts.c index 0f9431a0b32..63d41ca9deb 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -1595,7 +1595,7 @@ common_handle_option (struct gcc_options *opts, case OPT__help_: { - const char * a = arg; + const char *a = arg; unsigned int include_flags = 0; /* Note - by default we include undocumented options when listing specific classes. If you only want to see documented options @@ -1612,11 +1612,11 @@ common_handle_option (struct gcc_options *opts, arg = [^]{word}[,{arg}] word = {optimizers|target|warnings|undocumented| params|common|<language>} */ - while (* a != 0) + while (*a != 0) { static const struct { - const char * string; + const char *string; unsigned int flag; } specifics[] = @@ -1631,19 +1631,24 @@ common_handle_option (struct gcc_options *opts, { "common", CL_COMMON }, { NULL, 0 } }; - unsigned int * pflags; - const char * comma; + unsigned int *pflags; + const char *comma; unsigned int lang_flag, specific_flag; unsigned int len; unsigned int i; - if (* a == '^') + if (*a == '^') { - ++ a; - pflags = & exclude_flags; + ++a; + if (*a == '\0') + { + error_at (loc, "missing argument to %qs", "--help=^"); + break; + } + pflags = &exclude_flags; } else - pflags = & include_flags; + pflags = &include_flags; comma = strchr (a, ','); if (comma == NULL) @@ -1680,7 +1685,7 @@ common_handle_option (struct gcc_options *opts, if (specific_flag != 0) { if (lang_flag == 0) - * pflags |= specific_flag; + *pflags |= specific_flag; else { /* The option's argument matches both the start of a @@ -1689,7 +1694,7 @@ common_handle_option (struct gcc_options *opts, specified "--help=c", but otherwise we have to issue a warning. */ if (strncasecmp (a, "c", len) == 0) - * pflags |= lang_flag; + *pflags |= lang_flag; else warning_at (loc, 0, "--help argument %q.*s is ambiguous, " @@ -1698,7 +1703,7 @@ common_handle_option (struct gcc_options *opts, } } else if (lang_flag != 0) - * pflags |= lang_flag; + *pflags |= lang_flag; else warning_at (loc, 0, "unrecognized argument to --help= option: %q.*s", |