Remove single-step breakpoint for GDBserver internal event

This patch removes single-step breakpoints if the event is only
GDBserver internal, IOW, isn't reported back to GDB.

gdb/gdbserver:

2016-10-27  Yao Qi  <yao.qi@linaro.org>

	* linux-low.c (linux_wait_1): If single-step breakpoints are
	inserted, remove them.
This commit is contained in:
Yao Qi 2016-10-27 16:05:06 +01:00
parent bb65a718b6
commit e3652c8460
2 changed files with 28 additions and 9 deletions

View File

@ -1,3 +1,8 @@
2016-10-27 Yao Qi <yao.qi@linaro.org>
* linux-low.c (linux_wait_1): If single-step breakpoints are
inserted, remove them.
2016-10-26 Pedro Alves <palves@redhat.com>
* linux-low.c (handle_extended_wait): Link parent/child fork

View File

@ -3684,17 +3684,31 @@ linux_wait_1 (ptid_t ptid,
(*the_low_target.set_pc) (regcache, event_child->stop_pc);
}
/* We may have finished stepping over a breakpoint. If so,
we've stopped and suspended all LWPs momentarily except the
stepping one. This is where we resume them all again. We're
going to keep waiting, so use proceed, which handles stepping
over the next breakpoint. */
if (step_over_finished)
{
/* If we have finished stepping over a breakpoint, we've
stopped and suspended all LWPs momentarily except the
stepping one. This is where we resume them all again.
We're going to keep waiting, so use proceed, which
handles stepping over the next breakpoint. */
unsuspend_all_lwps (event_child);
}
else
{
/* Remove the single-step breakpoints if any. Note that
there isn't single-step breakpoint if we finished stepping
over. */
if (can_software_single_step ()
&& has_single_step_breakpoints (current_thread))
{
stop_all_lwps (0, event_child);
delete_single_step_breakpoints (current_thread);
unstop_all_lwps (0, event_child);
}
}
if (debug_threads)
debug_printf ("proceeding all threads.\n");
if (step_over_finished)
unsuspend_all_lwps (event_child);
proceed_all_lwps ();
if (debug_threads)