aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2019-04-03 11:21:36 +1030
committerAlan Modra <amodra@gmail.com>2019-04-03 13:01:49 +1030
commit1c6aafe894645ca1da5c0dd0661bca19caf37ad0 (patch)
treef1a60055e68ffa23a1f51cfa90a0df900296b180
parent092da96ac4fc1bfa4c794320f538edb4e8d4fcfd (diff)
downloadgdb-1c6aafe894645ca1da5c0dd0661bca19caf37ad0.zip
gdb-1c6aafe894645ca1da5c0dd0661bca19caf37ad0.tar.gz
gdb-1c6aafe894645ca1da5c0dd0661bca19caf37ad0.tar.bz2
PR24411, Division is not accepted in MEMORY length expression
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.
-rw-r--r--ld/ChangeLog6
-rw-r--r--ld/ldlex.l6
2 files changed, 11 insertions, 1 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 851bffb..bc35b34 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -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),
diff --git a/ld/ldlex.l b/ld/ldlex.l
index 6e73a7f..c2abc59 100644
--- a/ld/ldlex.l
+++ b/ld/ldlex.l
@@ -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;