* buildsym.c (end_symtab): If we ignore the subfiles, then
unlink the associated symtabs if they were already allocated.
This commit is contained in:
parent
cb01cfba2c
commit
24be086dc4
2 changed files with 31 additions and 0 deletions
|
@ -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.
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue