Even if glibc does it, if other libraries expose time_t in their ABI and don't do the same, then it's the same problem.
Symbol versioning[1,2]. Kind of like aliases, but more awkward. In theory it’s not specific to glibc, in practice hardly anyone else bothers being so careful about their ABI.
Note that dynamically linked musl, which Alpine uses (I think..?), doesn’t understand symbol versioning, though I expect this will only last until the first ABI break in musl.
[1]: https://www.akkadia.org/drepper/symbol-versioning
[2]: https://maskray.me/blog/2020-11-26-all-about-symbol-versioni...
I know that glibc uses symbol versioning to remain ABI-compatible within versions. What I meant was ABI compatibility between 32-bit and 64-bit time_t with the same glibc library. Looks like it uses something like aliases for that (but self-implemented using asm):
https://sourceware.org/git/?p=glibc.git;a=blob;f=misc/sys/se...
https://sourceware.org/git/?p=glibc.git;a=blob;f=misc/sys/cd...