%{
-/* Copyright (C) 1991-2021 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2023 Free Software Foundation, Inc.
Written by Steve Chamberlain of Cygnus Support.
This file is part of the GNU Binutils.
<SCRIPT,EXPRESSION,MRI,WILD>"/=" { RTOKEN(DIVEQ); }
<SCRIPT,EXPRESSION,MRI,WILD>"&=" { RTOKEN(ANDEQ); }
<SCRIPT,EXPRESSION,MRI,WILD>"|=" { RTOKEN(OREQ); }
+<SCRIPT,EXPRESSION,MRI,WILD>"^=" { RTOKEN(XOREQ); }
<EXPRESSION,MRI>"&&" { RTOKEN(ANDAND); }
<SCRIPT,EXPRESSION,MRI>">" { RTOKEN('>'); }
<SCRIPT,EXPRESSION,MRI,INPUTLIST>"," { RTOKEN(','); }
<EXPRESSION,MRI>"/" { RTOKEN('/'); }
<EXPRESSION,MRI>"%" { RTOKEN('%'); }
<EXPRESSION,MRI>"<" { RTOKEN('<'); }
+<EXPRESSION,MRI>"^" { RTOKEN('^'); }
<SCRIPT,EXPRESSION,MRI,WILD>"=" { RTOKEN('='); }
<SCRIPT,EXPRESSION,MRI,WILD>"}" { RTOKEN('}'); }
<SCRIPT,EXPRESSION,MRI,WILD>"{" { RTOKEN('{'); }
<WILD>"LONG" { RTOKEN(LONG); }
<WILD>"SHORT" { RTOKEN(SHORT); }
<WILD>"BYTE" { RTOKEN(BYTE); }
+<WILD>"ASCIZ" { RTOKEN(ASCIZ); }
+<WILD>"LINKER_VERSION" { RTOKEN(LINKER_VERSION); }
<SCRIPT>"NOFLOAT" { RTOKEN(NOFLOAT); }
<SCRIPT,EXPRESSION>"NOCROSSREFS" { RTOKEN(NOCROSSREFS); }
<SCRIPT,EXPRESSION>"NOCROSSREFS_TO" { RTOKEN(NOCROSSREFS_TO); }
<EXPRESSION>"DSECT" { RTOKEN(DSECT); }
<EXPRESSION>"COPY" { RTOKEN(COPY); }
<EXPRESSION>"INFO" { RTOKEN(INFO); }
+<EXPRESSION>"TYPE" { RTOKEN(TYPE); }
<SCRIPT,EXPRESSION>"ONLY_IF_RO" { RTOKEN(ONLY_IF_RO); }
<SCRIPT,EXPRESSION>"ONLY_IF_RW" { RTOKEN(ONLY_IF_RW); }
<SCRIPT,EXPRESSION>"SPECIAL" { RTOKEN(SPECIAL); }
}
<SCRIPT,EXPRESSION,WILD,VERS_NODE,INPUTLIST>"\""[^\"]*"\"" {
- /* No matter the state, quotes
- give what's inside. */
- bfd_size_type len;
- yylval.name = xstrdup (yytext + 1);
- /* PR ld/20906. A corrupt input file
- can contain bogus strings. */
- len = strlen (yylval.name);
- if (len > (bfd_size_type) yyleng - 2)
- len = yyleng - 2;
- yylval.name[len] = 0;
- return NAME;
- }
+ /* No matter the state, quotes give what's inside. */
+ yylval.name = xmemdup (yytext + 1, yyleng - 2, yyleng - 1);
+ return NAME;
+ }
<SCRIPT,EXPRESSION,WILD,VERS_START,VERS_NODE,VERS_SCRIPT,INPUTLIST>"\n" {
lineno++; }
return END;
}
-<SCRIPT,WILD,MRI,VERS_START,VERS_SCRIPT,VERS_NODE>. lex_warn_invalid (" in script", yytext);
-<EXPRESSION>. lex_warn_invalid (" in expression", yytext);
+<SCRIPT,WILD,MRI,VERS_START,VERS_SCRIPT,VERS_NODE>. lex_warn_invalid (_(" in script"), yytext);
+<EXPRESSION>. lex_warn_invalid (_(" in expression"), yytext);
%%
\f