* [RFA/mi] Fix "-thread-select 123456789" test (fwd)
@ 2002-10-07 11:01 Keith Seitz
2002-10-22 9:27 ` Elena Zannoni
0 siblings, 1 reply; 3+ messages in thread
From: Keith Seitz @ 2002-10-07 11:01 UTC (permalink / raw)
To: gdb-patches
Ping.
---------- Forwarded message ----------
Date: Tue, 24 Sep 2002 12:53:36 -0700 (PDT)
From: Keith Seitz <keiths@redhat.com>
To: gdb-patches@sources.redhat.com
Subject: [RFA/mi] Fix "-thread-select 123456789" test
Hi,
Now that the mi-pthreads.exp tests are committed, this patch fixes one of
the failures, which demonstrates that when an error occurs switching
threads, MI was not able to correctly propagate an error message to the
user.
This happens because the MI function is using a wrapped gdb function,
gdb_thread_select. This function returns <0 when an error occurs. The
wrapped function can return either a gdb failure code (like RETURN_ERROR)
or a wrapper failures (GDB_RC_FAIL). In both cases, mi_cmd_thread_select
was returnging MI_CMD_CAUGHT_ERROR, which is only valid in the first case.
In the latter, ther error message is already in mi_error_message, and it
should return MI_CMD_ERROR.
You can see this by looking at mi-pthreads.exp's "-thread-select
123456789" test:
(gdb)
-thread-select 123456789
&"Thread ID 123456789 not known.\n"
^done
(gdb)
Clearly, the correct answer should have ended with '^error,msg="Thread ID
123456789 not known."'.
Keith
ChangeLog
2002-09-24 Keith Seitz <keiths@redhat.com>
* mi-main.c (mi_cmd_thread_select): Only return MI_CMD_CAUGHT_ERROR
when we really did catch an error(). If we got GDB_RC_FAIL, return
MI_CMD_ERROR instead.
Patch
Index: mi/mi-main.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-main.c,v
retrieving revision 1.31
diff -p -r1.31 mi-main.c
*** mi/mi-main.c 11 Sep 2002 21:49:04 -0000 1.31
--- mi/mi-main.c 24 Sep 2002 19:44:32 -0000
*************** mi_cmd_thread_select (char *command, cha
*** 244,251 ****
else
rc = gdb_thread_select (uiout, argv[0]);
! if (rc == GDB_RC_FAIL)
return MI_CMD_CAUGHT_ERROR;
else
return MI_CMD_DONE;
}
--- 244,255 ----
else
rc = gdb_thread_select (uiout, argv[0]);
! /* RC is enum gdb_rc if it is successful (>=0)
! enum return_reason if not (<0). */
! if ((int) rc < 0 && (enum return_reason) rc == RETURN_ERROR)
return MI_CMD_CAUGHT_ERROR;
+ else if ((int) rc >= 0 && rc == GDB_RC_FAIL)
+ return MI_CMD_ERROR;
else
return MI_CMD_DONE;
}
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFA/mi] Fix "-thread-select 123456789" test (fwd)
2002-10-07 11:01 [RFA/mi] Fix "-thread-select 123456789" test (fwd) Keith Seitz
@ 2002-10-22 9:27 ` Elena Zannoni
2002-10-22 10:53 ` Keith Seitz
0 siblings, 1 reply; 3+ messages in thread
From: Elena Zannoni @ 2002-10-22 9:27 UTC (permalink / raw)
To: Keith Seitz; +Cc: gdb-patches
Keith Seitz writes:
> Ping.
>
Sorry, this one slipped. Yes, go ahead.
Elena
> ---------- Forwarded message ----------
> Date: Tue, 24 Sep 2002 12:53:36 -0700 (PDT)
> From: Keith Seitz <keiths@redhat.com>
> To: gdb-patches@sources.redhat.com
> Subject: [RFA/mi] Fix "-thread-select 123456789" test
>
> Hi,
>
> Now that the mi-pthreads.exp tests are committed, this patch fixes one of
> the failures, which demonstrates that when an error occurs switching
> threads, MI was not able to correctly propagate an error message to the
> user.
>
> This happens because the MI function is using a wrapped gdb function,
> gdb_thread_select. This function returns <0 when an error occurs. The
> wrapped function can return either a gdb failure code (like RETURN_ERROR)
> or a wrapper failures (GDB_RC_FAIL). In both cases, mi_cmd_thread_select
> was returnging MI_CMD_CAUGHT_ERROR, which is only valid in the first case.
> In the latter, ther error message is already in mi_error_message, and it
> should return MI_CMD_ERROR.
>
> You can see this by looking at mi-pthreads.exp's "-thread-select
> 123456789" test:
>
> (gdb)
> -thread-select 123456789
> &"Thread ID 123456789 not known.\n"
> ^done
> (gdb)
>
> Clearly, the correct answer should have ended with '^error,msg="Thread ID
> 123456789 not known."'.
>
> Keith
>
> ChangeLog
> 2002-09-24 Keith Seitz <keiths@redhat.com>
>
> * mi-main.c (mi_cmd_thread_select): Only return MI_CMD_CAUGHT_ERROR
> when we really did catch an error(). If we got GDB_RC_FAIL, return
> MI_CMD_ERROR instead.
>
> Patch
> Index: mi/mi-main.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/mi/mi-main.c,v
> retrieving revision 1.31
> diff -p -r1.31 mi-main.c
> *** mi/mi-main.c 11 Sep 2002 21:49:04 -0000 1.31
> --- mi/mi-main.c 24 Sep 2002 19:44:32 -0000
> *************** mi_cmd_thread_select (char *command, cha
> *** 244,251 ****
> else
> rc = gdb_thread_select (uiout, argv[0]);
>
> ! if (rc == GDB_RC_FAIL)
> return MI_CMD_CAUGHT_ERROR;
> else
> return MI_CMD_DONE;
> }
> --- 244,255 ----
> else
> rc = gdb_thread_select (uiout, argv[0]);
>
> ! /* RC is enum gdb_rc if it is successful (>=0)
> ! enum return_reason if not (<0). */
> ! if ((int) rc < 0 && (enum return_reason) rc == RETURN_ERROR)
> return MI_CMD_CAUGHT_ERROR;
> + else if ((int) rc >= 0 && rc == GDB_RC_FAIL)
> + return MI_CMD_ERROR;
> else
> return MI_CMD_DONE;
> }
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [RFA/mi] Fix "-thread-select 123456789" test (fwd)
2002-10-22 9:27 ` Elena Zannoni
@ 2002-10-22 10:53 ` Keith Seitz
0 siblings, 0 replies; 3+ messages in thread
From: Keith Seitz @ 2002-10-22 10:53 UTC (permalink / raw)
To: gdb-patches
On Tue, 22 Oct 2002, Elena Zannoni wrote:
> Sorry, this one slipped. Yes, go ahead.
Committed. Thanks for the look.
Keith
> > ---------- Forwarded message ----------
> > Date: Tue, 24 Sep 2002 12:53:36 -0700 (PDT)
> > From: Keith Seitz <keiths@redhat.com>
> > To: gdb-patches@sources.redhat.com
> > Subject: [RFA/mi] Fix "-thread-select 123456789" test
> >
> > Hi,
> >
> > Now that the mi-pthreads.exp tests are committed, this patch fixes one of
> > the failures, which demonstrates that when an error occurs switching
> > threads, MI was not able to correctly propagate an error message to the
> > user.
> >
> > This happens because the MI function is using a wrapped gdb function,
> > gdb_thread_select. This function returns <0 when an error occurs. The
> > wrapped function can return either a gdb failure code (like RETURN_ERROR)
> > or a wrapper failures (GDB_RC_FAIL). In both cases, mi_cmd_thread_select
> > was returnging MI_CMD_CAUGHT_ERROR, which is only valid in the first case.
> > In the latter, ther error message is already in mi_error_message, and it
> > should return MI_CMD_ERROR.
> >
> > You can see this by looking at mi-pthreads.exp's "-thread-select
> > 123456789" test:
> >
> > (gdb)
> > -thread-select 123456789
> > &"Thread ID 123456789 not known.\n"
> > ^done
> > (gdb)
> >
> > Clearly, the correct answer should have ended with '^error,msg="Thread ID
> > 123456789 not known."'.
> >
> > Keith
> >
> > ChangeLog
> > 2002-09-24 Keith Seitz <keiths@redhat.com>
> >
> > * mi-main.c (mi_cmd_thread_select): Only return MI_CMD_CAUGHT_ERROR
> > when we really did catch an error(). If we got GDB_RC_FAIL, return
> > MI_CMD_ERROR instead.
> >
> > Patch
> > Index: mi/mi-main.c
> > ===================================================================
> > RCS file: /cvs/src/src/gdb/mi/mi-main.c,v
> > retrieving revision 1.31
> > diff -p -r1.31 mi-main.c
> > *** mi/mi-main.c 11 Sep 2002 21:49:04 -0000 1.31
> > --- mi/mi-main.c 24 Sep 2002 19:44:32 -0000
> > *************** mi_cmd_thread_select (char *command, cha
> > *** 244,251 ****
> > else
> > rc = gdb_thread_select (uiout, argv[0]);
> >
> > ! if (rc == GDB_RC_FAIL)
> > return MI_CMD_CAUGHT_ERROR;
> > else
> > return MI_CMD_DONE;
> > }
> > --- 244,255 ----
> > else
> > rc = gdb_thread_select (uiout, argv[0]);
> >
> > ! /* RC is enum gdb_rc if it is successful (>=0)
> > ! enum return_reason if not (<0). */
> > ! if ((int) rc < 0 && (enum return_reason) rc == RETURN_ERROR)
> > return MI_CMD_CAUGHT_ERROR;
> > + else if ((int) rc >= 0 && rc == GDB_RC_FAIL)
> > + return MI_CMD_ERROR;
> > else
> > return MI_CMD_DONE;
> > }
> >
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-10-22 17:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-10-07 11:01 [RFA/mi] Fix "-thread-select 123456789" test (fwd) Keith Seitz
2002-10-22 9:27 ` Elena Zannoni
2002-10-22 10:53 ` Keith Seitz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox