Dynamic Linking with libstdc++ dies on Solaris 2.8

Pete pfein@bigfoot.com
Tue Mar 6 10:06:00 GMT 2001


Hi-

I'm running gcc 2.95.2 with libstdc++-v3 2.90.8 & binutils 2.10.1 on Solaris 2.8 
and running in to some trouble with dynamic linking.  My executables dump core 
in basic_ios.h.  They work fine if compiled with '-static'.  I've also had 
issues with collect2 dying when using -frepo with sig 11 in large programs, 
though I'm still working a simple test case to demonstrate (hence the template 
code below).

Looking at the core shows it died at:
(absurdly long path)/libstdc++/bits/basic_ios.h:98, which is
inline iostate 
      rdstate() const 
      { return _M_streambuf_state; } <<line 98

which makes me think its the static object constructor order problem I've seen 
discussed, but IIRC GNU ld was supposed to handled that...

Please reply to me directly as well as to the list.  Thanks in advance.

foo.cpp:
#include <iostream>
#include "bar.hpp"

int main()
{
  do_bar(42);
  std::cout<<"silly linker\n";
  return 0;
}

bar.hpp:
#include <iostream>

template <class T>
void do_bar(const T some_t);

template <class T>
void do_bar(const T some_t)
{
  std::cout<<"work: "<<some_t<<" \n";
}

command line:
/home/pfein/bin/g++ -I. -g -Wall --verbose -fhonor-std  -o foo foo.cpp

output of compilation:
Reading specs from /home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/specs
gcc version 2.95.2 19991024 (release)
 /home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/cpp -lang-c++ -v -I. 
-iprefix /home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/ -isystem 
/home/pfein/binutils/include -isystem /home/pfein/gcc/lib/
gcc-lib/sparc-sun-solaris2.8/2.95.2/include -D__GNUC__=2 -D__GNUG__=2 
-D__GNUC_MINOR__=95 -D__cplusplus -Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 
-D__sparc__ -D__sun__ -D__unix__ -D__svr4__ -D__SVR4 -D__sparc -D_
_sun -D__unix -Asystem(unix) -Asystem(svr4) -D__EXCEPTIONS -g -Wall 
-D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) foo.cpp /usr/tmp/ccqgR7Og.ii
GNU CPP version 2.95.2 19991024 (release) (sparc)
#include "..." search starts here:
#include <...> search starts here:
 .
 /home/pfein/binutils/include
 /home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/include
 
/home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/../../../../include/g++-
v3
 
/home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/../../../../sparc-sun-so
laris2.8/include
 /home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/include
 /home/pfein/include
 
/home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/../../../../include/g++-
v3
 /usr/local/include
 
/home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/../../../../sparc-sun-so
laris2.8/include
 /home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/include
 /usr/include
End of search list.
The following default directories have been omitted from the search path:
End of omitted list.
 /home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/cc1plus 
/usr/tmp/ccqgR7Og.ii -quiet -dumpbase foo.cc -g -Wall -version -fhonor-std -o 
/usr/tmp/ccbzz8Mm.s
GNU C++ version 2.95.2 19991024 (release) (sparc-sun-solaris2.8) compiled by GNU 
C version 2.95.2 19991024 (release).
 /home/pfein/binutils/bin/as -V -Qy -s -o /usr/tmp/cct3GFAw.o 
/usr/tmp/ccbzz8Mm.s
GNU assembler version 2.10.1 (sparc-sun-solaris2.8) using BFD version 2.10.1
 /home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/collect2 -V -Y 
P,/usr/ccs/lib:/usr/lib -Qy -o foo 
/home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/crt1.o 
/home/pfein/gcc/lib/gcc-lib/sparc-sun-sol
aris2.8/2.95.2/crti.o /usr/ccs/lib/values-Xa.o 
/home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/crtbegin.o 
-L/home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2 
-L/home/pfein/gcc/lib/gcc-lib -L/home/p
fein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2 -L/usr/ccs/bin -L/usr/ccs/lib 
-L/home/pfein/gcc/lib /usr/tmp/cct3GFAw.o -lstdc++ -lm -lgcc -lc -lgcc 
/home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/crten
d.o /home/pfein/gcc/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/crtn.o
GNU ld version 2.10.1 (with BFD 2.10.1)
  Supported emulations:
   elf32_sparc
   elf64_sparc


-- 
Peter Fein
pfein@bigfoot.com
773-575-0694
All power corrupts, but we need electricity.

-----------------------------------------------------------
This mail sent through the IMP demo site: demo.uk.horde.org
       Find out more at http://www.horde.org/imp/



More information about the Gcc-help mailing list