This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Re: Shared library question
- From: Jakub Jelinek <jakub at redhat dot com>
- To: "Zagorodnev, Grigory" <Grigory_Zagorodnev at stl dot sarov dot ru>
- Cc: "'H . J . Lu'" <hjl at lucon dot org>, "'binutils at sources dot redhat dot com'" <binutils at sources dot redhat dot com>
- Date: Wed, 19 Jun 2002 16:56:35 +0200
- Subject: Re: Shared library question
- References: <51524B6C689ED4118D4F0090273ACE32928847@odyssey.stl.sarov.ru>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
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.
This is incorrect assumption. How do you think glibc 2.0 binaries/libraries
can be run at all (note that glibc 2.0 had no symbol versioning)?
If you'll do:
VER_1.0 { global: foo; bar; baz; local: *; };
VER_1.1 { } VER_1.0;
and .symver __real_foo, foo@VER_1.0
then program/libs linked against non-versioned foo will resolve to
foo@VER_1.0, while ld won't use foo.
Jakub