This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: Shared library question
- From: "H . J . Lu" <hjl at lucon dot org>
- To: "Zagorodnev, Grigory" <Grigory_Zagorodnev at stl dot sarov dot ru>
- Cc: "'binutils at sources dot redhat dot com'" <binutils at sources dot redhat dot com>
- Date: Wed, 19 Jun 2002 07:54:28 -0700
- Subject: Re: Shared library question
- References: <51524B6C689ED4118D4F0090273ACE32928847@odyssey.stl.sarov.ru>
On Wed, Jun 19, 2002 at 06:47:21PM +0400, Zagorodnev, Grigory wrote:
> >It is very trivial. Just give "foo", a none-default version so that
> >ld won't use it, but ld.so will.
>
> Well... It's not so easy.
>
> If I change the version of symbol 'foo', no previously biult application
> will run, since they are referencing foo_with_no_version. But any next
> application I link against new library could reference
> foo_with_some_version, since it's not hided from the linking.
>
> So I think it looks like "ld.so won't use it, but ld will".
>
> But I'm looking for the solution of diametrically opposite task: old apps
> still able to see symbol foo, new apps - not.
>
That is exactly what we did to atexit in glibc. I can show you how to
do it if/when I can find time :-(.
H.J.