forked from Imagelibrary/binutils-gdb
* dummy-frame.h (dummy_frame_pop): Add prototype.
* dummy-frame.c: Include "observer.h". (dummy_frame_push): Do not check for stale frames. (dummy_frame_pop): New function. (cleanup_dummy_frames): New function. (_initialize_dummy_frame): Install it as inferior_created observer. * frame.h (struct frame_id): Update comments. (frame_id_inner): Remove prototype. * frame.c (frame_id_inner): Make static. Add comments. (frame_find_by_id): Update frame_id_inner safety net check to avoid false positives for targets using non-contiguous stack ranges. (get_prev_frame_1): Update frame_id_inner safety net check. (frame_pop): Call dummy_frame_pop when popping a dummy frame. * stack.c (return_command): Directly pop the selected frame. * infrun.c (handle_inferior_event): Remove dead code. * i386-tdep.c (i386_push_dummy_call): Update comment.
This commit is contained in:
27
gdb/infrun.c
27
gdb/infrun.c
@@ -3323,33 +3323,6 @@ infrun: BPSTAT_WHAT_SET_LONGJMP_RESUME (!gdbarch_get_longjmp_target)\n");
|
||||
tss->current_line = stop_pc_sal.line;
|
||||
tss->current_symtab = stop_pc_sal.symtab;
|
||||
|
||||
/* In the case where we just stepped out of a function into the
|
||||
middle of a line of the caller, continue stepping, but
|
||||
step_frame_id must be modified to current frame */
|
||||
#if 0
|
||||
/* NOTE: cagney/2003-10-16: I think this frame ID inner test is too
|
||||
generous. It will trigger on things like a step into a frameless
|
||||
stackless leaf function. I think the logic should instead look
|
||||
at the unwound frame ID has that should give a more robust
|
||||
indication of what happened. */
|
||||
if (step - ID == current - ID)
|
||||
still stepping in same function;
|
||||
else if (step - ID == unwind (current - ID))
|
||||
stepped into a function;
|
||||
else
|
||||
stepped out of a function;
|
||||
/* Of course this assumes that the frame ID unwind code is robust
|
||||
and we're willing to introduce frame unwind logic into this
|
||||
function. Fortunately, those days are nearly upon us. */
|
||||
#endif
|
||||
{
|
||||
struct frame_info *frame = get_current_frame ();
|
||||
struct frame_id current_frame = get_frame_id (frame);
|
||||
if (!(frame_id_inner (get_frame_arch (frame), current_frame,
|
||||
step_frame_id)))
|
||||
step_frame_id = current_frame;
|
||||
}
|
||||
|
||||
if (debug_infrun)
|
||||
fprintf_unfiltered (gdb_stdlog, "infrun: keep going\n");
|
||||
keep_going (ecs);
|
||||
|
||||
Reference in New Issue
Block a user