dwblaikie wrote:

> "std::ios_base" is forward declared and it contains typedefs whose entries in 
> the .debug_names table will point to the DIE at offset 0x0090cdd5. These 
> entries cause our type lookups to try and parse a TON of forward declarations 
> and waste time and resources.
> 
> This fix makes sure when/if we find an entry in the .debug_names table, we 
> don't process it if it has a DW_AT_declaration(true) attribute.

To come back to this - the table consists of buckets, buckets (a list of 
indexes into a hash table, one hash per string), then a string table (string 
offsets into .debug_str and entry offsets). The entry offsets point into the 
entry pool which is where the tag and DW_IDX values are. Each string entry 
points to a sequence of index entries, terminated by a zero abbrev code.

But there can be index entries that aren't referenced by string entries - they 
could appear anywhere in the entry pool, just not in a sequence pointed to by a 
name entry (because if they were there, they'd be included in that string's 
entries).

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