[PATCH v3 0/10] Support software single step and conditional breakpoints on ARM in GDBServer.

Antoine Tremblay
2015-11-23T14:14:11Z

In this v3:

* Refactored the get_next_pcs call in GDBServer as such :
VEC (CORE_ADDR) *(*get_next_pcs) (CORE_ADDR pc, struct regcache *regcache);

This allows the removal of the get_next_pcs base structure that was in
common/get-next-pcs.h, in fact it removes the whole file.

The common arm_get_next_pcs call has also been refactored the same way like so :
VEC (CORE_ADDR) *arm_get_next_pcs (struct arm_get_next_pcs *self,
CORE_ADDR pc);

* Use ctor functions to construct gdb|gdbserver_get_next_pcs context.

* Some style fixes.

Patches 1 to 3: are OK already.

Patch 4: Needs v3 review.

Patch 5: is OK.

Patch 6 to 8: Needs v3 review.

Patch 9 and 10: are OK.

----

This patch series adds support for software single step and conditional
breakpoints on ARM in GDBServer.

Patches 1 and 2 fix general issues in the software single step control flow.

Patches 3 to 5 Removes the too simple implementations of software single
step that were in place and paves to way for full software single step to
be implemented.

Patches 6 and 7 Prepares the sharing of the software single step code for
ARM in GDB with GDBServer.

Patch 8 Implements the support for ARM software single step.

Patch 9 Adds support for while-stepping actions.

Patch 10 Adds supports for conditional breakpoints in GDBServer.

This patchset has no observed regressions, tested on ubuntu 14.04 ARMv7 and x86.
With gdbserver-{native,extended} / { -marm -mthumb }

Note also that while I could not test directly thumbv1 instructions with gcc
-marmv4t , manual testing of the software single step was done for thumv1
instructions.