HEADS UP: shared library bump, symbol versioning, libthr change

Daniel Eischen eischen at vigrid.com
Sun May 6 14:21:32 UTC 2007


Sometime this coming weekend (May 11-13), I'll be committing the
following patch:

   http://people.freebsd.org/~deischen/symver/bump_symver.diffs.050207

What does this do?

   o All library versions that haven't already been bumped and
     that are not new to 7.0 will be bumped.

   o Symbol versioning will be enabled by default.  This means
     that for those libraries which are symbol versioned (libc,
     libelf, libpthread, librt, libthr, libthr_db, and msun)
     we will have to support all public interfaces as our ABI
     from this point forward.  Compatibility is now maintained
     in the library itself, not in a separate compat library and
     by bumping shared library versions.  You can disable
     symbol versioning by setting NO_SYMVER.

   o The default threading library is changed from libpthread
     to libthr.  libthr remains installed as libthr, libpthread
     is installed as libkse, and libpthread will link to libthr
     by default.  Compiling with -pthread will continue to work
     as before.  You can override the default library by setting
     DEFAULT_THREAD_LIBRARY=libpthread or libc_r before a
     buildworld/installworld.

       /lib/libthr.so.3
       /usr/lib/libpthread.a -> libthr.a
       /usr/lib/libpthread.so -> libthr.so
       /usr/lib/libpthread_p.a -> libthr_p.a
       /usr/lib/libthr.a
       /usr/lib/libthr.so -> /lib/libthr.so.3
       /usr/lib/libthr_p.a
       /usr/lib/libkse.a
       /usr/lib/libkse.so -> libkse.so.3
       /usr/lib/libkse.so.3
       /usr/lib/libkse_p.a

How does this affect ports?

Kris ran a package build with this patch, and there were a few problems,
mostly because x11-toolkits/xview/patch-lib+libxview+textsw+txt_again.c
patches xview to use __svfscanf() which is an internal libc function
(it should probably use vfscanf).  A few ports broke because they
required xview.  Some ports did not break, but they used some symbols
exported from libc that are private and not part of the ABI.  These
ports are not clean with respect to our ABI and should be changed if
possible.

Some of my notes on symbol versioning are here:

   http://people.freebsd.org/~deischen/symver/library_versioning.txt

and better technical references are Ulrich Drepper's notes or
Sun's document:

   http://people.redhat.com/~drepper/symbol-versioning
   http://www.sun.com/software/solaris/programs/abi/documentation/solaris-abi.pdf

-- 
DE


More information about the freebsd-current mailing list