libstdc++ clashes with libC system library on Irix 6.5

Wolfram Gloger Wolfram.Gloger@dent.med.uni-muenchen.de
Tue Feb 1 05:46:00 GMT 2000


Hello,

I'm not arguing this is a bug in gcc, but I've hit the following
problem on Irix-6.5 (it does _not_ happen on Irix-6.2):

max:/home/wmglo/src/test% gcc -v
Reading specs from /pkg/gcc-2.95.2/lib/gcc-lib/mips-sgi-irix6.5/2.95.2/specs
gcc version 2.95.2 19991024 (release)
max:/home/wmglo/src/test% gcc hello.cc -lstdc++
max:/home/wmglo/src/test% ./a.out 
Hello, world.
max:/home/wmglo/src/test% gcc hello.cc -lstdc++ -lC  
ld32: WARNING 85: definition of __rethrow in /pkg/gcc-2.95.2/lib/gcc-lib/mips-sgi-irix6.5/2.95.2/libstdc++.so preempts that definition in /usr/lib32/libC.so.
ld32: WARNING 85: definition of __throw in /pkg/gcc-2.95.2/lib/gcc-lib/mips-sgi-irix6.5/2.95.2/libstdc++.so preempts that definition in /usr/lib32/libC.so.
ld32: WARNING 85: definition of __dynamic_cast in /pkg/gcc-2.95.2/lib/gcc-lib/mips-sgi-irix6.5/2.95.2/libstdc++.so preempts that definition in /usr/lib32/libC.so.
ld32: WARNING 85: definition of cin in /pkg/gcc-2.95.2/lib/gcc-lib/mips-sgi-irix6.5/2.95.2/libstdc++.so preempts that definition in /usr/lib32/libC.so.
ld32: WARNING 85: definition of cout in /pkg/gcc-2.95.2/lib/gcc-lib/mips-sgi-irix6.5/2.95.2/libstdc++.so preempts that definition in /usr/lib32/libC.so.
ld32: WARNING 85: definition of cerr in /pkg/gcc-2.95.2/lib/gcc-lib/mips-sgi-irix6.5/2.95.2/libstdc++.so preempts that definition in /usr/lib32/libC.so.
ld32: WARNING 85: definition of clog in /pkg/gcc-2.95.2/lib/gcc-lib/mips-sgi-irix6.5/2.95.2/libstdc++.so preempts that definition in /usr/lib32/libC.so.
ld32: WARNING 84: /usr/lib32/libC.so is not used for resolving any symbol.
[so far so good, no function from libC will ever be used directly..]
max:/home/wmglo/src/test% ./a.out 
Segmentation fault (core dumped)

This has been reported before:

 http://gcc.gnu.org/ml/gcc/1999-04/msg00246.html

It _is_ sometimes necessary to pull in SGI's libC C++ library into
gcc-compiled applications, for example those using OpenGL, because of
the unfortunate fact that libGLU pulls libC in unconditionally.
(Recompiling libGLU with gcc is not an option.. :-)

Now I suppose the problem must be that libC in its global constructors
does something bad to objects in libstdc++.  Could those objects be
`tucked away' by rebuilding gcc with flag_honor_std turned on by
default?  (Squangling wouldn't help here, I think..)

IOW, could this possibly be a workaround for the clash?

Thanks,
Wolfram.


More information about the Gcc mailing list