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?
_______________________________________________
http://lists.gnu.org/mailman/listinfo/libtool