================ @@ -377,11 +378,6 @@ static void GetDeclContextImpl(DWARFDIE die, die = spec; continue; } - // To find the name of a type in a type unit, we must follow the signature. - if (DWARFDIE spec = die.GetReferencedDIE(DW_AT_signature)) { ---------------- labath wrote:
Because die.GetName() will now find the correct name on its own. And (unlike with DW_AT_specification) the correct context can be reconstructed by following the parent chain in the original dwarf unit. For nested structs like `Outer::Middle::Inner` we get something like this in the main dwarf unit: ``` 0x00000029: DW_TAG_structure_type DW_AT_declaration (true) DW_AT_signature (0xd351fbfc6a4cee7c) => points to Outer 0x00000032: DW_TAG_structure_type DW_AT_declaration (true) DW_AT_signature (0x5f726fb54ccb6c95) => points to Outer::Middle 0x0000003b: DW_TAG_structure_type DW_AT_declaration (true) DW_AT_signature (0xd3cee531644665ec) => points to Outer::Middle::Inner ``` https://github.com/llvm/llvm-project/pull/107241 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits