Shared library question

Jakub Jelinek jakub@redhat.com
Wed Jun 19 07:57:00 GMT 2002


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



More information about the Binutils mailing list