This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: RFA: [symfile.c} Fix to symbol_file_add() [REPOST]
- To: Fernando Nasser <fnasser at redhat dot com>
- Subject: Re: RFA: [symfile.c} Fix to symbol_file_add() [REPOST]
- From: Elena Zannoni <ezannoni at cygnus dot com>
- Date: Wed, 2 May 2001 12:06:31 -0400 (EDT)
- Cc: Elena Zannoni <ezannoni at cygnus dot com>, gdb-patches at sources dot redhat dot com, hilfingr at otisco dot mckusick dot com
- References: <3AED8391.C6B9A456@redhat.com><15085.43538.55216.581538@kwikemart.cygnus.com><3AEDF6A3.440D0C62@redhat.com><15086.11696.278572.217415@kwikemart.cygnus.com><3AEEB0E2.3232D2DE@redhat.com><15087.31793.429533.289522@kwikemart.cygnus.com><3AF02D6E.333B2AAB@redhat.com>
Thanks Fernando!
But shouldn't we be leaving the stuff in symbol_file_command?
I.e. only adding it to the new function?
Elena
Fernando Nasser writes:
> After the fruitful discussions with Elena, I believe I have a better
> patch, so please consider this one instead.
>
> As Elena explained, we must let the callers of symbol_file_add() do the
> cache reset as we may be loading several shared libraries. Doing the
> cache reset for each one is too much overhead as we will have to grab
> the data for filling the current frame every single time. Well,
> symbol_file_add_main () is a caller, so I guess it can go there. And
> none of its callers has a a call to reinit_frame_cache() as they used to
> call symbol_file_command().
>
> I guess the previous behavior is being safely restored now.
>
> However, several of the callers of symbol_file_add() do not call
> reinit_frame_cache() as they should. But as far as I can tell, this has
> always been like that. The only thing that is lost is the possibility
> to get a better frame description of the current stack by using the
> newly read symbols. I don't know enough about all this targets to know
> if this is important (I don't know why they are reading symbol files).
> The shared library case is already taken care of as Elena has pointed
> out.
>
>
>
> ChangeLog:
>
> * symfile.c (symbol_file_command): Move cleanup operations
> from here...
> (symbol_file_add_main): ...to here, so they are run every time
> a new main symbol file is read.
>
>
> --
> Fernando Nasser
> Red Hat Canada Ltd. E-Mail: fnasser@redhat.com
> 2323 Yonge Street, Suite #300
> Toronto, Ontario M4P 2C9Index: symfile.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/symfile.c,v
> retrieving revision 1.31
> diff -c -p -r1.31 symfile.c
> *** symfile.c 2001/04/05 02:02:13 1.31
> --- symfile.c 2001/05/02 15:35:32
> *************** symbol_file_add (char *name, int from_tt
> *** 896,908 ****
> return (objfile);
> }
>
> ! /* Just call the above with default values.
> ! Used when the file is supplied in the gdb command line. */
>
> void
> symbol_file_add_main (char *args, int from_tty)
> {
> symbol_file_add (args, from_tty, NULL, 1, 0);
> }
>
> void
> --- 896,920 ----
> return (objfile);
> }
>
> ! /* Call the above with default values and update whatever is
> ! affected by a new main().
> ! Used when the file is supplied in the gdb command line
> ! and by some targets. */
>
> void
> symbol_file_add_main (char *args, int from_tty)
> {
> symbol_file_add (args, from_tty, NULL, 1, 0);
> +
> + #ifdef HPUXHPPA
> + RESET_HP_UX_GLOBALS ();
> + #endif
> +
> + /* Getting new symbols may change our opinion about
> + what is frameless. */
> + reinit_frame_cache ();
> +
> + set_initial_language ();
> }
>
> void
> *************** symbol_file_command (char *args, int fro
> *** 980,993 ****
> {
> name = *argv;
> symbol_file_add (name, from_tty, NULL, 1, flags);
> - #ifdef HPUXHPPA
> - RESET_HP_UX_GLOBALS ();
> - #endif
> - /* Getting new symbols may change our opinion about
> - what is frameless. */
> - reinit_frame_cache ();
> -
> - set_initial_language ();
> }
> argv++;
> }
> --- 992,997 ----