From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16898 invoked by alias); 25 Mar 2007 10:30:08 -0000 Received: (qmail 16888 invoked by uid 22791); 25 Mar 2007 10:30:08 -0000 X-Spam-Check-By: sourceware.org Received: from zigzag.lvk.cs.msu.su (HELO zigzag.lvk.cs.msu.su) (158.250.17.23) by sourceware.org (qpsmtpd/0.31) with ESMTP; Sun, 25 Mar 2007 11:30:05 +0100 Received: from Debian-exim by zigzag.lvk.cs.msu.su with spam-scanned (Exim 4.50) id 1HVPz3-0007Vp-7C for gdb@sources.redhat.com; Sun, 25 Mar 2007 14:30:02 +0400 Received: from localhost ([127.0.0.1] helo=ip6-localhost) by zigzag.lvk.cs.msu.su with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA:32) (Exim 4.50) id 1HVPys-0007VQ-OI; Sun, 25 Mar 2007 14:29:46 +0400 From: Vladimir Prus To: Nick Roberts Subject: Re: Behaviour of invalid varobjs Date: Sun, 25 Mar 2007 10:30:00 -0000 User-Agent: KMail/1.9.1 Cc: gdb@sources.redhat.com References: <200703221341.00513.ghost@cs.msu.su> <17923.5890.566302.505263@kahikatea.snap.net.nz> In-Reply-To: <17923.5890.566302.505263@kahikatea.snap.net.nz> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200703251429.45714.ghost@cs.msu.su> Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2007-03/txt/msg00304.txt.bz2 On Friday 23 March 2007 02:53, Nick Roberts wrote: > > > Are there any real situations where you would want to create a variable > > > object of a constant? If not, then, apart from ensuring that such objects > > > don't crash GDB, I don't think this is an urgent issue. > > > > That's testcase example. Replace **0 with "**some_pointer" and you have a > > real use-case. > > OK, I didn't realise that. Constants and variables are treated differently: > try "-var-create - * *0" and "-var-create - * *some_pointer" when > some_pointer = 0x0. The testcase uses "**0", not *0, and I don't see any difference between constant and variable below: -var-create V1 * **0 ^done,name="V1",numchild="0",value="0",type="int" (gdb) -var-create V2 * **p ^done,name="V2",numchild="0",value="0",type="int" (gdb) -var-update V1 ^done,changelist=[{name="V1",in_scope="false"}] (gdb) -var-update V2 ^done,changelist=[{name="V2",in_scope="false"}] Nor do I see any difference for *0 and *p: -var-create V1 * *0 ^done,name="V1",numchild="0",value="",type="int" (gdb) -var-create V2 * *p ^done,name="V2",numchild="0",value="",type="int" (gdb) -var-update V1 ^done,changelist=[] (gdb) -var-update V2 ^done,changelist=[] Can you clarify what you meant? > 1. The output of -var-create should either have no "value" > field at all, or value="", as is used in some other context. > > I prefer value="" as it would be consistent with the status quo. > > 2. The output of -var-update should not include anything. > > I agree. > > Also, we probably should include in_scope="false" in output of > -var-create, but I'm not quite sure. > > I don't see why. Because as long as we (IMO, bogusly) use in_scope="false" to indicate "expression cannot be evaluated", we should consistently report that everywhere. - Volodya