whm@sunquest.UUCP (Bill Mitchell) (05/10/89)
I was experimenting with container classes in libg++-1.34.0 and I came across
a program that when compiled with "g++ -g -fno-strict-prototype" (version
1.34.2) makes gdb.3.1.2 core dump upon the command "break main".
This script reproduces the problem:
#!/bin/sh
cat >bug.cc <<X
#include <std.h>
#include "String.h"
#include "StringList.h"
StringListNode NilStringListNode;
main()
{
}
X
genclass String val List
g++ -v -g bug.cc
gdb.3.1.2 a.out <<X
break main
q
X
g++ -v -g -fno-strict-prototype bug.cc
gdb.3.1.2 a.out <<X
break main
q
X
Here's what running the script with "sh -x" produces:
+ cat
#include <std.h>
#include "String.h"
#include "StringList.h"
StringListNode NilStringListNode;
main()
{
}
+ genclass String val List
+ g++ -v -g bug.cc
g++ version 1.34.2
/usr/local/lib/gcc-cpp -+ -v -undef -D__GNU__ -D__GNUG__ -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -D__HAVE_68881__ -Dmc68020 bug.cc /tmp/cca14581.cpp
GNU CPP version 1.34
/usr/local/lib/gcc-c++ /tmp/cca14581.cpp -quiet -dumpbase bug.cc -noreg -version -G -o /tmp/cca14581.s
GNU C++ version 1.34.2 (68k, MIT syntax) compiled by GNU C version 1.34.
as -mc68020 /tmp/cca14581.s -o bug.o
/usr/local/lib/gcc-ld++ -C -dc -dp -Bstatic /usr/local/lib/crt0+.o /usr/lib/Mcrt1.o bug.o -lg++ /usr/local/lib/gcc-gnulib -lg -lc
+ gdb.3.1.2 a.out
break main
q
GDB 3.1.2, Copyright (C) 1988 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 /a/whm/nw/flow/bug/a.out...done.
Type "help" for a list of commands.
(gdb) Breakpoint 1 at 0x2112: file bug.cc, line 7.
(gdb) + g++ -v -g -fno-strict-prototype bug.cc
g++ version 1.34.2
/usr/local/lib/gcc-cpp -+ -v -undef -D__GNU__ -D__GNUG__ -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -D__HAVE_68881__ -Dmc68020 bug.cc /tmp/cca14593.cpp
GNU CPP version 1.34
/usr/local/lib/gcc-c++ /tmp/cca14593.cpp -quiet -dumpbase bug.cc -fno-strict-prototype -noreg -version -G -o /tmp/cca14593.s
GNU C++ version 1.34.2 (68k, MIT syntax) compiled by GNU C version 1.34.
/usr/local/lib/g++-include/File.h:162: warning: inline declaration ignored for function with `...'
[ Lots more instances of the same warning deleted -- whm ]
StringList.h:163: warning: inline declaration ignored for function with `...'
[ Lots more instances of the same warning deleted -- whm ]
as -mc68020 /tmp/cca14593.s -o bug.o
/usr/local/lib/gcc-ld++ -C -dc -dp -Bstatic /usr/local/lib/crt0+.o /usr/lib/Mcrt1.o bug.o -lg++ /usr/local/lib/gcc-gnulib -lg -lc
+ gdb.3.1.2 a.out
break main
q
GDB 3.1.2, Copyright (C) 1988 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 /a/whm/nw/flow/bug/a.out...done.
Type "help" for a list of commands.
(gdb) ../protobug.sh: 14601 Memory fault - core dumpedtiemann@YAHI.STANFORD.EDU (Michael Tiemann) (05/15/89)
This is a problem with GDB 3.1.2: if you set a breakpoint at a member function which has `...' at the end (such as when compiled with -fno-strict-prototype), GDB 3.1.2 will lose. I will fix it, but I don't have time to do so immediately. Michael