[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