PPC64: Fix gdb.arch/ppc64-atomic-inst.exp with displaced stepping
authorPedro Alves <palves@redhat.com>
Thu, 6 Aug 2015 17:23:00 +0000 (18:23 +0100)
committerPedro Alves <palves@redhat.com>
Fri, 7 Aug 2015 16:26:21 +0000 (17:26 +0100)
commit7f03bd92e389a32da490bb55037881cf374d0f69
tree606d5caefa48369c6193bc6c4e568ae74cd9adf7
parent3fc8eb30a95df3fd07a63e9bd0a9d309b86a0357
PPC64: Fix gdb.arch/ppc64-atomic-inst.exp with displaced stepping

The ppc64 displaced step code can't handle atomic sequences.  Fallback
to stepping over the breakpoint in-line if we detect one.

gdb/ChangeLog:
2015-08-07  Pedro Alves  <palves@redhat.com>

* infrun.c (displaced_step_prepare_throw): Return -1 if
gdbarch_displaced_step_copy_insn returns NULL.  Update intro
comment.
* rs6000-tdep.c (LWARX_MASK, LWARX_INSTRUCTION, LDARX_INSTRUCTION)
(STWCX_MASK, STWCX_INSTRUCTION, STDCX_INSTRUCTION): Move higher up
in file.
(ppc_displaced_step_copy_insn): New function.
(ppc_displaced_step_fixup): Update comment.
(rs6000_gdbarch_init): Install ppc_displaced_step_copy_insn as
gdbarch_displaced_step_copy_insn hook.
* gdbarch.sh (displaced_step_copy_insn): Document what happens on
NULL return.
* gdbarch.h: Regenerate.

gdb/testsuite/ChangeLog:
2015-08-07  Pedro Alves  <palves@redhat.com>

* gdb.arch/ppc64-atomic-inst.exp (do_test): New procedure, move
tests here.
(top level): Run do_test with and without displaced stepping.
gdb/ChangeLog
gdb/gdbarch.h
gdb/gdbarch.sh
gdb/infrun.c
gdb/rs6000-tdep.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.arch/ppc64-atomic-inst.exp