summaryrefslogtreecommitdiff
path: root/gdb/gdbserver
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/gdbserver')
-rw-r--r--gdb/gdbserver/ChangeLog7
-rw-r--r--gdb/gdbserver/linux-aarch64-low.c14
2 files changed, 15 insertions, 6 deletions
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 2528f0f5d11..8dad98ef3c2 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,10 @@
+2015-06-29 Pierre Langlois <pierre.langlois@arm.com>
+
+ * 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.
+
2015-06-24 Gary Benson <gbenson@redhat.com>
* linux-i386-ipa.c (stdint.h): Do not include.
diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c
index 043458d68ea..b0a277528df 100644
--- a/gdb/gdbserver/linux-aarch64-low.c
+++ b/gdb/gdbserver/linux-aarch64-low.c
@@ -295,19 +295,21 @@ aarch64_set_pc (struct regcache *regcache, CORE_ADDR pc)
supply_register_by_name (regcache, "pc", &newpc);
}
-/* Correct in either endianness. */
-
#define aarch64_breakpoint_len 4
-static const unsigned long aarch64_breakpoint = 0x00800011;
+/* AArch64 BRK software debug mode instruction.
+ This instruction needs to match gdb/aarch64-tdep.c
+ (aarch64_default_breakpoint). */
+static const gdb_byte aarch64_breakpoint[] = {0x00, 0x00, 0x20, 0xd4};
static int
aarch64_breakpoint_at (CORE_ADDR where)
{
- unsigned long insn;
+ gdb_byte insn[aarch64_breakpoint_len];
- (*the_target->read_memory) (where, (unsigned char *) &insn, 4);
- if (insn == aarch64_breakpoint)
+ (*the_target->read_memory) (where, (unsigned char *) &insn,
+ aarch64_breakpoint_len);
+ if (memcmp (insn, aarch64_breakpoint, aarch64_breakpoint_len) == 0)
return 1;
return 0;