[Lldb-commits] [lldb] Improve performance of .debug_names lookups when DW_IDX_parent attributes are used (PR #91808)

David Blaikie via lldb-commits lldb-commits at lists.llvm.org
Thu May 23 13:13:50 PDT 2024


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


More information about the lldb-commits mailing list