+2011-09-07 Yao Qi <yao@codesourcery.com>
+
+ * gdbthread.h (struct thread_info): Remove fields
+ `stepping_through_solib_after_catch' and
+ `stepping_through_solib_catchpoints'.
+ * infrun.c (init_thread_stepping_state): Update.
+ (process_event_stop_test, currently_stepping): Update.
+ (currently_stepping_or_nexting_callback): Update.
+
2011-09-07 Yao Qi <yao@codesourcery.com>
* gdbthread.h (struct thread_info): Comment on field
when GDB gets back SIGTRAP from step_resume_breakpoint. */
int step_after_step_resume_breakpoint;
- /* This is set TRUE when a catchpoint of a shared library event
- triggers. Since we don't wish to leave the inferior in the
- solib hook when we report the event, we step the inferior
- back to user code before stopping and reporting the event. */
- int stepping_through_solib_after_catch;
-
- /* When stepping_through_solib_after_catch is TRUE, this is a
- list of the catchpoints that should be reported as triggering
- when we finally do stop stepping. */
- bpstat stepping_through_solib_catchpoints;
-
/* Per-thread command support. */
/* Pointer to what is left to do for an execution command after the
{
tss->stepping_over_breakpoint = 0;
tss->step_after_step_resume_breakpoint = 0;
- tss->stepping_through_solib_after_catch = 0;
- tss->stepping_through_solib_catchpoints = NULL;
}
/* Return the cached copy of the last pid/waitstatus returned by
}
}
- /* Are we stepping to get the inferior out of the dynamic linker's
- hook (and possibly the dld itself) after catching a shlib
- event? */
- if (ecs->event_thread->stepping_through_solib_after_catch)
- {
-#if defined(SOLIB_ADD)
- /* Have we reached our destination? If not, keep going. */
- if (SOLIB_IN_DYNAMIC_LINKER (PIDGET (ecs->ptid), stop_pc))
- {
- if (debug_infrun)
- fprintf_unfiltered (gdb_stdlog,
- "infrun: stepping in dynamic linker\n");
- ecs->event_thread->stepping_over_breakpoint = 1;
- keep_going (ecs);
- return;
- }
-#endif
- if (debug_infrun)
- fprintf_unfiltered (gdb_stdlog, "infrun: step past dynamic linker\n");
- /* Else, stop and report the catchpoint(s) whose triggering
- caused us to begin stepping. */
- ecs->event_thread->stepping_through_solib_after_catch = 0;
- bpstat_clear (&ecs->event_thread->control.stop_bpstat);
- ecs->event_thread->control.stop_bpstat
- = bpstat_copy (ecs->event_thread->stepping_through_solib_catchpoints);
- bpstat_clear (&ecs->event_thread->stepping_through_solib_catchpoints);
- stop_print_frame = 1;
- stop_stepping (ecs);
- return;
- }
-
if (ecs->event_thread->control.step_resume_breakpoint)
{
if (debug_infrun)
return ((tp->control.step_range_end
&& tp->control.step_resume_breakpoint == NULL)
|| tp->control.trap_expected
- || tp->stepping_through_solib_after_catch
|| bpstat_should_step ());
}
return 0;
return (tp->control.step_range_end
- || tp->control.trap_expected
- || tp->stepping_through_solib_after_catch);
+ || tp->control.trap_expected);
}
/* Inferior has stepped into a subroutine call with source code that