2002-12-13 Andrew Cagney <ac131313@redhat.com>
* infcmd.c (run_stack_dummy): Create a frame ID directly and then pass that to set_momentary_breakpoint. Move comments to where they belong. * frame.h (set_current_frame): Delete declaration. * frame.c (set_current_frame): Delete function.
This commit is contained in:
parent
2c517d0eb4
commit
18ea5ba4f0
@ -1,3 +1,11 @@
|
||||
2002-12-13 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* infcmd.c (run_stack_dummy): Create a frame ID directly and then
|
||||
pass that to set_momentary_breakpoint. Move comments to where they
|
||||
belong.
|
||||
* frame.h (set_current_frame): Delete declaration.
|
||||
* frame.c (set_current_frame): Delete function.
|
||||
|
||||
2002-12-13 Andrew Cagney <ac131313@redhat.com>
|
||||
|
||||
* frame.c (frame_extra_info_zalloc): New function.
|
||||
|
@ -472,12 +472,6 @@ get_current_frame (void)
|
||||
return current_frame;
|
||||
}
|
||||
|
||||
void
|
||||
set_current_frame (struct frame_info *frame)
|
||||
{
|
||||
current_frame = frame;
|
||||
}
|
||||
|
||||
/* The "selected" stack frame is used by default for local and arg
|
||||
access. May be zero, for no selected frame. */
|
||||
|
||||
|
18
gdb/frame.h
18
gdb/frame.h
@ -625,23 +625,9 @@ extern void return_command (char *, int);
|
||||
extern struct frame_info *deprecated_selected_frame;
|
||||
|
||||
|
||||
/* NOTE: cagney/2002-11-28:
|
||||
/* Create a frame using the specified BASE and PC. */
|
||||
|
||||
These functions are used to explicitly create and set the inner
|
||||
most (current) frame vis:
|
||||
|
||||
set_current_frame (create_new_frame (read_fp(), stop_pc)));
|
||||
|
||||
Such code should be removed. Instead that task can be left to
|
||||
get_current_frame() which will update things on-demand.
|
||||
|
||||
The only vague exception is found in "infcmd.c" (and a few
|
||||
architectures specific files) as part of the code implementing the
|
||||
command ``(gdb) frame FRAME PC''. There, the frame should be
|
||||
created/selected in a single shot. */
|
||||
|
||||
extern void set_current_frame (struct frame_info *);
|
||||
extern struct frame_info *create_new_frame (CORE_ADDR, CORE_ADDR);
|
||||
extern struct frame_info *create_new_frame (CORE_ADDR base, CORE_ADDR pc);
|
||||
|
||||
|
||||
/* Create/access the frame's `extra info'. The extra info is used by
|
||||
|
38
gdb/infcmd.c
38
gdb/infcmd.c
@ -1001,30 +1001,28 @@ run_stack_dummy (CORE_ADDR addr, struct regcache *buffer)
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If defined, CALL_DUMMY_BREAKPOINT_OFFSET is where we need
|
||||
to put a breakpoint instruction. If not, the call dummy
|
||||
already has the breakpoint instruction in it.
|
||||
|
||||
ADDR IS THE ADDRESS of the call dummy plus the
|
||||
CALL_DUMMY_START_OFFSET, so we need to subtract the
|
||||
CALL_DUMMY_START_OFFSET. */
|
||||
sal.pc = addr - CALL_DUMMY_START_OFFSET + CALL_DUMMY_BREAKPOINT_OFFSET;
|
||||
}
|
||||
sal.section = find_pc_overlay (sal.pc);
|
||||
|
||||
/* Set up a FRAME for the dummy frame so we can pass it to
|
||||
set_momentary_breakpoint. We need to give the breakpoint a
|
||||
frame in case there is only one copy of the dummy (e.g.
|
||||
CALL_DUMMY_LOCATION == AFTER_TEXT_END). */
|
||||
flush_cached_frames ();
|
||||
set_current_frame (create_new_frame (read_fp (), sal.pc));
|
||||
|
||||
/* If defined, CALL_DUMMY_BREAKPOINT_OFFSET is where we need to put
|
||||
a breakpoint instruction. If not, the call dummy already has the
|
||||
breakpoint instruction in it.
|
||||
|
||||
addr is the address of the call dummy plus the CALL_DUMMY_START_OFFSET,
|
||||
so we need to subtract the CALL_DUMMY_START_OFFSET. */
|
||||
/* FIXME: cagney/2002-12-01: Rather than pass in curent frame,
|
||||
why not just create, and then pass in a frame ID. This would
|
||||
make it possible to eliminate set_current_frame(). */
|
||||
bpt = set_momentary_breakpoint (sal,
|
||||
get_frame_id (get_current_frame ()),
|
||||
bp_call_dummy);
|
||||
bpt->disposition = disp_del;
|
||||
{
|
||||
/* Set up a frame ID for the dummy frame so we can pass it to
|
||||
set_momentary_breakpoint. We need to give the breakpoint a
|
||||
frame ID so that the breakpoint code can correctly
|
||||
re-identify the dummy breakpoint. */
|
||||
struct frame_id frame = frame_id_build (read_fp (), sal.pc);
|
||||
/* Create a momentary breakpoint at the return address of the
|
||||
inferior. That way it breaks when it returns. */
|
||||
bpt = set_momentary_breakpoint (sal, frame, bp_call_dummy);
|
||||
bpt->disposition = disp_del;
|
||||
}
|
||||
|
||||
/* If all error()s out of proceed ended up calling normal_stop (and
|
||||
perhaps they should; it already does in the special case of error
|
||||
|
Loading…
Reference in New Issue
Block a user