aboutsummaryrefslogtreecommitdiff
path: root/bits/dirent.h
diff options
context:
space:
mode:
authorSteve Ellcey <sellcey@imgtec.com>2016-01-28 01:52:05 +0000
committerJoseph Myers <joseph@codesourcery.com>2016-01-28 01:52:05 +0000
commit8a71d2e27fd067a85059aefb93c9ce83142b03e9 (patch)
tree6bc2c457a8db4952039386fc489b3e5827424412 /bits/dirent.h
parent4fb66fac3a7bfe152651610a498c988a75fc316d (diff)
downloadglibc-8a71d2e27fd067a85059aefb93c9ce83142b03e9.tar
glibc-8a71d2e27fd067a85059aefb93c9ce83142b03e9.tar.gz
glibc-8a71d2e27fd067a85059aefb93c9ce83142b03e9.tar.bz2
glibc-8a71d2e27fd067a85059aefb93c9ce83142b03e9.zip
Fix MIPS64 memcpy regression.
The MIPS memcpy optimizations at <https://sourceware.org/ml/libc-alpha/2015-10/msg00597.html> introduced a bug causing many string function tests to fail with segfaults for n32 and n64: FAIL: string/stratcliff FAIL: string/test-bcopy FAIL: string/test-memccpy FAIL: string/test-memcmp FAIL: string/test-memcpy FAIL: string/test-memmove FAIL: string/test-mempcpy FAIL: string/test-stpncpy FAIL: string/test-strncmp FAIL: string/test-strncpy (Some failures in other directories could also be caused by this bug.) The problem is that after the check for whether a word of input is left that can be copied as a word before moving to byte copies, a load can occur in the branch delay slot, resulting in a segfault if we are at the end of a page and the following page is unmapped. I don't see how this would have passed the tests as reported in the original patch posting (different kernel configurations affecting the code setting up unmapped pages, maybe?), since the tests in question don't appear to have changed recently. This patch moves a later instruction into the delay slot, as suggested at <https://sourceware.org/ml/libc-alpha/2016-01/msg00584.html>. Tested for n32 and n64. 2016-01-28 Steve Ellcey <sellcey@imgtec.com> Joseph Myers <joseph@codesourcery.com> * sysdeps/mips/memcpy.S (MEMCPY_NAME) [USE_DOUBLE]: Avoid word load in branch delay slot when less than a word of input left.
Diffstat (limited to 'bits/dirent.h')
0 files changed, 0 insertions, 0 deletions