Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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)

  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