Re: [patch] Replace reread_symbols by load+free calls

Pedro Alves
2009-08-14T23:09:53Z

I have to apologize too, since I dropped the conversation too.

On Friday 14 August 2009 23:34:31, Tom Tromey wrote:

> I realize you pulled this patch from consideration. But, FWIW, I tend
> to think it is a good idea, because it ensures that all the hooks and
> observers will be run identically in both cases.

I have to say that I didn't think it was a good idea, because of the
way the change ties the objfiles to solib.c, and the fact that
it makes it so that an objfile pointer becomes more volatile. That
is, with that change, all roots holding an objfile pointer need to
be crawled, while as is today, an objfile object's internals are the
business of objfile.c and symfile.c, and an objfile client can
hold a pointer across objfile rereads, while the pointer stays
valid. There were also some FIXME comments related to bfd_get_mtime
in the patch that looked like misunderstandings, and that threw
me off. Maybe I just didn't understand them. :-/

There's also this comment in the current code that makes that
suggested change scare me:

/* There are various functions like symbol_file_add,
symfile_bfd_open, syms_from_objfile, etc., which might
appear to do what we want. But they have various other
effects which we *don't* want. So we just do stuff
ourselves. (...) */

... as we'd be going in the opposite direction (the patch uses
symbol_file_add).

I wonder how much would we simplify reread_symbols by moving the
each-objfile rereading code to objfile.c, and refactor it to share code
with allocate_objfile, free_objfile, etc., and thus also making it easier
to make hooks and observers be consistent.

--
Pedro Alves