[GDBServer][AArch64] Use the same break instruction as GDB
authorPierre Langlois <pierre.langlois@arm.com>
Mon, 29 Jun 2015 09:34:42 +0000 (10:34 +0100)
committerPierre Langlois <pierre.langlois@arm.com>
Mon, 29 Jun 2015 09:34:42 +0000 (10:34 +0100)
commit37d669427f8b90f3c9d17a6e04d72c731d3abdbc
tree090e62d34a5da3fe25adfebc0ae90290b5460ab9
parent1451ea7da40a82e8cf6a39fa8d0fc74ff230600a
[GDBServer][AArch64] Use the same break instruction as GDB

GDB uses a "brk #0" instruction to perform a software breakpoint while
GDBServer uses an illegal instruction.  Both instructions should match.

When enabling support for the 'Z0' packet, we let GDBServer insert the
breakpoint instruction instead of GDB.  And in case of permanent
breakpoints for example, GDB will check if a breakpoint is inserted in the
inferior with `program_breakpoint_here_p (gdbarch, address)', and
compare the instruction read from the inferior with the breakpoint
instruction.

On AArch64, instructions are always little endian so we need to
represent it as an array of bytes, as done in aarch64-tdep.c.

gdb/gdbserver/ChangeLog:

* linux-aarch64-low.c: Remove comment about endianness.
(aarch64_breakpoint): Change type to gdb_byte[].  Set to "brk #0".
(aarch64_breakpoint_at): Change type of insn to gdb_byte[].  Use
memcmp.
gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-aarch64-low.c