public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Bob Wilson <bwilson@tensilica.com>
To: binutils@sources.redhat.com
Subject: [PATCH] inconsistent DWARF2 sections generated by --gdwarf2
Date: Mon, 15 Nov 2004 19:27:00 -0000	[thread overview]
Message-ID: <41990311.3060504@tensilica.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 1889 bytes --]

The code for dwarf2_finish() in gas/dwarf2dbg.c appears to be inconsistent.  If 
you assemble a file that contains no instructions, e.g., just a symbol 
declaration: ".global some_symbol", with --gdwarf2, GAS will create a 
.debug_line section but no corresponding .debug_info section.  This is probably 
harmless for GDB, but it breaks readelf, which expects a one-to-one 
correspondence between .debug_info and .debug_line sections.  Running "readelf 
-wl" on such a file results in the following error message:

   readelf: Error: Not enough comp units for .debug_lines section

It looks like the problem was introduced by the following change:

2002-08-01  H.J. Lu  <hjl@gnu.org>
	    Daniel Jacobowitz  <drow@mvista.com>

	* dwarf2dbg.c (dwarf2_finish): Don't emit unreferenced
	.debug_line section unless it has line information.

I read through the discussions surrounding that patch to try to understand the 
issues involved, but I'm not sure if I succeeded.  I _think_ this patch is 
correct -- assuming the .debug_info section is needed, it must either be 
provided in the input or generated later in dwarf2_finish.  In the latter case, 
the test to "do nothing" should be consistent with the test to generate 
.debug_info, etc.  An alternative would be changing GAS to write out a 
.debug_info section even when no line numbers are specified, but the following 
comment in out_debug_info() suggests that might not work: "We're not supposed to 
get called unless at least one line number entry was emitted...."

I'll be happy to commit this if someone will confirm that it is the right thing 
to do and approve the patch.  It doesn't cause any gas testsuite regressions for 
an xtensa-elf target.

--Bob


gas ChangeLog
2004-11-15  Bob Wilson  <bob.wilson@acm.org>

	* dwarf2dbg.c (dwarf2_finish): Don't write a .debug_line section
	without a corresponding .debug_info section.


[-- Attachment #2: dwarf2dbg.patch --]
[-- Type: text/plain, Size: 944 bytes --]

Index: dwarf2dbg.c
===================================================================
RCS file: /cvs/src/src/gas/dwarf2dbg.c,v
retrieving revision 1.71
diff -u -p -r1.71 dwarf2dbg.c
--- dwarf2dbg.c	2 Nov 2004 09:49:25 -0000	1.71
+++ dwarf2dbg.c	15 Nov 2004 18:53:45 -0000
@@ -1356,13 +1356,12 @@ dwarf2_finish (void)
   struct line_seg *s;
 
   /* We don't need to do anything unless:
-     - Some debug information was recorded via .file/.loc
-     - or, we are generating DWARF2 information ourself (--gdwarf2)
+     - Some debug information was recorded via .file/.loc or
+       generated by GAS (--gdwarf2)
      - or, there is a user-provided .debug_info section which could
        reference the file table in the .debug_line section we generate
        below.  */
   if (all_segs == NULL
-      && debug_type != DEBUG_DWARF2
       && (bfd_get_section_by_name (stdoutput, ".debug_info") == NULL
 	  || files_in_use == 0))
     return;

             reply	other threads:[~2004-11-15 19:27 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-11-15 19:27 Bob Wilson [this message]
2004-11-18  3:31 ` Alan Modra
2004-11-18  8:39   ` Nick Clifton
2004-11-18  8:59     ` Alan Modra
2004-11-18  9:18       ` Nick Clifton
2004-11-18 11:58         ` Alan Modra
2004-11-18 14:22           ` Daniel Jacobowitz
2004-11-18 18:14             ` Bob Wilson
2004-11-18 18:42               ` Daniel Jacobowitz
2004-11-22 12:19               ` Nick Clifton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=41990311.3060504@tensilica.com \
    --to=bwilson@tensilica.com \
    --cc=binutils@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).