Re: single-step breakpoints

Mark Kettenis
2006-04-25T21:55:15Z

> Date: Tue, 25 Apr 2006 17:02:00 -0400
> From: Daniel Jacobowitz <drow@false.org>
>
> On Tue, Apr 25, 2006 at 10:39:36PM +0200, Mark Kettenis wrote:
> > Hi Daniel,
> >
> > There a slight problem with insert_single_step_breakpoint() and
> > remove_single_step_breakpoints(). On OpenBSD, inserting a breakpoint
> > into the kernel-provided signal trampoline, may fail. Unfortunately,
> > the caller of insert_single_step_breakpoint() never notices this, and
> > calls remove_single_step_breakpoints() to remove the breakpoints.
> > Unfortunately that makes us hit the gdb_assert() in there.
> >
> > This patch makes us avoid this while still making an attempt to catch
> > misuse of the interface.
>
> Hmm - this is also true on some GNU/Linux targets, although none that
> use software single step (yet - though I think I know how to trigger it
> on ARM, some kernel fixes would also be needed).
>
> My question is, is there something more useful we could be doing?
> If the single step breakpoint fails, then continuing will make us lose
> control. Maybe it should be an error().

That may not be such a bad idea. But we'll need to adjust
gdb.base/sigbpt.exp since it will end up in an infinite loop trying to
step the target.

I'll look a bit more into it later this week. Need to get some sleep now.

Mark