Re: GDB syntax error if class members overlap C++ header file names

Paul Smith
2018-02-13T16:52:42Z

On Tue, 2018-02-13 at 10:52 -0500, Simon Marchi wrote:
> On 2018-02-13 10:37, Paul Smith wrote:
> > Has anyone had any thoughts about
> > https://sourceware.org/bugzilla/show_bug.cgi?id=22231
> >
> > This is a really unfortunate bug, because there are so many useful
> > symbol names which are also C++ header files! Just ran into this
> > again with "queue".
>
> Hi Paul,
>
> This looks like an issue that has been fixed recently, but it's not
> in 8.1, only master.
>
> https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=5
> 9498c305e6f1db2a1ed8d44cb58f0d24ec092fe
>
> Can you verify if it works for you?

I ran applied SHA 59498c305e6f1db2a1ed8d44cb58f0d24ec092fe as a patch
to 8.1 (but had to toss the changelog diffs... yet another reason to
stop including them as source code artifacts...) and that does fix the
main problem... awesome!

There's still a weird error if there's no symbol in context; my first
example the the bug still prints "syntax error in expression, near `'"
rather than something more reasonable such as "No symbol "memory" in
current context". That's probably still something that should be
fixed, but it's basically an error messaging issue.

However, if there's a "memory" symbol in the current context (either
implicitly as in we're in a method and the class has a "memory" member,
or using something like foo.memory) it will find and print the right
thing.

So that's excellent! Thanks.