* inflow.c (generic_mourn_inferior): Call reinit_frame_cache

instead	of doing it ourself.
	* blockframe.c (reinit_frame_cache): Use code which was in
	generic_mourn_inferior so we can use this function even when
	we have switched targets.
	* corelow.c (core_detach): Call reinit_frame_cache.
	* target.c (target_detach): Don't call generic_mourn_inferior
	(revert yesterday's change, now handled by core_detach).
	* objfiles.c (free_objfile): Detach any core file if we call
	SOLIB_CLEAR.  #include target.h.
This commit is contained in:
Jim Kingdon
1993-09-30 21:42:23 +00:00
parent c5198d9378
commit 2289e1c30b
2 changed files with 22 additions and 7 deletions

View File

@@ -1,5 +1,10 @@
Thu Sep 30 11:30:56 1993 Jim Kingdon (kingdon@lioth.cygnus.com)
* inflow.c (generic_mourn_inferior): Call reinit_frame_cache
instead of doing it ourself.
* blockframe.c (reinit_frame_cache): Use code which was in
generic_mourn_inferior so we can use this function even when
we have switched targets.
* corelow.c (core_detach): Call reinit_frame_cache.
* target.c (target_detach): Don't call generic_mourn_inferior
(revert yesterday's change, now handled by core_detach).

View File

@@ -186,10 +186,17 @@ flush_cached_frames ()
void
reinit_frame_cache ()
{
FRAME fr = current_frame;
flush_cached_frames ();
if (fr)
set_current_frame ( create_new_frame (read_fp (), read_pc ()));
if (target_has_stack)
{
set_current_frame (create_new_frame (read_fp (), read_pc ()));
select_frame (get_current_frame (), 0);
}
else
{
set_current_frame (0);
select_frame ((FRAME) 0, -1);
}
}
/* Return a structure containing various interesting information
@@ -262,7 +269,7 @@ struct frame_info *
get_prev_frame_info (next_frame)
FRAME next_frame;
{
FRAME_ADDR address;
FRAME_ADDR address = 0;
struct frame_info *prev;
int fromleaf = 0;
char *name;
@@ -725,7 +732,7 @@ find_pc_partial_function (pc, name, address, endaddr)
}
/* Return the innermost stack frame executing inside of BLOCK,
or zero if there is no such frame. If BLOCK is NULL, just return NULL. */
or NULL if there is no such frame. If BLOCK is NULL, just return NULL. */
FRAME
block_innermost_frame (block)
@@ -733,12 +740,15 @@ block_innermost_frame (block)
{
struct frame_info *fi;
register FRAME frame;
register CORE_ADDR start = BLOCK_START (block);
register CORE_ADDR end = BLOCK_END (block);
register CORE_ADDR start;
register CORE_ADDR end;
if (block == NULL)
return NULL;
start = BLOCK_START (block);
end = BLOCK_END (block);
frame = 0;
while (1)
{