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

Jan Kratochvil jan.kratochvil@redhat.com
Mon Jun 7 18:20:30 GMT 2021


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