diff options
author | Uwe Kleine-König <u.kleine-koenig@pengutronix.de> | 2023-04-20 14:13:17 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2023-05-07 18:57:06 +0200 |
commit | 40fa8eb998e27529fcd59830eb163b43658f9e81 (patch) | |
tree | 2b9c9be2b1fcf5f947f25d06dc7dc4859ee4ed00 | |
parent | 07f8b6feac2ff80793394b5b5acff5cd149d7fb2 (diff) | |
download | busybox-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.in | 10 | ||||
-rw-r--r-- | Makefile.flags | 1 |
2 files changed, 11 insertions, 0 deletions
@@ -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 | ||
111 | config 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 | |||
111 | config PAM | 121 | config 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 | ||
20 | CFLAGS += $(call cc-option,-Wall,) | 21 | CFLAGS += $(call cc-option,-Wall,) |