Re: proposed PATCH: make watchpoints work correctly

Eli Zaretskii
2003-05-28T19:54:48Z

> Date: Wed, 28 May 2003 12:01:25 -0400
> From: Paul Koning <pkoning@equallogic.com>
>
> If HAVE_NONSTEPPABLE_WATCHPOINT is defined, watchpoints would not stop
> for several reasons. First of all, remote.c would return 0 rather
> than the watch address after the single step past the instruction
> where the watch trap occurred. (Changes to infrun.c, remote.c)
> Second, even after that is fixed, bpstat_stop_status wouldn't match
> the watchpoint because removing the watchpoint (to single step)
> deleted the valchain which is used to do the matching (Change to
> breakpoint.c)
>
> If a watchpoint is defined, but the program stops for some other
> reason -- either a breakpoint, or a break instruction hardcoded in the
> target code -- bpstat_stop_status would encounter the watchpoint in
> its scan for possible reasons. It would take no action on it but
> leave its "stop" and "print" bits set so you would see the stop
> reported as if it were a watchpoint hit. Also, a "next" or "step"
> command would act as "stepi", i.e., stop after every instruction.
> (Changes to breakpoint.c).

(It's been a while since I hacked on watchpoint-related code, so I
apologize in advance for asking possibly dumb questions.)

The above description made me nervous: it almost sounds like the
current watchpoint support is pretty much dysfunctional, as most of
the changes you suggest are not specific neither to remote.c nor to
HAVE_NONSTEPPABLE_WATCHPOINT. So could you please explain how, given
those deficiencies, watchpoints do work for native targets such as
x86, but did not work for your target?