gas: accept custom ".linefile <n> ."
authorJan Beulich <jbeulich@suse.com>
Fri, 11 Nov 2022 08:27:41 +0000 (09:27 +0100)
committerJan Beulich <jbeulich@suse.com>
Fri, 11 Nov 2022 08:27:41 +0000 (09:27 +0100)
While .linefile is generally intended for gas internal use only, its use
in a source file would better not result in an internal error. Give use
of it outside of any macro(-like) construct the meaning of restoring the
original (physical) input file name.

gas/input-scrub.c

index 44e4bdca521c4f1fc117ab9c0e4f7d3edce9da79..650e3e38bbd05981c41130b2ff02b07f6a653e32 100644 (file)
@@ -469,13 +469,15 @@ new_logical_line_flags (const char *fname, /* DON'T destroy it!  We point to it!
       /* FIXME: we could check that include nesting is correct.  */
       break;
     case 1 << 3:
-      if (line_number < 0 || fname != NULL || next_saved_file == NULL)
+      if (line_number < 0 || fname != NULL)
        abort ();
       /* PR gas/16908 workaround: Ignore updates when nested inside a macro
         expansion.  */
       if (from_sb_expansion == expanding_nested)
        return;
-      if (next_saved_file->logical_input_file)
+      if (next_saved_file == NULL)
+       fname = physical_input_file;
+      else if (next_saved_file->logical_input_file)
        fname = next_saved_file->logical_input_file;
       else
        fname = next_saved_file->physical_input_file;