Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Michael Snyder <msnyder@vmware.com>
To: Pedro Alves <pedro@codesourcery.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
	  teawater <teawater@gmail.com>
Subject: Re: [reverse/record] adjust_pc_after_break in reverse execution mode?
Date: Fri, 24 Oct 2008 00:43:00 -0000	[thread overview]
Message-ID: <490118CB.5000500@vmware.com> (raw)
In-Reply-To: <200810240045.52818.pedro@codesourcery.com>

Pedro Alves wrote:
> A Friday 24 October 2008 00:26:43, Michael Snyder wrote:
>> Hi Pedro,
>>
>> I duplicated your test case, and found that I could
>> reproduce the behavior that you show below, but only
>> so long as the branch did not contain your
>> "adjust_pc_after_break" patch.
>>
>> Once I added that patch to the branch, this behavior
>> seemed to go away.
>>
>> If I look carefully at what you did below, it seems like
>> the forward-replay problem only shows up immediately after
>> the reverse-replay problem manifests.  And my experiments
>> reflect the same thing.
>>
>> The branch is now patched.  Could you spare a moment to
>> play with it, and see if you can make it break again?
> 
> I've done so a bit this morning, and came to a similar
> conclusion, although I noticed Hui's change to set stop_pc in
> TARGET_WAITKIND_NO_HISTORY, also also required.  I was wanting
> to find time to play a little bit more, but since you're on to it...
> 
> I think the issue here, is that when proceeding (continuing) from B1
> below,
> 
>  B1: PC -->  0x80000001    INSN1
>  B2:         0x80000002    INSN2
> 
> GDB will always do a single-step to get over B1.  Then, the record
> target replays INSN1, and then notices that there's a breakpoint
> at 0x80000002.  Remember that GDB told the target to single-step (over
> a breakpoint), and to do so, removed all breakpoints from
> the inferior.  Hence, the adjust_pc_after_break checks to see if there's
> a breakpoint inserted at `0x80000002 - 1', it will find there isn't one
> (no breakpoint is inserted while doing the single-step over breakpoints
> operation).

Yes, I was reaching the same conclusion.

> In sum, it appears that decr_pc_after_break doesn't matter when you have
> continguous breakpoints, as long as you get from from B1's address to B2's
> address by single-stepping.  All is good then, it appears!

I agree, at least that is the conclusion I am leaning toward.


> (*) BTW, it seemed that TARGET_WAITKIND_NO_HISTORY overrides the
> last event the target would report?  Should'nt the last event in
> history be reported normally, and only *on the next* resume we'd
> get a TARGET_WAITKIND_NO_HISTORY?  I was wondering if you'd not lose
> a possible interesting event, just because it happened to be on
> the edge of the history.

Yes, it seems like if there is a breakpoint at the very last
(or first) instruction in the history, GDB will report
"no history" rather than "breakpoint".

I'm not *terribly* happy about that, but it's also
not the worst thing that could happen.  Maybe we can
get around to looking at it once we feel that everything
more urgent has been handled.


  parent reply	other threads:[~2008-10-24  0:43 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-18  1:11 Pedro Alves
2008-10-18  1:26 ` Michael Snyder
2008-10-18  3:09   ` Pedro Alves
2008-10-18  3:18     ` teawater
2008-10-18  8:42     ` Andreas Schwab
2008-10-19 14:28       ` teawater
2008-10-19 20:10     ` Daniel Jacobowitz
2008-10-18  3:07 ` teawater
2008-10-18  3:26   ` Pedro Alves
2008-10-19 22:44 ` Michael Snyder
2008-10-20  0:10   ` Pedro Alves
2008-10-20  0:44     ` Michael Snyder
2008-10-20  1:46       ` Daniel Jacobowitz
2008-10-20 12:10       ` Pedro Alves
2008-10-20 15:50         ` teawater
2008-10-20 17:44       ` Pedro Alves
2008-10-20 17:51         ` Michael Snyder
2008-10-20 23:36           ` teawater
2008-10-21  0:21             ` Pedro Alves
2008-10-21  0:56               ` teawater
2008-10-21  3:13                 ` teawater
2008-10-21  6:52               ` teawater
2008-10-21  6:52                 ` teawater
2008-10-23 23:28                 ` Michael Snyder
2008-10-21  7:04               ` teawater
2008-10-21 18:36                 ` Michael Snyder
2008-10-22  0:39                   ` teawater
2008-10-23 23:32     ` Michael Snyder
2008-10-23 23:46       ` Pedro Alves
2008-10-23 23:55         ` Pedro Alves
2008-10-24  0:45           ` Michael Snyder
2008-10-24  0:43         ` Michael Snyder [this message]
2008-10-24  1:51           ` Pedro Alves
2008-10-24  8:11             ` teawater
2008-10-24  9:58               ` teawater
2008-10-25  7:08                 ` teawater
2008-10-28  3:21                   ` teawater
2008-10-29  1:24                   ` Michael Snyder
2008-10-30  3:01                     ` teawater
2008-10-30 12:21                     ` Pedro Alves
2008-10-30 22:06                       ` Michael Snyder
2008-10-30 21:44                         ` Pedro Alves
2008-10-30 21:29                           ` Michael Snyder
2008-10-31 13:04                           ` teawater
2008-10-31  0:25                       ` teawater

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=490118CB.5000500@vmware.com \
    --to=msnyder@vmware.com \
    --cc=gdb-patches@sourceware.org \
    --cc=pedro@codesourcery.com \
    --cc=teawater@gmail.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