The "save gdb-index" command creates a .gdb-index file that contains an optimized version of the debug info to speed up start up when debugging large programs. The address table part of this file is incomplete. gdb uses the textlow,texthigh values of each partial symtab to populate this table, but this is insufficient, there may be multiple noncontiguous regions.
CVSROOT: /cvs/src Module name: src Changes by: devans@sourceware.org 2010-12-08 19:03:35 Modified files: gdb : ChangeLog dwarf2read.c Log message: PR symtab/12302 * dwarf2read.c (struct psymtab_cu_index_map): New struct. (hash_psymtab_cu_index, eq_psymtab_cu_index): New functions. (struct addrmap_index_data): New struct. (add_address_entry): Remove arg `pst', new args `start', `end'. (add_address_entry_worker, write_address_map): New functions. (write_psymtabs_to_index): Address table generation moved to write_address_map. Build a table mapping psymtab to CU index to pass to it. Patches: http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/ChangeLog.diff?cvsroot=src&r1=1.12364&r2=1.12365 http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/dwarf2read.c.diff?cvsroot=src&r1=1.486&r2=1.487
Appears to be fixed.