From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23532 invoked by alias); 14 Mar 2012 15:24:21 -0000 Received: (qmail 23522 invoked by uid 22791); 14 Mar 2012 15:24:20 -0000 X-SWARE-Spam-Status: No, hits=-6.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_HI,SPF_HELO_PASS,T_RP_MATCHES_RCVD 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; Wed, 14 Mar 2012 15:24:04 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q2EFO1f2031470 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 14 Mar 2012 11:24:02 -0400 Received: from barimba (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q2EFO0oB016842 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Wed, 14 Mar 2012 11:24:01 -0400 From: Tom Tromey To: Stan Shebs Cc: gdb-patches@sourceware.org Subject: Re: [PATCH] dynamic printf References: <4F4DCDD5.2040807@earthlink.net> <87ipien6me.fsf@fleche.redhat.com> <4F5FDD6B.3030507@earthlink.net> Date: Wed, 14 Mar 2012 15:24:00 -0000 In-Reply-To: <4F5FDD6B.3030507@earthlink.net> (Stan Shebs's message of "Tue, 13 Mar 2012 16:51:07 -0700") Message-ID: <87haxrdx4f.fsf@fleche.redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.94 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain 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: 2012-03/txt/msg00480.txt.bz2 >>>>> "Stan" == Stan Shebs writes: Tom> I think you have to have a comma after the location. That is the only Tom> reliable linespec terminator. Stan> Hmmm. The format is a string though; would linespec parsing attempt Stan> to proceed into that? How is "break if foo" working these Stan> days? It is handled in multiple spots -- linespec.c:keep_name_info, but also every language expression parser. Probably linespec could be changed to make this syntax work, but I don't see how the parsers could. E.g., the C parser will lex the printf format string as a string token, then proceed to fail to parse, throwing an exception. That is, the case that breaks this is: dprintf *main "format". This works, though, due to the fact that linespec uses parse_to_comma_and_eval: dprintf *main, "format" Stan> + struct agent_expr *cmd_bytecode; Tom> Needs a comment. Tom> Perhaps subclassing bp_location is also doable? Stan> I'm not sure what you mean by this? I thought it was possible to make a subclass of bp_location, arranging for your breakpoint ops to override the appropriate allocation method. Then only dprintf breakpoint locations would have the extra field. I'm not totally sure, I haven't tried it. Tom