Approved by ezannoni@redhat.com:

2002-05-12  Fred Fish  <fnf@redhat.com>
	* symfile.c (default_symfile_offsets): Arrange for uninitialized
	sect_index_xxx members to index the first slot in section_offsets
	if all of the section_offsets are zero.
This commit is contained in:
Fred Fish 2002-05-12 18:13:33 +00:00
parent 1aee598a77
commit bbcd32adda
2 changed files with 34 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2002-05-12 Fred Fish <fnf@redhat.com>
* symfile.c (default_symfile_offsets): Arrange for uninitialized
sect_index_xxx members to index the first slot in section_offsets
if all of the section_offsets are zero.
2002-05-12 Mark Kettenis <kettenis@gnu.org>
* configure.tgt (sparc-*openbsd): Remove entry accidentially

View File

@ -539,6 +539,34 @@ default_symfile_offsets (struct objfile *objfile,
if (sect)
objfile->sect_index_rodata = sect->index;
/* This is where things get really weird... We MUST have valid
indices for the various sect_index_* members or gdb will abort.
So if for example, there is no ".text" section, we have to
accomodate that. Except when explicitly adding symbol files at
some address, section_offsets contains nothing but zeros, so it
doesn't matter which slot in section_offsets the individual
sect_index_* members index into. So if they are all zero, it is
safe to just point all the currently uninitialized indices to the
first slot. */
for (i = 0; i < objfile->num_sections; i++)
{
if (ANOFFSET (objfile->section_offsets, i) != 0)
{
break;
}
}
if (i == objfile->num_sections)
{
if (objfile->sect_index_text == -1)
objfile->sect_index_text = 0;
if (objfile->sect_index_data == -1)
objfile->sect_index_data = 0;
if (objfile->sect_index_bss == -1)
objfile->sect_index_bss = 0;
if (objfile->sect_index_rodata == -1)
objfile->sect_index_rodata = 0;
}
}
/* Process a symbol file, as either the main file or as a dynamically