package/Makefile.in: Use 64-bit time_t with glibc toolchains for > year 2038 support
To use time_t 64-bit for glibc >= 2.34 toolchains we have to set both
_FILE_OFFSET_BITS=64 and _TIME_BITS=64 for glibc toolchains. Buildroot
already define _FILE_OFFSET_BITS=64 since 2008 [1] before the first
release tag 2009.02.
_TIME_BITS is not needed for musl libc since it already year2038
ready [2].
The uclibc-ng libc only support time_t 32-bit (long int) so it will be
affected by the year2038 issue [3].
Fixes (in French, chapter Buildroot 2022 and GlibC):
https://www.blaess.fr/christophe/2038
Runtime tested with qemu_arm_vexpress_defconfig and the Bootlin glibc
bleeding-edge 2021.11-1 toolchain.
Before:
# date
Tue Jan 19 03:14:07 UTC 2038
# date
Thu Jan 1 00:00:00 UTC 1970
After:
# date
Tue Jan 19 03:14:07 UTC 2038
# date
Tue Jan 19 03:14:08 UTC 2038
# date
Tue Jan 19 03:14:09 UTC 2038
[1] 60b5eee76edfa153ef118d2788c74ac8da1497a0
[2] https://git.musl-libc.org/cgit/musl/tree/include/alltypes.h.in?h=v1.2.2#n3
[3] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/include/time.h?h=v1.0.40#n75
https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/libc/sysdeps/linux/common/bits/types.h?h=v1.0.40#n106
Signed-off-by: Romain Naour <romain.naour@gmail.com>
Cc: Christophe Blaess <christophe.blaess@logilin.fr>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>