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 * *******************************************************************************