[binutils-gdb] gas/Dwarf5: re-use file 0 line string table entry when faking file 0

Jan Beulich jbeulich@sourceware.org
Wed Mar 23 07:48:59 GMT 2022


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

commit 17404258855da21324ab01e01cd650573c7ba22c
Author: Jan Beulich <jbeulich@suse.com>
Date:   Wed Mar 23 08:48:24 2022 +0100

    gas/Dwarf5: re-use file 0 line string table entry when faking file 0
    
    No need to emit the same string a 2nd time for file 1 in this case.

Diff:
---
 gas/dwarf2dbg.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c
index c0a052df7d5..fee56c249e4 100644
--- a/gas/dwarf2dbg.c
+++ b/gas/dwarf2dbg.c
@@ -2137,7 +2137,7 @@ out_dir_and_file_list (segT line_seg, int sizeof_offset)
   bool emit_timestamps = true;
   bool emit_filesize = true;
   segT line_str_seg = NULL;
-  symbolS *line_strp;
+  symbolS *line_strp, *file0_strp = NULL;
 
   /* Output the Directory Table.  */
   if (DWARF2_LINE_VERSION >= 5)
@@ -2301,9 +2301,17 @@ out_dir_and_file_list (segT line_seg, int sizeof_offset)
 	}
       else
 	{
-	  line_strp = add_line_strp (line_str_seg, fullfilename);
+	  if (!file0_strp)
+	    line_strp = add_line_strp (line_str_seg, fullfilename);
+	  else
+	    line_strp = file0_strp;
 	  subseg_set (line_seg, 0);
 	  TC_DWARF2_EMIT_OFFSET (line_strp, sizeof_offset);
+	  if (i == 0 && files_in_use > 1
+	      && files[0].filename == files[1].filename)
+	    file0_strp = line_strp;
+	  else
+	    file0_strp = NULL;
 	}
 
       /* Directory number.  */


More information about the Binutils-cvs mailing list