Understand arm breakpoints in aarch64_breakpoint_at
Commit Message
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(-)
@@ -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.
@@ -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