Honour software single step in fallback of displaced stepping
authorYao Qi <yao.qi@linaro.org>
Thu, 16 Apr 2015 12:48:10 +0000 (13:48 +0100)
committerYao Qi <yao.qi@linaro.org>
Thu, 16 Apr 2015 12:48:10 +0000 (13:48 +0100)
commit8550d3b32f4ac17bdb9e4768bb905da181b77ded
tree3303973717852fa89065f5c04974bbac18a3dcce
parentaf9fd6f863c9f184e2c84d8a4707b3ec7b8ca67b
Honour software single step in fallback of displaced stepping

Hi,
When I run gdb.threads/non-stop-fair-events.exp on arm-linux target,
I see the following message in the debugging log,

  displaced: breakpoint is gone: Thread 22518, step(1)^M
  Sending packet: $vCont;s:p57f3.57f6#9d...
                  ^^^^^^^^^
GDB sends vCont;s by mistake, and GDBserver fails on assert.  GDB
doesn't consider software single step in infrun.c:displaced_step_fixup,

  /* Go back to what we were trying to do.  */
  step = currently_stepping (tp);

  if (debug_displaced)
    fprintf_unfiltered (gdb_stdlog,
"displaced: breakpoint is gone: %s, step(%d)\n",
target_pid_to_str (tp->ptid), step);

  target_resume (ptid, step, GDB_SIGNAL_0);

The patch is to let GDB consider software single step here.  It fixes
fails in gdb.threads/non-stop-fair-events.exp on arm.

gdb:

2015-04-16  Yao Qi  <yao.qi@linaro.org>

* infrun.c (maybe_software_singlestep): Declare.
(displaced_step_fixup): Call maybe_software_singlestep.
gdb/ChangeLog
gdb/infrun.c