This is the mail archive of the
mailing list for the GDB project.
Re: [RFC/RFA?] Should break FILE:LINENO skip prologue?
On Thu, 2008-01-17 at 10:45 +0100, Mark Kettenis wrote:
> > From: Michael Snyder <firstname.lastname@example.org>
> > Date: Wed, 16 Jan 2008 20:18:03 -0800
> > On Thu, 2008-01-17 at 06:13 +0200, Eli Zaretskii wrote:
> > > > Cc: Mark Kettenis <email@example.com>, firstname.lastname@example.org,
> > > > email@example.com, firstname.lastname@example.org,
> > > > email@example.com
> > > > From: Jim Blandy <firstname.lastname@example.org>
> > > > 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.