This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [patch] XLF Fortran: Remove an inappropriate complaint [Re: XLF Fortran arrays test]
On Sun, 25 Nov 2007 15:55:55 +0100, Daniel Jacobowitz wrote:
> On Fri, Nov 23, 2007 at 06:21:04PM +0100, Jan Kratochvil wrote:
> > On Fri, 23 Nov 2007 18:05:48 +0100, Carlos Eduardo Seo wrote:
> > ...
> > > During symbol reading, DW_AT_type missing from DW_TAG_subrange_type.
> >
> > This code was there already before my changes. And the XLF output really
> > misses DW_AT_type for DW_TAG_subrange_type. But it should be correct:
> > http://dwarf.freestandards.org/Dwarf3.pdf
> > 5.12 Subrange Type Entries
> > The subrange entry may have a DW_AT_type attribute to describe the type
> > of object, called the basis type, of whose values this subrange is
> > a subset.
> >
> > "may have" should not produce a `complaint' category message as it is not
> > a standard violation.
>
> Here's the rest of what the standard has to say:
>
> ==
> If the subrange entry has no type attribute describing the basis type,
> the basis type is assumed to be the same as the object described by
> the lower bound attribute (if it references an object). If there is no
> lower bound attribute, or that attribute does not reference an object,
> the basis type is the type of the upper bound or count attribute (if
> either of them references an object). If there is no upper bound or
> count attribute, or neither references an object, the type is assumed
> to be the same type, in the source language of the compilation unit
> containing the subrange entry, as a signed integer with the same size
> as an address on the target machine.
> ==
>
> It looks to me like (before your other patches?) we do not support
> the bounds or count referring to objects.
Before my patches
http://sources.redhat.com/ml/gdb-patches/2007-11/msg00438.html
the code supported for the bounds
DW_FORM_sdata, DW_FORM_udata, DW_FORM_data{1,2,4,8}
and after my patches it supports the bounds/count
DW_FORM_block{,1,2,4}
To reference `object' it would have to support
DW_FORM_reF*
but this form is still not supported.
> The code below the
> complaint is creating a signed integer type the size of an address.
> So your patch is OK. Thanks.
I see now my point is wrong. The code still violates (notwithstanding of any
of my Fortran patches) the DWARF standard as it ignores
DW_AT_lower_bound/DW_AT_upper_bound/DW_AT_count with DW_FORM_ref* which may
specify the intended type through another DIE (as can be seen in DWARF3 D.2.2).
Sorry,
Jan