aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>2023-04-20 14:13:17 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2023-05-07 18:57:06 +0200
commit40fa8eb998e27529fcd59830eb163b43658f9e81 (patch)
tree2b9c9be2b1fcf5f947f25d06dc7dc4859ee4ed00
parent07f8b6feac2ff80793394b5b5acff5cd149d7fb2 (diff)
downloadbusybox-w32-40fa8eb998e27529fcd59830eb163b43658f9e81.tar.gz
busybox-w32-40fa8eb998e27529fcd59830eb163b43658f9e81.tar.bz2
busybox-w32-40fa8eb998e27529fcd59830eb163b43658f9e81.zip
build system: Make it possible to build with 64bit time_t
On most 32bit architectures time_t (and a few other time related types) are a signed 32bit wide integer type. As a consequence they can only represent dates between Fri Dec 13 08:45:52 PM UTC 1901 (-0x80000000 seconds before Jan 1 1970) and Tue Jan 19 03:14:07 AM UTC 2038 (0x7fffffff seconds after Jan 1 1970). Given that some machines that are built today have an expected lifetime of >15 years, this needs to be extended. To to that, define the cpp symbol _TIME_BITS to 64 which results in some magic in glibc to make time_t (and the few other time related types) 64 bit wide. This new switch CONFIG_TIME64 is in the spirit of CONFIG_LFS and only expected to have the expected effect with glibc. On musl for examples time_t already defaults to 64bit wide types. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--Config.in10
-rw-r--r--Makefile.flags1
2 files changed, 11 insertions, 0 deletions
diff --git a/Config.in b/Config.in
index a98a8b15b..214eba546 100644
--- a/Config.in
+++ b/Config.in
@@ -108,6 +108,16 @@ config LFS
108 programs that can benefit from large file support include dd, gzip, 108 programs that can benefit from large file support include dd, gzip,
109 cp, mount, tar. 109 cp, mount, tar.
110 110
111config TIME64
112 bool "Support 64bit wide time types"
113 default y
114 depends on LFS
115 help
116 Make times later than 2038 representable for several libc syscalls
117 (stat, clk_gettime etc.). Note this switch is specific to glibc and has
118 no effect on platforms that already use 64bit wide time types (i.e. all
119 64bit archs and some selected 32bit archs (currently riscv and x32)).
120
111config PAM 121config PAM
112 bool "Support PAM (Pluggable Authentication Modules)" 122 bool "Support PAM (Pluggable Authentication Modules)"
113 default n 123 default n
diff --git a/Makefile.flags b/Makefile.flags
index 1cec5ba20..e4cd658fd 100644
--- a/Makefile.flags
+++ b/Makefile.flags
@@ -15,6 +15,7 @@ CPPFLAGS += \
15 -include include/autoconf.h \ 15 -include include/autoconf.h \
16 -D_GNU_SOURCE -DNDEBUG \ 16 -D_GNU_SOURCE -DNDEBUG \
17 $(if $(CONFIG_LFS),-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64) \ 17 $(if $(CONFIG_LFS),-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64) \
18 $(if $(CONFIG_TIME64),-D_TIME_BITS=64) \
18 -DBB_VER=$(squote)$(quote)$(BB_VER)$(quote)$(squote) 19 -DBB_VER=$(squote)$(quote)$(BB_VER)$(quote)$(squote)
19 20
20CFLAGS += $(call cc-option,-Wall,) 21CFLAGS += $(call cc-option,-Wall,)