From d2e3b697da2433c08702f95c76458c51545c3df1 Mon Sep 17 00:00:00 2001 From: Lukasz Majewski Date: Thu, 16 Jan 2020 23:14:27 +0100 Subject: y2038: linux: Provide __settimeofday64 implementation This patch provides new __settimeofday64 explicit 64 bit function for setting 64 bit time in the kernel (by internally calling __clock_settime64). Moreover, a 32 bit version - __settimeofday has been refactored to internally use __settimeofday64. The __settimeofday is now supposed to be used on systems still supporting 32 bit time (__TIMESIZE != 64) - hence the necessary conversion of struct timeval to 64 bit struct __timespec64. Internally the settimeofday uses __settimeofday64. This patch is necessary for having architectures with __WORDSIZE == 32 Y2038 safe. Build tests: ./src/scripts/build-many-glibcs.py glibcs Run-time tests: - Run specific tests on ARM/x86 32bit systems (qemu): https://github.com/lmajewski/meta-y2038 and run tests: https://github.com/lmajewski/y2038-tests/commits/master Above tests were performed with Y2038 redirection applied as well as without to test proper usage of both __settimeofday64 and __settimeofday. Reviewed-by: Adhemerval Zanella --- include/time.h | 9 ++++++ sysdeps/unix/sysv/linux/settimeofday.c | 53 ++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 sysdeps/unix/sysv/linux/settimeofday.c diff --git a/include/time.h b/include/time.h index a80953d5dd..73f66277ac 100644 --- a/include/time.h +++ b/include/time.h @@ -8,6 +8,7 @@ # include