[binutils-gdb] gas: avoid inserting extra newline in buffer_and_nest()

Jan Beulich jbeulich@sourceware.org
Mon Dec 5 12:53:10 GMT 2022


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=fde7a8e4b007a29c7196fd5b017342899c367c00

commit fde7a8e4b007a29c7196fd5b017342899c367c00
Author: Jan Beulich <jbeulich@suse.com>
Date:   Mon Dec 5 13:50:27 2022 +0100

    gas: avoid inserting extra newline in buffer_and_nest()
    
    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.

Diff:
---
 gas/macro.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/gas/macro.c b/gas/macro.c
index c2a47684b15..3d5774ee5e1 100644
--- a/gas/macro.c
+++ b/gas/macro.c
@@ -142,10 +142,10 @@ buffer_and_nest (const char *from, const char *to, sb *ptr,
 
       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);
     }


More information about the Binutils-cvs mailing list