[RFA] let record_resume fail immediately on error
Hui Zhu
teawater@gmail.com
Wed Nov 4 05:15:00 GMT 2009
>> Now we have a lot of patch in running.
>> Could you please help me review this patch first?
>
> OK, could you help me understand it?
>
> You have an error-handler routine called do_record_message,
> which calls record_message by way of catch_errors. You call
> do_record_message from two places, record_wait and record_resume.
>
> But now you want to bypass the error-handler routine when
> you call record_message from record_resume, but keep it in
> place for record_wait. Now you have two different ways of
> calling record_message. Seems inconsistant. No explanation,
> no comments explaining the difference.
>
OK. I will try to talk clear about it.
I make do_record_message because in before, call a error in
record_resume and record_wait will make inferior cannot keep running.
Now, I found that call error in record_resume will not affect
anything. So I change do_record_message to record_message in
record_resume.
But in record_wait, call error still make inferior cannot keep
running, so I keep do_record_message.
Thanks,
Hui
>
>
>> 2009-11-03 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
>> @@ -954,7 +954,6 @@ record_close (int quitting)
>> }
>>
>> static int record_resume_step = 0;
>> -static int record_resume_error;
>>
>> /* "to_resume" target method. Resume the process record target. */
>>
>> @@ -966,15 +965,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);
>> }
>> @@ -1038,14 +1033,6 @@ record_wait (struct target_ops *ops,
>>
>> if (!RECORD_IS_REPLAY && ops != &record_core_ops)
>> {
>> - 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. */
>> @@ -1091,7 +1078,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,
>
>
More information about the Gdb-patches
mailing list