This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC/RFA?] Should break FILE:LINENO skip prologue?


Michael Snyder <msnyder at specifix.com> writes:
> On Thu, 2008-01-17 at 10:45 +0100, Mark Kettenis wrote:
>> > From: Michael Snyder <msnyder@specifix.com>
>> > Date: Wed, 16 Jan 2008 20:18:03 -0800
>> > 
>> > On Thu, 2008-01-17 at 06:13 +0200, Eli Zaretskii wrote:
>> > > > Cc: Mark Kettenis <mark.kettenis@xs4all.nl>,  uweigand@de.ibm.com,
>> > > > 	  brobecker@adacore.com,  msnyder@specifix.com,
>> > > > 	  gdb-patches@sourceware.org
>> > > > From: Jim Blandy <jimb@codesourcery.com>
>> > > > Date: Wed, 16 Jan 2008 13:36:11 -0800
>> > > > 
>> > > > GDB allows 'FILENAME'::FUNCTION in C expressions:
>> > > 
>> > > Thanks.
>> > > 
>> > > But if "break *'FILENAME'::FUNCTION" works, why is it wrong to expect
>> > > that "break *FILENAME:FUNCTION" should also work.  None of them is a
>> > > valid C expression, it's just something GDB does to help the user,
>> > > right?
>> > 
>> > Right.  It is a separate parser, the LINEINFO parser, as 
>> > opposed to the expression parser.  It defines a superset
>> > of the expression syntax.  It is used mainly by the 'break'
>> > and 'list' commands.
>> 
>> That isn't quite true.  The LINESPEC (I assume that's what you meant
>> with LINEINFO) parser only parses the '*' and then hands things off to
>> the standard expression parser.
>> 
>> This of course is a good thing, because it means expressions are
>> handled uniformly all over GDB.
>
> We're on the same page, possibly not the same paragraph.
>
> I'm not looking at the code, just going from memory -- 
> but I think the LINESPEC parser used to do a bit more
> than just parse the "*".  For instance, it would have to
> parse that "::" up there, n'est ce pas? 

Actually, :: is actually a GDB extension to the C expression syntax.
If you look at the example interaction in the message at the link, you
can see this in the two 'print' commands, where I use the :: operator.

http://sourceware.org/ml/gdb-patches/2008-01/msg00417.html

> Anyway, yes, the LINESPEC parser does call the expression
> parser, but it also does some syntax itself, thus generating
> a superset of the language-specified expression syntax.
> We're all agreed on that much.

Once it has recognized the '*', linespec.c passes things off directly
to the language expression parser, with no further munging; see the
code fragments I posted here:

    http://sourceware.org/ml/gdb-patches/2008-01/msg00354.html

So, the syntax of things that may appear after the '*' is exactly an
expression, no less or more.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]