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