Index: dwarf2-frame.c =================================================================== RCS file: /cvs/src/src/gdb/dwarf2-frame.c,v retrieving revision 1.100 diff -u -p -u -r1.100 dwarf2-frame.c --- dwarf2-frame.c 6 Oct 2009 23:27:04 -0000 1.100 +++ dwarf2-frame.c 22 Oct 2009 18:26:31 -0000 @@ -1525,6 +1525,14 @@ find_cie (struct dwarf2_cie_table *cie_t { struct dwarf2_cie **p_cie; + /* The C standard (ISO/IEC 9899:TC2) requires the BASE argument to + bsearch be non-NULL. */ + if (cie_table->entries == NULL) + { + gdb_assert (cie_table->num_entries == 0); + return NULL; + } + p_cie = bsearch (&cie_pointer, cie_table->entries, cie_table->num_entries, sizeof (cie_table->entries[0]), bsearch_cie_cmp); if (p_cie != NULL) Index: objfiles.c =================================================================== RCS file: /cvs/src/src/gdb/objfiles.c,v retrieving revision 1.99 diff -u -p -u -r1.99 objfiles.c --- objfiles.c 19 Oct 2009 09:51:41 -0000 1.99 +++ objfiles.c 22 Oct 2009 18:26:31 -0000 @@ -1113,6 +1113,14 @@ update_section_map (struct program_space if (insert_section_p (objfile->obfd, s->the_bfd_section)) alloc_size += 1; + /* This happens on detach/attach (e.g. in gdb.base/attach.exp). */ + if (alloc_size == 0) + { + *pmap = NULL; + *pmap_size = 0; + return; + } + map = xmalloc (alloc_size * sizeof (*map)); i = 0; @@ -1175,6 +1183,14 @@ find_pc_section (CORE_ADDR pc) pspace_info->objfiles_changed_p = 0; } + /* The C standard (ISO/IEC 9899:TC2) requires the BASE argument to + bsearch be non-NULL. */ + if (pspace_info->sections == NULL) + { + gdb_assert (pspace_info->num_sections == 0); + return NULL; + } + sp = (struct obj_section **) bsearch (&pc, pspace_info->sections, pspace_info->num_sections,