* buildsym.c (end_symtab): If we ignore the subfiles, then

unlink the associated symtabs if they were already allocated.
This commit is contained in:
Joel Brobecker 2009-03-24 01:32:46 +00:00
parent cb01cfba2c
commit 24be086dc4
2 changed files with 31 additions and 0 deletions

View file

@ -1,3 +1,8 @@
2009-03-23 Joel Brobecker <brobecker@adacore.com>
* buildsym.c (end_symtab): If we ignore the subfiles, then
unlink the associated symtabs if they were already allocated.
2009-03-23 Jerome Guitton <guitton@adacore.com>
Provide a way to force building of GDB with libcurses.

View file

@ -1118,6 +1118,32 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
symtab->primary = 0;
}
else
{
if (subfile->symtab)
{
/* Since we are ignoring that subfile, we also need
to unlink the associated empty symtab that we created.
Otherwise, we can into trouble because various parts
such as the block-vector are uninitialized whereas
the rest of the code assumes that they are.
We can only unlink the symtab because it was allocated
on the objfile obstack. */
struct symtab *s;
if (objfile->symtabs == subfile->symtab)
objfile->symtabs = objfile->symtabs->next;
else
ALL_OBJFILE_SYMTABS (objfile, s)
if (s->next == subfile->symtab)
{
s->next = s->next->next;
break;
}
subfile->symtab = NULL;
}
}
if (subfile->name != NULL)
{
xfree ((void *) subfile->name);