diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc32/power7/memrchr.S | 4 | ||||
-rw-r--r-- | sysdeps/powerpc/powerpc64/power7/memrchr.S | 4 |
3 files changed, 10 insertions, 4 deletions
@@ -1,5 +1,11 @@ 2013-09-05 Adhemerval Zanella <azanella@linux.vnet.ibm.com> + * sysdeps/powerpc/powerpc32/power7/memrchr.S (__memrchr): Fix invalid + memory access for final bytes in some large inputs. + * sysdeps/powerpc/powerpc64/power7/memrchr.S (__memrchr): Likewise. + +2013-09-05 Adhemerval Zanella <azanella@linux.vnet.ibm.com> + * string/test-memrchr.c: New file. * string/test-memrchr-ifunc.c: New file. * string/Makefile: Add new memrchr testcase. diff --git a/sysdeps/powerpc/powerpc32/power7/memrchr.S b/sysdeps/powerpc/powerpc32/power7/memrchr.S index d1e3fda..defd832 100644 --- a/sysdeps/powerpc/powerpc32/power7/memrchr.S +++ b/sysdeps/powerpc/powerpc32/power7/memrchr.S @@ -101,8 +101,8 @@ L(loop): /* We're here because the counter reached 0, and that means we didn't have any matches for BYTE in the whole range. Just return the original range. */ - addi r9,r8,4 - cmplw cr6,r9,r7 + addi r8,r8,4 + cmplw cr6,r8,r7 bgt cr6,L(loop_small) b L(null) diff --git a/sysdeps/powerpc/powerpc64/power7/memrchr.S b/sysdeps/powerpc/powerpc64/power7/memrchr.S index d24fbbb..c499952 100644 --- a/sysdeps/powerpc/powerpc64/power7/memrchr.S +++ b/sysdeps/powerpc/powerpc64/power7/memrchr.S @@ -102,8 +102,8 @@ L(loop): /* We're here because the counter reached 0, and that means we didn't have any matches for BYTE in the whole range. Just return the original range. */ - addi r9,r8,8 - cmpld cr6,r9,r7 + addi r8,r8,8 + cmpld cr6,r8,r7 bgt cr6,L(loop_small) b L(null) |