From db91f50261d30e66350281d18759aa7490672a34 Mon Sep 17 00:00:00 2001 From: Yao Qi Date: Fri, 11 Dec 2015 11:19:52 +0000 Subject: [PATCH] Understand arm breakpoints in aarch64_breakpoint_at AArch64 GDBserver can debug ARM program, and it should recognize various arm breakpoint instructions. This patch should be included in 17b1509a. gdb/gdbserver: 2015-12-11 Yao Qi * 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 d8a817fd88a..617c249630e 100644 --- a/gdb/gdbserver/ChangeLog +++ b/gdb/gdbserver/ChangeLog @@ -1,3 +1,8 @@ +2015-12-11 Yao Qi + + * linux-aarch64-low.c (aarch64_breakpoint_at): Call + arm_breakpoint_at if the process is 32-bit. + 2015-12-11 Yao Qi * linux-aarch32-low.c [__aarch64__]: Use arm_abi_breakpoint diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c index 5fd3f5151c4..b4eb36be2cd 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 -- 2.39.5