mirror of git://sourceware.org/git/glibc.git
powerpc: Fix powerpc32/power7 memchr for large input sizes
The same error fixed in commit b224637928
happens in the 32-bit implementation of memchr for power7.
This patch adopts the same solution, with a minimal change: it
implements a saturated addition where overflows sets the maximum pointer
size to UINTPTR_MAX.
This commit is contained in:
parent
9314d3545e
commit
5e628dd118
|
@ -1,3 +1,8 @@
|
|||
2016-12-28 Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/powerpc32/power7/memchr.S (__memchr): Avoid an
|
||||
overflow in pointer addition.
|
||||
|
||||
2016-12-28 Rajalakshmi Srinivasaraghavan <raji@linux.vnet.ibm.com>
|
||||
|
||||
* sysdeps/powerpc/powerpc64/multiarch/Makefile
|
||||
|
|
|
@ -26,7 +26,16 @@ ENTRY (__memchr)
|
|||
dcbt 0,r3
|
||||
clrrwi r8,r3,2
|
||||
insrwi r4,r4,8,16 /* Replicate byte to word. */
|
||||
add r7,r3,r5 /* Calculate the last acceptable address. */
|
||||
|
||||
/* Calculate the last acceptable address and check for possible
|
||||
addition overflow by using satured math:
|
||||
r7 = r3 + r5
|
||||
r7 |= -(r7 < x) */
|
||||
add r7,r3,r5
|
||||
subfc r6,r3,r7
|
||||
subfe r9,r9,r9
|
||||
or r7,r7,r9
|
||||
|
||||
insrwi r4,r4,16,0
|
||||
cmplwi r5,16
|
||||
li r9, -1
|
||||
|
|
Loading…
Reference in New Issue