[PATCH 1/3] date: Use 64 prefix syscall if we have to
Peter Korsgaard
peter at korsgaard.com
Thu Aug 29 05:42:12 UTC 2019
>>>>> "Alistair" == Alistair Francis <alistair.francis at wdc.com> writes:
> Some 32-bit architectures no longer have the 32-bit time_t syscalls.
> Instead they have suffixed syscalls that returns a 64-bit time_t. If
> the architecture doesn't have the non-suffixed syscall and is using a
> 64-bit time_t let's use the suffixed syscall instead.
> This fixes build issues when building for RISC-V 32-bit with 5.1+ kernel
> headers.
> If an architecture only supports the suffixed syscalls, but is still
> using a 32-bit time_t fall back to the libc call.
> Signed-off-by: Alistair Francis <alistair.francis at wdc.com>
> ---
> coreutils/date.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
> diff --git a/coreutils/date.c b/coreutils/date.c
> index feb400430..4ef1cbf4a 100644
> --- a/coreutils/date.c
> +++ b/coreutils/date.c
> @@ -36,7 +36,7 @@
> //config:# defaults to "no": stat's nanosecond field is a bit non-portable
> //config:config FEATURE_DATE_NANO
> //config: bool "Support %[num]N nanosecond format specifier"
> -//config: default n # syscall(__NR_clock_gettime)
> +//config: default n # syscall(__NR_clock_gettime) or syscall(__NR_clock_gettime64)
> //config: depends on DATE
> //config: select PLATFORM_LINUX
> //config: help
> @@ -271,10 +271,17 @@ int date_main(int argc UNUSED_PARAM, char **argv)
> */
> #endif
> } else {
> -#if ENABLE_FEATURE_DATE_NANO
> +#if ENABLE_FEATURE_DATE_NANO && defined(__NR_clock_gettime)
> /* libc has incredibly messy way of doing this,
> * typically requiring -lrt. We just skip all this mess */
> syscall(__NR_clock_gettime, CLOCK_REALTIME, &ts);
> +#elif ENABLE_FEATURE_DATE_NANO && __TIMESIZE == 64
> + /* Let's only suppor the 64 suffix syscalls for 64-bit time_t.
s/suppor/support/
--
Bye, Peter Korsgaard
More information about the busybox
mailing list