[Dwarf-Discuss] EXTERNAL: Corner-cases with bitfields

Michael Eager eager@eagercon.com
Tue May 10 16:11:14 GMT 2022


On 5/10/22 02:15, Pedro Alves via Dwarf-Discuss wrote:
>   But still, at the language level, the types ARE different.  And DWARF is
> also about language source to machine code mapping.  C/C++ don't let you take the
> address of a bitfield, for example, so it's possible type expressions in the
> debugger that behave differently depending on what the DWARF described.

In a previous email in this thread, I mentioned that I thought "char a;"
and "char a:8" in a struct were equivalent.  I forgot about the
restriction on using the address operator, mentioned in ISO C Sect.
6.5.3.2 (at least, in the old copy I have).  They are not equivalent.
Thanks for reminding me.

> So in my view, you'd want a producer to always indicate that the field
> is a bitfield somehow, even if the memory layout wouldn't change, i.e.,
> regardless of ABI.
> 
> Maybe we can convince Clang folks of the same as GCC, that certainly sounds simpler,
> but I figured that maybe there would be agreement that the spec itself should be tweaked
> in this direction, if every producer would come to the same conclusion.

It's better to propose a change to the DWARF Standard.

You can submit a proposal on the Public Comment page:
https://dwarfstd.org/Comment.php.  Describe the issue briefly and, if
possible, please specify the change to the wording of the DWARF
Standard that would think appropriate.

-- 
Michael Eager



More information about the Dwarf-discuss mailing list