[PATCH v9 29/29] record-btrace: add (reverse-)stepping support
Pedro Alves
palves@redhat.com
Fri Dec 20 16:07:00 GMT 2013
On 12/20/2013 02:36 PM, Metzger, Markus T wrote:
>> -----Original Message-----
>> From: Pedro Alves [mailto:palves@redhat.com]
>> Sent: Thursday, December 19, 2013 9:10 PM
>
>
>>> + if (non_stop)
>>> + error (_("Record btrace can't debug inferior in non-stop mode "
>>> + "(non-stop)."));
>>
>> What's the intent of saying non-stop twice, in:
>>
>> "in non-stop mode (non-stop)"
>
> I took this from s/w record without thinking. Fixed.
Ah, indeed I see it there now...
>>> + /* Stop all other threads. */
>>> + if (!non_stop)
>>> + ALL_THREADS (other)
>>> + other->btrace.flags &= ~BTHR_MOVE;
>>
>> (I know it doesn't work currently), but in non-stop, the
>> event thread should also get its BTHR_MOVE flag cleared.
>> I didn't spot where that was being done.
>
> It's done in record_btrace_step_thread right at the beginning.
>
>
>>> + /* GDB seems to need this. Without, a stale PC seems to be used
>> resulting in
>>> + the current location to be displayed incorrectly. */
>>> + registers_changed_ptid (tp->ptid);
>>
>> This really shouldn't be necessary, given target_resume does
>> it for you. If you still needed, you're papering over some
>> problem.
>
> If we start replaying in to_wait, we'll call get_current_frame
> to fix up some stepping related frames. This will be done on
> the current PC.
>
> When we step later on in record_btrace_step_thread, we change
> the replay position but not the PC.
Alright, that's the place to flush it then. It's just like
the registers_changed calls in linux-nat.c, whenever the
target resumes the thread behind the core's back:
registers_changed ();
if (linux_nat_prepare_to_resume != NULL)
linux_nat_prepare_to_resume (lp);
linux_ops->to_resume (linux_ops, pid_to_ptid (ptid_get_lwp (lp->ptid)),
lp->step, GDB_SIGNAL_0);
etc.
>
> I guess it will be more clear when I move this into
> record_btrace_step_thread and change the comment.
Thanks.
--
Pedro Alves
More information about the Gdb-patches
mailing list