diff --git a/gdb/dwarf2/read-debug-names.c b/gdb/dwarf2/read-debug-names.c index 2e5067efb3d..89f5df6df90 100644 --- a/gdb/dwarf2/read-debug-names.c +++ b/gdb/dwarf2/read-debug-names.c @@ -166,6 +166,7 @@ create_addrmap_from_aranges (dwarf2_per_objfile *per_objfile, addrmap_mutable mutable_map; + section->read (per_objfile->objfile); if (read_addrmap_from_aranges (per_objfile, section, &mutable_map)) per_bfd->index_addrmap = new (&per_bfd->obstack) addrmap_fixed (&per_bfd->obstack, diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index ea0b2328a3e..c8e21aa9c2d 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -1586,6 +1586,7 @@ dwarf2_per_bfd::map_info_sections (struct objfile *objfile) ranges.read (objfile); rnglists.read (objfile); addr.read (objfile); + debug_aranges.read (objfile); for (auto §ion : types) section.read (objfile); @@ -1843,6 +1844,11 @@ read_addrmap_from_aranges (dwarf2_per_objfile *per_objfile, dwarf2_section_info *section, addrmap *mutable_map) { + /* Caller must ensure that the section has already been read. */ + gdb_assert (section->readin); + if (section->empty ()) + return false; + struct objfile *objfile = per_objfile->objfile; bfd *abfd = objfile->obfd.get (); struct gdbarch *gdbarch = objfile->arch (); @@ -1870,13 +1876,8 @@ read_addrmap_from_aranges (dwarf2_per_objfile *per_objfile, } std::set debug_info_offset_seen; - - section->read (objfile); - const bfd_endian dwarf5_byte_order = gdbarch_byte_order (gdbarch); - const gdb_byte *addr = section->buffer; - while (addr < section->buffer + section->size) { const gdb_byte *const entry_addr = addr;