On Mon, 07 Jun 2021 20:27:39 +0200, David Blaikie via Dwarf-Discuss wrote: > Ah, in the sense that you want to be able to derive new types based on > the DWARF? > Fair enough.
The real reason is that when using the derived class C LLDB+LLVM layout engine will assert because FieldOffsets from DWARF say C::c is at offset 0 but inherited class B makes such layout impossible (without [[no_unique_address]] which LLDB does not see from DWARF). One could workaround that assert some way but the underlying reason of the assert is that LLDB does not see full definition of class B from DWARF. Which itself can be shown on the reproducer below which should be fixed anyway. Jan > On Mon, Jun 7, 2021 at 11:20 AM Jan Kratochvil <jan.kratoch...@redhat.com> > wrote: > > $ 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 _______________________________________________ Dwarf-Discuss mailing list Dwarf-Discuss@lists.dwarfstd.org http://lists.dwarfstd.org/listinfo.cgi/dwarf-discuss-dwarfstd.org