binutils/dwarf.c: abbrev caching
authorAlan Modra <amodra@gmail.com>
Wed, 20 Jul 2022 23:08:14 +0000 (08:38 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 21 Jul 2022 04:05:51 +0000 (13:35 +0930)
commitf07c08e115e27cddf5a0030dc6332bbee1bd9c6a
tree1af0df0b0fcdab8870f16cb0bc508a6b81c2c080
parent175b91507b83ad42607d2f6dadaf55b7b511bdbe
binutils/dwarf.c: abbrev caching

I'm inclined to think that abbrev caching is counter-productive.  The
time taken to search the list of abbrevs converted to internal form is
non-zero, and it's easy to decode the raw abbrevs.  It's especially
silly to cache empty lists of decoded abbrevs (happens with zero
padding in .debug_abbrev), or abbrevs as they are displayed when there
is no further use of those abbrevs.  This patch stops caching in those
cases.

* dwarf.c (record_abbrev_list_for_cu): Add free_list param.
Put abbrevs on abbrev_lists here.
(new_abbrev_list): Delete function.
(process_abbrev_set): Return newly allocated list.  Move
abbrev base, offset and size checking to..
(find_and_process_abbrev_set): ..here, new function.  Handle
lookup of cached abbrevs here, and calculate start and end
for process_abbrev_set.  Return free_list if newly alloc'd.
(process_debug_info): Consolidate cached list lookup, new list
alloc and processing into find_and_process_abbrev_set call.
Free list when not cached.
(display_debug_abbrev): Similarly.
binutils/dwarf.c