C++ nested class bug/questions

"Willgerodt, Felix via Gdb" <[email protected]>
Newsgroups gmane.comp.gdb.devel
Message-ID <[email protected]>
Hello everyone,

I was debugging a program similar to the one attached and noticed a couple
of unexpected things happening. I compiled it with ”-g -O0” and g++ 11.1.0
(clang showed similar behaviour) and saw this:

(gdb) bt
#0  DF::vvv (this=0x7fffffffd120) at foo.cc:11
#1  0x0000555555555180 in foo () at foo.cc:16
#2  0x00005555555551a7 in main () at foo.cc:20
(gdb) ptype abcd
type = class DF::FFFF {
  private:
    int ffff;
}
(gdb) ptype FFFF
No symbol "FFFF" in current context.
(gdb) ptype DF::
FFFF   vvv()  
(gdb) ptype DF::FFFF
There is no field named FFFF
(gdb) ptype 'DF::FFFF'
type = class DF::FFFF {
  private:
    int ffff;
}
(gdb)

(The fourth command shows tab completion.)

The problems I see are:
1) I think it shouldn’t be DF::FFFF.
2) 'ptype FFFF’ should just work as it is in the current scope.
3) There shouldn’t be a need to quote DF:FFFF, right? Although that might just be a side-effect here.
4) The fact that a suggestion from tab completion doesn’t work is annoying. This is probably also be a side-effect.

Before debugging this further, I wanted to see if there are any comments/suggestions.
Am I even right about point 1? I couldn’t really find anything definitive
in my favourite cpp reference on this type of nesting. g++ and clang output FFFF as
foo()::DF::vvv()::FFFF as far as I can see.

I don’t see any obvious problems in the dwarf that is produced.

Thanks,
Felix

Intel Deutschland GmbH
Registered Address: Am Campeon 10, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de>
Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva  
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
foo.cc (application/octet-stream, 227 B) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.