This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Another "ptype B" validity question


On Tue, Dec 03, 2002 at 09:56:58AM -0600, Michael Elizabeth Chastain wrote:
> I'm seeing some new output from the "ptype" command when I use a new
> version of the compiler.
> 
> Here are some gdb.log excerpts.
> 
> The first excerpt is fine:
> 
>   # gdb HEAD, gcc 3.2.1, binutils 2.13.1, stabs+
>   ptype class B
>   type = class B : public A {
>     public:
>       int b;
>       int x;
>   
>       B & operator=(B const&);
>       B(B const&);
>       B();
>   }
>   (gdb) PASS: gdb.c++/classes.exp: ptype class B
> 
> The second excerpt raises an issue:
> 
>   # gdb HEAD, gcc HEAD, binutils 2.13.1, stabs+
>   ptype class B
>   type = class B : public A {
>     public:
>       A;
>       int b;
>       int x;
>   
>       B & operator=(B const&);
>       B(B const&);
>       B();
>   }
>   (gdb) FAIL: gdb.c++/classes.exp: ptype class B
> 
> Note the "A" line.  I suppose this is gdb's way of showing the
> base class as a data member.
> 
> My questions are:
> 
> . What should gdb print for this ptype operation?

Ideally?  Without checking the source, I'd guess:

type = class B : public A {
  public:
    int b;
    int x;
}

We do not have enough information to figure out that the constructors
are artificial in stabs+, though.  Lord, I've tried and tried - I can
produce exactly the same debug output with artificial and explicit
constructors.  I had a couple of heuristics for this but they are never
terribly reliable.

> . If gdb does print the "A;" member, is that acceptable or not?
>   Note that this is a slightly different question!

It is _not_ acceptable.  I thought I'd gotten most of these but
obviously I've missed some.  Please do file a bug.

> . More generally, what is the long term future of stabs+?

Rotting in a dark pit somewhere?

Seriously, we need to either accept limited C++ support with stabs, or
make GCC emit Sun DBX style stabs which have enough information.  And
make GDB understand them since it doesn't right now.  Since GCC 3.2 has
changed the default to DWARF-2 this is a looooong way down my priority
list!

> I really need an answer for #2 so that I can decide whether to change
> the test script or brandish the FAIL in a bug report.
> 
> My view is that the test suite should be liberal about what it accepts
> in the output of "ptype" as long as it is somehow correct and does not
> mislead human users.  In this case, I think that most C++ programmers
> would understand the nature of the "A;" line, so I would like to
> change classes.exp to accept it.

Please don't.

-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]