[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