If sstate packages are build on a system with a specific glibc version, there should be some way to detect when they're installed on an older system and at least flag the packages as invalid. Running against newer glibc shouldn't be an issues, its just a question on detecting and invalidating running on older glibc than the package was built for.
For now, the best approach is going to be to mark sstate packages as being built against a given lsb_release name/version. There are patches our for review which do this.
Fixed in master http://git.yoctoproject.org/cgit.cgi/poky/commit/?id=72ab2866e1727c373c3c651f98b1e5b5f3d47e8f
Verified in master, commit: ef5dcad3e3e3c004112cfc00843727a7fda75cd2 Changing distros will cause bitbake to make a new directory in sstate-chache with distro name and version in which to store its native and cross packages. Example: /build/sstate-cache/Ubuntu-12.04/*/sstate-*-native-*.tgz /build/sstate-cache/Ubuntu-12.04/*/sstate-*-cross-*.tgz