d4b2a692a8
the changes made in glibc upstream commit 23d27709a423aec32821e9a5198a10267107bae2 cause segmentation faults on at least some i686 processors. This commit reverts these changes to resolve the issue on affected systems until there's an upstream fix.
42 lines
1.4 KiB
Diff
42 lines
1.4 KiB
Diff
diff --git a/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S b/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
|
|
index dd316486e6..c035329ece 100644
|
|
--- a/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
|
|
+++ b/sysdeps/i386/i686/multiarch/memchr-sse2-bsf.S
|
|
@@ -149,15 +149,9 @@ L(crosscache):
|
|
.p2align 4
|
|
L(unaligned_no_match):
|
|
# ifndef USE_AS_RAWMEMCHR
|
|
- /* Calculate the last acceptable address and check for possible
|
|
- addition overflow by using satured math:
|
|
- edx = ecx + edx
|
|
- edx |= -(edx < ecx) */
|
|
- add %ecx, %edx
|
|
- sbb %eax, %eax
|
|
- or %eax, %edx
|
|
sub $16, %edx
|
|
- jbe L(return_null)
|
|
+ add %ecx, %edx
|
|
+ jle L(return_null)
|
|
add $16, %edi
|
|
# else
|
|
add $16, %edx
|
|
diff --git a/sysdeps/i386/i686/multiarch/memchr-sse2.S b/sysdeps/i386/i686/multiarch/memchr-sse2.S
|
|
index 910679cfc0..f1a11b5c67 100644
|
|
--- a/sysdeps/i386/i686/multiarch/memchr-sse2.S
|
|
+++ b/sysdeps/i386/i686/multiarch/memchr-sse2.S
|
|
@@ -118,14 +118,8 @@ L(crosscache):
|
|
# ifndef USE_AS_RAWMEMCHR
|
|
jnz L(match_case2_prolog1)
|
|
lea -16(%edx), %edx
|
|
- /* Calculate the last acceptable address and check for possible
|
|
- addition overflow by using satured math:
|
|
- edx = ecx + edx
|
|
- edx |= -(edx < ecx) */
|
|
add %ecx, %edx
|
|
- sbb %eax, %eax
|
|
- or %eax, %edx
|
|
- jbe L(return_null)
|
|
+ jle L(return_null)
|
|
lea 16(%edi), %edi
|
|
# else
|
|
jnz L(match_case1_prolog1)
|