On Sun, Jul 28, 2002 at 03:53:51AM +0900, Junichi Uekawa wrote: > Steve Langasek <vorlon@netexpress.net> immo vero scripsit: > > What do you mean by 'a good description'? Is there something about this > > migration plan that you don't understand? > Yes, is there a good documentation on the versioning and > how versioning is supposed to be handled by the dynamic linker ? From the texinfo documentation for GNU ld: The linker supports symbol versions when using ELF. Symbol versions are only useful when using shared libraries. The dynamic linker can use symbol versions to select a specific version of a function when it runs a program that may have been linked against an earlier version of the shared library. Also, The names of the version nodes have no specific meaning other than what they might suggest to the person reading them. The `2.0' version could just as well have appeared in between `1.1' and `1.2'. However, this would be a confusing way to write a version script. > Or, more succinctly, "do we need to do mass rebuild or not" We do need to do a mass rebuild. Symbol versioning is just an easy way to provide multiple names (png_combine_row and png_combine_row@@PNG3) for the same function. If a binary or library is linked against the unversioned symbols, the dynamic linker will only know to look for 'png_combine_row'. If there is more than one symbol named 'png_combine_row' loaded, the dynamic linker has to guess -- just like it does now. However, if a binary is linked against the versioned symbols, the dynamic linker will look for 'png_combine_row@@PNG3' instead; if there's only one symbol named 'png_combine_row@@PNG3' in memory, it doesn't have to guess. Yes, there is a mass rebuild. But using versioned symbols, we only have to rebuild all of the packages that *directly* link against libpng in order to have a smooth transition. If you change the SONAMEs of libraries that link against libpng, then we also have to rebuild all packages that *indirectly* link against libpng, as well. Steve Langasek postmodern programmer
Attachment:
pgpIcnKKuPfYa.pgp
Description: PGP signature