https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99832
--- Comment #11 from Jonathan Wakely <redi at gcc dot gnu.org> --- My first thought was that -D_TIME_BITS=64 requires _FILE_OFFSET_BITS=64 to be set too, but glibc will give an #error if it's not set. So libstdc++ does not need to worry about users incorrectly using -D_TIME_BITS=64 with _FILE_OFFSET_BITS=32, that won't compile anyway. But it looks like it's possible for users to use -D_TIME_BITS=64 on 64-bit targets where that's always true, and it has no effect in glibc (it's just redundant and so ignored). But with your patch it would cause the abi_tag to be added, i.e. change the ABI, which would not be ignored! Glibc sysdeps/unix/sysv/linux/features-time64.h has #if defined __USE_TIME_BITS64 && __TIMESIZE == 32 # define __USE_TIME64_REDIRECTS 1 #endif So I think we could check either _TIME_BITS==64 && __TIMESIZE==32 or if we're going to rely on an internal macro anyway (i.e. __TIMESIZE) then just check __USE_TIME64_REDIRECTS directly.