Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Antoine Tremblay <antoine.tremblay@ericsson.com>
To: <gdb-patches@sourceware.org>
Cc: Antoine Tremblay <antoine.tremblay@ericsson.com>
Subject: [PATCH v2 7/7] Support software breakpoints for ARM linux in GDBServer.
Date: Mon, 05 Oct 2015 16:44:00 -0000	[thread overview]
Message-ID: <1444063455-31558-8-git-send-email-antoine.tremblay@ericsson.com> (raw)
In-Reply-To: <1444063455-31558-1-git-send-email-antoine.tremblay@ericsson.com>

This patch implements the breakpoint_from_kind operation introduced
in a previous patch.

The proper breakpoint can then be returned to be inserted in memory.

It enables software breakpoints via GDB's Z0 packets on ARM.

No regressions, tested on ubuntu 14.04 ARMv7 and x86.
With gdbserver-{native,extended} / { -marm -mthumb }

gdb/ChangeLog:
	* NEWS: Add news for software breakpoints.

gdb/gdbserver/ChangeLog:
	* linux-arm-low.c (arm_breakpoint_from_kind): New function.
	(arm_supports_z_point_type): Add software breakpoint support.
	(struct linux_target_ops) <breakpoint_from_kind>: Initialize field.
---
 gdb/NEWS                      |  2 ++
 gdb/gdbserver/linux-arm-low.c | 31 +++++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/gdb/NEWS b/gdb/NEWS
index 2e38d9a..17f1c05 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -3,6 +3,8 @@
 
 *** Changes since GDB 7.10
 
+* Support for software breakpoints on ARM linux was added in GDBServer.
+
 * Record btrace now supports non-stop mode.
 
 * Support for tracepoints on aarch64-linux was added in GDBserver.
diff --git a/gdb/gdbserver/linux-arm-low.c b/gdb/gdbserver/linux-arm-low.c
index d16ea60..bd499f8 100644
--- a/gdb/gdbserver/linux-arm-low.c
+++ b/gdb/gdbserver/linux-arm-low.c
@@ -336,6 +336,28 @@ arm_breakpoint_from_pc (CORE_ADDR *pcptr, int *lenptr)
     }
 }
 
+/* Get the breakpoint from the remote kind
+   2 is thumb-16
+   3 is thumb2-32
+   4 is arm
+*/
+static const unsigned char *
+arm_breakpoint_from_kind (int *kind)
+{
+  switch (*kind) {
+  case 2:
+    return (unsigned char *) &thumb_breakpoint;
+  case 3:
+    *kind = 4;
+    return (unsigned char *) &thumb2_breakpoint;
+  case 4:
+    return (unsigned char *) &arm_breakpoint;
+  default:
+    return NULL;
+  }
+  return NULL;
+}
+
 /* We only place breakpoints in empty marker functions, and thread locking
    is outside of the function.  So rather than importing software single-step,
    we can just run until exit.  */
@@ -577,6 +599,7 @@ arm_supports_z_point_type (char z_type)
 {
   switch (z_type)
     {
+    case Z_PACKET_SW_BP:
     case Z_PACKET_HW_BP:
     case Z_PACKET_WRITE_WP:
     case Z_PACKET_READ_WP:
@@ -988,6 +1011,14 @@ struct linux_target_ops the_low_target = {
   arm_new_thread,
   arm_new_fork,
   arm_prepare_to_resume,
+  NULL, /* process_qsupported */
+  NULL, /* supports_tracepoints */
+  NULL, /* get_thread_area */
+  NULL, /* install_fast_tracepoint_jump_pad */
+  NULL, /* emit_ops */
+  NULL, /* get_min_fast_tracepoint_insn_len */
+  NULL, /* supports_range_stepping */
+  arm_breakpoint_from_kind,
 };
 
 void
-- 
1.9.1


  reply	other threads:[~2015-10-05 16:44 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-05 16:44 [PATCH v2 0/7] Software breakpoints support " Antoine Tremblay
2015-10-05 16:44 ` Antoine Tremblay [this message]
2015-10-05 17:00   ` [PATCH v2 7/7] Support software breakpoints " Eli Zaretskii
2015-10-15 16:07   ` Pedro Alves
2015-10-15 18:24     ` Antoine Tremblay
2015-10-15 18:33       ` Pedro Alves
2015-10-15 18:59         ` Antoine Tremblay
2015-10-16  9:33     ` Yao Qi
2015-10-16 12:11       ` Pedro Alves
2015-10-16 12:24   ` Yao Qi
2015-10-16 12:21     ` Yao Qi
2015-10-05 16:44 ` [PATCH v2 1/7] Add breakpoint_from_pc target_ops for software breakpoints " Antoine Tremblay
2015-10-15  8:27   ` Yao Qi
2015-10-15 15:33   ` Pedro Alves
2015-10-15 15:58     ` Antoine Tremblay
2015-10-15 17:05       ` Antoine Tremblay
2015-10-05 16:44 ` [PATCH v2 5/7] Implement breakpoint_from_pc for ARM " Antoine Tremblay
2015-10-15 16:07   ` Pedro Alves
2015-10-15 18:06     ` Antoine Tremblay
2015-10-05 16:44 ` [PATCH v2 2/7] Add breakpoint_from_kind target_ops for software breakpoints " Antoine Tremblay
2015-10-15  9:04   ` Yao Qi
2015-10-15 10:50     ` Antoine Tremblay
2015-10-15  9:10   ` Yao Qi
2015-10-15 10:37     ` Antoine Tremblay
2015-10-15 15:34   ` Pedro Alves
2015-10-15 17:07     ` Antoine Tremblay
2015-10-05 16:44 ` [PATCH v2 6/7] Refactor the breakpoint definitions in linux-arm-low.c Antoine Tremblay
2015-10-15 16:07   ` Pedro Alves
2015-10-16 12:14     ` Yao Qi
2015-10-05 16:44 ` [PATCH v2 3/7] Implement breakpoint_from_kind for supported architectures in GDBServer Antoine Tremblay
2015-10-15  9:19   ` Yao Qi
2015-10-15 10:57     ` Antoine Tremblay
2015-10-15 17:13       ` Antoine Tremblay
2015-10-05 16:44 ` [PATCH v2 4/7] Support breakpoint kinds for software breakpoints " Antoine Tremblay
2015-10-15 15:51   ` Pedro Alves
2015-10-15 18:02     ` Antoine Tremblay
2015-10-16 16:06       ` Pedro Alves
2015-10-16 18:08         ` Antoine Tremblay
2015-10-16 19:04           ` Pedro Alves
2015-10-16 19:23             ` Antoine Tremblay
2015-10-16 19:44               ` Antoine Tremblay
2015-10-16 19:48                 ` Antoine Tremblay
2015-10-19  9:35                 ` Pedro Alves
2015-10-19 11:48                   ` Antoine Tremblay

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1444063455-31558-8-git-send-email-antoine.tremblay@ericsson.com \
    --to=antoine.tremblay@ericsson.com \
    --cc=gdb-patches@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox