public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: "Albert ARIBAUD (3ADEV)" <albert.aribaud@3adev.fr>
To: libc-alpha@sourceware.org
Cc: "Albert ARIBAUD (3ADEV)" <albert.aribaud@3adev.fr>
Subject: [RFC PATCH 00/52] Make GLIBC Y2038-proof
Date: Thu, 07 Sep 2017 22:42:00 -0000	[thread overview]
Message-ID: <20170907224219.12483-1-albert.aribaud@3adev.fr> (raw)

This series implements Y2038-proof types, implementation, internal
functions, and APIs. For more information, see documentation at
https://sourceware.org/glibc/wiki/Y2038ProofnessDesign

Each patch in this series except the last add one type or function,
with a few exception where several functions are implemented as a whole.

The last patch enables the _TIME_BITS mechanism. Once this patch is
applied, API header files will will use 64-bit time if _TIME_BITS is
defined and equal to 64 prior to their inclusion, and conversively,
will use 32-bit time if _TIME_BITS is different from 64 or does not
exist.

Albert ARIBAUD (3ADEV) (52):
  Y2038: add type __time64_t
  Y2038: add function __difftime64
  Y2038: add functions using struct tm
  Y2038: add function __mktime64 (and timelocal)
  Y2038: add function __timegm64
  Y2038: add struct __timespec64
  Y2038: add function __clock_gettime64
  Y2038: add function __clock_settime64
  Y2038: add function __clock_getres64
  Y2038: add function __clock_nanosleep64
  Y2038: add function __timespec_get64
  Y2038: add function __futimens64
  Y2038: add function __utimensat64
  Y2038: add function __sigtimedwait64
  Y2038: add struct __timeval64
  Y2038: add function __futimes64
  Y2038: add function __lutimes64
  Y2038: add struct __itimerspec64
  Y2038: add function __timer_gettime64
  Y2038: add function __timer_settime64
  Y2038: add function __timerfd_gettime64
  Y2038: add function __timerfd_settime64
  Y2038: add struct __stat64_t64
  Y2038: add function __fstat64_t64 (and __fxstat64_t64)
  Y2038: add function __stat64_t64 (and __xstat64_t64)
  Y2038: add function __lstat64_t64 (and __lxstat64_t64)
  Y2038: add function __fstatat64_t64 (and __fxstatat_t64)
  Y2038: add function __time_t64
  Y2038: add function __stime_t64
  Y2038: add function __utimes_t64
  Y2038: add function __gettimeofday_t64
  Y2038: add function __settimeofday_t64
  Y2038: add function __mq_timedsend_t64
  Y2038: add function __mq_timedreceive_t64
  Y2038: add function __msgctl_t64
  Y2038: add function __sched_rr_get_interval_t64
  Y2038: add function __nanosleep64_t64
  Y2038: add function __adjtime_t64
  Y2038: add function __utime_t64
  Y2038: add struct __itimerval_t64
  Y2038: add function __getitimer_t64
  Y2038: add function __setitimer_t64
  Y2038: add functions using futexes
  Y2038: add function __getrusage_t64
  Y2038: add struct __ntp_timeval_t64
  Y2038: add function __ntp_gettime_t64
  Y2038: add function __ntp_gettimex_t64
  Y2038: add function __adjtimex_t64 (and __ntp_adjtime_t64)
  Y2038: add function pselect
  Y2038: add function select
  Y2038: add RPC functions
  Y2038: add _TIME_BITS==64 support

 bits/typesizes.h                             |   1 +
 include/features.h                           |   4 +
 include/sys/select.h                         |  15 +
 include/sys/stat.h                           |  35 ++
 include/sys/time.h                           |   6 +
 include/time.h                               | 130 +++++-
 include/utime.h                              |   7 +
 io/Versions                                  |  11 +
 io/fstat64.c                                 |   7 +
 io/fstatat64.c                               |   7 +
 io/futimens.c                                |   9 +
 io/lstat64.c                                 |   7 +
 io/stat64.c                                  |   7 +
 io/sys/stat.h                                |  75 +++-
 io/utime.c                                   |  16 +
 io/utime.h                                   |  15 +-
 io/utimensat.c                               |   9 +
 misc/futimes.c                               |   9 +
 misc/lutimes.c                               |   8 +
 misc/sys/select.h                            |  25 ++
 misc/utimes.c                                |  15 +
 nptl/Versions                                |  11 +
 nptl/lll_timedlock_wait.c                    |  37 ++
 nptl/pthread_cond_wait.c                     | 285 +++++++++++++
 nptl/pthread_mutex_timedlock.c               | 616 +++++++++++++++++++++++++++
 nptl/pthread_rwlock_common.c                 | 591 +++++++++++++++++++++++++
 nptl/pthread_rwlock_timedrdlock.c            |  19 +
 nptl/pthread_rwlock_timedwrlock.c            |  19 +
 nptl/sem_timedwait.c                         |  18 +
 nptl/sem_wait.c                              |  24 ++
 nptl/sem_waitcommon.c                        | 172 ++++++++
 posix/Makefile                               |   3 +-
 posix/Versions                               |   7 +
 posix/bits/types.h                           |   3 +-
 posix/sched.h                                |   9 +
 posix/sched_rr_gi64.c                        |  51 +++
 resource/Makefile                            |   2 +-
 resource/Versions                            |   7 +
 resource/getrusage64.c                       | 185 ++++++++
 resource/sys/resource.h                      |   9 +
 rt/Makefile                                  |   6 +-
 rt/Versions                                  |  13 +
 rt/mq_timedreceive_t64.c                     |  45 ++
 rt/mq_timedsend_t64.c                        |  44 ++
 rt/mqueue.h                                  |  22 +
 rt/timerfd_gettime64.c                       |  28 ++
 rt/timerfd_settime64.c                       |  29 ++
 signal/signal.h                              |  10 +
 signal/sigtimedwait.c                        |  10 +
 sunrpc/clnt_udp.c                            |  27 ++
 sunrpc/pmap_rmt.c                            |  23 +
 sunrpc/rpc/clnt.h                            |  24 ++
 sunrpc/rpc/pmap_clnt.h                       |  15 +
 sysdeps/nptl/aio_misc.h                      |  39 ++
 sysdeps/nptl/lowlevellock.h                  |  17 +
 sysdeps/nptl/pthread.h                       |  41 ++
 sysdeps/posix/clock_getres.c                 |  87 +++-
 sysdeps/posix/time.c                         |  26 ++
 sysdeps/posix/utime.c                        |  22 +
 sysdeps/pthread/aio_suspend.c                | 164 +++++++
 sysdeps/pthread/semaphore.h                  |  10 +
 sysdeps/unix/clock_gettime.c                 |  46 ++
 sysdeps/unix/clock_settime.c                 |  56 ++-
 sysdeps/unix/sysv/linux/Versions             |   9 +
 sysdeps/unix/sysv/linux/adjtime.c            | 124 ++++++
 sysdeps/unix/sysv/linux/arm/Versions         |  24 ++
 sysdeps/unix/sysv/linux/arm/init-first.c     |  15 +
 sysdeps/unix/sysv/linux/arm/libc-vdso.h      |   1 +
 sysdeps/unix/sysv/linux/bits/msq.h           |  20 +
 sysdeps/unix/sysv/linux/bits/stat.h          |   6 +-
 sysdeps/unix/sysv/linux/clock_getres.c       |  40 ++
 sysdeps/unix/sysv/linux/clock_gettime.c      |  44 ++
 sysdeps/unix/sysv/linux/clock_nanosleep.c    |  87 +++-
 sysdeps/unix/sysv/linux/clock_settime.c      |  23 +
 sysdeps/unix/sysv/linux/futex-internal.h     | 123 ++++++
 sysdeps/unix/sysv/linux/futimens.c           |  38 ++
 sysdeps/unix/sysv/linux/futimes.c            |  52 +++
 sysdeps/unix/sysv/linux/fxstat64.c           |  50 +++
 sysdeps/unix/sysv/linux/fxstatat64.c         |  54 +++
 sysdeps/unix/sysv/linux/gettimeofday.c       |  26 ++
 sysdeps/unix/sysv/linux/lowlevellock-futex.h |  22 +
 sysdeps/unix/sysv/linux/lutimes.c            |  53 +++
 sysdeps/unix/sysv/linux/lxstat64.c           |  50 +++
 sysdeps/unix/sysv/linux/msgctl.c             |  72 ++++
 sysdeps/unix/sysv/linux/ntp_gettime.c        |  25 ++
 sysdeps/unix/sysv/linux/ntp_gettimex.c       |  31 ++
 sysdeps/unix/sysv/linux/pselect.c            |  61 +++
 sysdeps/unix/sysv/linux/select.c             |  66 +++
 sysdeps/unix/sysv/linux/settimeofday64.c     |  44 ++
 sysdeps/unix/sysv/linux/sigtimedwait.c       |  75 ++++
 sysdeps/unix/sysv/linux/stime.c              |  70 +++
 sysdeps/unix/sysv/linux/sys/timerfd.h        |  19 +
 sysdeps/unix/sysv/linux/sys/timex.h          |  32 +-
 sysdeps/unix/sysv/linux/time.c               |  22 +
 sysdeps/unix/sysv/linux/timer_gettime.c      |  24 ++
 sysdeps/unix/sysv/linux/timer_settime.c      |  49 +++
 sysdeps/unix/sysv/linux/timerfd_gettime64.c  |  44 ++
 sysdeps/unix/sysv/linux/timerfd_settime64.c  |  71 +++
 sysdeps/unix/sysv/linux/timespec_get.c       |  35 ++
 sysdeps/unix/sysv/linux/utimensat.c          |  36 ++
 sysdeps/unix/sysv/linux/utimes.c             |  31 ++
 sysdeps/unix/sysv/linux/xstat64.c            |  50 +++
 sysvipc/sys/msg.h                            |   9 +
 time/Makefile                                |   4 +-
 time/Versions                                |  16 +
 time/adjtime.c                               |  10 +
 time/bits/types/struct_timespec.h            |  17 +
 time/bits/types/struct_timeval.h             |   9 +
 time/bits/types/time_t.h                     |   4 +
 time/ctime.c                                 |  10 +
 time/ctime_r.c                               |   9 +
 time/difftime.c                              |   9 +
 time/getitimer64.c                           |  51 +++
 time/gettimeofday.c                          |  10 +
 time/gmtime.c                                |  15 +
 time/localtime.c                             |  17 +
 time/mktime.c                                | 403 ++++++++++++++++++
 time/nanosleep64.c                           |  61 +++
 time/offtime.c                               |  64 +++
 time/setitimer64.c                           |  69 +++
 time/settimeofday.c                          |   8 +
 time/stime.c                                 |  17 +
 time/sys/time.h                              |  74 ++++
 time/time.c                                  |  13 +
 time/time.h                                  | 161 ++++++-
 time/timegm.c                                |  11 +
 time/tzfile.c                                |   4 +-
 time/tzset.c                                 |  64 ++-
 128 files changed, 6112 insertions(+), 35 deletions(-)
 create mode 100644 posix/sched_rr_gi64.c
 create mode 100644 resource/getrusage64.c
 create mode 100644 rt/mq_timedreceive_t64.c
 create mode 100644 rt/mq_timedsend_t64.c
 create mode 100644 rt/timerfd_gettime64.c
 create mode 100644 rt/timerfd_settime64.c
 create mode 100644 sysdeps/unix/sysv/linux/settimeofday64.c
 create mode 100644 sysdeps/unix/sysv/linux/stime.c
 create mode 100644 sysdeps/unix/sysv/linux/timerfd_gettime64.c
 create mode 100644 sysdeps/unix/sysv/linux/timerfd_settime64.c
 create mode 100644 time/getitimer64.c
 create mode 100644 time/nanosleep64.c
 create mode 100644 time/setitimer64.c

-- 
2.11.0

             reply	other threads:[~2017-09-07 22:42 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-07 22:42 Albert ARIBAUD (3ADEV) [this message]
2017-09-07 22:42 ` [RFC PATCH 01/52] Y2038: add type __time64_t Albert ARIBAUD (3ADEV)
2017-09-07 22:42   ` [RFC PATCH 02/52] Y2038: add function __difftime64 Albert ARIBAUD (3ADEV)
2017-09-07 22:42     ` [RFC PATCH 03/52] Y2038: add functions using struct tm Albert ARIBAUD (3ADEV)
2017-09-07 22:42       ` [RFC PATCH 04/52] Y2038: add function __mktime64 (and timelocal) Albert ARIBAUD (3ADEV)
2017-09-07 22:42         ` [RFC PATCH 05/52] Y2038: add function __timegm64 Albert ARIBAUD (3ADEV)
2017-09-07 22:42           ` [RFC PATCH 06/52] Y2038: add struct __timespec64 Albert ARIBAUD (3ADEV)
2017-09-07 22:42             ` [RFC PATCH 07/52] Y2038: add function __clock_gettime64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43               ` [RFC PATCH 08/52] Y2038: add function __clock_settime64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43                 ` [RFC PATCH 09/52] Y2038: add function __clock_getres64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43                   ` [RFC PATCH 10/52] Y2038: add function __clock_nanosleep64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43                     ` [RFC PATCH 11/52] Y2038: add function __timespec_get64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43                       ` [RFC PATCH 12/52] Y2038: add function __futimens64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43                         ` [RFC PATCH 13/52] Y2038: add function __utimensat64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43                           ` [RFC PATCH 14/52] Y2038: add function __sigtimedwait64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43                             ` [RFC PATCH 15/52] Y2038: add struct __timeval64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43                               ` [RFC PATCH 16/52] Y2038: add function __futimes64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43                                 ` [RFC PATCH 17/52] Y2038: add function __lutimes64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43                                   ` [RFC PATCH 18/52] Y2038: add struct __itimerspec64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43                                     ` [RFC PATCH 19/52] Y2038: add function __timer_gettime64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43                                       ` [RFC PATCH 20/52] Y2038: add function __timer_settime64 Albert ARIBAUD (3ADEV)
2017-09-07 22:43                                         ` [RFC PATCH 21/52] Y2038: add function __timerfd_gettime64 Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                           ` [RFC PATCH 22/52] Y2038: add function __timerfd_settime64 Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                             ` [RFC PATCH 23/52] Y2038: add struct __stat64_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                               ` [RFC PATCH 24/52] Y2038: add function __fstat64_t64 (and __fxstat64_t64) Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                                 ` [RFC PATCH 25/52] Y2038: add function __stat64_t64 (and __xstat64_t64) Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                                   ` [RFC PATCH 26/52] Y2038: add function __lstat64_t64 (and __lxstat64_t64) Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                                     ` [RFC PATCH 27/52] Y2038: add function __fstatat64_t64 (and __fxstatat_t64) Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                                       ` [RFC PATCH 28/52] Y2038: add function __time_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                                         ` [RFC PATCH 29/52] Y2038: add function __stime_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                                           ` [RFC PATCH 30/52] Y2038: add function __utimes_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                                             ` [RFC PATCH 31/52] Y2038: add function __gettimeofday_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                                               ` [RFC PATCH 32/52] Y2038: add function __settimeofday_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                                                 ` [RFC PATCH 33/52] Y2038: add function __mq_timedsend_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                                                   ` [RFC PATCH 34/52] Y2038: add function __mq_timedreceive_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:44                                                                     ` [RFC PATCH 35/52] Y2038: add function __msgctl_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:45                                                                       ` [RFC PATCH 36/52] Y2038: add function __sched_rr_get_interval_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:45                                                                         ` [RFC PATCH 37/52] Y2038: add function __nanosleep64_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:45                                                                           ` [RFC PATCH 38/52] Y2038: add function __adjtime_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:45                                                                             ` [RFC PATCH 39/52] Y2038: add function __utime_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:45                                                                               ` [RFC PATCH 40/52] Y2038: add struct __itimerval_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:45                                                                                 ` [RFC PATCH 41/52] Y2038: add function __getitimer_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:45                                                                                   ` [RFC PATCH 42/52] Y2038: add function __setitimer_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:45                                                                                     ` [RFC PATCH 43/52] Y2038: add functions using futexes Albert ARIBAUD (3ADEV)
2017-09-07 22:45                                                                                       ` [RFC PATCH 44/52] Y2038: add function __getrusage_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:45                                                                                         ` [RFC PATCH 45/52] Y2038: add struct __ntp_timeval_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:45                                                                                           ` [RFC PATCH 46/52] Y2038: add function __ntp_gettime_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:45                                                                                             ` [RFC PATCH 47/52] Y2038: add function __ntp_gettimex_t64 Albert ARIBAUD (3ADEV)
2017-09-07 22:45                                                                                               ` [RFC PATCH 48/52] Y2038: add function __adjtimex_t64 (and __ntp_adjtime_t64) Albert ARIBAUD (3ADEV)
2017-09-07 22:46                                                                                                 ` [RFC PATCH 49/52] Y2038: add function pselect Albert ARIBAUD (3ADEV)
2017-09-08 17:49                                                                                                   ` [RFC PATCH 50/52] Y2038: add function select Albert ARIBAUD (3ADEV)
2017-09-08 17:49                                                                                                     ` [RFC PATCH 51/52] Y2038: add RPC functions Albert ARIBAUD (3ADEV)
2017-09-08 17:49                                                                                                       ` [RFC PATCH 52/52] Y2038: add _TIME_BITS==64 support Albert ARIBAUD (3ADEV)
2017-09-08 19:47                                                                                                         ` Joseph Myers
2017-09-08 19:47                                                                                                       ` [RFC PATCH 51/52] Y2038: add RPC functions Joseph Myers
2017-09-08 19:59                                                                                                       ` Paul Eggert
2017-09-09 14:37                                                                                                         ` Albert ARIBAUD
2017-09-11  6:33                                                                                                           ` Paul Eggert
2017-09-11  7:06                                                                                                         ` Paul Eggert
2017-09-11 14:07                                                                                                           ` Paul Eggert
2017-09-11 15:59                                                                                                             ` Albert ARIBAUD
2017-09-07 23:21 ` [RFC PATCH 00/52] Make GLIBC Y2038-proof Joseph Myers
2017-09-08 16:19   ` Zack Weinberg
2017-09-08 16:43     ` Joseph Myers
2017-09-08 16:54       ` Paul Eggert
2017-09-08 17:01       ` Zack Weinberg
2017-09-08 17:24         ` Joseph Myers
2017-09-08 18:32           ` Zack Weinberg
2017-09-08 17:42     ` Albert ARIBAUD
2017-09-08 17:59       ` Joseph Myers
2017-09-08 18:16         ` Albert ARIBAUD
2017-09-08 18:36           ` Zack Weinberg
2017-09-08 17:08   ` Albert ARIBAUD
2017-09-08 17:26     ` Joseph Myers
2017-09-08 19:19       ` Albert ARIBAUD
2017-09-08  4:23 ` Albert ARIBAUD

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170907224219.12483-1-albert.aribaud@3adev.fr \
    --to=albert.aribaud@3adev.fr \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).