libtool
[Top][All Lists]
Advanced

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

Dynamic linker relinking guarantee on compatible interface-number change


From: Jan Engelhardt
Subject: Dynamic linker relinking guarantee on compatible interface-number changes
Date: Thu, 27 Aug 2009 01:39:55 +0200 (CEST)
User-agent: Alpine 2.00 (LSU 1167 2008-08-23)

Hi,


A paragraph in libtool's info manual section 7.2 ("Libtool's versioning 
system") got me thinking:

        The dynamic linker is guaranteed that if a library supports
        _every_ interface number between FIRST-INTERFACE and
        LAST-INTERFACE, then the program can be relinked against that
        library.

Random thought.

Let there be a system which has a libfoo.so that provides interfaces 
14-17. Depending on the chosen OS, the library will usually be present 
on Linux as libfoo.so.14 (as a symlink to libfoo.so.14.3.0), or as 
libfoo.so.17 on one of the BSDs (I forget which, apologies).

Now let there be a program which exclusively uses the v15 interface. On 
Linux, the program would be linked against libfoo.so.14 according to 
`ldd`, or libfoo.so.17 on BSD.

Now let there be an update of libfoo whereby the supported interfaces 
increase/decrease, e.g. 15-19. This would mean that the Linux/BSD
environments gets a new file, libfoo.so.15.4 and libfoo.so.19, 
respectively.

Since libfoo.so.14/17, as recorded in the program headers, cannot be 
found anymore, things break. That somehow does not go in line with
what the libtool manual praises ("can be relinked").

Or, our dynamic loaders just suck.

Comments?




reply via email to

[Prev in Thread] Current Thread [Next in Thread]