====== Symbol Versioning ====== Starting with %%FreeBSD%% 7.0, several libraries (including ''%%libc%%'' and the thread libraries) use symbol versioning. This means that each exported symbol has a version tag attached to it, and that when a program is compiled and linked, the linker resolves symbols against the newest available version tag. When the API changes—for instance, the argument list or return type of a function changes—the old version of the function is replaced with a compatibility stub. Symbol versioning ensures that old programs will use the compatibility stub, while new ones will use the new version. Currently defined version tags are: ^ Tag ^ Version ^ | FBSD_1.0 | %%FreeBSD%% 7 | | FBSD_1.1 | %%FreeBSD%% 8 | | FBSD_1.2 | %%FreeBSD%% 9 | | FBSD_1.3 | %%FreeBSD%% 10 | | FBSD_1.4 | %%FreeBSD%% 11 | | FBSD_1.5 | %%FreeBSD%% 12 | | FBSD_1.6 | %%FreeBSD%% 13 | | FBSD_1.7 | %%FreeBSD%% 14 | ===== Further reading ===== * BinaryCompatibility * http://people.freebsd.org/~deischen/symver/library_versioning.txt * http://comments.gmane.org/gmane.os.freebsd.devel.threading/4092