felipepiovezan wrote:

> I think #77696 is justification enough to add this check, but I don't think 
> we should be implicating DW_IDX_parent_entries until we know how those came 
> about. 

This is pretty much my point, the workaround is fine, but I don't think the 
source-code comment in this PR is. The suggestion provided LGTM.

My guess is that the examples Greg is encountering are just hitting the 
slowness of DWARF parsing through other code paths (anything that causes too 
many calls to "ProcessEntries", and IDX_parent addressed _one_ of those, 
@Michael137  was just asking me the other day if we can address some of the 
other queries as well).

> I believe we could add a debug_names entry for std::ios_base (and refer to it 
> from the entry for std::ios_base::seekdir), as long as the ios_base entry was 
> not present in any of the name tables.

Yup, this is very doable!

> I was not able to produce a DW_IDX_parent_entries referring to any kind of 
> class type

When I compile the following with `clang++ test.cpp -c -gdwarf-5 -O0 -o - | 
dwarfdump --debug-names -`, I get the right parent chain. Is this not true when 
you try it?

```
namespace A { namespace B { struct State { class InnerState{}; }; } }
A::B::State::InnerState get_state() { return A::B::State::InnerState(); }
```

```
      String: 0x000000c4 "InnerState"
      Entry @ 0xbe {
        Abbrev: 0x138
        Tag: DW_TAG_class_type
        DW_IDX_die_offset: 0x0000003f
        DW_IDX_parent: Entry @ 0xde
      }
      String: 0x000000be "State"
      Entry @ 0xde {
        Abbrev: 0x9b8
        Tag: DW_TAG_structure_type
        DW_IDX_die_offset: 0x00000039
        DW_IDX_parent: Entry @ 0xe9
      }
      String: 0x000000bc "B"
      Entry @ 0xe9 {
        Abbrev: 0x1cb8
        Tag: DW_TAG_namespace
        DW_IDX_die_offset: 0x00000037
        DW_IDX_parent: Entry @ 0xd7
      }
      String: 0x000000ba "A"
      Entry @ 0xd7 {
        Abbrev: 0x1c98
        Tag: DW_TAG_namespace
        DW_IDX_die_offset: 0x00000035
        DW_IDX_parent: <parent not indexed>
      }
```

https://github.com/llvm/llvm-project/pull/91808
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to