[gnutls-dev] Symbol versioning in gnutls 1.5.x

Andreas Metzler ametzler at downhill.at.eu.org
Mon Sep 25 19:30:21 CEST 2006

On 2006-09-24 Werner Koch <wk at gnupg.org> wrote:
> On Sun, 24 Sep 2006 12:10, Andreas Metzler said:
>> is supposed to protect us against: If a binary links against both 1.5
>> and 1.4 an runtime (e.g. mutt: linking directly against 1.5 for TLS
>> and indirectly against 1.4 though libldap) then symbol clashes happen
>> and segfaults might be caused.

> Exactly.  We had already had this trouble with GnuPG before the
> release of Sarge. There is a reason why the linker tells you about
> this possible conflict.

> I am pretty sure that many packages do have this problem.  For example
> building the current Gnupg 1.9 with gnutls-dev installed you will get
> such a problem due to cURL.  It links agains gnutls11 and .13.

That is absolutely no problem *iff* the respective libraries use
proper symbol versioning. The GnuTLS dependency chain uses symbol
versioning throughout all libraries [1] nowadays. - There is no
problem for applications linking against libtasn1.so.2, libtasn1.so.3,
libgnutls12, libgnutls11 and libgnutls13 simultanously.

Thank you for that, BTW. ;-)

> > Both gnutls-1.5.1/libextra/libgnutls-extra.vers and
> > gnutls-1.5.1/lib/libgnutls.vers should be bumped.

> I can't see how this helps.  You need to make sure that there are no
> such conflicts.  Remember it is a runtime linkage problem and it is
> pure coincidence that it usually (thanks to GNU ld.so) works.

It does. That is the whole and only point of symbol versioning, you
won't get symbol clashes and crashes. It is no coincidence; on
architectures that support it, symbol versioning *does* work.
cu andreas
[1] Except for libgpg-error but I have been told by the author(s) that
it won't have a soname bump /ever/.
The 'Galactic Cleaning' policy undertaken by Emperor Zhark is a personal
vision of the emperor's, and its inclusion in this work does not constitute
tacit approval by the author or the publisher for any such projects,
howsoever undertaken.                                (c) Jasper Ffforde

More information about the Gnutls-devel mailing list