PR24411, Division is not accepted in MEMORY length expression
authorAlan Modra <amodra@gmail.com>
Wed, 3 Apr 2019 00:51:36 +0000 (11:21 +1030)
committerAlan Modra <amodra@gmail.com>
Wed, 3 Apr 2019 02:31:49 +0000 (13:01 +1030)
Let's hope no one has section names starting with '/' in scripts.  If
they do, this change to fix parsing of '/' in expressiongs will break
their project.

PR 24411
ldlex.l (SYMBOLNAMECHAR1): Don't match '/'.
(<EXPRESSION>"/DISCARD/"): New.

ld/ChangeLog
ld/ldlex.l

index 851bffb..bc35b34 100644 (file)
@@ -1,5 +1,11 @@
 2019-04-03  Alan Modra  <amodra@gmail.com>
 
+       PR 24411
+       ldlex.l (SYMBOLNAMECHAR1): Don't match '/'.
+       (<EXPRESSION>"/DISCARD/"): New.
+
+2019-04-03  Alan Modra  <amodra@gmail.com>
+
        * ldlex.l: Formatting.
        (CMDFILENAMECHAR, CMDFILENAMECHAR1): Delete.
        (FILENAMECHAR1, SYMBOLNAMECHAR1, FILENAMECHAR, WILDCHAR),
index 6e73a7f..c2abc59 100644 (file)
@@ -96,7 +96,7 @@ FILENAMECHAR  [_a-zA-Z0-9\/\.\\\$\~\-\+\:\[\]\,\=]
 NOCFILENAMECHAR        [_a-zA-Z0-9\/\.\\\$\~\-\+\:\[\]]
 SYMBOLNAMECHAR  [_a-zA-Z0-9\/\.\\\$\~]
 FILENAMECHAR1  [_a-zA-Z\/\.\\\$\~]
-SYMBOLNAMECHAR1        [_a-zA-Z\/\.\\\$]
+SYMBOLNAMECHAR1        [_a-zA-Z\.\\\$]
 WHITE          [ \t\n\r]+
 
 V_TAG [.$_a-zA-Z][._a-zA-Z0-9]*
@@ -388,6 +388,10 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([*?.$_a-zA-Z0-9\[\]\-\!\^\\]|::)*
                                  yylval.name = xstrdup (yytext);
                                  return NAME;
                                }
+<EXPRESSION>"/DISCARD/"                {
+                                 yylval.name = xstrdup (yytext);
+                                 return NAME;
+                               }
 <EXPRESSION>"-l"{NOCFILENAMECHAR}+ {
                                  yylval.name = xstrdup (yytext + 2);
                                  return LNAME;