Mixing libstdc++.so.3/5
Stephan Bergmann
stephan.bergmann@sun.com
Thu Mar 27 12:56:00 GMT 2003
Hi all.
I'm wondering whether it is possible to simultaneously have
libstdc++.so.3.0.1 (GCC 3.0.1) and libstdc++.so.5.0.2 (GCC 3.2.2) in one
process, on Linux. Sorry if this has already been discussed or is
simply ridiculous...
The scenario (the OpenOffice.org suite) is as follows: There is a
process composed of C++ shared objects built with GCC 3.2.2 (depending
on libstdc++.so.5.0.2). This process can dynamically load in additional
components. Some of the components would be built with GCC 3.0.1, so
they would also bring libstdc++.so.3.0.1 into the process. Those
components are loaded RTLD_GLOBAL, so any symbols needed by those
components that are available in both versions of libstdc++ would be
taken from libstdc++.so.5.0.2 (which comes earlier in the search tree).
I noticed that none of the symbols exported by either version of
libstdc++ are versioned. The functionality the process and the
additional components actually use from libstdc++ is mostly the __cxa
and namespace __cxxabiv1 symbols; the namespace std stuff should be
mostly ignored, as all C++ code is built against the STLport (using
libstlport_gcc.so).
A small test suggests that mixing libstdc++.so.3.0.1 and
libstdc++.so.5.0.2 in one process works (even passing exceptions), but I
don't feel too well with such experimentation only.
Can anybody tell me whether my test working properly is either by sheer
luck or by design?
Thanks,
Stephan
More information about the Libstdc++
mailing list