[1/5] gas: avoid inserting extra newline in buffer_and_nest()

Message ID 01b77f18-8af3-4128-3645-2f1e05690197@suse.com
State Accepted
Headers
Series gas: diagnostics for macros and some tidying |

Checks

Context Check Description
snail/binutils-gdb-check success Github commit url

Commit Message

Jan Beulich Nov. 29, 2022, 10:36 a.m. UTC
  In "-alm" listings I've noticed an odd blank line following the inserted
.linefile one. This results from the explicit NL inserted being
redundant with the one left in place from the original input line by all
respective callers. Note that we need to compensate for the removed line
by bumping the directive argument (which in turn is decremented again in
s_linefile() before calling new_logical_line_flags(), and I have to
confess that when putting together the original change I was a little
puzzled by the imbalance of increments/decrements, but then I forgot to
actually go look for the cause).

While there also switch to sb_add_string() instead of effectively open-
coding it to some degree.
  

Patch

--- a/gas/macro.c
+++ b/gas/macro.c
@@ -142,10 +142,10 @@  buffer_and_nest (const char *from, const
 
       as_where (&line);
       if (!flag_m68k_mri)
-	linefile = xasprintf ("\t.linefile %u .\n", line);
+	linefile = xasprintf ("\t.linefile %u .", line + 1);
       else
-	linefile = xasprintf ("\tlinefile %u .\n", line);
-      sb_add_buffer (ptr, linefile, strlen (linefile));
+	linefile = xasprintf ("\tlinefile %u .", line + 1);
+      sb_add_string (ptr, linefile);
       xfree (linefile);
     }