Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/lib/libc/time

On Thu, Dec 26, 2013 at 01:34:28PM -0500, Christos Zoulas wrote:
> Module Name:  src
> Committed By: christos
> Date:         Thu Dec 26 18:34:28 UTC 2013
> f:
>     The types of the global variables 'timezone' and 'altzone' (if present)
>     have been changed back to 'long'.  This is required for 'timezone'
>     by POSIX, and for 'altzone' by common practice, e.g., Solaris 11.
>     These variables were originally 'long' in the tz code, but were
>     mistakenly changed to 'time_t' in 1987; nobody reported the
>     incompatibility until now.  The difference matters on x32, where
>     'long' is 32 bits and 'time_t' is 64.  (Thanks to Elliott Hughes.)

Doesn't that completely break binary compatibility for any applications
that access them as 64bit data items on 32bit systems?

On i386 (and other le systems) this can be fixed be ensuring there
are 4 zero bytes following the data.
In sparc (and other be systems) it requires renaming of the symbol itself.
I presume such a rename was done when time_t was extended to 64bits?


David Laight:

Home | Main Index | Thread Index | Old Index