glibc/sysdeps/unix/sysv/linux/powerpc
Lukasz Majewski 7455b70027 y2038: linux: Provide __gettimeofday64 implementation
In the glibc the gettimeofday can use vDSO (on power and x86 the
USE_IFUNC_GETTIMEOFDAY is defined), gettimeofday syscall or 'default'
___gettimeofday() from ./time/gettime.c (as a fallback).

In this patch the last function (___gettimeofday) has been refactored and
moved to ./sysdeps/unix/sysv/linux/gettimeofday.c to be Linux specific.

The new __gettimeofday64 explicit 64 bit function for getting 64 bit time from
the kernel (by internally calling __clock_gettime64) has been introduced.

Moreover, a 32 bit version - __gettimeofday has been refactored to internally
use __gettimeofday64.

The __gettimeofday is now supposed to be used on systems still supporting 32
bit time (__TIMESIZE != 64) - hence the necessary check for time_t potential
overflow and conversion of struct __timeval64 to 32 bit struct timespec.

The iFUNC vDSO direct call optimization has been removed from both i686 and
powerpc32 (USE_IFUNC_GETTIMEOFDAY is not defined for those architectures
anymore). The Linux kernel does not provide a y2038 safe implementation of
gettimeofday neither it plans to provide it in the future, clock_gettime64
should be used instead. Keeping support for this optimization would require
to handle another build permutation (!__ASSUME_TIME64_SYSCALLS &&
USE_IFUNC_GETTIMEOFDAY) which adds more complexity and has limited use
(since the idea is to eventually have a y2038 safe glibc build).

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 __gettimeofday64 and __gettimeofday.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
[Including some commit message improvement]
2020-02-18 23:55:47 +01:00
..
bits Update copyright dates not handled by scripts/update-copyrights. 2020-01-01 00:21:22 +00:00
powerpc32 ld.so: Do not export free/calloc/malloc/realloc functions [BZ #25486] 2020-02-15 11:01:23 +01:00
powerpc64 ld.so: Do not export free/calloc/malloc/realloc functions [BZ #25486] 2020-02-15 11:01:23 +01:00
sys Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
configure Move architecture cases out of sysdeps/unix/sysv/linux/configure.ac. 2014-06-24 20:53:03 +00:00
configure.ac Move architecture cases out of sysdeps/unix/sysv/linux/configure.ac. 2014-06-24 20:53:03 +00:00
dl-auxv.h powerpc: Move cache line size to rtld_global_ro 2020-01-17 09:05:03 -03:00
dl-brk.S
dl-cache.h Update. 2003-06-25 08:19:44 +00:00
dl-static.c powerpc: Move cache line size to rtld_global_ro 2020-01-17 09:05:03 -03:00
elision-conf.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
elision-conf.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
elision-lock.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
elision-timed.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
elision-trylock.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
elision-unlock.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
force-elision.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
get_timebase_freq.c linux: Remove INTERNAL_SYSCALL_DECL 2020-02-14 21:12:45 -03:00
gettimeofday.c y2038: linux: Provide __gettimeofday64 implementation 2020-02-18 23:55:47 +01:00
htm.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
Implies NPTL is no longer an add-on! 2014-07-07 09:29:06 -07:00
ioctl.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ipc_priv.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
kernel_sigaction.h m68k: Fix sigaction kernel definition (BZ #23960) 2018-12-18 16:45:10 -02:00
kernel_termios.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
kernel-features.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ldconfig.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
ldd-rewrite.sed
ldsodefs.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
libc-start.c powerpc: Move cache line size to rtld_global_ro 2020-01-17 09:05:03 -03:00
libc-start.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
libc-vdso.h elf: Move vDSO setup to rtld (BZ#24967) 2020-01-03 11:22:07 -03:00
lowlevellock.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
Makefile elf: Move vDSO setup to rtld (BZ#24967) 2020-01-03 11:22:07 -03:00
nldbl-abi.h 2006-01-27 Dwayne Grant McConnell <decimal@us.ibm.com> 2006-01-28 00:15:15 +00:00
pt-longjmp.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
pthread_attr_setstack.c PowerPC: Move remaining nptl/sysdeps/unix/sysv/linux/powerpc/ files. 2014-05-26 11:45:14 -05:00
pthread_attr_setstacksize.c PowerPC: Move remaining nptl/sysdeps/unix/sysv/linux/powerpc/ files. 2014-05-26 11:45:14 -05:00
pthread_mutex_cond_lock.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
pthread_mutex_lock.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
pthread_mutex_timedlock.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
pthread_mutex_trylock.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
readelflib.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
rt-sysdep.c Update. 2004-04-19 06:19:34 +00:00
sigcontextinfo.h Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
syscall.S Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
sysconf.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
sysdep.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
sysdep.h linux: Remove INTERNAL_SYSCALL_DECL 2020-02-14 21:12:45 -03:00
test-gettimebasefreq-static.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
test-gettimebasefreq.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
test-powerpc-linux-sysconf.c Update copyright dates with scripts/update-copyrights. 2020-01-01 00:14:33 +00:00
time.c linux: Consolidate time implementation 2020-01-03 11:22:04 -03:00
Versions Revert {send,sendm,recv,recvm}msg conformance changes 2016-06-10 11:58:16 -03:00