From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5662 invoked by alias); 14 Nov 2011 19:28:48 -0000 Received: (qmail 5654 invoked by uid 22791); 14 Nov 2011 19:28:47 -0000 X-SWARE-Spam-Status: No, hits=-6.8 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,SPF_HELO_PASS X-Spam-Check-By: sourceware.org Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Mon, 14 Nov 2011 19:28:27 +0000 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pAEJSR98019472 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 14 Nov 2011 14:28:27 -0500 Received: from valrhona.uglyboxes.com (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id pAEJSOr0013198 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Mon, 14 Nov 2011 14:28:26 -0500 Message-ID: <4EC16BD8.90309@redhat.com> Date: Mon, 14 Nov 2011 19:28:00 -0000 From: Keith Seitz User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0) Gecko/20110927 Thunderbird/7.0 MIME-Version: 1.0 To: Tom Tromey CC: "gdb-patches@sourceware.org ml" Subject: Re: [RFA] mi/10586 References: <4EBD93D9.2020006@redhat.com> <4EC157F6.1030503@redhat.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes 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: 2011-11/txt/msg00362.txt.bz2 On 11/14/2011 10:17 AM, Tom Tromey wrote: > It also seems like it will do the wrong thing for -var-info-expression and > -var-info-path-expression. Hmm. Yeah, those will need special handling. Consider: struct a { struct { int b; }; struct { int c; }; }; -var-create a * a -var-list-children a = "public" (if c++) -var-list-children a.public = "0_anonymous", "1_anonymous" -var-list-children a.public.0_anonymous = "b" (via "public" if c++) -var-list-children a.public.1_anonymous = "c" (via "public" if c++) So far, so good, I think. Now: -var-info-expression a = "a" -var-info-expression a.public = "public" -var-info-expression a.public.0_anonymous = "0_anonymous" -var-info-expression a.public.0_anonymous.b = "b" According to the documentation, -var-info-expression is supposed to return a name of the variable/child which is to be presented to the user. I don't think we want to present "0_anonymous". GCC uses "", and that seems like a reasonable convention to follow. -var-info-path-expression a = "a" -var-info-path-expression a.public = "" -var-info-path-expression a.public.0_anonymous = "((a).2_anonymous)" -var-info-path-expression a.public.0_anonymous.b = "((((a).0_anonymous)).b)" The documentation on this command says that it should return a valid expression that may be used, e.g., to create another varobj or to set a watchpoint. Clearly the two last elements dealing with 0_anonymous are incorrect. I believe these should be: -var-info-path-expression a.public.0_anonymous = "" -var-info-path-expression a.public.0_anonymous.b = "((a).b)" If we can agree what to do, I shall set about implementing the desired change. Keith