From 0231026a8f7cda932eb467862d30d07661ace966 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Tue, 17 Feb 2026 09:59:37 +1030 Subject: [PATCH] gas: abort in new_logical_line_flags .linefile 0. hits the "case 1 << 3" abort in new_logical_line_flags with line_number of -1. Similar to commit b60f6a628897, this fixes the abort by extending the meaning of .linefile in user code to restore the physical line for ".linefile 0 .". * input-scrub.c (new_logical_line_flags ): Don't abort on negative line number, instead restore physical line for ".linefile 0". --- gas/input-scrub.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gas/input-scrub.c b/gas/input-scrub.c index afb80ef2ce0..2b90632040b 100644 --- a/gas/input-scrub.c +++ b/gas/input-scrub.c @@ -495,7 +495,12 @@ 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) + /* s_linefile conditionally decrements the line depending on + whether '\n' is seen. */ + if (line_number < 0 + || (line_number == 0 && input_line_pointer[-1] != '\n')) + line_number = physical_input_line; + if (fname != NULL) abort (); if (next_saved_file == NULL) fname = physical_input_file; -- 2.47.3