[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Dynamic linker relinking guarantee on compatible interface-number change
Dynamic linker relinking guarantee on compatible interface-number changes
Thu, 27 Aug 2009 01:39:55 +0200 (CEST)
Alpine 2.00 (LSU 1167 2008-08-23)
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
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,
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.
|[Prev in Thread]
||[Next in Thread]|
- Dynamic linker relinking guarantee on compatible interface-number changes,
Jan Engelhardt <=