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

Michael Snyder
2008-01-17T21:51:30Z

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?

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.