From: "Maciej W. Rozycki" <macro@codesourcery.com>
To: Yao Qi <yao@codesourcery.com>
Cc: <gdb-patches@sourceware.org>
Subject: Re: [PATCH 5/5] MIPS GDBserver watchpoint
Date: Wed, 24 Jul 2013 00:35:00 -0000 [thread overview]
Message-ID: <alpine.DEB.1.10.1307232257170.32382@tp.orcam.me.uk> (raw)
In-Reply-To: <1372475427-24862-6-git-send-email-yao@codesourcery.com>
On Sat, 29 Jun 2013, Yao Qi wrote:
> gdb/gdbserver:
>
> 2013-06-29 Jie Zhang <jie@codesourcery.com>
> Daniel Jacobowitz <dan@codesourcery.com>
> Yao Qi <yao@codesourcery.com>
>
> * Makefile.in (SFILES): Add common/mips-linux-watch.c.
> (mips_linux_watch_h): New.
> (mips-linux-watch.o): New rule.
> * configure.srv <mips*-*-linux*>: Add mips-linux-watch.o to
> srv_tgtobj.
> * linux-mips-low.c: Include mips-linux-watch.h.
> (struct arch_process_info, struct arch_lwp_info): New.
> (update_watch_registers_callback): New.
> (mips_linux_new_process, mips_linux_new_thread) New.
> (mips_linux_prepare_to_resume, mips_insert_point): New.
> (mips_remove_point, mips_stopped_by_watchpoint): New.
> (rsp_bp_type_to_target_hw_bp_type): New.
> (mips_stopped_data_address): New.
> (the_low_target): Add watchpoint support functions.
>
> gdb:
>
> 2013-06-29 Yao Qi <yao@codesourcery.com>
>
> * NEWS: Mention it.
> ---
> gdb/NEWS | 3 +
> gdb/gdbserver/Makefile.in | 7 +-
> gdb/gdbserver/configure.srv | 1 +
> gdb/gdbserver/linux-mips-low.c | 366 ++++++++++++++++++++++++++++++++++++++++
> 4 files changed, 376 insertions(+), 1 deletions(-)
>
> diff --git a/gdb/gdbserver/linux-mips-low.c b/gdb/gdbserver/linux-mips-low.c
> index 1010528..6e6e3e0 100644
> --- a/gdb/gdbserver/linux-mips-low.c
> +++ b/gdb/gdbserver/linux-mips-low.c
> @@ -257,6 +291,328 @@ mips_breakpoint_at (CORE_ADDR where)
> return 0;
> }
>
> +/* Mark the watch registers of lwp, represented by ENTRY, as changed,
> + if the lwp's process id is *PID_P. */
> +
> +static int
> +update_watch_registers_callback (struct inferior_list_entry *entry,
> + void *pid_p)
> +{
> + struct lwp_info *lwp = (struct lwp_info *) entry;
> + int pid = *(int *) pid_p;
> +
> + /* Only update the threads of this process. */
> + if (pid_of (lwp) == pid)
> + {
> + /* The actual update is done later just before resuming the lwp,
> + we just mark that the registers need updating. */
> + lwp->arch_private->watch_registers_changed = 1;
> +
> + /* If the lwp isn't stopped, force it to momentarily pause, so
> + we can update its watch registers. */
> + if (!lwp->stopped)
> + linux_stop_lwp (lwp);
> + }
> +
> + return 0;
> +}
> +
> +/* This is the implementation of linux_target_ops method
> + new_process. */
> +
> +static struct arch_process_info *
> +mips_linux_new_process (void)
> +{
> + struct arch_process_info *info = xcalloc (1, sizeof (*info));
> +
> + return info;
> +}
> +
> +/* This is the implementation of linux_target_ops method new_thread.
> + Mark the watch registers as changed, so the threads' copies will
> + be updated. */
> +
> +static struct arch_lwp_info *
> +mips_linux_new_thread (void)
> +{
> + struct arch_lwp_info *info = xcalloc (1, sizeof (*info));
> +
> + info->watch_registers_changed = 1;
> +
> + return info;
> +}
> +
> +/* This is the implementation of linux_target_ops method
> + prepare_to_resume. If the watch regs have changed, update the
> + thread's copies. */
> +
> +static void
> +mips_linux_prepare_to_resume (struct lwp_info *lwp)
> +{
> + ptid_t ptid = ptid_of (lwp);
> + struct process_info *proc = find_process_pid (ptid_get_pid (ptid));
> + struct arch_process_info *private = proc->private->arch_private;
> +
> + if (lwp->arch_private->watch_registers_changed)
> + {
> + /* Only update the watch registers if we have set or unset a
> + watchpoint already. */
> + if (mips_linux_watch_get_num_valid (&private->watch_mirror) > 0)
> + {
> + /* Write the mirrored watch register values. */
> + int tid = ptid_get_lwp (ptid);
> +
> + if (-1 == ptrace (PTRACE_SET_WATCH_REGS, tid,
> + &private->watch_mirror))
> + perror_with_name ("Couldn't write watch register");
> + }
> +
> + lwp->arch_private->watch_registers_changed = 0;
> + }
> +}
> +
> +/* Translate breakpoint type TYPE in rsp to 'enum target_hw_bp_type'. Return
> + -1 if translation failed. */
> +
> +static enum target_hw_bp_type
> +rsp_bp_type_to_target_hw_bp_type (char type)
> +{
> + switch (type)
> + {
> + case '2':
> + return hw_write;
> + case '3':
> + return hw_read;
> + case '4':
> + return hw_access;
> + }
> +
> + return -1;
This looks unclean to me, you're returning a value that's outside the
valid range of the enum type used. By the structure of the callers this
code is expected to be dead though, so please use gdb_assert_not_reached.
Thanks for going ahead and adding rsp_bp_type_to_target_hw_bp_type,
however in the future please try to name in the patch description any
changes you've made (non-trivial ones that is, obvious typo fixes,
formatting adjustments, etc. need no mention, although there'll be no harm
from making an overall statement that you've made such clean-ups) beyond
ones requested in the review. This will make the review process easier
for me as otherwise I may assume proposed changes I have already accepted
will have remained the same in the updated patch.
Please resend with the adjustment requested, the change looks otherwise
OK to me.
Maciej
next prev parent reply other threads:[~2013-07-24 0:35 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-30 2:44 [PATCH 0/3] mips hardware watchpoint support in gdbserver Yao Qi
2013-05-30 2:44 ` [PATCH 1/3] Include asm/ptrace.h in mips-linux-nat.c Yao Qi
2013-06-13 17:49 ` Maciej W. Rozycki
2013-06-14 6:53 ` Yao Qi
2013-06-14 12:53 ` Maciej W. Rozycki
2013-06-20 19:40 ` Pedro Alves
2013-06-20 20:45 ` Maciej W. Rozycki
2013-06-21 14:58 ` Pedro Alves
2013-06-17 16:04 ` Maciej W. Rozycki
2013-05-30 2:44 ` [PATCH 3/3] MIPS h/w watchpoint in GDBserver Yao Qi
2013-06-13 8:20 ` Yao Qi
2013-06-13 13:09 ` Eli Zaretskii
2013-06-13 16:56 ` Pedro Alves
2013-06-19 22:22 ` Maciej W. Rozycki
2013-06-21 15:00 ` Pedro Alves
2013-05-30 2:44 ` [PATCH 2/3] Move mips hardware watchpoint stuff to common/ Yao Qi
2013-06-13 4:12 ` Yao Qi
2013-06-19 22:05 ` Maciej W. Rozycki
2013-06-20 14:21 ` Yao Qi
2013-06-20 15:27 ` Maciej W. Rozycki
2013-06-20 17:50 ` Joel Brobecker
2013-06-21 8:03 ` Maciej W. Rozycki
2013-06-21 15:55 ` Joel Brobecker
2013-05-30 12:29 ` [PATCH 0/3] mips hardware watchpoint support in gdbserver Maciej W. Rozycki
2013-05-30 18:06 ` Pedro Alves
2013-05-30 18:08 ` Pedro Alves
2013-06-29 3:11 ` [PATCH v2 0/5] " Yao Qi
2013-06-29 3:11 ` [PATCH 1/5] Share 'enum target_hw_bp_type' in GDB and GDBserver Yao Qi
2013-07-24 0:26 ` Maciej W. Rozycki
2013-07-24 14:04 ` Tom Tromey
2013-07-28 0:41 ` Yao Qi
2013-06-29 3:11 ` [PATCH 5/5] MIPS GDBserver watchpoint Yao Qi
2013-06-29 15:20 ` Eli Zaretskii
2013-07-24 0:35 ` Maciej W. Rozycki [this message]
2013-07-25 0:17 ` Yao Qi
2013-07-25 21:20 ` Maciej W. Rozycki
2013-07-28 0:49 ` Yao Qi
2013-07-24 18:11 ` Pedro Alves
2013-06-29 3:11 ` [PATCH 2/5] Include asm/ptrace.h in mips-linux-nat.c Yao Qi
2013-07-24 0:26 ` Maciej W. Rozycki
2013-07-28 0:43 ` Yao Qi
2013-06-29 3:11 ` [PATCH 3/5] Refactor " Yao Qi
2013-07-24 0:27 ` Maciej W. Rozycki
2013-07-28 0:44 ` Yao Qi
2013-06-29 8:01 ` [PATCH 4/5] Move mips hardware watchpoint stuff to common/ Yao Qi
2013-07-24 0:31 ` Maciej W. Rozycki
2013-07-24 2:08 ` Yao Qi
2013-07-24 18:09 ` Pedro Alves
2013-07-25 0:07 ` Yao Qi
2013-07-25 21:17 ` Maciej W. Rozycki
2013-07-28 0:47 ` Yao Qi
2013-07-22 1:11 ` [PATCH v2 0/5] mips hardware watchpoint support in 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=alpine.DEB.1.10.1307232257170.32382@tp.orcam.me.uk \
--to=macro@codesourcery.com \
--cc=gdb-patches@sourceware.org \
--cc=yao@codesourcery.com \
/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