util-linux libraries (such as libblkid and libuuid) contain versioned symbols which are not tracked in portage dependency calculations (no subslots). This can result in behavior like portage not rebuilding packages when downgrading util-linux and/or selecting incorrect dependent binary packages for the installed version of util-linux. Ultimately this can cause broken binaries in dependent packages. Example: udev linked against libblkid from util-linux 2.37 and util-linux is downgraded to 2.36 (or binary package is installed on system with 2.36): # udevadm udevadm: /lib64/libblkid.so.1: version `BLKID_2_37' not found (required by udevadm) From a system with util-linux 2.37: # nm -D /lib64/libblkid.so.1|grep BLKID_2_37 0000000000000000 A BLKID_2_37 0000000000012e70 T blkid_probe_reset_hints@@BLKID_2_37 0000000000012950 T blkid_probe_set_hint@@BLKID_2_37 Reproducible: Always
Generally, we do not support library downgrades under any circumstance.
This is an unsolvable problem in general, because SONAME compatibility is only forward in time, not backwards.
I think your point about symbol versions in relation to binpkgs is covered by bug 753500. *** This bug has been marked as a duplicate of bug 753500 ***