[Dwarf-Discuss] About self-referencial sized types

Pierre-Marie de Rodat derodat at adacore.com
Fri Aug 29 02:03:46 PDT 2014


For the record, here is a status update on this issue:

On 06/10/2014 11:30 AM, Pierre-Marie de Rodat wrote:
> Unfortunately, we do not store the value of the upper bounds in the
> record (nor anywhere else): the only way to get it at runtime is to
> compute it from the discriminants.

After more investigation, we eventually realized that defining the lower 
and upper bounds directly as discriminant values (and thus as references 
to DW_TAG_member DIEs) is actually perfectly fine for the debugger.

It is also more correct from the point of view of the Ada standard: 
getting the bounds at runtime (thanks to the Array_Object'First and 
'Last constructs) must yield the discriminants.

The original issue may still be there for other languages, but since 
it's not legal to write the following in Ada:

    type Record_Type (N : Integer) is record
       S : String (1 .. N + 1);
    end record;

Bounds are precisely discriminants or aren't based on them at all. So 
the current DWARF specification is expressive enough to describe Ada 
arrays bounds in type info.

Many thanks to everyone who participated in this interesting discussion! :-)

Pierre-Marie de Rodat

More information about the Dwarf-Discuss mailing list