From: Paul Smith <psmith@gnu.org>
To: gdb@sourceware.org
Subject: GDB syntax error if class members overlap C++ header file names
Date: Tue, 13 Feb 2018 15:37:00 -0000 [thread overview]
Message-ID: <1518536232.1130.9.camel@gnu.org> (raw)
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".
Quoted from the bug:
> I've discovered that if you compile a C++ program with -ggdb3 (not
> -g) then any C++ header file (sans .h extension) that is included
> will cause a syntax error whenever you try to print that name. Also,
> if you try to print a class member with that name it will also fail.
>
> I've tried this with GDB 7.7, 7.11, and 8.0 and all behave the same
> way. I've used both GCC 6.2 and 6.3.
And I've tried 8.1 as well just to be sure; same behavior:
> (gdb) p memory
> A syntax error in expression, near `'.
>
> This will be the same for any other C++ (without .h) header that is
> included. If you change to #include <memory.h> then you won't get
> this error (you'll get 'No symbole "memory" in current context.' as
> expected).
>
> If you create a local variable or an auto variable named "memory",
> GDB will print it properly.
>
> However, if you have a class member named "memory", GDB again won't
> parse it;
> (gdb) p foo.memory
> A syntax error in expression, near `'.
>
>
>
> If you enable debugging you'll see:
>
> (gdb) set debug parser on
> (gdb) p memory
> Starting parse
> Entering state 0
> Reading a token: Next token is token FILENAME (bval<0x1a66ac0>)
> Shifting token FILENAME (bval<0x1a66ac0>)
> Entering state 47
> Reducing stack by rule 107 (line 877):
> $1 = token FILENAME (bval<0x1a66ac0>)
> -> $$ = nterm block ()
> Stack now 0
> Entering state 57
> Reading a token: Now at end of input.
> A syntax error in expression, near `'.
next reply other threads:[~2018-02-13 15:37 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-13 15:37 Paul Smith [this message]
2018-02-13 15:52 ` Simon Marchi
2018-02-13 16:52 ` Paul Smith
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1518536232.1130.9.camel@gnu.org \
--to=psmith@gnu.org \
--cc=gdb@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox