Re: [RFA] testsuite/gdb.c++/ref-types.exp: use runto

Daniel Berlin
2001-03-17T07:56:00Z

On Fri, 16 Mar 2001, Fernando Nasser wrote:

> Michael Elizabeth Chastain wrote:
> >
> > Mmmm, a philosophical dispute.
> >
> > Daniel Berlin writes:
> > > They need to be xfail'd for old-abi, but not for new-abi.
> >
> > I believe that when gdb has a bug which is under its control, that the
> > test suite should issue a FAIL, not an XFAIL.
> >
>
> Yes, but what Dan is trying to say (I guess) is that this is _not_
> under GDB's control. I.e., it was not possible for GDB to do the right
> thing because of insufficient information from the compiler. Is that
> right Dan?
>
Yes.
Insufficient information, too many possibilities, and
too much of a performance hit.
There are too many combinations, and no easy way to tell them apart.
You'd end up with like at least 96 cases (4 possible vtable-thunks
flags * 2 cases for each type of vtbl_ptr_type * 3 normal cases * the ABI
changed four times)
in just to determine which virtual function to call.
Then another 96 to determine how to offset the pointer, etc.

This doesn't even count the logic necessary to fill in the information we
don't have from the debug info (the offset of the virtual thunk, etc),
which would take a huge performance hit to try to figure out.
> If that is
the case, it is correct to mark those as XFAILs.
>Something besides GDB -- something in the execution environment or on
>another piece of the toolchain -- causes this test to fail and there is
>not that can be done inside GDB, so the "expected failure".
>
> Maybe you guys can come up with a simple quick test to determine if we
> are dealing with v2 or v3. It would be useful to condition tests.

I added a simple if to the minsym demangling (where it goes through all
the minimal symbols and demangles them) to determine if we were dealing
with v3 or v2, and set the ABI approriately.

I can add a simple maintenance command to print out the C++ ABI shortname
(gnu-v3, gnu-v2, hpaCC), and you could use that, I think.
> > If gdb said "I'm sorry, but pAe->f() is too complex for me", I would
> > accept that as an XFAIL. But when gdb prints wrong answers, that should
> > be a FAIL.
> >
> > I'm interested in other maintainer's opinions on this because I'm
> > planning to submit patches to change such XFAIL's to FAIL's, so that
> > the test suite can actually report what is broken in C++ support.
Pleaes don't do this for v2.
It's not broken. It's something we can't fix.
I've already got them *all* working for v3 ABI.

--Dan