|
@@ -0,0 +1,57 @@
|
|
|
+From 6c200cd3c9b4884036cda011d8db8b67763c41d3 Mon Sep 17 00:00:00 2001
|
|
|
+From: Alistair Francis <alistair.francis@wdc.com>
|
|
|
+Date: Tue, 27 Aug 2019 16:17:57 -0700
|
|
|
+Subject: [PATCH 1/3] date: Use 64 prefix syscall if we have to
|
|
|
+
|
|
|
+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@wdc.com>
|
|
|
+Upstream-Status: Submitted
|
|
|
+---
|
|
|
+ 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.
|
|
|
++ * This simplifies the code for us as we don't need to convert
|
|
|
++ * between 64-bit and 32-bit. We also don't have a way to
|
|
|
++ * report overflow errors here.
|
|
|
++ */
|
|
|
++ syscall(__NR_clock_gettime64, CLOCK_REALTIME, &ts);
|
|
|
+ #else
|
|
|
+ time(&ts.tv_sec);
|
|
|
+ #endif
|
|
|
+--
|
|
|
+2.22.0
|
|
|
+
|