PR28217, Syntax error when memory region contains a hyphen

Alan Modra amodra@gmail.com
Fri Aug 13 11:29:32 GMT 2021


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.

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

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list