* blockframe.c, frame.h (reinit_frame_cache): New function.

solib.c (solib_add), symfile.c ({,add_}symbol_file_command):
	Use it.
This commit is contained in:
Jim Kingdon 1991-04-24 16:56:40 +00:00
parent 6a3958b22d
commit 2403f49b37
4 changed files with 30 additions and 0 deletions

View File

@ -1,3 +1,9 @@
Wed Apr 24 09:45:17 1991 Jim Kingdon (kingdon at cygint.cygnus.com)
* blockframe.c, frame.h (reinit_frame_cache): New function.
solib.c (solib_add), symfile.c ({,add_}symbol_file_command):
Use it.
Tue Apr 23 10:38:41 1991 Jim Kingdon (kingdon at cygint.cygnus.com) Tue Apr 23 10:38:41 1991 Jim Kingdon (kingdon at cygint.cygnus.com)
* symtab.c (lookup_symbol): Add 3 more of those loops through * symtab.c (lookup_symbol): Add 3 more of those loops through

View File

@ -146,6 +146,17 @@ flush_cached_frames ()
current_frame = (struct frame_info *) 0; /* Invalidate cache */ current_frame = (struct frame_info *) 0; /* Invalidate cache */
} }
/* Flush the frame cache, and start a new one if necessary. */
void
reinit_frame_cache ()
{
FRAME fr = current_frame;
flush_cached_frames ();
if (fr)
set_current_frame ( create_new_frame (read_register (FP_REGNUM),
read_pc ()));
}
/* Return a structure containing various interesting information /* Return a structure containing various interesting information
about a specified stack frame. */ about a specified stack frame. */
/* How do I justify including this function? Well, the FRAME /* How do I justify including this function? Well, the FRAME

View File

@ -31,6 +31,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "gdbcore.h" #include "gdbcore.h"
#include "command.h" #include "command.h"
#include "target.h" #include "target.h"
#include "frame.h"
/* /*
** local data declarations ** local data declarations
@ -249,6 +250,10 @@ int from_tty;
else if (val = (char *) re_comp (arg_string)) { else if (val = (char *) re_comp (arg_string)) {
error ("Invalid regexp: %s", val); error ("Invalid regexp: %s", val);
} }
/* Getting new symbols may change our opinion about what is
frameless. */
reinit_frame_cache ();
printf_filtered ("All shared libraries"); printf_filtered ("All shared libraries");
if (arg_string) if (arg_string)

View File

@ -511,6 +511,10 @@ symbol_file_command (name, from_tty)
return; return;
} }
/* Getting new symbols may change our opinion about what is
frameless. */
reinit_frame_cache ();
symbol_file_add (name, from_tty, (CORE_ADDR)0, 1); symbol_file_add (name, from_tty, (CORE_ADDR)0, 1);
} }
@ -610,6 +614,10 @@ add_symbol_file_command (args, from_tty)
char *args; char *args;
int from_tty; int from_tty;
{ {
/* Getting new symbols may change our opinion about what is
frameless. */
reinit_frame_cache ();
target_add_syms (args, from_tty); target_add_syms (args, from_tty);
} }