Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Keith Seitz <keiths@redhat.com>
To: gdb-patches@sources.redhat.com
Subject: [RFA/mi] Fix "-thread-select 123456789" test (fwd)
Date: Mon, 07 Oct 2002 11:01:00 -0000	[thread overview]
Message-ID: <Pine.LNX.4.44.0210071103290.3979-100000@valrhona.uglyboxes.com> (raw)

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;
  }



             reply	other threads:[~2002-10-07 18:01 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-10-07 11:01 Keith Seitz [this message]
2002-10-22  9:27 ` Elena Zannoni
2002-10-22 10:53   ` Keith Seitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Pine.LNX.4.44.0210071103290.3979-100000@valrhona.uglyboxes.com \
    --to=keiths@redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox