From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1854 invoked by alias); 7 Oct 2002 18:01:11 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 1847 invoked from network); 7 Oct 2002 18:01:10 -0000 Received: from unknown (HELO mx1.redhat.com) (66.187.233.31) by sources.redhat.com with SMTP; 7 Oct 2002 18:01:10 -0000 Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.11.6/8.11.6) with ESMTP id g97HfeX16342 for ; Mon, 7 Oct 2002 13:41:40 -0400 Received: from pobox.corp.redhat.com (pobox.corp.redhat.com [172.16.52.156]) by int-mx1.corp.redhat.com (8.11.6/8.11.6) with ESMTP id g97I19f08583 for ; Mon, 7 Oct 2002 14:01:09 -0400 Received: from valrhona.uglyboxes.com (IDENT:4Cet90DpTNRa76BKFBSTUhAXvMjGRIsw@vpn50-23.rdu.redhat.com [172.16.50.23]) by pobox.corp.redhat.com (8.11.6/8.11.6) with ESMTP id g97I19808771 for ; Mon, 7 Oct 2002 14:01:09 -0400 Date: Mon, 07 Oct 2002 11:01:00 -0000 From: Keith Seitz X-X-Sender: keiths@valrhona.uglyboxes.com To: gdb-patches@sources.redhat.com Subject: [RFA/mi] Fix "-thread-select 123456789" test (fwd) Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-SW-Source: 2002-10/txt/msg00175.txt.bz2 Ping. ---------- Forwarded message ---------- Date: Tue, 24 Sep 2002 12:53:36 -0700 (PDT) From: Keith Seitz 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 * 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; }