Fixes will be in Go 1.16.7 and 1.15.15. Backports are no longer being
done for Go 1.14.
On 8/2/21 1:18 AM, Michael Ellerman wrote:
"Paul Murphy" <m...@ibm.com> writes:
(My apologies for however IBM's email client munges this)
I heard it is going to be in Go 1.16.7, but I do not know much about Go.
Maybe the folks in Cc can chime in.
We have backports primed and ready for the next point release. They
are waiting on the release manager to cherrypick them.
OK good, that is still the correct fix in the long run.
I think we were aware that our VDSO usage may have exploited some
peculiarities in how the ppc64 version was constructed (i.e hand
written assembly which just didn't happen to clobber R30).
Yeah I was "somewhat surprised" that Go thought it could use r30 like
that across a VDSO call :D
But to be fair the ABI of the VDSO has always been a little fishy,
because the entry points pretend to be a transparent wrapper around
system calls, but then in a case like this are not.
Go up to this point has only used the vdso function __kernel_clock_gettime; it
is the only entry point which would need to explicitly avoid R30 for
Go's sake.
I thought about limiting the workaround to just that code, but it seemed
silly and likely to come back to bite us. Once the compilers decides to
spill a non-volatile there are plenty of other ones to choose from.
cheers