Re: [reverse/record] adjust_pc_after_break in reverse execution mode?

Michael Snyder
2008-10-21T18:36:33Z

teawater wrote:
> Sorry I send too much Email. I found that:
>
> if (singlestep_breakpoints_inserted_p
> || !ptid_equal (ecs->ptid, inferior_ptid)
> || !currently_stepping (ecs->event_thread)
> || ecs->event_thread->prev_pc == breakpoint_pc)
> regcache_write_pc (regcache, breakpoint_pc);
>
> Before write_pc, there are a lot of thing to check. Do we need to
> check it in record_wait?
> If so, it actually useless cause it will be set back in adjust_pc_after_break?
> Maybe we can let adjust_pc_after_break disable in replay mode.
>
> How do you think?

I think we should leave adjust_pc_after_break alone,
and change record_wait so that it adjusts the pc by
adding decr_pc_after_break(gdbarch) when appropriate.

Whenever possible, gdb should not need to know the difference
between replay and live debugging. This keeps things simple,
and preserves modularity.

Of course, you don't have access to the "ecs" object, which
is local to infrun. But you do know whether or not gdb is
stepping. And (for now) you know that there is only one
thread, so you can (for now) ignore the thread id (ptid).

The value of "step" that was passed to record_resume
came from "currently_stepping", so you should be able
to use that.

Something close to the patch that Pedro posted should work...