RE: Simics & reverse execution

Jakob Engblom
2009-08-27T08:09:39Z

> I think we just need to come up with a sufficiently arbitrary
> way to represent both a "point in time" and a "bookmark", so
> that they can be passed back and forth between gdb and the
> remote target without gdb needing to know what they actually
> represent (eg. a timestamp or a branch count). Only the target
> needs to know how to interpret them.
>
> Maybe an 8 byte integer would be sufficient? What do you think?

I think a logical clock is the only sensible solution, actually, as you say, we
cannot know the time. In Simics, we use cycle counts, and bookmarks are just
names for a particular cycle count point. A good question is whether bookmarks
should be part of state in gdb or in the backend or both.

Obviously, there are nasty corner cases that are too complex for this protocol
to handle. In particular, if you are using a temporally decoupled simulation
engine where multiple processors are run for time slices before switching to the
next, there is a minor chance that you can see time jump back and forth (local
time on th current processor) as you execute logically forward... our tools
handle that, but it is pretty hard to do right and I don't expect gdb to have to
deal with that. Let the backends do it.

/jakob