Fix end of CU calculation in cooked_indexer::index_dies

cooked_indexer::index_dies incorrect computes the end of the current
CU in the .debug_info.  This isn't readily testable without writing
intentionally corrupt DWARF, but it's apparent through observation: it
is currently based on 'info_ptr', which does not always point to the
start of the CU.  This patch fixes the expression.  Tested on x86-64
Fedora 34.
This commit is contained in:
Tom Tromey
2022-06-09 07:21:24 -06:00
parent af6e3f77e9
commit a858187afd

View File

@ -18283,7 +18283,9 @@ cooked_indexer::index_dies (cutu_reader *reader,
const cooked_index_entry *parent_entry,
bool fully)
{
const gdb_byte *end_ptr = info_ptr + reader->cu->header.get_length ();
const gdb_byte *end_ptr = (reader->buffer
+ to_underlying (reader->cu->header.sect_off)
+ reader->cu->header.get_length ());
while (info_ptr < end_ptr)
{