main mangled in presence of friend declaration.
Dirk Zoller
duz@rtsffm.com
Fri Oct 30 08:17:00 GMT 1998
The program:
#include <stdio.h>
class A
{
friend int main (int, char *[]);
};
int
main (int, char *[])
{
printf ("Hello, world!\n");
}
The compiler:
rtsdec:/home/rtsadm1/duz$ gcc --version
egcs-2.92.16
The problem:
rtsdec:/home/rtsadm1/duz$ gcc t.cc -o t
/bin/ld:
Unresolved:
main
collect2: ld returned 1 exit status
rtsdec:/home/rtsadm1/duz$ gcc -c t.cc
rtsdec:/home/rtsadm1/duz$ nm t.o
...
0000000000000000 T main__FiPPc
...
main becomes mangled because of the friend declaration.
Earlier egcs did not do that:
rtsdec2:/home/rtsadm1/duz$ gcc --version
egcs-2.90.29 980515 (egcs-1.0.3 release)
rtsdec2:/home/rtsadm1/duz$ gcc t.cc -o t
rtsdec2:/home/rtsadm1/duz$ ./t
Hello, world!
rtsdec2:/home/rtsadm1/duz$
Neither do it several commercial compilers including Sun, IBM, Microsoft.
More information about the Gcc-bugs
mailing list