Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Sat, 2 Nov 2019 17:37:15 -0400
From: Rich Felker <dalias@...c.org>
To: musl@...ts.openwall.com
Subject: Re: [PATCH v3] remaining steps for time64 switchover

On Sat, Nov 02, 2019 at 12:34:26PM -0400, Rich Felker wrote:
> On Fri, Nov 01, 2019 at 09:39:11PM -0400, Rich Felker wrote:
> > A couple errors in the v2 patchset motivated me to factor the changes
> > to sys/socket.h and arch/generic/ioctl.h out of the main switchover
> > commit, so that the latter only touches arch dirs, and acts uniformly
> > on them. The final result with all patches applied is almost the same,
> > except now the powerpc and mips[n32] socket.h bits omit the time64
> > socket options, letting the top-level header's defaults take effect.
> > 
> > All archs I have toolchains handy for, which includes the oddballs
> > (mips, powerpc) and a few 64-bit ones, have been tested to build
> > successfully and get the right values of the sockopt and ioctl macros,
> > utilizing a horrible hack (uncommitted of course) dropped into the
> > source tree while building.
> > 
> > Hopefully this is "final" now and ready for push.
> 
> compat/time32/adjtimex_time32.c was inconsistent with what was later
> done for struct timex (see commit
> 928674dcd0c5c643b8a4440466103be841151f5e). Two very helpful reviewers
> on #musl pointed this out, and I'll be squashing the attached fix. (I
> tried to avoid having many time32 compat shims call each other rather
> than directly calling the real functions in libc, but this one would
> involve a lot of duplication (and the duplication initially led to
> this error) so...

And a few more. The first two clearly cause wrong behavior. The last
(__xstat) just causes undefined behavior by calling the
__*stat*_time32 functions without a prototype with wrong pointer type.
(The same issue also applies in theory between the legacy caller and
the shims, but it's inevitable, and is only visible with LTO between
the old .o files and new libc.a or similar, which just can't be a
supported usage. OTOH the libc-internal mismatch could break LTO of
libc.so.)

I'll be squashing these with the compat shims commit, and pushing real
soon now.

Rich

View attachment "0001-fixup-difftime32.patch" of type "text/plain" (635 bytes)

View attachment "0002-compat-fixup-pthread_timedjoin_np_time32.patch" of type "text/plain" (931 bytes)

View attachment "0003-compat-fixup-__xstat.patch" of type "text/plain" (1212 bytes)

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.