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 |