norbert@rwthinf.UUCP (Norbert Kiesel) (02/20/90)
Hello,
I just found an error in gdb-3.5. If either the constructor or the
destuctor of a class misses, gdb can't find the other one, i.e.
``b <class>::<class>'' doesn't work. The problem is even worse: under
some circumstances, one "complete" (i.e. with explicit constructor or
destructor) class is sufficent for finding the constructor of an incomplete
class (i.e. only constructor). gdb prompts then with the normal 4 choices
(cancel, all, cons, dest) but the 3rd slot is only a ``2HERE?''.
It follows a small typescript documenting the first described behaviour.
Script started on Tue Feb 20 16:15:30 1990
[rwthi3,G++] cat xx.cc
class xx
{
public:
void x() {};
#ifdef GOOD
xx() {};
#endif
~xx() {};
};
main () {}
[rwthi3,G++] g++ -v -g -fno-inline xx.cc -o bad
g++ version 1.36.4 (based on GCC 1.36.93)
/global/lib/gcc-cpp -+ -v -undef -D__GNUC__ -D__GNUG__ -D__cplusplus -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -Dmc68020 xx.cc /usr/tmp/cca02082.cpp
GNU CPP version 1.37
/global/lib/gcc-cc1plus /usr/tmp/cca02082.cpp -quiet -dumpbase xx.cc -fno-inline -g -version -o /usr/tmp/cca02082.s
GNU C++ version 1.36.4 (based on GCC 1.36.93) (68k, MIT syntax) compiled by GNU C version 1.36.
default target switches: -m68020 -mc68020 -mbitfield
/global/lib/gcc-as -mc68020 -o xx.o /usr/tmp/cca02082.s
/global/lib/gcc-ld -o bad -e start -dc -dp -Bstatic /lib/crt0.o /lib/Fcrt1.o xx.o -lg++ /global/lib/gcc-gnulib -lg -lc
[rwthi3,G++] g++ -v -g -fno-inline xx.cc -o good -DGOOD
g++ version 1.36.4 (based on GCC 1.36.93)
/global/lib/gcc-cpp -+ -v -DGOOD -undef -D__GNUC__ -D__GNUG__ -D__cplusplus -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -Dmc68020 xx.cc /usr/tmp/cca02087.cpp
GNU CPP version 1.37
/global/lib/gcc-cc1plus /usr/tmp/cca02087.cpp -quiet -dumpbase xx.cc -fno-inline -g -version -o /usr/tmp/cca02087.s
GNU C++ version 1.36.4 (based on GCC 1.36.93) (68k, MIT syntax) compiled by GNU C version 1.36.
default target switches: -m68020 -mc68020 -mbitfield
/global/lib/gcc-as -mc68020 -o xx.o /usr/tmp/cca02087.s
/global/lib/gcc-ld -o good -e start -dc -dp -Bstatic /lib/crt0.o /lib/Fcrt1.o xx.o -lg++ /global/lib/gcc-gnulib -lg -lc
[rwthi3,G++] gdb good
GDB 3.5, Copyright (C) 1989 Free Software Foundation, Inc.
There is ABSOLUTELY NO WARRANTY for GDB; type "info warranty" for details.
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "info copying" to see the conditions.
Reading symbol data from /home/private/staff/norbert/G++/good...done.
Type "help" for a list of commands.
(gdb) b xx::x
Reading in symbols for xx.cc...done.
Breakpoint 1 at 0x22e2: file xx.cc, line 4.
(gdb) b xx::xx
[0] cancel
[1] all
[2] file:xx.cc; line number:8
[3] file:xx.cc; line number:6
> 0
cancelled
(gdb) q
[rwthi3,G++] gdb bad
GDB 3.5, Copyright (C) 1989 Free Software Foundation, Inc.
There is ABSOLUTELY NO WARRANTY for GDB; type "info warranty" for details.
GDB is free software and you are welcome to distribute copies of it
under certain conditions; type "info copying" to see the conditions.
Reading symbol data from /home/private/staff/norbert/G++/bad...done.
Type "help" for a list of commands.
(gdb) b xx::x
Reading in symbols for xx.cc...done.
Breakpoint 1 at 0x22d4: file xx.cc, line 4.
(gdb) b xx::xx
that class does not have any method named xx
(gdb) q
[rwthi3,G++] exit
script done on Tue Feb 20 16:17:27 1990
so long
Norbert
*******************************************************************************
* Norbert Kiesel NN NN KK KK *
* Institut fuer Informatik III NNN NN KK KK *
* RWTH Aachen NN N NN KK KK *
* NN N NN KKKK *
* Tel.: (0241) 80-7266 NN N NN KKKK *
* NN N NN KK KK *
* EUNET: norbert@rwthi3.uucp NN N NN KK KK *
* ...!mcvax!unido!rwthi3!norbert NN NNN KK KK *
*******************************************************************************