[Dwarf-Discuss] How to map [[no_unique_address]] into DWARF

David Blaikie dblaikie@gmail.com
Mon Jun 7 18:27:39 GMT 2021


Ah, in the sense that you want to be able to derive new types based on
the DWARF?
Fair enough.

Raphael's suggestion seems reasonable to me.

On Mon, Jun 7, 2021 at 11:20 AM Jan Kratochvil
<jan.kratochvil at redhat.com> wrote:
>
> On Mon, 07 Jun 2021 20:11:16 +0200, David Blaikie via Dwarf-Discuss wrote:
> > On Mon, Jun 7, 2021 at 10:58 AM Jan Kratochvil via Dwarf-Discuss <dwarf-discuss at lists.dwarfstd.org> wrote:
> > >
> > > clang-12 will create the same DWARF for class B with [[no_unique_address]]
> > > either present or not. Despite that class C derived from B has different
> > > layout depending on from which class B it gets derived
> >
> > Why is this ^ a problem? The layout seems accurate - in that 'a'
> > shares its address with 'c' - so both members having the same offset
> > seems like an accurate representation of the layout of the struct?
>
> $ echo 'struct A {}; struct B { [[no_unique_address]] A a; } b;'|clang -Wall -g -c -o a.o -x c++ -;lldb ./a.o
> (lldb) expr -- struct C:B{char c;};&((C *)nullptr)->c);
> (lldb) expr -- struct C:B{char c;};sizeof(C);
>
> Actual:
> (char *) $0 = 0x0000000000000001 ""
> (unsigned long) $1 = 2
>
> Expected:
> (char *) $0 = 0x0000000000000000
> (unsigned long) $1 = 1
>
>
> Jan
>



More information about the Dwarf-discuss mailing list