[OpenAFS-devel] open issues for an openafs 1.8 branch

Benjamin Kaduk kaduk@MIT.EDU
Thu, 2 Oct 2014 13:22:28 -0400 (EDT)


On Wed, 1 Oct 2014, Garrett Wollman wrote:

> <<On Wed, 1 Oct 2014 16:08:00 -0400, chas williams - CONTRACTOR <chas@cmf.nrl.navy.mil> said:
>
> > I guess you should ask openafs-users how onerous it would be for them
> > to rebuild their local tools or how many have local tools linked
> > against shared libraries.
>
> Speaking for myself, my local tools are built against archive
> libraries rather than shared libraries, because Debian at the time did
> not ship shared libraries for OpenAFS.  I had to manually build a set
> of PIC archive libraries in order to make my tools (which are

Hmm, I thought we shipped, e.g., libafsrpc_pic.a so you shouldn't have to
build your own.

> themselves delivered as a shared library), and I expect most such
> tools actually take te form of a high-level-language binding.  (In my
> case, my tools are written in Ruby and include a Ruby module wrapping
> the protection server interfaces.)
>
> One of the things you can do with symbol versioning is to mark each
> symbol exported as being part of the official ABI or internal to the
> implementation.  This page
> <https://www.gnu.org/software/gnulib/manual/html_node/LD-Version-Scripts.html>
> describes how to do symbol versioning with GNU libtool, and also how
> to hide internal-to-the-implementation symbols in shared libraries (if
> OpenAFS isn't doing that yet).

That page says it only works for GNU LD and the Solaris linker, but we
appear to support using the system linker on AIX which is not the GNU ld.

That page also says "If you target platforms that do not support linker
scripts (i.e., all platforms that doesn't use GNU LD) you may want to
consider a more portable but less powerful alternative: libtool
-export-symbols. It will hide internal symbols from your library, but will
not add ELF versioning symbols.", which matches our current usage.

I would not be super-excited about needing to maintain both .la.sym and
.map files for all of our libtoolized libraries, just to get ELF symbol
versioning.

-Ben