btrace: move breakpoint checking into stepping functions
authorMarkus Metzger <markus.t.metzger@intel.com>
Mon, 24 Aug 2015 13:55:02 +0000 (15:55 +0200)
committerMarkus Metzger <markus.t.metzger@intel.com>
Fri, 18 Sep 2015 12:22:09 +0000 (14:22 +0200)
commit011c71b6cbda4ecd856a08cf3124330d7f4342de
treee19ecbc92b726f5f9077d55ef3396a151a8e11bb
parentd825d248105e1c9a13fef4a35e76b6f4912e3792
btrace: move breakpoint checking into stepping functions

Breakpoints are only checked for BTHR_CONT and BTHR_RCONT stepping requests.
A BTHR_STEP and BTHR_RSTEP request will always report stopped without reason.
Since breakpoints are reported correctly, I assume infrun is handling this.

Move the breakpoint check into the btrace single stepping functions.  This
will cause us to report breakpoint hits now also for single-step requests.

One thing to notice is that

  - when executing forwards, the breakpoint is checked before 'executing'
    the instruction, i.e. before moving the PC to the next instruction.

  - when executing backwards,  the breakpoint is checked after 'executing'
    the instruction, i.e. after moving the PC to the preceding instruction
    in the recorded execution.

There is code in infrun (see, for example proceed and adjust_pc_after_break)
that handles this and also depends on this behaviour.

gdb/
* record-btrace.c (record_btrace_step_thread): Move breakpoint check
to ...
(record_btrace_single_step_forward): ... here and
(record_btrace_single_step_backward): ... here.
gdb/ChangeLog
gdb/record-btrace.c