Some newer architectures e.g. RISCV32 have 64bit time_t from get go and
thusly do not have gettimeofday_time64/settimeofday_time64 implemented
therefore check for SYS_settimeofday definition before making the
syscall. Fixes build for riscv32 and it will bail out at runtime.

Signed-off-by: Khem Raj <[email protected]>
---
 util-linux/hwclock.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/util-linux/hwclock.c b/util-linux/hwclock.c
index 723b09589..b9faaabbc 100644
--- a/util-linux/hwclock.c
+++ b/util-linux/hwclock.c
@@ -131,6 +131,7 @@ static void show_clock(const char **pp_rtcname, int utc)
 
 static void set_kernel_tz(const struct timezone *tz)
 {
+       int ret = 1;
 #if LIBC_IS_MUSL
        /* musl libc does not pass tz argument to syscall
         * because "it's deprecated by POSIX, therefore it's fine
@@ -139,9 +140,11 @@ static void set_kernel_tz(const struct timezone *tz)
 #if !defined(SYS_settimeofday) && defined(SYS_settimeofday_time32)
 # define SYS_settimeofday SYS_settimeofday_time32
 #endif
-       int ret = syscall(SYS_settimeofday, NULL, tz);
+#if defined(SYS_settimeofday)
+       ret = syscall(SYS_settimeofday, NULL, tz);
+#endif
 #else
-       int ret = settimeofday(NULL, tz);
+       ret = settimeofday(NULL, tz);
 #endif
        if (ret)
                bb_simple_perror_msg_and_die("settimeofday");
-- 
2.30.1

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to