Statically examine abbrev properties
authorTom Tromey <tom@tromey.com>
Sun, 7 Mar 2021 02:47:38 +0000 (19:47 -0700)
committerTom Tromey <tom@tromey.com>
Tue, 12 Apr 2022 15:31:16 +0000 (09:31 -0600)
commit696eef26e00a268a2e1346c9d3f1a4db968a6799
treec6b6b8dc923e0f7872e690e2c80b919f5b4af061
parent8c83177441405ace08650d9d36f76311009c2ed3
Statically examine abbrev properties

The new DIE scanner works more or less along the lines indicated by
the text for the .debug_names section, disregarding the bugs in the
specification.

While working on this, I noticed that whether a DIE is interesting is
a static property of the DIE's abbrev.  It also turns out that many
abbrevs imply a static size for the DIE data, and additionally that
for many abbrevs, the sibling offset is stored at a constant offset
from the start of the DIE.

This patch changes the abbrev reader to analyze each abbrev and stash
the results on the abbrev.  These combine to speed up the new indexer.
If the "interesting" flag is false, GDB knows to skip the DIE
immediately.  If the sibling offset is statically known, skipping can
be done without reading any attributes; and in some other cases, the
DIE can be skipped using simple arithmetic.
gdb/dwarf2/abbrev.c
gdb/dwarf2/abbrev.h