This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug time/23603] mktime signed integer overflow on large timestamps
- From: "cvs-commit at gcc dot gnu.org" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Wed, 19 Sep 2018 08:13:05 +0000
- Subject: [Bug time/23603] mktime signed integer overflow on large timestamps
- Auto-submitted: auto-generated
- References: <bug-23603-131@http.sourceware.org/bugzilla/>
https://sourceware.org/bugzilla/show_bug.cgi?id=23603
--- Comment #12 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, aaribaud/y2038 has been created
at 892385e1177e0cc040bfb4090d3932fce8995c73 (commit)
- Log -----------------------------------------------------------------
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=892385e1177e0cc040bfb4090d3932fce8995c73
commit 892385e1177e0cc040bfb4090d3932fce8995c73
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Wed Sep 6 10:00:42 2017 +0200
Y2038: add _TIME_BITS support
This makes all previously defined Y2038-proof API types, functions and
implementations the default when _TIME_BITS==64 and __WORDSIZE==32 (so
that 64-bit architectures are unaffected).
Note: it is assumed that the API is consistent, i.e. for each API type
which is enabled here, all API functions which depend on this type are
enabled and mapped to Y2038-proof implementations.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b97af533506887e7b561b134d264d60ae6d43a52
commit b97af533506887e7b561b134d264d60ae6d43a52
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Thu Apr 12 20:50:21 2018 +0200
Y2038: add function __pmap_rmtcall64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=97f36a6c3c0b4c907463ee4aa079f50e0976d0c0
commit 97f36a6c3c0b4c907463ee4aa079f50e0976d0c0
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Thu Apr 12 20:49:49 2018 +0200
Y2038: add function __clntudp_bufcreate64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=10b095cd2faba727a17cc01998a95fd84c73869a
commit 10b095cd2faba727a17cc01998a95fd84c73869a
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Thu Apr 12 20:46:27 2018 +0200
Y2038: add function __clntudp_create64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=4dd7b619e7ef21b21f846d9d088ed360cfe6f783
commit 4dd7b619e7ef21b21f846d9d088ed360cfe6f783
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 19:49:07 2017 +0200
Y2038: add function select64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=631aebbd5cc8f6048c406728a361ea84d8153b57
commit 631aebbd5cc8f6048c406728a361ea84d8153b57
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:16 2017 +0200
Y2038: add function pselect64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a71b85f6b17e39b53a338848497591d1fd0b59fd
commit a71b85f6b17e39b53a338848497591d1fd0b59fd
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:15 2017 +0200
Y2038: add struct __timex64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=746a8b125aa328ba5fbbeceef4cfe9d411566815
commit 746a8b125aa328ba5fbbeceef4cfe9d411566815
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:14 2017 +0200
Y2038: add function __ntp_gettimex64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a36eb3d5761c6a070c3446542e437cc8327f04e9
commit a36eb3d5761c6a070c3446542e437cc8327f04e9
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:13 2017 +0200
Y2038: add function __ntp_gettime64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0f3d6cc6aeb2d1698ebda9a5b150699162db217a
commit 0f3d6cc6aeb2d1698ebda9a5b150699162db217a
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:12 2017 +0200
Y2038: add struct __ntp_timeval64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=0bc6f9d6e130c456d49a38ff4be8204e90f348f5
commit 0bc6f9d6e130c456d49a38ff4be8204e90f348f5
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:11 2017 +0200
Y2038: add function __getrusage64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1e91f114fb758c84e1adfa2e79f504a517f8672f
commit 1e91f114fb758c84e1adfa2e79f504a517f8672f
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:10 2017 +0200
Y2038: add functions using futexes
This creates 64-bit time versions of the following APIs:
- pthread_rwlock_timedrdlock
- pthread_rwlock_timedwrlock
- pthread_mutex_timedlock
- pthread_cond_timedwait
- sem_timedwait
- aio_suspend
It also creates 64-bit time versions of the following
functions or macros:
- lll_timedlock_elision
- lll_timedlock
- __lll_timedlock_wait
- futex_reltimed_wait_cancelable
- lll_futex_timed_wait
- __pthread_cond_wait_common
- futex_abstimed_wait_cancelable
- lll_futex_timed_wait_bitset
- do_aio_misc_wait
- AIO_MISC_WAIT
- __new_sem_wait_slow
- do_futex_wait
- __pthread_rwlock_wrlock_full
- __pthread_rwlock_rdlock_full
- futex_abstimed_wait
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=465152d59593482ccb6b777401e28d9ba0b1ef7a
commit 465152d59593482ccb6b777401e28d9ba0b1ef7a
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:09 2017 +0200
Y2038: add function __setitimer64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=3e34592239c14f1bd455352663f3dbf073cc7b9a
commit 3e34592239c14f1bd455352663f3dbf073cc7b9a
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:08 2017 +0200
Y2038: add function __getitimer64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=e5912c658d04c28761768ccdfae60e97052dd5da
commit e5912c658d04c28761768ccdfae60e97052dd5da
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:07 2017 +0200
Y2038: add struct __itimerval64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c73d0b44de288ecb4e2a48416ba3068472864dca
commit c73d0b44de288ecb4e2a48416ba3068472864dca
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:06 2017 +0200
Y2038: add function __utime64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=db17670a241efb92b3b035c578c3b157129ef490
commit db17670a241efb92b3b035c578c3b157129ef490
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:05 2017 +0200
Y2038: add function __adjtime64, __adjtimex64 and __ntp_adjtime64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=69660bc2cd89b6cee7a9815b24765443f57f5510
commit 69660bc2cd89b6cee7a9815b24765443f57f5510
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:04 2017 +0200
Y2038: add function __nanosleep64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=c38366c17d375e58099ee4bc3f70ddc2b86f30d6
commit c38366c17d375e58099ee4bc3f70ddc2b86f30d6
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:03 2017 +0200
Y2038: add function __sched_rr_get_interval64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f0572b029a5b2de5fd04e44a133707949446feee
commit f0572b029a5b2de5fd04e44a133707949446feee
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:02 2017 +0200
Y2038: add function __msgctl64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=25acac1c9af2b7a4d62c0a63ff58169f879ad8f3
commit 25acac1c9af2b7a4d62c0a63ff58169f879ad8f3
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:01 2017 +0200
Y2038: add function __mq_timedsend_time64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=711c2e684f13498defce4fe6a0814156cccce503
commit 711c2e684f13498defce4fe6a0814156cccce503
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:42:00 2017 +0200
Y2038: add function __mq_timedreceiv_time64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8ac027d36f0593b2c3e0c5d595d3ce5868331898
commit 8ac027d36f0593b2c3e0c5d595d3ce5868331898
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:57 2017 +0200
Y2038: add function __utimes64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8ccf4ca46cb559d77556e833f03273bba9889725
commit 8ccf4ca46cb559d77556e833f03273bba9889725
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:56 2017 +0200
Y2038: add function __stime64
This implementation uses __settimeofday64.
Therefore, on a system where current time-of-day is 32 bits, this
implementation will fail for dates beyond Y2038.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b18e3eaf831a4c4a6dc0daa35f36e9070b86ed1f
commit b18e3eaf831a4c4a6dc0daa35f36e9070b86ed1f
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:55 2017 +0200
Y2038: add function __time64
This provides a generic Posix implementation based on calling
__gettimeofday64().
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2d03b44538755f288325f054f8f16597d0d97c2f
commit 2d03b44538755f288325f054f8f16597d0d97c2f
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:59 2017 +0200
Y2038: add function __settimeofday64
Implementing a 64-bit settimeofday requires adding a new
file to build under time/ and we cannot name that new file
'settimeofday.c' or it will break the 32-bit settimeofday
file symbol, so we call it 'settimeofday64.c'.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=6529cb1d0d6dae97c60bee387cb370f634edd115
commit 6529cb1d0d6dae97c60bee387cb370f634edd115
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:58 2017 +0200
Y2038: add function __gettimeofday64
Implementing a 64-bit settimeofday requires adding a new
file to build under time/ and we cannot name that new file
'settimeofday.c' or it will break the 32-bit settimeofday
symbol, so we call it 'settimeofday64.c'.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=2d183cec4d33e953e2fb4dba443f3aec78bef475
commit 2d183cec4d33e953e2fb4dba443f3aec78bef475
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:54 2017 +0200
Y2038: add function __fstatat64_time64 (and __fxstatat_time64)
These implementations just use the existing syscalls and convert from
kernel 32-bit-time struct stat64 to GLIBC Y2038-ready struct __stat64_t64.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=91db3b59079fe65e1d9650aeebe6b75a571e9acc
commit 91db3b59079fe65e1d9650aeebe6b75a571e9acc
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:53 2017 +0200
Y2038: add function __lstat64_time64 (and __lxstat64_time64)
These implementations just use the existing syscalls and convert from
kernel 32-bit-time struct stat64 to GLIBC Y2038-ready struct __stat64_t64.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fdf118c540f3bcbd7dfbfa845fe748a3c12f4c35
commit fdf118c540f3bcbd7dfbfa845fe748a3c12f4c35
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:52 2017 +0200
Y2038: add function __stat64_time64 (and __xstat64_time64)
These implementations just use the existing syscalls and convert from
kernel 32-bit-time struct stat64 to GLIBC Y2038-ready struct __stat64_t64.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=918ee9c874872e7f4532485c979c33146dc1913b
commit 918ee9c874872e7f4532485c979c33146dc1913b
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:51 2017 +0200
Y2038: add function __fstat64_time64 (and __fxstat64_time64)
These implementations just use the existing syscalls and convert from
kernel 32-bit-time struct stat64 to GLIBC Y2038-ready struct __stat64_t64.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=dd7a5f55396db5fad8ef7b358a9ac4d3c276d7f2
commit dd7a5f55396db5fad8ef7b358a9ac4d3c276d7f2
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:50 2017 +0200
Y2038: add struct __stat64_t64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=82dfb042a03f847954f50e8e17dd9e977e4d7370
commit 82dfb042a03f847954f50e8e17dd9e977e4d7370
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:49 2017 +0200
Y2038: add function __timerfd_settime64
For Linux this uses the 32-bit time syscal, so it converts
syscall input from 64-bit time into 32-bit time and syscall
output from 32-bit time to 64-bit time.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=974bdbd6c89c098ae2d32b83e63e36217c8d5cdc
commit 974bdbd6c89c098ae2d32b83e63e36217c8d5cdc
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:48 2017 +0200
Y2038: add function __timerfd_gettime64
For Linux this uses the 32-bit time syscall so it converts the
syscall output from 32-bit time to 64-bit time.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1a6f17f25b2872de039df0185d9c7b7ac6e9a9ac
commit 1a6f17f25b2872de039df0185d9c7b7ac6e9a9ac
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:47 2017 +0200
Y2038: add function __timer_settime64
For Linux this uses a 32-bit syscall, so it converts the syscall
input from 64-bit time into 32-bit time, and the syscall output
from 32-bit time into 64-bit time.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=a064797b8338cbee62248cb137942c7ab9342245
commit a064797b8338cbee62248cb137942c7ab9342245
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:46 2017 +0200
Y2038: add function __timer_gettime64
For Linux this uses the 32-bit time syscall, so it
converts the syscall output into 64-bit time.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b0bfc19265eb9f0dbb8ed290ddbacfd28efaae55
commit b0bfc19265eb9f0dbb8ed290ddbacfd28efaae55
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:45 2017 +0200
Y2038: add struct __itimerspec64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1d20d7ca648adff2a143b3cc1788df9dba596ca7
commit 1d20d7ca648adff2a143b3cc1788df9dba596ca7
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:44 2017 +0200
Y2038: add function __lutimes64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=8405a342c0854e9f658b4e85959c7858105c956c
commit 8405a342c0854e9f658b4e85959c7858105c956c
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:43 2017 +0200
Y2038: add function __futimes64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=fc8dd6989dc2293e0c70db68d24f10d282929b82
commit fc8dd6989dc2293e0c70db68d24f10d282929b82
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:42 2017 +0200
Y2038: add struct __timeval64
Also, provide static inline functions and macros for checking
and converting between 32-bit and 64-bit timevals.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=662b4d9e06bc0b4f473b870da0e1966c822ea12c
commit 662b4d9e06bc0b4f473b870da0e1966c822ea12c
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:41 2017 +0200
Y2038: add function __sigtimedwait_time64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=980dbf9dfbe390f027f569cde649e3dc55a000c4
commit 980dbf9dfbe390f027f569cde649e3dc55a000c4
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:39 2017 +0200
Y2038: add function __futimens64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f5fa44077ff3ea076f8b5d1cf514959a1b74f628
commit f5fa44077ff3ea076f8b5d1cf514959a1b74f628
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:40 2017 +0200
Y2038: add function __utimensat_time64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=691580b867b0f9215001301ff04b1241aafafaca
commit 691580b867b0f9215001301ff04b1241aafafaca
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:38 2017 +0200
Y2038: add function __timespec_get64
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=b3bd461fee486c85512d8a5c3dfa94d05df81e2c
commit b3bd461fee486c85512d8a5c3dfa94d05df81e2c
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:37 2017 +0200
Y2038: add function __clock_nanosleep64
Linux does not provide a 64-bit-time clock_nanosleep syscall,
so __clock_nanosleep64 is a wrapper calling __clock_nanosleep,
with one conversion before the call and possibly one after.
Note:
There is no point in implementing __clock_nanosleep64 directly
around the 32-bit-time syscall and making __clock_nanosleep a
wrapper around __clock_nanosleep64, because __clock_nanosleep64
would still need one or two conversions, and __clock_nanosleep
would now also need those, adding a cost of 2 to 4 conversions
in the worst case.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=7c8da9764ac96e08cc45052590b415e6a3451aaa
commit 7c8da9764ac96e08cc45052590b415e6a3451aaa
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:36 2017 +0200
Y2038: add function __clock_getres_time64
* include/time.h (__clock_getres_time64): Add.
* sysdeps/posix/clock_getres.c (hp_timing_getres): Use
struct __timespec64.
* sysdeps/posix/clock_getres.c (realtime_getres): Likewise.
* sysdeps/posix/clock_getres.c (__clock_getres_time64): Add.
* sysdeps/posix/clock_getres.c Use SYSDEP_GETRES64.
* sysdeps/posix/clock_getres.c Use SYSDEP_GETRES_CPU64.
* sysdeps/posix/clock_getres.c (__clock_getres):
Use __clock_getres_time64.
* sysdeps/unix/sysv/linux/clock_getres.c (SYSCALL_GETRES32): Add.
* sysdeps/unix/sysv/linux/clock_getres.c (SYSCALL_GETRES64): Likewise.
* sysdeps/unix/sysv/linux/clock_getres.c (SYSDEP_GETRES64): Likewise.
* sysdeps/unix/sysv/linux/clock_getres.c (SYSDEP_GETRES_CPU64): Likewise.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f380b5e890f0cc2adfb38301b91880b4716b504f
commit f380b5e890f0cc2adfb38301b91880b4716b504f
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:35 2017 +0200
Y2038: add function __clock_settime64
* include/time.h (__clock_settime64): Add.
* sysdeps/unix/clock_settime.c (__clock_settime64): Add.
* sysdeps/unix/sysv/linux/clock_settime.c (DO_CLOCK_SETTIME_32): Add.
* sysdeps/unix/sysv/linux/clock_settime.c (DO_CLOCK_SETTIME_64): Add.
* sysdeps/unix/sysv/linux/clock_settime.c (SYSDEP_SETTIME64_CPUTIME): Add.
* sysdeps/unix/sysv/linux/clock_settime.c (SYSDEP_SETTIME64): Add.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=d460b6f1b4bda9a80454be24a82c31ee0116aadb
commit d460b6f1b4bda9a80454be24a82c31ee0116aadb
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Sun Apr 8 11:15:24 2018 +0200
Y2038: add function __clock_gettime64
* include/time.h: Declare __clock_gettime64().
* ntpl/pthread_clock_gettime.c: Add __pthread_clock_gettime64().
* ntpl/pthread_clock_gettime.c: Make __pthread_clock_gettime()
a wrapper around __pthread_clock_gettime64().
* sysdeps/unix/clock_gettime.c (hp_timing_gettime): Use struct
__timespec64.
* sysdeps/unix/clock_gettime.c (realtime_gettime): Likewise.
* sysdeps/unix/clock_gettime.c: Add __clock_gettime64().
* sysdeps/unix/clock_gettime.c: Make __clock_gettime() a
wrapper around __clock_gettime64().
* sysdeps/unix/sysv/linux/clock_gettime.c: Add 64-bit-time syscall
support.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=158c8a3dbcae1ca80bdb708bb0bf8d1145d1b4aa
commit 158c8a3dbcae1ca80bdb708bb0bf8d1145d1b4aa
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Fri Sep 8 00:41:33 2017 +0200
Y2038: add struct __timespec64
* include/bits/types/struct_timespec64.h:
Include time/bits/types/struct_timespec64.h
* include/time.h (valid_timeval_to_timespec64): Add.
* include/time.h (valid_timespec_to_timespec64): Likewise.
* include/time.h (valid_timespec64_to_timespec): Likewise.
* include/time.h (valid_timespec64_to_timeval): Likewise.
* include/time.h (IS_VALID_NANOSECONDS): Likewise.
* include/time.h (timespec_to_timespec64): Likewise.
* include/time.h (timespec64_to_timespec): Likewise.
* include/time.h (timespec64_to_timeval): Likewise.
* io/fcntl.h: Include bits/types/struct_timespec64.h.
* io/sys/poll.h: Likewise.
* io/sys/stat.h: Likewise.
* misc/sys/select.h: Likewise.
* posix/sched.h: Likewise.
* posix/netdb.h: Likewise.
* rt/aio.h: Likewise.
* rt/mqueue.h: Likewise.
* signal/signal.h: Likewise.
* sysdeps/nptl/pthread.h: Likewise.
* sysdeps/pthread/semaphore.h: Likewise.
* sysdeps/unix/sysv/linux/hppa/pthread.h: Likewise.
* sysvipc/sys/sem.h: Likewise.
* time/Makefile: Add bits/types/struct_timespec64.h
* time/bits/types/struct_itimerspec.h:
Include bits/types/struct_timespec64.h
* time/bits/types/struct_itimerspec64.h: Add.
* time/time.h: Include bits/types/struct_timespec64.h
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=33098a3d802138bc117ecc76d7e8920550d4f7fe
commit 33098a3d802138bc117ecc76d7e8920550d4f7fe
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Sun Jun 10 10:47:12 2018 +0200
Y2038: provide kernel support indication
* New function __y2038_get_kernel_support() returns:
* 0 if the underlying kernel does not support Y2038 at all
* > 0 if the underlying kernel has some support for Y2038
* < 0 if the underlying kernel support for Y2038 is broken
* New function __y2038_set_kernel_support() allows indicating
a kernel's Y2038 support (or support failure)
* Default implementation (covering non-Linux kernels) always
returns 0 (no support).
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=f03fd63f9b4dca5b9c70cc2518e3eeaa20529ec0
commit f03fd63f9b4dca5b9c70cc2518e3eeaa20529ec0
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Wed Mar 29 11:57:53 2017 +0200
Y2038: add function __difftime64
* __difftime: provide a 64-bit-time version (but do not assume
__time64_t is a signed int so that Gnulib can reuse the code)
and make the 32-bit version a wrapper of it.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=680ed897cdb1095aa035f30e08467f77ea1d3594
commit 680ed897cdb1095aa035f30e08467f77ea1d3594
Author: Paul Eggert <eggert@cs.ucla.edu>
Date: Fri Aug 31 23:45:31 2018 -0700
Add support for __time64_t to mktime, timegm
* include/time.h, time/mktime.c, time/timegm.c:
Change externally-visible names to their __xxx64yyy version.
* include/time.h (fits_in_time_t): New static function.
* time/mktime.c (mktime) [_LIBC]: New wrapper function.
* time/timegm.c (timegm) [_LIBC]: New wrapper function.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=32bc55ef9a4cff8c7a8c0825421fd332d570b198
commit 32bc55ef9a4cff8c7a8c0825421fd332d570b198
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Mon Jun 18 21:14:43 2018 +0200
Y2038: make __tz_convert compatible with 64-bit-time
* __tz_compute: Pass timer as a __time64_t rather than time_t.
* __offtime: Pass __timer as a __time64_t value rather than
a const time_t pointer.
* __tz_convert: Likewise.
* localtime: provide a 64-bit time version and make the 32-bit
time version a wrapper of it.
* localtime_r: Likewise.
* ctime: Likewise.
* ctime_r: Likewise.
* gmtime: Likewise.
* gmtime_r: Likewise.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=1575bcfed3b040afb0284b4c4254e0f506da4746
commit 1575bcfed3b040afb0284b4c4254e0f506da4746
Author: Albert ARIBAUD (3ADEV) <albert.aribaud@3adev.fr>
Date: Mon Jun 18 21:14:42 2018 +0200
Y2038: Add 64-bit time for all architectures
* Add macro __TIMESIZE equal to the bit size of time_t.
It equals the architecture __WORDSIZE except for x32
where it equals 64.
* Add type __time64_t which is always 64-bit. On 64-bit
architectures and on x32, it is #defined as time_t.
On other architectures, it has its own definition.
* Replace all occurrences of internal_time_t with
__time64_t.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=63aaf075fff33777b3e3013a5bd90d140f073a8b
commit 63aaf075fff33777b3e3013a5bd90d140f073a8b
Author: Paul Eggert <eggert@cs.ucla.edu>
Date: Sun Sep 9 09:06:25 2018 -0700
Fix mktime localtime offset confusion
[BZ #23603]
* include/time.h (__mktime_internal): The localtime offset is now
of type long int instead of time_t. This is the longstanding type
in glibc, and it is more than enough to represent difference
between localtime and gmtime even if it is 32 bits and time_t is
64. Changing it now will let us avoid an unnecessary change when
time_t is widened to 64 bits on 32-bit platforms.
* time/mktime-internal.h (mktime_offset_t): Now long int.
https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=519466d3616c5af128997c96d02c112b8b47b16b
commit 519466d3616c5af128997c96d02c112b8b47b16b
Author: Paul Eggert <eggert@cs.ucla.edu>
Date: Sun Sep 9 09:06:24 2018 -0700
Merge mktime, timegm from upstream Gnulib
[BZ #23603][BZ #16346]
This fixes some obscure problems with integer overflow.
Although it looks scary, it is almost all a byte-for-byte copy
from Gnulib, and the Gnulib code has been tested reasonably well.
* include/intprops.h: New file, copied from Gnulib.
* include/verify.h, time/mktime-internal.h:
New tiny files, simplified from Gnulib.
* time/mktime.c: Copy from Gnulib. This has the following changes:
Do not include config.h if DEBUG_MKTIME is nonzero.
Include stdbool.h, intprops.h, verify.h.
Include string.h only if needed.
Include stdlib.h on MS-Windows.
Include mktime-internal.h.
(DEBUG_MKTIME): Default to 0, and simplify later uses.
(NEED_MKTIME_INTERNAL, NEED_MKTIME_WINDOWS)
(NEED_MKTIME_WORKING): Give default values to pacify -Wundef,
which glibc uses. Default NEED_MKTIME_WORKING to DEBUG_MKTIME, to
simplify later conditionals; default the others to zero. Use
these conditionals to express only the code needed on the current
platform. In uses of these conditionals, explicitly spell out how
_LIBC affects things, so it’s easier to review from a glibc
viewpoint.
(WRAPV): Remove; no longer needed now that we have
systematic overflow checking.
(my_tzset, __tzset) [!_LIBC]: New function and macro, to better
compartmentalize tzset issues. Move system-dependent tzsettish
code here from mktime.
(verify): Remove; now done by verify.h. All uses changed.
(long_int): Use a more-conservative definition, to avoid
integer overflow.
(SHR): Remove, replacing with ...
(shr): New function, which means we needn’t worry about side
effects in args, and conversion analysis is simpler.
(TYPE_IS_INTEGER, TYPE_TWOS_COMPLEMENT, TYPE_SIGNED, TYPE_MINIMUM)
(TYPE_MAXIMUM, TIME_T_MIN, TIME_T_MAX, TIME_T_MIDPOINT)
(time_t_avg, time_t_add_ok): Remove.
(mktime_min, mktime_max): New constants.
(leapyear, isdst_differ): Use bool for booleans.
(ydhms_diff, guess_time_tm, ranged_convert, __mktime_internal):
Use long_int, not time_t, for mktime differences.
(long_int_avg): New function, replacing time_t_avg.
INT_ADD_WRAPV replaces time_t_add_ok.
(guess_time_tm): 6th arg is now long_int, not time_t const *.
All uses changed.
(convert_time): New function.
(ranged_convert): Use it.
(__mktime_internal): Last arg now points to mktime_offset_t, not
time_t. All uses changed. This is a no-op on glibc, where
mktime_offset_t is always time_t. Use int, not time_t, for UTC
offset guess. Directly check for integer overflow instead of
using a heuristic that works only 99.9...% of the time.
Access *OFFSET only once, to avoid an unlikely race if the
compiler delays a load and if this cascades into a signed integer
overflow.
(mktime): Move tzsettish code to my_tzset, and move
localtime_offset to within mktime so that it doesn’t
need a separate ifdef.
(main) [DEBUG_MKTIME]: Speed up by using localtime_r
instead of localtime.
* time/timegm.c: Copy from Gnulib. This has the following changes:
Include mktime-internal.h.
[!_LIBC]: Include config.h and time.h. Do not include
timegm.h or time_r.h. Make __mktime_internal a macro,
and include mktime-internal.h to get its declaration.
(timegm): Temporary is now mktime_offset_t, not time_t.
This affects only Gnulib.
-----------------------------------------------------------------------
--
You are receiving this mail because:
You are on the CC list for the bug.