Re: PR28217, Syntax error when memory region contains a hyphen

I discovered some more errors when tightening up the lexer rules.
Just because we INCLUDE a file doesn't mean we've switched states.

	PR 28217
	* ldgram.y (statement): Don't switch lexer state on INCLUDE.
	(mri_script_command, ifile_p1, memory_spec, section): Likewise.
This commit is contained in:
Alan Modra
2021-08-13 17:21:14 +09:30
parent 1374be2327
commit 3bb17dfb6b

View File

@ -248,9 +248,8 @@ mri_script_command:
| CASE casesymlist | CASE casesymlist
| EXTERN extern_name_list | EXTERN extern_name_list
| INCLUDE filename | INCLUDE filename
{ ldlex_script (); ldfile_open_command_file($2); } { ldfile_open_command_file ($2); }
mri_script_lines END mri_script_lines END
{ ldlex_popstate (); }
| START NAME | START NAME
{ lang_add_entry ($2, false); } { lang_add_entry ($2, false); }
| |
@ -346,9 +345,8 @@ ifile_p1:
| MAP '(' filename ')' | MAP '(' filename ')'
{ lang_add_map($3); } { lang_add_map($3); }
| INCLUDE filename | INCLUDE filename
{ ldlex_script (); ldfile_open_command_file($2); } { ldfile_open_command_file ($2); }
ifile_list END ifile_list END
{ ldlex_popstate (); }
| NOCROSSREFS '(' nocrossref_list ')' | NOCROSSREFS '(' nocrossref_list ')'
{ {
lang_add_nocrossref ($3); lang_add_nocrossref ($3);
@ -697,11 +695,9 @@ statement:
} }
| INCLUDE filename | INCLUDE filename
{ {
ldlex_script ();
ldfile_open_command_file ($2); ldfile_open_command_file ($2);
} }
statement_list_opt END statement_list_opt END
{ ldlex_popstate (); }
; ;
statement_list: statement_list:
@ -814,9 +810,8 @@ memory_spec: NAME
origin_spec opt_comma length_spec origin_spec opt_comma length_spec
{} {}
| INCLUDE filename | INCLUDE filename
{ ldlex_script (); ldfile_open_command_file($2); } { ldfile_open_command_file ($2); }
memory_spec_list_opt END memory_spec_list_opt END
{ ldlex_popstate (); }
; ;
origin_spec: origin_spec:
@ -1117,11 +1112,9 @@ section: NAME
'{' sec_or_group_p1 '}' '{' sec_or_group_p1 '}'
| INCLUDE filename | INCLUDE filename
{ {
ldlex_script ();
ldfile_open_command_file ($2); ldfile_open_command_file ($2);
} }
sec_or_group_p1 END sec_or_group_p1 END
{ ldlex_popstate (); }
; ;
type: type: