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

Re: Accepted sdl-image1.2 1.2.2-1 (i386 source)



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


Reply to: