diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 043093e01a..2838b3c984 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,8 @@ 2013-03-28 Doug Evans + * dwarf2read.c (create_addrmap_from_index): Complain about bad CU + index numbers. + * dwarf2read.c (dw2_get_file_names): Delete arg "objfile". All callers updated. (dw2_print_stats): Print #read CUs too. diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 2062448acf..a3e68cd061 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -2530,9 +2530,18 @@ create_addrmap_from_index (struct objfile *objfile, struct mapped_index *index) iter += 8; cu_index = extract_unsigned_integer (iter, 4, BFD_ENDIAN_LITTLE); iter += 4; - - addrmap_set_empty (mutable_map, lo + baseaddr, hi + baseaddr - 1, - dw2_get_cu (cu_index)); + + if (cu_index < dwarf2_per_objfile->n_comp_units) + { + addrmap_set_empty (mutable_map, lo + baseaddr, hi + baseaddr - 1, + dw2_get_cu (cu_index)); + } + else + { + complaint (&symfile_complaints, + _(".gdb_index address table has invalid CU number %u"), + (unsigned) cu_index); + } } objfile->psymtabs_addrmap = addrmap_create_fixed (mutable_map,