Missing type_info node with -frepo AND -fno-exceptions
Teemu Torma
tot@Trema.COM
Mon Sep 15 00:44:00 GMT 1997
In snapshot 970910, if using -frepo and -fno-exceptions together,
no type_info node gets created for templates. No problems if
-fno-exceptions
is removed from the command line.
(the version number gcc reports is wrong, it is really 970910)
$ gcc -v -frepo -fno-exceptions -fno-implicit-templates -O2 -c bug.cc
Reading specs from /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06
/specs
gcc version egcs-2.90.06 970907 (gcc2-970802 experimental)
/usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/cpp -lang-c++ -v
-undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=90 -Dsun
-Dsparc -Dunix -D__svr4__ -D__SVR4 -D__GCC_NEW_VARARGS__ -D__sun__
-D__sparc__ -D__unix__ -D__svr4__ -D__SVR4 -D__GCC_NEW_VARARGS__ -D__sun
-D__sparc -D__unix -Asystem(unix) -Asystem(svr4) -Acpu(sparc)
-Amachine(sparc) -D__OPTIMIZE__ bug.cc /var/tmp/cca001kF.ii
GNU CPP version egcs-2.90.06 970907 (gcc2-970802 experimental) (sparc)
#include "..." search starts here:
#include <...> search starts here:
/usr/gnu/lib/g++-include
/usr/local/include
/usr/gnu/sparc-sun-solaris2.5.1/include
/usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/include
/usr/include
End of search list.
/usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/cc1plus
/var/tmp/cca001kF.ii -quiet -dumpbase bug.cc -O2 -version -frepo
-fno-exceptions -fno-implicit-templates -o /var/tmp/cca001kF.s
GNU C++ version egcs-2.90.06 970907 (gcc2-970802 experimental)
(sparc-sun-solaris2.5.1) compiled by GNU C version egcs-2.90.06 970907
(gcc2-970802 experimental).
/usr/ccs/bin/as -V -Qy -s -o bug.o /var/tmp/cca001kF.s
/usr/ccs/bin/as: SC4.2 dev 30 Nov 1995
$ gcc -v bug.o
Reading specs from /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06
/specs
gcc version egcs-2.90.06 970907 (gcc2-970802 experimental)
/usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/ld -V -Y
P,/usr/ccs/lib:/usr/lib -Qy /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egc
s-2.90.06/crt1.o /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/c
rti.o /usr/ccs/lib/values-Xa.o /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/
egcs-2.90.06/crtbegin.o -L/usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-
2.90.06 -L/usr/ccs/bin -L/usr/ccs/lib -L/usr/gnu/lib bug.o -lgcc -lc -lgcc
/usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/crtend.o
/usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/crtn.o
ld: Software Generation Utilities (SGU) SunOS/ELF (LK-2.0 (S/I) -
versioning)
Undefined first referenced
symbol in file
B<int> type_info function bug.o
B<int> type_info node bug.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
-------------------------------------------------------------------------
struct A
{
inline A(){}
virtual ~A(){}
};
template<class T>
struct B : public A
{
inline B(){}
~B() {}
};
struct C : public B<int>
{
inline C(){}
~C(){}
};
C *t ()
{
return new C;
}
main ()
{
t ();
}
------------------------------------------------------------------------
Teemu
More information about the Gcc-bugs
mailing list