This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: gdb.c++ failures
- From: Michael Elizabeth Chastain <mec at shout dot net>
- To: gdb at sources dot redhat dot com, jason at redhat dot com
- Cc: fnf at redhat dot com
- Date: Thu, 10 Jan 2002 11:12:01 -0600
- Subject: Re: gdb.c++ failures
Jason Merrill writes:
> classes.exp: dwarf2 doesn't provide mangled names for abstract
> constructors, and there is a difference of opinion between the
> demangler and c-typeprint.c as to whether the type should be written "A
> const &" or "const A &". The demangler always puts the cv-qualifier
> after the type it affects, whereas gdb puts it in front whenever that
> would have the correct meaning. Either one could be changed to match
> the other, or the testcase could be modified to accept either form.
> Thoughts?
I'm in favor of changing the test suite to accept either "A const &"
or "const A &".
> method.exp: The 'print this' tests are failing because gdb is printing
> the types as, say, (A * const), and the test just wants (A *). The
> former is correct, since 'this' is readonly. Any objection to changing
> the test (and others affected) to allow the const?
Fred Fish submitted a patch for this. There is a second issue in the
patch about the type of "this" in const methods. The type should be
"const A *", and I would be willing to accept "const A * const".
But gdb with stabs is printing just plain "A *".
On the question of accepting "A * const" as the type of "this",
I'm in favor of allowing that.
> templates.exp:
> Also, the cv-qual placement issue breaks 'print Foo<volatile char *>::foo';
> it needs to be 'print "Foo<char volatile*>::foo"' to match the demangler
> output. I take it the aCC demangler makes different choices? I don't
> see any way to get around the dependence of template naming on the
> canonical format chosen by the demangler unless gdb learns to mangle
> names itself; perhaps the syntax of the test should vary with the compiler.
The test script could probe the demangler and then provide whatever
input gdb is using that day. See gdb.c++/cplusfuncs.exp probe_demangler
for an example.
Michael C