[binutils-gdb] gas: Record file name in macro locations

Alice Carlotti acarlotti@sourceware.org
Mon Aug 18 13:37:38 GMT 2025


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

commit 9e5fdac9ac81c8bc383f4314388c2c830f1e575c
Author: Alice Carlotti <alice.carlotti@arm.com>
Date:   Thu Aug 7 18:03:54 2025 +0100

    gas: Record file name in macro locations
    
    This allows the correct file name to be used when emitting messages for
    lines within a macro.  The line numbers were already set and displayed
    correctly, which resulted in mismatched file names and line numbers.
    
    PR 32738

Diff:
---
 gas/macro.c                   | 10 ++++++----
 gas/testsuite/gas/elf/line.l  | 12 ++++++------
 gas/testsuite/gas/elf/line2.l |  2 +-
 3 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/gas/macro.c b/gas/macro.c
index 20309d4d68f..13202d3f58a 100644
--- a/gas/macro.c
+++ b/gas/macro.c
@@ -112,11 +112,13 @@ buffer_and_nest (const char *from, const char *to, sb *ptr,
     unsigned int line;
     char *linefile;
 
-    as_where_top (&line);
-    if (!flag_m68k_mri)
-      linefile = xasprintf ("\t.linefile %u .", line + 1);
+    const char *prefix = flag_m68k_mri ? "" : ".";
+    const char *file = as_where_top (&line);
+
+    if (file)
+      linefile = xasprintf ("\t%slinefile %u \"%s\"", prefix, line + 1, file);
     else
-      linefile = xasprintf ("\tlinefile %u .", line + 1);
+      linefile = xasprintf ("\t%slinefile %u .", prefix, line + 1);
     sb_add_string (ptr, linefile);
     xfree (linefile);
   }
diff --git a/gas/testsuite/gas/elf/line.l b/gas/testsuite/gas/elf/line.l
index 37384d7d923..f2bc9ef76c7 100644
--- a/gas/testsuite/gas/elf/line.l
+++ b/gas/testsuite/gas/elf/line.l
@@ -2,17 +2,17 @@
 
 .*: Assembler messages:
 line\.s:[0-9]*18: Warning: \.warning .*
-line\.s:2: Warning: m1/1: 123
+.*line\.s:2: Warning: m1/1: 123
 line\.s:[0-9]*21:  Info: .*
-line\.s:4: Warning: m1/2: 123
+.*line\.s:4: Warning: m1/2: 123
 line\.s:[0-9]*21:  Info: .*
-line\.s:2: Warning: m1/1: abc
+.*line\.s:2: Warning: m1/1: abc
 line\.s:[0-9]*22:  Info: .*
-line\.s:4: Warning: m1/2: abc
+.*line\.s:4: Warning: m1/2: abc
 line\.s:[0-9]*22:  Info: .*
-line\.s:2: Warning: m1/1: XYZ
+.*line\.s:2: Warning: m1/1: XYZ
 line\.s:[0-9]*23:  Info: .*
-line\.s:4: Warning: m1/2: XYZ
+.*line\.s:4: Warning: m1/2: XYZ
 line\.s:[0-9]*23:  Info: .*
 line\.s:[0-9]*24: Warning: \.warning .*
 Line2\.s:10: Warning: m2/1: 987
diff --git a/gas/testsuite/gas/elf/line2.l b/gas/testsuite/gas/elf/line2.l
index d98b74b767f..92627fe3a54 100644
--- a/gas/testsuite/gas/elf/line2.l
+++ b/gas/testsuite/gas/elf/line2.l
@@ -1,5 +1,5 @@
 .*line2\.s: Assembler messages:
 .*line2\.inc:2: Warning: inside macro
 .*line2\.inc:6:  Info: macro invoked from here
-.*:2: Warning: inside macro
+.*line2\.inc:2: Warning: inside macro
 .*line2\.s:3:  Info: macro invoked from here


More information about the Binutils-cvs mailing list