tidy mri script extern
authorAlan Modra <amodra@gmail.com>
Fri, 13 Aug 2021 12:53:40 +0000 (22:23 +0930)
committerAlan Modra <amodra@gmail.com>
Fri, 13 Aug 2021 13:00:30 +0000 (22:30 +0930)
MRI mode generally doesn't flip lexer states, so let's make MRI mode
"extern" not do so either.

* ldgram.y (extern_name_list): Don't change lex state here.
(ifile_p1): Change state here on EXTERN instead.

ld/ldgram.y

index 794cf284a7bee72e4dcf30a752684e77b63a8027..24979deebbea9e7425361bc0d24cd9d860588db0 100644 (file)
@@ -280,18 +280,12 @@ casesymlist:
        | casesymlist ',' NAME
        ;
 
-/* Parsed as expressions so that commas separate entries */
 extern_name_list:
-       { ldlex_expression (); }
-       extern_name_list_body
-       { ldlex_popstate (); }
-
-extern_name_list_body:
-         NAME
+       NAME
                        { ldlang_add_undef ($1, false); }
-       | extern_name_list_body NAME
+       | extern_name_list NAME
                        { ldlang_add_undef ($2, false); }
-       | extern_name_list_body ',' NAME
+       | extern_name_list ',' NAME
                        { ldlang_add_undef ($3, false); }
        ;
 
@@ -355,7 +349,8 @@ ifile_p1:
                {
                  lang_add_nocrossref_to ($3);
                }
-       |       EXTERN '(' extern_name_list ')'
+       |       EXTERN '(' { ldlex_expression (); } extern_name_list ')'
+                       { ldlex_popstate (); }
        |       INSERT_K AFTER NAME
                { lang_add_insert ($3, 0); }
        |       INSERT_K BEFORE NAME