From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14203 invoked by alias); 28 Jun 2008 16:38:41 -0000 Received: (qmail 14194 invoked by uid 22791); 28 Jun 2008 16:38:40 -0000 X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (65.74.133.4) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sat, 28 Jun 2008 16:38:15 +0000 Received: (qmail 9086 invoked from network); 28 Jun 2008 16:38:13 -0000 Received: from unknown (HELO wind.local) (vladimir@127.0.0.2) by mail.codesourcery.com with ESMTPA; 28 Jun 2008 16:38:13 -0000 From: Vladimir Prus Date: Sat, 28 Jun 2008 16:43:00 -0000 Subject: [MI non-stop 02/11] Add 'stopped-threads' field to the *stopped output. To: gdb-patches@sources.redhat.com X-TUID: 6bb082b5d8c7e5ae X-Length: 3363 X-UID: 261 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200806282038.13720.vladimir@codesourcery.com> Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2008-06/txt/msg00540.txt.bz2 By Pawel' suggestion, the MI non-stop spec say *stopped should explicitly say which threads are stopped -- so that frontend need not check for 'non-stop' flag to decide if all threads are stopped or not. It's actually simple to do, so here's a patch. The infrun.c change affects MI only, so presumably I may commit it without seeking approval? - Volodya [gdb] * infrun.c (normal_stop): For MI, report which threads were stopped. [gdb/testsuite] * lib/mi-support.exp (mi_expect_stop): Adjust for the new field. --- gdb/infrun.c | 17 +++++++++++++++-- gdb/testsuite/lib/mi-support.exp | 6 +++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/gdb/infrun.c b/gdb/infrun.c index 9d03a7f..cf23c18 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -4021,8 +4021,21 @@ Further execution is probably impossible.\n")); } if (ui_out_is_mi_like_p (uiout)) - ui_out_field_int (uiout, "thread-id", - pid_to_thread_id (inferior_ptid)); + { + + ui_out_field_int (uiout, "thread-id", + pid_to_thread_id (inferior_ptid)); + if (non_stop) + { + struct cleanup *back_to = make_cleanup_ui_out_list_begin_end + (uiout, "stopped-threads"); + ui_out_field_int (uiout, NULL, + pid_to_thread_id (inferior_ptid)); + do_cleanups (back_to); + } + else + ui_out_field_string (uiout, "stopped-threads", "all"); + } /* The behavior of this routine with respect to the source flag is: SRC_LINE: Print only source line diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp index e4d9580..d32d373 100644 --- a/gdb/testsuite/lib/mi-support.exp +++ b/gdb/testsuite/lib/mi-support.exp @@ -1016,13 +1016,13 @@ proc mi_expect_stop { reason func args file line extra test } { set a $after_reason - verbose -log "mi_expect_stop: expecting: \\*stopped,${r}${a}${bn}thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=$args,file=\".*$file\",fullname=\"${fullname_syntax}$file\",line=\"$line\"\}$after_stopped\r\n$prompt_re$" + verbose -log "mi_expect_stop: expecting: \\*stopped,${r}${a}${bn}thread-id=\"$decimal\",stopped-threads=.*,frame=\{addr=\"$hex\",func=\"$func\",args=$args,file=\".*$file\",fullname=\"${fullname_syntax}$file\",line=\"$line\"\}$after_stopped\r\n$prompt_re$" gdb_expect { - -re "\\*stopped,${r}${a}${bn}thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\"$func\",args=$args,file=\".*$file\",fullname=\"${fullname_syntax}$file\",line=\"($line)\"\}$after_stopped\r\n$prompt_re$" { + -re "\\*stopped,${r}${a}${bn}thread-id=\"$decimal\",stopped-threads=.*,frame=\{addr=\"$hex\",func=\"$func\",args=$args,file=\".*$file\",fullname=\"${fullname_syntax}$file\",line=\"($line)\"\}$after_stopped\r\n$prompt_re$" { pass "$test" return $expect_out(2,string) } - -re "\\*stopped,${r}${a}${bn}thread-id=\"$decimal\",frame=\{addr=\"$hex\",func=\".*\",args=\[\\\[\{\].*\[\\\]\}\],file=\".*\",fullname=\"${fullname_syntax}.*\",line=\"\[0-9\]*\"\}.*\r\n$prompt_re$" { + -re "\\*stopped,${r}${a}${bn}thread-id=\"$decimal\",stopped-threads=.*,frame=\{addr=\"$hex\",func=\".*\",args=\[\\\[\{\].*\[\\\]\}\],file=\".*\",fullname=\"${fullname_syntax}.*\",line=\"\[0-9\]*\"\}.*\r\n$prompt_re$" { fail "$test (stopped at wrong place)" return -1 } -- 1.5.3.5