Not my area, but isn't it really only because glibc doesn't maintain stable interfaces across versions? If it did, you absolutely could use the same ld.so with different glibc versions. But it doesn't, so here we are.
The C standard isn’t stable across versions.
extern int errno;
The C standard isn’t stable across versions.
extern int errno;