On Mon, May 09, 2022 at 09:41:03PM +0000, Dwarf Discussion wrote: > > Pedro Alves wrote: > > On 2022-05-09 16:48, Ron Brender via Dwarf-Discuss wrote: > > > So my suggestion is to file a bug report with CLANG, requesting they > > correct their DWARF output to reflect all details needed > > > by your language. > > > > An issue here is that DWARF does say this, in (DWARF 5, 5.7.6 Data Member > > Entries, page 119): > > > > "If the size of a data member is not the same as the size of the type > > given for the > > > > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > ^^^^^^^ > > data member, the data member has either a DW_AT_byte_size or a > > ^^^^^^^^^^^ > > DW_AT_bit_size attribute whose integer constant value (see Section 2.19 > > on > > page 55) is the amount of storage needed to hold the value of the data > > member." > > > > Note the part I underlined. In Lancelot's case, the size of the data > > member > > IS the same as the size of the type given for the data member. So Clang > > could well pedantically > > claim that they _are_ following the spec. Shouldn't the spec be clarified > > here? > > What the spec says is that a producer isn't _required_ to emit the > DW_AT_bit_size attribute. But, given that DWARF is a permissive > standard, the producer is certainly _allowed_ to emit the attribute. > If this is a hint that the target debugger will understand, regarding > the ABI, it seems okay to me for the producer to do that. > > > This then raises the question of whether a debugger can assume that the > > presence of a DW_AT_bit_size > > attribute indicates that the field is a bit field at the C/C++ source > > level. GDB is assuming that > > today, as there's really no other way to tell, but I don't think the spec > > explicitly says so. > > GDB is choosing to make that interpretation, which it's allowed to do. > The DWARF spec just doesn't promise that interpretation is correct. > > You can propose to standardize that interpretation by filing an issue > with the DWARF committee at https://dwarfstd.org/Comment.php and it might > or might not become part of DWARF v6. It might be tricky because you'd > be generalizing something very specific to your environment. > > You can also, separately, try to get Clang to emit the DW_AT_bit_size > attribute in these cases for the AMDGPU target(s). This seems more > likely to work, especially as there's an ABI requirement involved, and > (given that GDB makes this interpretation) I assume gcc already does this. >
Lancelot, I suppose, if you didn't want to submit an issue, another solution would be to require the necessary tags & attributes in the ABI itself. We already expect ABI documents to provide things like register values, CFI initial values, and some more esoteric stuff (augmentations, non-standard endianity & isa). An ABI that required descriptions in ABI-specific situations like these two seems reasonable to me. And it places no burden on compilers for other ABI's. -- Todd Allen Concurrent Real-Time _______________________________________________ Dwarf-Discuss mailing list Dwarf-Discuss@lists.dwarfstd.org http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org