[PATCH] Clear current source symtab if belongs to objfile being freed

Jim Blandy jimb@red-bean.com
Tue Jan 3 23:26:00 GMT 2006


On 1/3/06, Fred Fish <fnf@specifix.com> wrote:
> I stumbled over this problem while chasing something else.  If the
> current source symtab belongs to a loaded shared library, and the
> objfile for that library is freed in the process or rerunning the
> executable, the current source symtab can be left pointing to garbage.
>
> An alternative solution, though a little more heavy handed, would be
> to replace the previous clear_pc_function_cache() call with a call to
> clear_symtab_users().
>
> Comments?

!   /* I *think* all our callers call clear_symtab_users.  If so, no
!      need to call this here.  Update: We are called via
!      objfile_purge_solibs which doesn't call clear_symtab_users. */

I don't think we need our comments to be so archeological.  If we
apply this patch, we should just change it to something direct like:

  /* Not all our callers call clear_symtab_users
(objfile_purge_solibs, for example),
     so we need to call this here.  */

It seems to me, though, that the 'nosharedlibrary' and 'set
solib-absolute-prefix' commands actually ought to be calling
clear_symtab_users, no?  I mean, types and blocks used by displays and
all those things are going to become invalidated, aren't they?



More information about the Gdb-patches mailing list