Rebuilds on every codebase everywhere ever would promptly blow up.
IMHO the revolts would come from two camps, a) bureaucracies for whom a build system change would normally take months, and b) individual devs who would be all like "compilation flags?? in MY defaults?! that's LESS likely than you think!".
Worst case scenario, someone forks glibc, removes the offending requirement, proffers commercial support for their fork... and ends up making bank.
Only if they use time_t, but I get the point.
For the bureaucracies of case (a), a change of glibc or, more so, gcc should then take many years if they take the impact of changes seriously.
The bigger issue is all the systems that won't be rebuilt (per several sibling comments).
--
EDIT: fixed grammar.
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...
Why? Because for the majority of codebases, the time_t change won't require any work.
You'd be forcing a compiler error, and it would effectively say "Add -D_TIME_BITS=64. If you're doing something really weird with time_t then you may have to update your code too, but in 95% of the cases, you can just add that flag."
I think the compiler error might be warranted for something like "You are using a function that is 95% of the time insecure or wrong, please add -DGAPING_SECURITY_HOLE if you know what you're doing", but if the error really is just "add a flag, you do not need to think about your code probably", the library authors themselves might as well default it for you.