On Tuesday 29 November 2005 10:53, Graham Murray wrote:
> Paul de Vrieze <[EMAIL PROTECTED]> writes:
> > It is also needed for third party apps that were linked against
> > libstdc++.so.5. As long as those applications do not depend on other
> > libraries that are linked against a newer c++ lib things are totally
> > ok.
>
> But unfortunately is does happen. For example on my system (~x86 built
> with gcc 3.4.4) opera is linked against libstdc++.so.5 and
> libqt-mt.so.3 which in turn is linked against libstdc++.so.6

Opera is indeed an example of an application where it doesn't work. 
Mozilla, the jdk's and many games are however "good" examples. The 
general rule is that using libraries written in c++ doesn't work for 
transitioning. This is partly caused by the fact that the linker makes 
all symbols global, and as such doesn't look at (or record) the soname of 
the library where the symbol is supposed to come from. Please be aware 
though that doing so would still not fix c++ issues as extending objects 
with one symbol table (and library of origin) with objects (children) 
with another symbol table (and library of origin) is bound to break. If 
for example a library function returns a c++ string object. Which methods 
should then be used on this object?

Paul

ps. The sandbox we use in portage actually also relies on this behaviour 
of the linker, as we replace glibc symbols by our own versions of them 
that check permissions.

-- 
Paul de Vrieze
Gentoo Developer
Mail: [EMAIL PROTECTED]
Homepage: http://www.devrieze.net

Attachment: pgpssmaZzoOLH.pgp
Description: PGP signature

Reply via email to