Re: [RFA] let record_resume fail immediately on error

Hui Zhu
2009-10-23T07:29:29Z

Ping.

On Tue, Oct 20, 2009 at 11:17, Hui Zhu <teawater@gmail.com> wrote:
> Update follow cvs-head.
>
> Please help me with it.
>
> Thanks,
> Hui
>
> 2009-10-20  Hui Zhu  <teawater@gmail.com>
>
>        * record.c (record_resume_error): Deleted.
>        (record_resume): Call record_message.
>        (record_wait): Deleted record_resume_error.
>        Set status when do_record_message need stop the inferior.
>
> ---
>  record.c |   29 ++++++++++-------------------
>  1 file changed, 10 insertions(+), 19 deletions(-)
>
> --- a/record.c
> +++ b/record.c
> @@ -679,7 +679,6 @@ record_close (int quitting)
>  }
>
>  static int record_resume_step = 0;
> -static int record_resume_error;
>
>  static void
>  record_resume (struct target_ops *ops, ptid_t ptid, int step,
> @@ -689,15 +688,11 @@ record_resume (struct target_ops *ops, p
>
>   if (!RECORD_IS_REPLAY)
>     {
> -      if (do_record_message (get_current_regcache (), signal))
> -        {
> -          record_resume_error = 0;
> -        }
> -      else
> -        {
> -          record_resume_error = 1;
> -          return;
> -        }
> +      struct record_message_args args;
> +
> +      args.regcache = get_current_regcache ();
> +      args.signal = signal;
> +      record_message (&args);
>       record_beneath_to_resume (record_beneath_to_resume_ops, ptid, 1,
>                                 signal);
>     }
> @@ -749,14 +744,6 @@ record_wait (struct target_ops *ops,
>
>   if (!RECORD_IS_REPLAY)
>     {
> -      if (record_resume_error)
> -       {
> -         /* If record_resume get error, return directly.  */
> -         status->kind = TARGET_WAITKIND_STOPPED;
> -         status->value.sig = TARGET_SIGNAL_ABRT;
> -         return inferior_ptid;
> -       }
> -
>       if (record_resume_step)
>        {
>          /* This is a single step.  */
> @@ -802,7 +789,11 @@ record_wait (struct target_ops *ops,
>                         Therefore we will not return to gdb.
>                         Record the insn and resume.  */
>                      if (!do_record_message (regcache, TARGET_SIGNAL_0))
> -                       break;
> +                       {
> +                           status->kind = TARGET_WAITKIND_STOPPED;
> +                           status->value.sig = TARGET_SIGNAL_0;
> +                           break;
> +                       }
>
>                      record_beneath_to_resume (record_beneath_to_resume_ops,
>                                                ptid, 1,
>