This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH v9 23/29] record-btrace: provide target_find_new_threads method


On 12/19/2013 04:44 PM, Markus Metzger wrote:
> The "info threads" command tries to read memory, which is not possible during
> replay.  This results in an error message and aborts the command without showing
> the existing threads.
> 
> Provide a to_find_new_threads target method to skip the search while replaying.

I think for completeness you should also provide a to_thread_alive
method.  These two go hand in hand.

> 
> 2013-12-19  Markus Metzger  <markus.t.metzger@intel.com>
> 
> 	* record-btrace.c (record_btrace_find_new_threads): New.
> 	(init_record_btrace_ops): Initialize to_find_new_threads.
> 
> 
> ---
>  gdb/record-btrace.c | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)
> 
> diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
> index bb140ce..f6272b4 100644
> --- a/gdb/record-btrace.c
> +++ b/gdb/record-btrace.c
> @@ -1055,6 +1055,24 @@ record_btrace_wait (struct target_ops *ops, ptid_t ptid,
>    error (_("You can't do this from here.  Do 'record goto end', first."));
>  }
>  
> +/* The to_find_new_threads method of target record-btrace.  */
> +
> +static void
> +record_btrace_find_new_threads (struct target_ops *ops)
> +{
> +  /* Don't expect new threads if we're replaying.  */
> +  if (record_btrace_is_replaying ())
> +    return;
> +
> +  /* Forward the request.  */
> +  for (ops = ops->beneath; ops != NULL; ops = ops->beneath)
> +    if (ops->to_find_new_threads != NULL)
> +      {
> +	ops->to_find_new_threads (ops);
> +	break;
> +      }
> +}
> +
>  /* Initialize the record-btrace target ops.  */
>  
>  static void
> @@ -1091,6 +1109,7 @@ init_record_btrace_ops (void)
>    ops->to_get_unwinder = &record_btrace_frame_unwind;
>    ops->to_resume = record_btrace_resume;
>    ops->to_wait = record_btrace_wait;
> +  ops->to_find_new_threads = record_btrace_find_new_threads;
>    ops->to_stratum = record_stratum;
>    ops->to_magic = OPS_MAGIC;
>  }
> 


-- 
Pedro Alves


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]