[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Apps linked with old libstdc++ dlopening modules linked with the new one



On Wed, Sep 14, 2005 at 04:47:46AM -0700, Steve Langasek wrote:
> <asuffield> so, the problem is caused by template instantiation shoving
>             this symbol into the library that uses it
> <asuffield> the two possible solutions are (a) stop doing that, or (b)
>             version the symbol
> <vorlon> so that's a g++ bug?
> <asuffield> maybe
> <asuffield> there are several other unversioned libstdc++ symbols
>             in this library
> <asuffield> so it's not just a corner case, this is a recurring
>             problem
> <vorlon> fun
> <asuffield> we will only notice it during a libstdc++ transition though
> <vorlon> yep
> <asuffield> I think we start by assuming it's a libstdc++ bug and let
>             the g++ folk chew on it
> 
> So: g++ is embedding an unversioned weak symbol in the library in some
> cases, which causes the linker to resolve it to the version from the lib
> used by the app, not the one that the library is linked against.
> Segfault.

Yes.  Not, strictly speaking, a compiler bug.  Versioned symbols are
not the right tool for solving this; however, the right tool for
solving it was presented in a paper at the last GCC summit.  I believe
by some ICC developers.  I don't know if any implementation's come of
that.

-- 
Daniel Jacobowitz
CodeSourcery, LLC



Reply to: