Understand arm breakpoints in aarch64_breakpoint_at
authorYao Qi <yao.qi@linaro.org>
Fri, 11 Dec 2015 11:19:52 +0000 (11:19 +0000)
committerYao Qi <yao.qi@linaro.org>
Fri, 11 Dec 2015 11:19:52 +0000 (11:19 +0000)
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  <yao.qi@linaro.org>

* linux-aarch64-low.c (aarch64_breakpoint_at): Call
arm_breakpoint_at if the process is 32-bit.

gdb/gdbserver/ChangeLog
gdb/gdbserver/linux-aarch64-low.c

index d8a817fd88ad0e21ffaeeef6f72ef9b5751d43fa..617c249630eb7bc08c1dd9315135e09d787988bb 100644 (file)
@@ -1,3 +1,8 @@
+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
index 5fd3f5151c481ca41efced94fd589e48802e4b77..b4eb36be2cd9f9803c4f735d6a2c00b429305137 100644 (file)
@@ -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