Patchwork pr51020 Fix invalid options validation for ARM target

login
register
mail settings
Submitter Alexey Kravets
Date April 28, 2012, 10:04 a.m.
Message ID <20120428100413.GA25747@kayrick-tools>
Download mbox | patch
Permalink /patch/155642/
State New
Headers show

Comments

Alexey Kravets - April 28, 2012, 10:04 a.m.
Hi guys,
Please, take a look at this patch. It fixes the invalid star symbol
processing in validate_switches function reported in GCC bugzilla:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51020

With this patch invalid options are no  longer accepted by the 
compiler (see new testcase for more details).
It showed no regressions on GCC-4.6.3 on ARM.

ChangeLog:
  * gcc/gcc.c(validate_switches): Reset starred flag.
  * gcc/testsuite/gcc.target/arm/pr51020.c: New test.
Richard Earnshaw - April 30, 2012, 1:15 p.m.
On 28/04/12 11:04, Alexey Kravets wrote:
> Hi guys,
> Please, take a look at this patch. It fixes the invalid star symbol
> processing in validate_switches function reported in GCC bugzilla:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51020
> 
> With this patch invalid options are no  longer accepted by the 
> compiler (see new testcase for more details).
> It showed no regressions on GCC-4.6.3 on ARM.
> 
> ChangeLog:
>   * gcc/gcc.c(validate_switches): Reset starred flag.
>   * gcc/testsuite/gcc.target/arm/pr51020.c: New test.
> 

Why have you created an arm-specific test for something that, at least
on initial examination, is a generic issue?

R.

Patch

diff --git a/gcc/gcc.c b/gcc/gcc.c
index 75f522e..e3c8609 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -7023,11 +7023,12 @@  validate_switches (const char *start)
   size_t len;
   int i;
   bool suffix = false;
-  bool starred = false;
+  bool starred;
 
 #define SKIP_WHITE() do { while (*p == ' ' || *p == '\t') p++; } while (0)
 
 next_member:
+  starred = false;
   SKIP_WHITE ();
 
   if (*p == '!')
diff --git a/gcc/testsuite/gcc.target/arm/pr51020.c b/gcc/testsuite/gcc.target/arm/pr51020.c
new file mode 100644
index 0000000..ac77dc1
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/pr51020.c
@@ -0,0 +1,5 @@ 
+/* PR 51020 */
+/* { dg-do compile { target arm*-*-* } } */
+/* { dg-options "---" { target arm*-*-* } } */
+int main() {return 0;}
+/* { dg-error "unrecognized option '---'" ""  { target *-*-* } 0 } */
-- 
1.7.5.4