This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

y2038: Status of Y2038 conversion for glibc


Dear Glibc Community,

I would like to share the current state of development and potentially
avoid effort duplication.

Please find the status update info regarding the effort to make glibc
supporting 64 bit time on systems with TIMESIZE != 64 (i.e. 32 bit ARM).

The most up to date setup - with "upstream first" philosophy applied
(including patch to provide support for -D_TIME_BITS=64) to glibc
can be found at [1].

Following functions to support 64 bit syscalls have been converted:

    - clock_gettime64
    - clock_settime64
    - clock_getres64
    - utimensat
    - futimens
    - clock_nanosleep_time64
    - ppoll64
    - timer_gettime
    - timer_settime
    - timerfd_gettime (WIP)
    - timerfd_settime (WIP) [2]

    - pselect64 conversion has been postponed until we advance with
      minimal supported glibc version (now it is 3.2 , we need to be >
      3.15). After 3.15 it would be far more easier to do the
      conversion.

It is possible to test this effort with QEMU and OE/Yocto. Detailed
tutorial in README file [3].

TO DO:

0. Use other 64 bit syscalls - as indicated in [4].

1. Convert in-glibc usage of internal clock functions (e.g.
    __clock_gettime()) to __clock_gettime64(), which are Y2038 safe on
    32 bit systems with TIMESIZE==32.

    Potential issue - making those functions as hidden and in the same
    time accessible by Y2038 safe systems (e.g. __clock_gettime64()).

2. The statx (and friends) conversion to Y2038 (Alistair also did some
   work there)

3. Continue replacing Y2038 unsafe functions (like gettimeofday) with
   internal, safe representation (which would use __clock_gettime64())
   as was done by Zack and Adhemerval.

4. Prepare for "big switch" to add support for -D_TIME_BITS=64 in glibc
   - I'm mostly concerned with preparing a solid test sute.


Please do not hesitate to provide input about any other ongoing work in
this area. Please also forward this mail to any potentially interested
parties.

Last, but not least, I would like to give a big thank to all community
members involved into the development and review process.


Links:

[1] -
https://github.com/lmajewski/y2038_glibc/commits/glibc_timerfd_settime_gettime-conversion-v1

[2] - posted for review:
https://patchwork.ozlabs.org/patch/1205307/

[3] - https://github.com/lmajewski/meta-y2038

[4] -
https://elixir.bootlin.com/linux/v5.3-rc5/source/arch/arm/tools/syscall.tbl#L420



Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de

Attachment: pgpIOZCL8hzJA.pgp
Description: OpenPGP digital signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]