From: David Daney <ddaney@caviumnetworks.com>
To: Pedro Alves <pedro@codesourcery.com>
Cc: gdb-patches@sourceware.org
Subject: [Patch 1/2] Fix aftermath of 'infrun.c support for MIPS hardware watchpoints.'
Date: Mon, 20 Apr 2009 18:31:00 -0000 [thread overview]
Message-ID: <49ECBF74.8020306@caviumnetworks.com> (raw)
In-Reply-To: <200904171443.26794.pedro@codesourcery.com>
[-- Attachment #1: Type: text/plain, Size: 1495 bytes --]
Pedro Alves wrote:
> Thanks for the update.
>
> On Thursday 16 April 2009 18:08:07, David Daney wrote:
>>>> Reported instruction location of the watchpoint trigger is one
>>>> instruction later and one line later.
>>> Why is that?
>> I was mistaken, it is earlier, not later. With hardware watch points,
>> $pc points to the faulting instruction, with software watch points $pc
>> points to the following instruction. In a couple of tests, this results
>> in the reported line number being different than the expected value.
>
> I'm missing something and am still confused. PC points at the
> faulting instruction when the target reports the watchpoint hit to
> infrun --- . That step-over-watchpoint dance that patch 1/2 took care of comes
> into play. That should move the inferior to the following instruction, evaluate
> the watchpoint expression, notice the value changed, and report to the
> user. Why does the PC still point at the faulting instruction?
>
This patch had a small problem:
http://sourceware.org/ml/gdb-patches/2009-04/msg00245.html
I was calling registers_changed() to clear the register cache, but then
immediately calling read_pc() which caused it to be reloaded. After the
single step to move past the watchpoint, the old cached register values
were used instead of the current values.
The fix: Move the registers_changed() call after read_pc().
Tested on x86_64-unknown-linux-gnu and mips64-unknown-linux-gnu with no
regressions.
OK to commit?
[-- Attachment #2: infrun.patch --]
[-- Type: text/plain, Size: 799 bytes --]
2009-04-20 David Daney <ddaney@caviumnetworks.com>
* infrun.c (handle_inferior_event): Move registers_changed call down.
Index: infrun.c
===================================================================
RCS file: /cvs/src/src/gdb/infrun.c,v
retrieving revision 1.368
diff -u -p -r1.368 infrun.c
--- infrun.c 14 Apr 2009 00:59:47 -0000 1.368
+++ infrun.c 20 Apr 2009 18:14:35 -0000
@@ -2842,9 +2842,9 @@ targets should add new threads to the th
if (!HAVE_STEPPABLE_WATCHPOINT)
remove_breakpoints ();
- registers_changed ();
/* Single step */
hw_step = maybe_software_singlestep (current_gdbarch, read_pc ());
+ registers_changed ();
target_resume (ecs->ptid, hw_step, TARGET_SIGNAL_0);
waiton_ptid = ecs->ptid;
if (HAVE_STEPPABLE_WATCHPOINT)
next prev parent reply other threads:[~2009-04-20 18:31 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-04-06 7:27 [Patch 2/2] MIPS hardware watchpoint support David Daney
2009-04-06 20:27 ` Eli Zaretskii
2009-04-11 17:16 ` Pedro Alves
2009-04-16 17:08 ` David Daney
2009-04-17 13:43 ` Pedro Alves
2009-04-20 18:31 ` David Daney [this message]
2009-04-20 19:07 ` [Patch 1/2] Fix aftermath of 'infrun.c support for MIPS hardware watchpoints.' Pedro Alves
2009-04-20 21:15 ` David Daney
2009-04-20 18:40 ` [Patch 2/2] MIPS hardware watchpoint support David Daney
2009-04-20 19:12 ` Pedro Alves
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=49ECBF74.8020306@caviumnetworks.com \
--to=ddaney@caviumnetworks.com \
--cc=gdb-patches@sourceware.org \
--cc=pedro@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