Re: gdb.c++ testsuite 1.3: member_data_static.exp (resend)

Daniel Jacobowitz
2002-05-28T16:23:14Z

On Tue, May 28, 2002 at 09:03:31AM -0700, Benjamin Kosnik wrote:
>
> > This test script has 6 FAILs in each configuration tested.
> >
> > FAIL: gdb.c++/m-static.exp: derived template object, static enum
> > FAIL: gdb.c++/m-static.exp: template object, static const bool
> > FAIL: gdb.c++/m-static.exp: template object, static const int
> > FAIL: gdb.c++/m-static.exp: template object, static long
> > FAIL: gdb.c++/m-static.exp: template object, static enum
> > FAIL: gdb.c++/m-static.exp: template object, static enum
>
> That is what I get too.
>
> > Something in the toolchain is optimizing away unused static objects.
>
> Right. I need this to work as the testsuite is written please.
>
> > static value_derived = <optimized out>}
> >
> > (gdb) print test3
> > $2 = {static data = <optimized out>}
>
> ... which makes debugging C++ a pain in the ass, and the reason I sat
> down and wrote this file. I consider gdb to be broken. Hopefully this
> test case will facilitate a fix to the problem noted above.
>
> > This happens with both -gdwarf-2 and -gstabs+ on all gcc's and
> > binutil's in my test bed.
>
> Me too.
>
> > I fixed this by adding references to the data fields, like this:
> >
> > refer(&test2.value_derived);
> > refer(&test3.data);
> > refer(&test3.data.value_derived);
>
> Errr. No, unless you expect everybody using gdb and C++ do to this as
> well. In which case, you should put this in the FAQ.
>
> Is there something I am missing?

Is the data truly optimized out of the file? If it is, then
considering GDB to be broken doesn't help anything; the information
isn't there to work with. On the other hand, if it isn't and GDB is
not finding it, then that is a different problem and something worth
testing.

--
Daniel Jacobowitz Carnegie Mellon University
MontaVista Software Debian GNU/Linux Developer