Fix MRI mode testsuite failures

Alan Modra amodra@gmail.com
Mon Mar 18 12:13:00 GMT 2019


These fails were introduced by git commit 2469b3c584 with the
inroduction of "input_from_string":
m68k-linux  FAIL: MRI structured for
m68k-linux  FAIL: MRI structured if
m68k-linux  FAIL: MRI structured repeat
m68k-linux  FAIL: MRI structured while

Since the m68k parser called expression() without setting
input_from_string, get_symbol_name rejected FAKE_LABEL_CHAR in names.

	* config/m68k-parse.y (yylex): Use temp_ilp and restore_ilp.

diff --git a/gas/config/m68k-parse.y b/gas/config/m68k-parse.y
index f771f09cd1..8bc96d13d1 100644
--- a/gas/config/m68k-parse.y
+++ b/gas/config/m68k-parse.y
@@ -754,7 +754,6 @@ yylex (void)
   int parens;
   int c = 0;
   int tail = 0;
-  char *hold;
 
   if (*str == ' ')
     ++str;
@@ -913,11 +912,10 @@ yylex (void)
 
 	  ++s;
 
-	  hold = input_line_pointer;
-	  input_line_pointer = s;
+	  temp_ilp (s);
 	  expression (&scale);
 	  s = input_line_pointer;
-	  input_line_pointer = hold;
+	  restore_ilp ();
 
 	  if (scale.X_op != O_constant)
 	    yyerror (_("scale specification must resolve to a number"));
@@ -1071,11 +1069,10 @@ yylex (void)
       s[-tail] = 0;
     }
 
-  hold = input_line_pointer;
-  input_line_pointer = str;
+  temp_ilp (str);
   expression (&yylval.exp.exp);
   str = input_line_pointer;
-  input_line_pointer = hold;
+  restore_ilp ();
 
   if (tail != 0)
     {

-- 
Alan Modra
Australia Development Lab, IBM



More information about the Binutils mailing list