* Re: [PATCH] Accept DWARF 3-format debug info
@ 2006-06-09 23:18 David Anderson
0 siblings, 0 replies; 13+ messages in thread
From: David Anderson @ 2006-06-09 23:18 UTC (permalink / raw)
To: Daniel Jacobowitz; +Cc: Jimb, julian, gdb-patches
Damiel writes, about a supposed change in DW_FORM_ref_addr:
>References that use the attribute form DW_FORM_ref_addr are specified
>to be four bytes in the DWARF 32-bit format and eight bytes in
the
>DWARF 64-bit format, while DWARF Version 2 specifies that such
>references have the same size as an address on the target
system >(see Sections 7.4 and 7.5.4).
This is a correct observation, but *the dwarf 2 document was wrong*.
We did this late in 1992 and simply botched the document.
Confusion and tiredness :-(
Same size as an address simply makes no sense, never did.
Till very recently I don't think anyone used DW_FORM_ref_addr.
I did get an inquiry from one person (about dwarfdump) that proved
one compiler supplier believes the dwarf2 document on this point. Recent
inquiry, I mean.
There should still be FAQ on dwarf.freestandards.org which
says the DWARF2 doc was/is wrong (I wrote that FAQ).
What the dwarf3 doc says is what we always intended. It's an offset,
not an address. Misleading name of the form...
David Anderson (davea@sgi.com, writing from home)
^ permalink raw reply [flat|nested] 13+ messages in thread* [PATCH] Accept DWARF 3-format debug info
@ 2006-06-08 22:48 Julian Brown
2006-06-08 23:25 ` Jim Blandy
0 siblings, 1 reply; 13+ messages in thread
From: Julian Brown @ 2006-06-08 22:48 UTC (permalink / raw)
To: gdb-patches; +Cc: Daniel Jacobowitz, Julian Brown
[-- Attachment #1: Type: text/plain, Size: 810 bytes --]
Hi,
This is part of a series of patches from a CodeSourcery branch which
enable the output of ARM's RVCT 2.2 compiler to be debugged with gdb.
ARMCC's support for DWARF 3 is superior to its DWARF 2 support, and GDB
apparently supports much of DWARF 3 already. This patch allows DWARF 3
format debug info to be accepted by gdb.
(Some things are notably missing from the DWARF 3 support -- one thing
I've noticed so far is lack of support for DW_TAG_partial_unit, but RVDS
2.2 doesn't seem to need that. A couple of other minor things will be
addressed in followup patches.)
Tested with cross to arm-none-eabi, and natively on
x86_64-unknown-linux-gnu. OK to apply on mainline?
Cheers,
Julian
ChangeLog (Daniel Jacobowitz):
* gdb/dwarf2read.c (partial_read_comp_unit_head): Accept version 3.
[-- Attachment #2: arm-dwarf3.patch --]
[-- Type: text/x-patch, Size: 600 bytes --]
Index: src/gdb/dwarf2read.c
===================================================================
--- src.orig/gdb/dwarf2read.c 2005-03-01 12:09:19.000000000 -0800
+++ src/gdb/dwarf2read.c 2005-03-07 06:00:16.000000000 -0800
@@ -1312,7 +1312,7 @@ partial_read_comp_unit_head (struct comp
info_ptr = read_comp_unit_head (header, info_ptr, abfd);
- if (header->version != 2)
+ if (header->version != 2 && header->version != 3)
error (_("Dwarf Error: wrong version in compilation unit header "
"(is %d, should be %d) [in module %s]"), header->version,
2, bfd_get_filename (abfd));
^ permalink raw reply [flat|nested] 13+ messages in thread* Re: [PATCH] Accept DWARF 3-format debug info
2006-06-08 22:48 Julian Brown
@ 2006-06-08 23:25 ` Jim Blandy
2006-06-08 23:59 ` Daniel Jacobowitz
2006-06-09 7:29 ` Eli Zaretskii
0 siblings, 2 replies; 13+ messages in thread
From: Jim Blandy @ 2006-06-08 23:25 UTC (permalink / raw)
To: Julian Brown; +Cc: gdb-patches, Daniel Jacobowitz
Julian Brown <julian@codesourcery.com> writes:
> This is part of a series of patches from a CodeSourcery branch which
> enable the output of ARM's RVCT 2.2 compiler to be debugged with gdb.
>
> ARMCC's support for DWARF 3 is superior to its DWARF 2 support, and
> GDB apparently supports much of DWARF 3 already. This patch allows
> DWARF 3 format debug info to be accepted by gdb.
>
> (Some things are notably missing from the DWARF 3 support -- one thing
> I've noticed so far is lack of support for DW_TAG_partial_unit, but
> RVDS 2.2 doesn't seem to need that. A couple of other minor things
> will be addressed in followup patches.)
I think this patch is right. It's true that GDB doesn't support all
of DWARF 3, but GDB's general philosophy is to garner as much
information as it can, and punt the rest, which works well with
DWARF's philosophy. So GDB shouldn't just punt entire compilation
units because they're marked as DWARF 3.
First, please add yourself to the Write After Approval list in
gdb/MAINTAINERS, with an appropriate ChangeLog entry.
Then, go ahead and put in the patch as a separate commit.
Thanks!
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Accept DWARF 3-format debug info
2006-06-08 23:25 ` Jim Blandy
@ 2006-06-08 23:59 ` Daniel Jacobowitz
2006-06-18 1:10 ` Mark Kettenis
2006-06-09 7:29 ` Eli Zaretskii
1 sibling, 1 reply; 13+ messages in thread
From: Daniel Jacobowitz @ 2006-06-08 23:59 UTC (permalink / raw)
To: Jim Blandy; +Cc: Julian Brown, gdb-patches
On Thu, Jun 08, 2006 at 04:25:42PM -0700, Jim Blandy wrote:
> I think this patch is right. It's true that GDB doesn't support all
> of DWARF 3, but GDB's general philosophy is to garner as much
> information as it can, and punt the rest, which works well with
> DWARF's philosophy. So GDB shouldn't just punt entire compilation
> units because they're marked as DWARF 3.
I agree.
There seems to be one structural change in .debug_info tied to the
version number (there's also the initial lengths, but we already
support that). That is:
References that use the attribute form DW_FORM_ref_addr are specified
to be four bytes in the DWARF 32-bit format and eight bytes in the
DWARF 64-bit format, while DWARF Version 2 specifies that such
references have the same size as anaddress on the target system (see
Sections 7.4 and 7.5.4).
I see two places (skip_one_die and read_attribute_value) that are
affected. So, this should be an easy item to fix.
--
Daniel Jacobowitz
CodeSourcery
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Accept DWARF 3-format debug info
2006-06-08 23:59 ` Daniel Jacobowitz
@ 2006-06-18 1:10 ` Mark Kettenis
2006-06-18 4:40 ` Jim Blandy
0 siblings, 1 reply; 13+ messages in thread
From: Mark Kettenis @ 2006-06-18 1:10 UTC (permalink / raw)
To: dan; +Cc: jimb, julian, gdb-patches
> Date: Thu, 8 Jun 2006 19:59:12 -0400
> From: Daniel Jacobowitz <dan@codesourcery.com>
>
> On Thu, Jun 08, 2006 at 04:25:42PM -0700, Jim Blandy wrote:
> > I think this patch is right. It's true that GDB doesn't support all
> > of DWARF 3, but GDB's general philosophy is to garner as much
> > information as it can, and punt the rest, which works well with
> > DWARF's philosophy. So GDB shouldn't just punt entire compilation
> > units because they're marked as DWARF 3.
>
> I agree.
>
> There seems to be one structural change in .debug_info tied to the
> version number (there's also the initial lengths, but we already
> support that). That is:
>
> References that use the attribute form DW_FORM_ref_addr are specified
> to be four bytes in the DWARF 32-bit format and eight bytes in the
> DWARF 64-bit format, while DWARF Version 2 specifies that such
> references have the same size as anaddress on the target system (see
> Sections 7.4 and 7.5.4).
>
> I see two places (skip_one_die and read_attribute_value) that are
> affected. So, this should be an easy item to fix.
If this hasn't been fixed yet, could you add appropriate FIXME's at
those places? Might save us some time tracking down bugs in the
future.
Mark
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Accept DWARF 3-format debug info
2006-06-18 1:10 ` Mark Kettenis
@ 2006-06-18 4:40 ` Jim Blandy
0 siblings, 0 replies; 13+ messages in thread
From: Jim Blandy @ 2006-06-18 4:40 UTC (permalink / raw)
To: Mark Kettenis; +Cc: dan, julian, gdb-patches
Mark Kettenis <mark.kettenis@xs4all.nl> writes:
>> Date: Thu, 8 Jun 2006 19:59:12 -0400
>> From: Daniel Jacobowitz <dan@codesourcery.com>
>>
>> On Thu, Jun 08, 2006 at 04:25:42PM -0700, Jim Blandy wrote:
>> > I think this patch is right. It's true that GDB doesn't support all
>> > of DWARF 3, but GDB's general philosophy is to garner as much
>> > information as it can, and punt the rest, which works well with
>> > DWARF's philosophy. So GDB shouldn't just punt entire compilation
>> > units because they're marked as DWARF 3.
>>
>> I agree.
>>
>> There seems to be one structural change in .debug_info tied to the
>> version number (there's also the initial lengths, but we already
>> support that). That is:
>>
>> References that use the attribute form DW_FORM_ref_addr are specified
>> to be four bytes in the DWARF 32-bit format and eight bytes in the
>> DWARF 64-bit format, while DWARF Version 2 specifies that such
>> references have the same size as anaddress on the target system (see
>> Sections 7.4 and 7.5.4).
>>
>> I see two places (skip_one_die and read_attribute_value) that are
>> affected. So, this should be an easy item to fix.
>
> If this hasn't been fixed yet, could you add appropriate FIXME's at
> those places? Might save us some time tracking down bugs in the
> future.
I have a patch; I just haven't gotten to running a regression test.
It's pretty trivial.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Accept DWARF 3-format debug info
2006-06-08 23:25 ` Jim Blandy
2006-06-08 23:59 ` Daniel Jacobowitz
@ 2006-06-09 7:29 ` Eli Zaretskii
2006-06-09 12:25 ` Daniel Jacobowitz
2006-06-09 12:39 ` Julian Brown
1 sibling, 2 replies; 13+ messages in thread
From: Eli Zaretskii @ 2006-06-09 7:29 UTC (permalink / raw)
To: Jim Blandy; +Cc: julian, gdb-patches, dan
> Cc: gdb-patches@sourceware.org, Daniel Jacobowitz <dan@codesourcery.com>
> From: Jim Blandy <jimb@codesourcery.com>
> Date: Thu, 08 Jun 2006 16:25:42 -0700
>
> I think this patch is right. It's true that GDB doesn't support all
> of DWARF 3, but GDB's general philosophy is to garner as much
> information as it can, and punt the rest, which works well with
> DWARF's philosophy. So GDB shouldn't just punt entire compilation
> units because they're marked as DWARF 3.
I agree with the philosophy, but the devil is usually in the
details...
In this case, what will happen when GDB sees a DWARF-3 feature it
doesn't yet support? I think we should make sure it displays a
warning message, instead of throwing an internal error (or some
similar fatal reaction).
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Accept DWARF 3-format debug info
2006-06-09 7:29 ` Eli Zaretskii
@ 2006-06-09 12:25 ` Daniel Jacobowitz
2006-06-09 16:42 ` Eli Zaretskii
2006-06-09 12:39 ` Julian Brown
1 sibling, 1 reply; 13+ messages in thread
From: Daniel Jacobowitz @ 2006-06-09 12:25 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Jim Blandy, julian, gdb-patches
On Fri, Jun 09, 2006 at 10:28:07AM +0300, Eli Zaretskii wrote:
> In this case, what will happen when GDB sees a DWARF-3 feature it
> doesn't yet support? I think we should make sure it displays a
> warning message, instead of throwing an internal error (or some
> similar fatal reaction).
Same thing that happens when we see a DWARF-2 feature we don't support
;-) If I remember right, we support most of the DWARF-3 changes
relative to DWARF-2 at this point, though there's at least a few bits
of the original DWARF-2 that we're missing or bad at.
GCC is actually a DWARF-3 producer in almost all ways. It just didn't
bump the version number, to avoid upsetting consumers, since most of
the changes are forwards-compatible.
--
Daniel Jacobowitz
CodeSourcery
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Accept DWARF 3-format debug info
2006-06-09 12:25 ` Daniel Jacobowitz
@ 2006-06-09 16:42 ` Eli Zaretskii
2006-06-09 17:20 ` Daniel Jacobowitz
0 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2006-06-09 16:42 UTC (permalink / raw)
To: Jim Blandy, julian, gdb-patches
> Date: Fri, 9 Jun 2006 08:25:33 -0400
> From: Daniel Jacobowitz <dan@codesourcery.com>
> Cc: Jim Blandy <jimb@codesourcery.com>, julian@codesourcery.com,
> gdb-patches@sourceware.org
>
> On Fri, Jun 09, 2006 at 10:28:07AM +0300, Eli Zaretskii wrote:
> > In this case, what will happen when GDB sees a DWARF-3 feature it
> > doesn't yet support? I think we should make sure it displays a
> > warning message, instead of throwing an internal error (or some
> > similar fatal reaction).
>
> Same thing that happens when we see a DWARF-2 feature we don't support
> ;-)
Which is -- what? (I really don't know.)
> GCC is actually a DWARF-3 producer in almost all ways. It just didn't
> bump the version number, to avoid upsetting consumers, since most of
> the changes are forwards-compatible.
Well, the same reasons GCC had to avoid upsetting consumers might be
relevant for us as well, don't you think?
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Accept DWARF 3-format debug info
2006-06-09 16:42 ` Eli Zaretskii
@ 2006-06-09 17:20 ` Daniel Jacobowitz
2006-06-09 19:46 ` Eli Zaretskii
0 siblings, 1 reply; 13+ messages in thread
From: Daniel Jacobowitz @ 2006-06-09 17:20 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Jim Blandy, julian, gdb-patches
On Fri, Jun 09, 2006 at 07:41:54PM +0300, Eli Zaretskii wrote:
> > On Fri, Jun 09, 2006 at 10:28:07AM +0300, Eli Zaretskii wrote:
> > > In this case, what will happen when GDB sees a DWARF-3 feature it
> > > doesn't yet support? I think we should make sure it displays a
> > > warning message, instead of throwing an internal error (or some
> > > similar fatal reaction).
> >
> > Same thing that happens when we see a DWARF-2 feature we don't support
> > ;-)
>
> Which is -- what? (I really don't know.)
It depends. We try to ignore it. However, often debugging information
relies on some new construct in place of an older, less expressive one.
Syntactically, GDB will cope with most unrecognized constructs just
fine. Semantically, however, if it doesn't recognize something it may
not cope well with debugging. This is already very true for DWARF-2;
some of the other patches Julian will be posting are along those lines.
> > GCC is actually a DWARF-3 producer in almost all ways. It just didn't
> > bump the version number, to avoid upsetting consumers, since most of
> > the changes are forwards-compatible.
>
> Well, the same reasons GCC had to avoid upsetting consumers might be
> relevant for us as well, don't you think?
No, because we're a consumer of this information, not a producer. This
is a "conservative in what you generate, liberal in what you accept"
sort of situation. Strictly speaking, we're handling a lot of tags in
DWARF-2 that aren't really part of DWARF-2 - but that's harmless.
--
Daniel Jacobowitz
CodeSourcery
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Accept DWARF 3-format debug info
2006-06-09 17:20 ` Daniel Jacobowitz
@ 2006-06-09 19:46 ` Eli Zaretskii
0 siblings, 0 replies; 13+ messages in thread
From: Eli Zaretskii @ 2006-06-09 19:46 UTC (permalink / raw)
To: Jim Blandy, julian, gdb-patches
> Date: Fri, 9 Jun 2006 13:20:13 -0400
> From: Daniel Jacobowitz <drow@false.org>
> Cc: Jim Blandy <jimb@codesourcery.com>, julian@codesourcery.com,
> gdb-patches@sourceware.org
>
> Strictly speaking, we're handling a lot of tags in
> DWARF-2 that aren't really part of DWARF-2 - but that's harmless.
If we do that silently and harmlessly, it is okay, IMO.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Accept DWARF 3-format debug info
2006-06-09 7:29 ` Eli Zaretskii
2006-06-09 12:25 ` Daniel Jacobowitz
@ 2006-06-09 12:39 ` Julian Brown
2006-06-09 16:39 ` Eli Zaretskii
1 sibling, 1 reply; 13+ messages in thread
From: Julian Brown @ 2006-06-09 12:39 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Jim Blandy, gdb-patches, dan
Eli Zaretskii wrote:
>>Cc: gdb-patches@sourceware.org, Daniel Jacobowitz <dan@codesourcery.com>
>>From: Jim Blandy <jimb@codesourcery.com>
>>Date: Thu, 08 Jun 2006 16:25:42 -0700
>>
>>I think this patch is right. It's true that GDB doesn't support all
>>of DWARF 3, but GDB's general philosophy is to garner as much
>>information as it can, and punt the rest, which works well with
>>DWARF's philosophy. So GDB shouldn't just punt entire compilation
>>units because they're marked as DWARF 3.
>
>
> I agree with the philosophy, but the devil is usually in the
> details...
>
> In this case, what will happen when GDB sees a DWARF-3 feature it
> doesn't yet support? I think we should make sure it displays a
> warning message, instead of throwing an internal error (or some
> similar fatal reaction).
AIUI, the ideal is to just ignore the bits of DWARF which aren't yet
understood, though I don't know how well that works in practice. The
partial-unit case certainly causes unpleasant crashes at present, but
I'd hope that that's an exception rather than a rule. (I, or one of the
other sourcerers, may get to that particular case later.)
Cheers,
Julian
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] Accept DWARF 3-format debug info
2006-06-09 12:39 ` Julian Brown
@ 2006-06-09 16:39 ` Eli Zaretskii
0 siblings, 0 replies; 13+ messages in thread
From: Eli Zaretskii @ 2006-06-09 16:39 UTC (permalink / raw)
To: Julian Brown; +Cc: jimb, gdb-patches, dan
> Date: Fri, 09 Jun 2006 13:18:22 +0100
> From: Julian Brown <julian@codesourcery.com>
> CC: Jim Blandy <jimb@codesourcery.com>, gdb-patches@sourceware.org,
> dan@codesourcery.com
>
> AIUI, the ideal is to just ignore the bits of DWARF which aren't yet
> understood
Ignoring them is okay with me.
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2006-06-18 4:40 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-06-09 23:18 [PATCH] Accept DWARF 3-format debug info David Anderson
-- strict thread matches above, loose matches on Subject: below --
2006-06-08 22:48 Julian Brown
2006-06-08 23:25 ` Jim Blandy
2006-06-08 23:59 ` Daniel Jacobowitz
2006-06-18 1:10 ` Mark Kettenis
2006-06-18 4:40 ` Jim Blandy
2006-06-09 7:29 ` Eli Zaretskii
2006-06-09 12:25 ` Daniel Jacobowitz
2006-06-09 16:42 ` Eli Zaretskii
2006-06-09 17:20 ` Daniel Jacobowitz
2006-06-09 19:46 ` Eli Zaretskii
2006-06-09 12:39 ` Julian Brown
2006-06-09 16:39 ` Eli Zaretskii
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox