aix c++ "regressions"
Jeffrey A Law
law@cygnus.com
Fri Jun 18 01:46:00 GMT 1999
Boy this was fun.
We're getting false FAILs on powerpc-ibm-aix4.2. For reasons unknown the
output passed to the old-deja.exp framework is being truncated. This causes
dejagnu a variety of problems. For example in g++/brendan/crash11.C we
get:
output is /home/law/gcc-2.95/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C:1
2
: virtual functions cannot be friends^M
/home/law/gcc-2.95/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C:18: virtual
functions cannot be friends^M
/home/law/gcc-2.95/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C: In method
`
void B::f1()':^M
/home/law/gcc-2.95/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C:6: `int
A::i
' is private^M
/home/law/gcc-2.95/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C:17: within
t
his context^M
/home/law/gcc-2.95/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C:7: `int
A::j
' is private^M
/home/law/gcc-2.95/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C:17: within
t
his context^M
/home/law/gcc-2.95/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C: In method
`
void B::f2()':^M
/home/law/gcc-2.95/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C:6: `int
A::i
' is private^M
/home/law/gcc-2.95/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C:18: within
t
his context^M
/home/law/gcc-2.95/gcc/testsuite/g++.old-deja/g++.brendan/crash11.C
Note how the last line just stops. It should look something like this:
crash11.C:12: virtual functions cannot be friends
crash11.C:18: virtual functions cannot be friends
crash11.C: In method `void B::f1()':
crash11.C:6: `int A::i' is private
crash11.C:17: within this context
crash11.C:7: `int A::j' is private
crash11.C:17: within this context
crash11.C: In method `void B::f2()':
crash11.C:6: `int A::i' is private
crash11.C:18: within this context
crash11.C:7: `int A::j' is private
crash11.C:18: within this context
The old-deja framework seems to work by stripping away lines where it finds
an expected diagnostic message. If there is anything left in the output
text, then we get an "excess errors" failure.
In this case the framework is looking for the "private" keyword in that next
to last line of output. Since it is not found the line is not eliminated
and it shows up as an excess error. Ugh.
The truncation isn't happening on any magic boundaries. Though it only seems
to effect the last few lines of output. It makes me wonder if the output
stream isn't being flushed either by the compiler, or expect.
Anyway, this effects a variety of C++ tests, including many of those which
were showing up as regressions on aix4.2.
g++.brendan/crash11.C
g++.bugs/900428_02.C
g++.bugs/900519_13.C
g++.jason/access18.C
g++.jason/member.C
g++.jason/overload21.C
g++.law/init1.C
g++.other/cast2.C
g++.other/friend4.C
Possibly others too, but those are the cases where it was obvious.
Fun fun fun.
More information about the Gcc
mailing list