From f652bce2eecba0f090550c462a356a65a379fada Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Fri, 29 Mar 2013 00:18:32 +0000 Subject: [PATCH] * dwarf2read.c (create_addrmap_from_index): Complain about bad CU index numbers. --- gdb/ChangeLog | 3 +++ gdb/dwarf2read.c | 15 ++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 043093e01a8..2838b3c9847 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 2062448acf5..a3e68cd0613 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, -- 2.34.1