================
@@ -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

Reply via email to