gdbstub: Allow target CPUs to specify watchpoint STOP_BEFORE_ACCESS flag
commit2472b6c07bb50179019589af1c22f43935ab7f5c
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 12 Sep 2014 18:04:17 +0000 (12 19:04 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 6 Oct 2014 13:25:43 +0000 (6 14:25 +0100)
treea9ed9fa651dc7a884600cfef65da71211eb6031f
parent507ef2f9fab3e67ac6fefda4e20db7fc5f2bc186
gdbstub: Allow target CPUs to specify watchpoint STOP_BEFORE_ACCESS flag

GDB assumes that watchpoint set via the gdbstub remote protocol will
behave in the same way as hardware watchpoints for the target. In
particular, whether the CPU stops with the PC before or after the insn
which triggers the watchpoint is target dependent. Allow guest CPU
code to specify which behaviour to use. This fixes a bug where with
guest CPUs which stop before the accessing insn GDB would manually
step forward over what it thought was the insn and end up one insn
further forward than it should be.

We set this flag for the CPU architectures which set
gdbarch_have_nonsteppable_watchpoint in gdb 7.7:
ARM, CRIS, LM32, MIPS and Xtensa.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Tested-by: Max Filippov <jcmvbkbc@gmail.com>
Tested-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Tested-by: Michael Walle <michael@walle.cc> (for lm32)
Message-id: 1410545057-14014-1-git-send-email-peter.maydell@linaro.org
gdbstub.c
include/qom/cpu.h
target-arm/cpu.c
target-cris/cpu.c
target-lm32/cpu.c
target-mips/cpu.c
target-xtensa/cpu.c