public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Yao Qi <qiyaoltc@gmail.com>
To: gdb-patches@sourceware.org
Subject: [PATCH 01/13] [gdbserver] Use iterate_over_lwps in aarch64_notify_debug_reg_change
Date: Tue, 18 Aug 2015 15:53:00 -0000	[thread overview]
Message-ID: <1439913199-22882-2-git-send-email-yao.qi@linaro.org> (raw)
In-Reply-To: <1439913199-22882-1-git-send-email-yao.qi@linaro.org>

This patch makes more bits on aarch64 watchpoint between GDB and GDBserver
look similar.

gdb/gdbserver:

2015-08-18  Yao Qi  <yao.qi@linaro.org>

	* linux-aarch64-low.c (aarch64_dr_update_callback_param) <pid>:
	Remove.
	(debug_reg_change_callback): Remove argument entry and add argument
	lwp.  Remove local variable thread.  Don't print thread id in the
	debugging output.  Don't check whether pid of thread equals to pid.
	(aarch64_notify_debug_reg_change): Don't set param.pid.  Call
	iterate_over_lwps instead find_inferior.
---
 gdb/gdbserver/linux-aarch64-low.c | 30 +++++++++++-------------------
 1 file changed, 11 insertions(+), 19 deletions(-)

diff --git a/gdb/gdbserver/linux-aarch64-low.c b/gdb/gdbserver/linux-aarch64-low.c
index da472ae..d39a54f 100644
--- a/gdb/gdbserver/linux-aarch64-low.c
+++ b/gdb/gdbserver/linux-aarch64-low.c
@@ -236,25 +236,23 @@ aarch64_init_debug_reg_state (struct aarch64_debug_reg_state *state)
 
 struct aarch64_dr_update_callback_param
 {
-  int pid;
   int is_watchpoint;
   unsigned int idx;
 };
 
-/* Callback function which records the information about the change of
-   one hardware breakpoint/watchpoint setting for the thread ENTRY.
+/* Callback for iterate_over_lwps.  Records the
+   information about the change of one hardware breakpoint/watchpoint
+   setting for the thread LWP.
    The information is passed in via PTR.
    N.B.  The actual updating of hardware debug registers is not
    carried out until the moment the thread is resumed.  */
 
 static int
-debug_reg_change_callback (struct inferior_list_entry *entry, void *ptr)
+debug_reg_change_callback (struct lwp_info *lwp, void *ptr)
 {
-  struct thread_info *thread = (struct thread_info *) entry;
-  struct lwp_info *lwp = get_thread_lwp (thread);
   struct aarch64_dr_update_callback_param *param_p
     = (struct aarch64_dr_update_callback_param *) ptr;
-  int pid = param_p->pid;
+  int pid = pid_of (lwp->thread);
   int idx = param_p->idx;
   int is_watchpoint = param_p->is_watchpoint;
   struct arch_lwp_info *info = lwp->arch_private;
@@ -264,9 +262,9 @@ debug_reg_change_callback (struct inferior_list_entry *entry, void *ptr)
   if (show_debug_regs)
     {
       fprintf (stderr, "debug_reg_change_callback: \n\tOn entry:\n");
-      fprintf (stderr, "\tpid%d, tid: %ld, dr_changed_bp=0x%llx, "
+      fprintf (stderr, "\tpid%d, dr_changed_bp=0x%llx, "
 	       "dr_changed_wp=0x%llx\n",
-	       pid, lwpid_of (thread), info->dr_changed_bp,
+	       pid, info->dr_changed_bp,
 	       info->dr_changed_wp);
     }
 
@@ -274,9 +272,6 @@ debug_reg_change_callback (struct inferior_list_entry *entry, void *ptr)
     : &info->dr_changed_bp;
   dr_changed = *dr_changed_ptr;
 
-  /* Only update the threads of this process.  */
-  if (pid_of (thread) == pid)
-    {
       gdb_assert (idx >= 0
 		  && (idx <= (is_watchpoint ? aarch64_num_wp_regs
 			      : aarch64_num_bp_regs)));
@@ -310,13 +305,12 @@ debug_reg_change_callback (struct inferior_list_entry *entry, void *ptr)
          we can update its debug registers.  */
       if (!lwp->stopped)
 	linux_stop_lwp (lwp);
-    }
 
   if (show_debug_regs)
     {
-      fprintf (stderr, "\tOn exit:\n\tpid%d, tid: %ld, dr_changed_bp=0x%llx, "
+      fprintf (stderr, "\tOn exit:\n\tpid%d, dr_changed_bp=0x%llx, "
 	       "dr_changed_wp=0x%llx\n",
-	       pid, lwpid_of (thread), info->dr_changed_bp,
+	       pid, info->dr_changed_bp,
 	       info->dr_changed_wp);
     }
 
@@ -333,14 +327,12 @@ aarch64_notify_debug_reg_change (const struct aarch64_debug_reg_state *state,
 				 int is_watchpoint, unsigned int idx)
 {
   struct aarch64_dr_update_callback_param param;
-
-  /* Only update the threads of this process.  */
-  param.pid = pid_of (current_thread);
+  ptid_t pid_ptid = pid_to_ptid (pid_of (current_thread));
 
   param.is_watchpoint = is_watchpoint;
   param.idx = idx;
 
-  find_inferior (&all_threads, debug_reg_change_callback, (void *) &param);
+  iterate_over_lwps (pid_ptid, debug_reg_change_callback, (void *) &param);
 }
 
 
-- 
1.9.1

  parent reply	other threads:[~2015-08-18 15:53 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-18 15:53 [PATCH 00/13] [aarch64] Share more code between GDB and GDBserver Yao Qi
2015-08-18 15:53 ` [PATCH 02/13] Re-indent the code Yao Qi
2015-08-18 15:53 ` [PATCH 12/13] Move aarch64_linux_prepare_to_resume to nat/aarch64-linux.c Yao Qi
2015-08-18 15:53 ` [PATCH 09/13] Move debug_reg_change_callback and aarch64_notify_debug_reg_change to nat/aarch64-linux-hw-point.c Yao Qi
2015-08-18 15:53 ` [PATCH 07/13] Make aarch64_notify_debug_reg_change the same on GDB and GDBserver Yao Qi
2015-08-18 15:53 ` [PATCH 10/13] Add pid argument in aarch64_get_debug_reg_state Yao Qi
2015-08-18 15:53 ` [PATCH 03/13] Remove some comments in debug_reg_change_callback Yao Qi
2015-08-18 15:53 ` [PATCH 04/13] Get pid rather than lwpid Yao Qi
2015-08-25 10:47   ` Pedro Alves
2015-08-25 13:12     ` Yao Qi
2015-08-25 13:33       ` Pedro Alves
2015-08-18 15:53 ` [PATCH 05/13] Use phex debug_reg_change_callback Yao Qi
2015-08-18 15:53 ` [PATCH 06/13] Use debug_printf in debug_reg_change_callback Yao Qi
2015-08-18 15:53 ` [PATCH 08/13] Make debug_reg_change_callback the same on GDB and GDBserver Yao Qi
2015-08-18 15:53 ` [PATCH 11/13] Make aarch64_linux_prepare_to_resume " Yao Qi
2015-08-18 15:53 ` [PATCH 13/13] Move aarch64_linux_new_thread to nat/aarch64-linux.c Yao Qi
2015-08-18 15:53 ` Yao Qi [this message]
2015-08-25 10:43 ` [PATCH 00/13] [aarch64] Share more code between GDB and GDBserver Yao Qi

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=1439913199-22882-2-git-send-email-yao.qi@linaro.org \
    --to=qiyaoltc@gmail.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).