gas: avoid octal numbers being accepted when processing .linefile
authorJan Beulich <jbeulich@suse.com>
Wed, 18 May 2022 07:38:40 +0000 (09:38 +0200)
committerJan Beulich <jbeulich@suse.com>
Wed, 18 May 2022 07:38:40 +0000 (09:38 +0200)
Compilers would put decimal numbers there, so I think we should treat
finding octal numbers the same as finding bignums - ignore them as
actually being comments of some very specific form.

gas/read.c
gas/testsuite/gas/all/linefile.l
gas/testsuite/gas/all/linefile.s

index 8524d0bffb96c3389954b7a91cf61c79d4741d48..704e6f1356933c6eaff5cca7c5e99505294dec4d 100644 (file)
@@ -2047,6 +2047,14 @@ get_linefile_number (int *flag)
   if (*input_line_pointer < '0' || *input_line_pointer > '9')
     return false;
 
+  /* Don't mistakenly interpret octal numbers as line numbers.  */
+  if (*input_line_pointer == '0')
+    {
+      *flag = 0;
+      ++input_line_pointer;
+      return true;
+    }
+
   expression_and_evaluate (&exp);
   if (exp.X_op != O_constant)
     return false;
index 7a5f700d06153d2a4e3daacb795d0b8e041154c6..089f328eadca9be731f5adc7baa40b3619f5269e 100644 (file)
@@ -2,4 +2,5 @@
 .*linefile\.s: Assembler messages:
 .*linefile\.s:2: Warning: line 2
 .*linefile\.s:5: Warning: line 5
+.*linefile\.s:8: Warning: line 8
 #pass
index 4b34fee3b8f9dbe673bf38a298c0fb7cdab8d16c..ac0eb3f75160a94304fedc3a60666c61a94587b2 100644 (file)
@@ -3,3 +3,6 @@
 
 # 123456789123456789123456789 "LINEfile.s"
        .warning "line 5"
+
+# 0123456789 "lineFILE.s"
+       .warning "line 8"