This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH] Understand arm breakpoints in aarch64_breakpoint_at
- From: Yao Qi <qiyaoltc at gmail dot com>
- To: gdb-patches at sourceware dot org
- Date: Fri, 11 Dec 2015 11:19:06 +0000
- Subject: [PATCH] Understand arm breakpoints in aarch64_breakpoint_at
- Authentication-results: sourceware.org; auth=none
AArch64 GDBserver can debug ARM program, and it should recognize
various arm breakpoint instructions. This patch should be included
in 17b1509a.
I'll pushed it in.
gdb/gdbserver:
2015-12-11 Yao Qi <yao.qi@linaro.org>
* linux-aarch64-low.c (aarch64_breakpoint_at): Call
arm_breakpoint_at if the process is 32-bit.
---
gdb/gdbserver/ChangeLog | 5 +++++
gdb/gdbserver/linux-aarch64-low.c | 17 +++++++++++------
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index d8a817f..617c249 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,5 +1,10 @@
2015-12-11 Yao Qi <yao.qi@linaro.org>
+ * linux-aarch64-low.c (aarch64_breakpoint_at): Call
+ arm_breakpoint_at if the process is 32-bit.
+
+2015-12-11 Yao Qi <yao.qi@linaro.org>
+
* linux-aarch32-low.c [__aarch64__]: Use arm_abi_breakpoint
arm breakpoint.
diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c
index 5fd3f51..b4eb36b 100644
--- a/gdb/gdbserver/linux-aarch64-low.c
+++ b/gdb/gdbserver/linux-aarch64-low.c
@@ -211,14 +211,19 @@ static const gdb_byte aarch64_breakpoint[] = {0x00, 0x00, 0x20, 0xd4};
static int
aarch64_breakpoint_at (CORE_ADDR where)
{
- gdb_byte insn[aarch64_breakpoint_len];
+ if (is_64bit_tdesc ())
+ {
+ gdb_byte insn[aarch64_breakpoint_len];
- (*the_target->read_memory) (where, (unsigned char *) &insn,
- aarch64_breakpoint_len);
- if (memcmp (insn, aarch64_breakpoint, aarch64_breakpoint_len) == 0)
- return 1;
+ (*the_target->read_memory) (where, (unsigned char *) &insn,
+ aarch64_breakpoint_len);
+ if (memcmp (insn, aarch64_breakpoint, aarch64_breakpoint_len) == 0)
+ return 1;
- return 0;
+ return 0;
+ }
+ else
+ return arm_breakpoint_at (where);
}
static void
--
1.9.1