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.

Reply via email to