HomePhabricator

debug_rnglists/symbolizing: reduce memory usage by not caching rnglists

Authored by dblaikie on Tue, Sep 15, 12:49 PM.

Description

debug_rnglists/symbolizing: reduce memory usage by not caching rnglists

This matches the debug_ranges behavior - though is currently implemented
differently. (the debug_ranges parsing was handled by creating a new
ranges parser during DIE address querying, and just destroying it after
the query - whereas the rnglists parser is a member of the DWARFUnit
currently - so the API doesn't cache anymore)

I think this could/should be improved by not parsing debug_rnglists
headers at all when dumping debug_info or symbolizing - do it the way
DWARF (roughly) intended: take the rnglists_base, add addr*index to it,
read the offset, parse the list at rnglists_base+offset. This would have
no error checking for valid index (because the number of valid indexes
is stored in the header, which has a negative offset from rnglists_base

  • and is sort of only intended for use by dumpers, not by parsers going

from debug_info to a rnglist) or out of contribution bounds access
(since it wouldn't know the length of the contribution, also in the
header) - nor any error-checking that the rnglist contribution was using
the same properties as the debug_info (version, DWARF32/64, address
size, etc).

Details

Committed
dblaikieWed, Sep 16, 7:36 PM
Parents
rGc14032281980: Use zu rather than llu format specifier for size_t (-Wformat warning fix).
Branches
Unknown
Tags
Unknown