[binutils-gdb] as: Automatically enable DWARF5 support

H.J. Lu hjl@sourceware.org
Mon Jan 18 14:28:48 GMT 2021


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

commit 705989f19adf20dd70c50237ec61cd708f2b0939
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Mon Jan 18 06:25:05 2021 -0800

    as: Automatically enable DWARF5 support
    
    Currently
    
    $ as -o x.o x.s
    
    fails when x.s contains DWARF5 ".file 0" or ".loc 0" directives.  Update
    assembler to automatically enable DWARF5 support so that
    
    $ gcc -S -g -c x.c
    $ gcc -c x.s
    
    works.
    
            PR gas/27195
            * dwarf2dbg.c (dwarf2_gen_line_info): Set dwarf_level to 5 if
            needed.
            (dwarf2_directive_filename): Likewise.
            (dwarf2_directive_loc): Likewise.
            * testsuite/gas/elf/dwarf-5-file0.d: Pass --gdwarf-3.
            * testsuite/gas/lns/lns-diag-1.l: Remove the
            "Error: file number less than one" errors.

Diff:
---
 gas/ChangeLog                         | 11 +++++++++++
 gas/dwarf2dbg.c                       | 24 ++++++++++++++++++------
 gas/testsuite/gas/elf/dwarf-5-file0.d |  2 +-
 gas/testsuite/gas/lns/lns-diag-1.l    |  2 --
 4 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 3d242869eac..510be5ff6e7 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,14 @@
+2021-01-18  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR gas/27195
+	* dwarf2dbg.c (dwarf2_gen_line_info): Set dwarf_level to 5 if
+	needed.
+	(dwarf2_directive_filename): Likewise.
+	(dwarf2_directive_loc): Likewise.
+	* testsuite/gas/elf/dwarf-5-file0.d: Pass --gdwarf-3.
+	* testsuite/gas/lns/lns-diag-1.l: Remove the
+	"Error: file number less than one" errors.
+
 2021-01-18  Alan Modra  <amodra@gmail.com>
 
 	PR 27198
diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c
index a428370ecca..069f6316643 100644
--- a/gas/dwarf2dbg.c
+++ b/gas/dwarf2dbg.c
@@ -551,7 +551,11 @@ dwarf2_gen_line_info (addressT ofs, struct dwarf2_line_info *loc)
   if (loc->line == 0)
     return;
   if (loc->filenum == 0 && DWARF2_LINE_VERSION < 5)
-    return;
+    {
+      dwarf_level = 5;
+      if (DWARF2_LINE_VERSION < 5)
+	return;
+    }
 
   /* Don't emit sequences of line symbols for the same line when the
      symbols apply to assembler code.  It is necessary to emit
@@ -1044,9 +1048,13 @@ dwarf2_directive_filename (void)
 
   if ((offsetT) num < 1 && DWARF2_LINE_VERSION < 5)
     {
-      as_bad (_("file number less than one"));
-      ignore_rest_of_line ();
-      return NULL;
+      dwarf_level = 5;
+      if (DWARF2_LINE_VERSION < 5)
+	{
+	  as_bad (_("file number less than one"));
+	  ignore_rest_of_line ();
+	  return NULL;
+	}
     }
 
   /* FIXME: Should we allow ".file <N>\n" as an expression meaning
@@ -1143,8 +1151,12 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
     {
       if (filenum != 0 || DWARF2_LINE_VERSION < 5)
 	{
-	  as_bad (_("file number less than one"));
-	  return;
+	  dwarf_level = 5;
+	  if (DWARF2_LINE_VERSION < 5)
+	    {
+	      as_bad (_("file number less than one"));
+	      return;
+	    }
 	}
     }
 
diff --git a/gas/testsuite/gas/elf/dwarf-5-file0.d b/gas/testsuite/gas/elf/dwarf-5-file0.d
index 5d76b7bcd14..6cc96e3284f 100644
--- a/gas/testsuite/gas/elf/dwarf-5-file0.d
+++ b/gas/testsuite/gas/elf/dwarf-5-file0.d
@@ -1,4 +1,4 @@
-#as: --gdwarf-5
+#as: --gdwarf-3
 #name: DWARF5 .line 0
 #readelf: -wl
 
diff --git a/gas/testsuite/gas/lns/lns-diag-1.l b/gas/testsuite/gas/lns/lns-diag-1.l
index 1256e85cfcb..3d8a52f4d5b 100644
--- a/gas/testsuite/gas/lns/lns-diag-1.l
+++ b/gas/testsuite/gas/lns/lns-diag-1.l
@@ -1,5 +1,4 @@
 .*: Assembler messages:
-.*:2: Error: file number less than one
 .*:3: Error: missing string
 .*:4: Error: file table slot 1 is already occupied.*
 .*:8: Error: unassigned file number 3
@@ -9,7 +8,6 @@
 .*:19: Error: bad or irreducible absolute expression
 .*:23: Error: isa number less than zero
 .*:26: Error: bad or irreducible absolute expression
-.*:26: Error: file number less than one
 .*:27: Error: bad or irreducible absolute expression
 .*:28: Error: unknown .loc sub-directive `frobnitz'
 .*:29: Error: unknown .loc sub-directive `frobnitz'


More information about the Binutils-cvs mailing list