[PATCH] S390: Do not clobber r13 with memcpy on 31bit with copies >1MB.
Stefan Liebler
stli@linux.vnet.ibm.com
Tue Jul 19 07:51:00 GMT 2016
PING.
If there is no objection, I'll commit this patch the next days
as it is an s390 related regression compared to glibc 2.23 release.
On 07/13/2016 12:21 PM, Stefan Liebler wrote:
> Hi,
>
> If the default memcpy variant is called with a length of >1MB on 31bit,
> r13 is clobbered as the algorithm is switching to mvcle. The mvcle code
> returns without restoring r13. All other cases are restoring r13.
>
> If memcpy is called from outside libc the ifunc resolver will only
> select this variant if running on machines older than z10.
> Otherwise or if memcpy is called from inside libc,
> this default memcpy variant is called.
> The testcase timezone/tst-tzset is triggering this issue in some
> combinations of gcc versions and optimization levels.
>
> This bug was introduced in commit 04bb21ac93e90d7696bcaf8febe2b2dd2d83585a
> and thus is a regression compared to glibc 2.23 release. It should
> be committed before glibc 2.24 release.
>
> This patch removes the usage of r13 at all. Thus it is not saved
> and restored. The base address for execute-instruction is now stored
> in r5 which is obtained after r5 is not needed anymore as
> 256byte block counter.
>
> Okay to commit before release 2.24?
>
> Bye
> Stefan
>
> ChangeLog:
>
> * sysdeps/s390/s390-32/memcpy.S (memcpy): Eliminate the usage
> of r13 as it is not restored in mvcle case.
More information about the Libc-alpha
mailing list