From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 44447 invoked by alias); 4 Oct 2017 14:42:13 -0000 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 Received: (qmail 44381 invoked by uid 89); 4 Oct 2017 14:42:13 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=4.1 required=5.0 tests=BAYES_00,KAM_LAZY_DOMAIN_SECURITY,KAM_TK,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=no version=3.3.2 spammy=UD:tk X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 04 Oct 2017 14:42:11 +0000 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 96258285B2; Wed, 4 Oct 2017 14:42:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 96258285B2 Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=palves@redhat.com Received: from [127.0.0.1] (ovpn04.gateway.prod.ext.ams2.redhat.com [10.39.146.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id 51F565D9CD; Wed, 4 Oct 2017 14:42:08 +0000 (UTC) Subject: Re: [PATCH] Fix -list-thread-groups --available logic and add test To: Simon Marchi References: <1507125639-522-1-git-send-email-simon.marchi@ericsson.com> <88d47cd0-df4e-84ea-e19d-0e6f7b0dc79b@redhat.com> <4b4d69ff72cd6840be87168174cb7181@polymtl.ca> Cc: Simon Marchi , gdb-patches@sourceware.org, tom@tromey.com From: Pedro Alves Message-ID: <7b48234b-1a7d-b4b4-2de0-2514d70cc59c@redhat.com> Date: Wed, 04 Oct 2017 14:42:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <4b4d69ff72cd6840be87168174cb7181@polymtl.ca> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-SW-Source: 2017-10/txt/msg00084.txt.bz2 On 10/04/2017 03:32 PM, Simon Marchi wrote: > On 2017-10-04 10:14, Pedro Alves wrote: >> On 10/04/2017 03:00 PM, Simon Marchi wrote: >> >>> +# List a specific process. >>> +set spawn_id [remote_spawn target $binfile] >>> +set pid [spawn_id_get_pid $spawn_id] >>> +mi_gdb_test \ >>> + "-list-thread-groups --available i${pid}" \ >>> + "\\^done,groups=\\\[{id=\"${pid}\",type=\"process\",.*}\\\]" \ >>> + "list available thread groups with filter" >> >> Won't that ".*" above end up matching more than one process, if >> GDB's filtering ends up a bit borked? Can we be sure that >> only one process comes out? > > I tried designing it like that but found it was pretty difficult because > of the description field: > > 55 > ^done,groups=[{id="499",type="process",description="/home/emaisin/build/binutils-gdb/gdb/testsuite/outputs/gdb.mi/list-thread-groups-available/list-thread-groups-available",user="emaisin",cores=["1"]}]^M > > > If we have something like this: > > groups=[{id="$decimal",type="process",description=".*",...}] Instead of .*, how about matching "all but unquoted/terminating double-quote" ? See http://wiki.tcl.tk/989 for example (Match a "quoted string"). (Maybe there's an easier way to write that regex, haven't really thought about it.) > > and there are two process entries, the .* in the description field could > match from the beginning of the first description field to the end of > the second description field. So we wouldn't catch that there are two > processes instead of one. And we can't really restrict its content, > because it could potentially include [,}"]. > > Do you have any idea on how to do this with a regex? The only "real" > solution I see is to have a proper MI parser that parses MI to a tcl > data structure, and assert that the list of groups is of length 1. A "real" parser would consume the "..." description string as a single string by looking for an unescaped terminating double-quote. :-) Thanks, Pedro Alves