From: Paul Schlie <schlie@comcast.net>
To: Daniel Jacobowitz <drow@false.org>, Eli Zaretskii <eliz@gnu.org>,
Michael Snyder <msnyder@redhat.com>, <gdb@sources.redhat.com>
Subject: Re: [discuss] Support for reverse-execution
Date: Fri, 20 May 2005 15:49:00 -0000 [thread overview]
Message-ID: <BEB37F34.A391%schlie@comcast.net> (raw)
Alternatively to attempting to specify an interface to a lone commercial
reversible simulator, or presume the intelligence need be "remote" to GDB;
I wonder if it may be more sensible to consider initially defining the basic
generic facilities by which GDB may directly support undoable/reversible
execution, and checkpoint features.
More specifically, as ISA semantics do not generally have deterministic
reciprocal semantics, it's only possible to support reverse execution
by literally being able to either maintain a list of all state changes
associated with each instruction/command's execution and unwind them,
and then optionally proceed forward again.
Therefore it seems likely sufficient to initially begin by defining
support for the following core facilities:
Basic GDB support for check pointing and reverse execution:
- enable-checkpoints: initializes machine state and program memory to
all 0's upon prior to program startup/initialization. (see below)
- save-checkpoint [Optional-Name] => checkpoint [N [Optional-Name]],
saves a diff between the programs present state and it's previous
state, and marks the current undo-state diff (see below) as being
equivalent to this checkpoint.
- restore-checkpoint [N | Opional-Name]; sets machine and memory state
to the cumulative difference between all 0's and the designated
checkpoint diff. [this is insensitive to the target's stub supporting
state-diff, as GBD is responsible for storing and computing state-point
restores on behalf of the target]
- enable-undo/reverse: sets flag to request state-diff from target
stub upon (step, next, etc.) commands.
- (step, next, etc.): as normal, but requests the state-diff from the
target stub between successive command executions if reverse-execution
flag is enabled. (This may also be supported without target stub support
for state-diff, as GDB has direct access to both the target's machine
state, and memory state; although target stubs may likely be capable
of more efficient diff's if they are capable of tracking memory updates
more efficiently than simply looking after the fact.)
- undo/reverse: undoes/reverses the previously issued command, by
un-diff'ing the present machine and memory state with the previously
returned diff. (which is likely sufficient and substantially more time
and resource efficient than attempting to otherwise effectively
single-step record all intervening individual instruction execution
diff's, which could also be enabled if desired, although likely not
necessary in general.)
Basic Target stub facilities to improve reverse execution efficiently:
- state-diff: the target returns the diff between the target's present
state and it's previous state, which may be used if available in lieu
of GDB directly calculating machine and memory state diffs, but would
likely only be substantially more efficient if the target stub were
capable of more efficiently tracking and accumulating diffs by directly
monitoring memory state changes, rather than determining them after
the fact, as may be done likely efficiently by a target simulator and
then simply communicated by publishing the cumulative diffs as requested
by GDB; which seems nice and simple, and minimally invasive.)
next reply other threads:[~2005-05-20 15:49 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-20 15:49 Paul Schlie [this message]
2005-05-20 17:41 ` Dan Shearer
2005-05-20 22:01 ` Paul Schlie
2005-05-20 22:08 ` Daniel Jacobowitz
2005-05-20 22:43 ` Paul Schlie
2005-05-21 0:58 ` Daniel Jacobowitz
2005-05-21 1:42 ` Paul Schlie
2005-05-21 1:53 ` Daniel Jacobowitz
2005-05-21 1:56 ` Daniel Jacobowitz
2005-05-21 15:03 ` Paul Schlie
2005-05-21 14:13 ` Paul Schlie
2005-05-21 14:23 ` Daniel Jacobowitz
2005-05-21 15:04 ` Paul Schlie
2005-05-20 20:58 ` Michael Snyder
2005-05-20 21:35 ` Paul Schlie
-- strict thread matches above, loose matches on Subject: below --
2005-05-21 15:53 Paul Schlie
2005-05-20 22:11 Michael Snyder
2005-05-20 23:32 ` Paul Schlie
2005-05-20 21:59 Michael Snyder
2005-05-20 21:51 Michael Snyder
2005-05-21 9:44 ` Eli Zaretskii
2005-05-20 21:44 Michael Snyder
2005-05-20 21:25 Michael Snyder
2005-05-20 21:16 Michael Snyder
2005-05-20 21:31 ` Daniel Jacobowitz
2005-05-21 9:39 ` Eli Zaretskii
2005-05-23 18:19 ` Michael Snyder
2005-05-20 21:11 Michael Snyder
2005-05-20 21:27 ` Daniel Jacobowitz
2005-05-20 19:02 Michael Snyder
2005-05-20 20:43 ` Eli Zaretskii
2005-05-20 21:03 ` Michael Snyder
2005-05-19 1:23 Dan Shearer
2005-05-19 13:01 ` Johan Rydberg
2005-05-19 13:18 ` Daniel Jacobowitz
2005-05-19 13:47 ` Johan Rydberg
2005-05-20 10:37 ` Eli Zaretskii
2005-05-20 11:37 ` Andreas Schwab
2005-05-20 13:18 ` Daniel Jacobowitz
2005-05-20 13:36 ` Fabian Cenedese
2005-05-20 13:47 ` Daniel Jacobowitz
2005-05-20 14:41 ` Eli Zaretskii
2005-05-20 22:14 ` Daniel Jacobowitz
2005-05-20 12:22 ` Johan Rydberg
2005-05-20 13:19 ` Daniel Jacobowitz
2005-05-20 14:12 ` Eli Zaretskii
2005-05-20 13:14 ` Daniel Jacobowitz
2005-05-20 14:34 ` Eli Zaretskii
2005-05-20 15:40 ` Johan Rydberg
2005-05-20 10:47 ` Eli Zaretskii
2005-05-16 17:47 Dan Shearer
2005-05-16 18:04 ` Dan Shearer
2005-05-20 18:15 ` Daniel Jacobowitz
2005-05-21 0:05 ` Frank Ch. Eigler
2005-05-21 10:13 ` Eli Zaretskii
2005-05-21 10:28 ` Russell Shaw
2005-05-21 12:38 ` Eli Zaretskii
2005-05-21 12:55 ` Russell Shaw
2005-05-21 14:39 ` Russell Shaw
2005-05-21 14:19 ` Daniel Jacobowitz
2005-05-21 15:46 ` Eli Zaretskii
2005-05-21 17:43 ` Daniel Jacobowitz
2005-05-23 19:39 ` Dan Shearer
2005-05-12 23:08 Michael Snyder
2005-05-13 6:23 ` Eli Zaretskii
2005-05-19 13:46 ` Daniel Jacobowitz
2005-05-19 18:46 ` Michael Snyder
2005-05-19 19:26 ` Johan Rydberg
2005-05-20 10:55 ` Eli Zaretskii
2005-05-20 13:04 ` Daniel Jacobowitz
2005-05-20 14:30 ` Eli Zaretskii
2005-05-20 14:43 ` Andreas Schwab
2005-05-20 20:48 ` Michael Snyder
2005-05-20 20:51 ` Daniel Jacobowitz
2005-05-20 20:38 ` Michael Snyder
2005-05-20 15:05 ` Vladimir Prus
2005-05-20 15:58 ` Eli Zaretskii
2005-05-20 18:14 ` Daniel Jacobowitz
2005-05-20 18:30 ` Eli Zaretskii
2005-05-20 19:27 ` Stan Shebs
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=BEB37F34.A391%schlie@comcast.net \
--to=schlie@comcast.net \
--cc=drow@false.org \
--cc=eliz@gnu.org \
--cc=gdb@sources.redhat.com \
--cc=msnyder@redhat.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).