diff options
author | Andreas Schwab <schwab@suse.de> | 2013-07-29 14:58:41 +0200 |
---|---|---|
committer | Andreas Schwab <schwab@suse.de> | 2013-08-27 12:19:03 +0200 |
commit | 5d228a436a8257f082e84671bf8c89b79a2c3853 (patch) | |
tree | 57ee87573fe5c2a1c155c9000e62a971d0e64de7 /sysdeps/i386/i686/multiarch | |
parent | 53234cc3a368c1b61be017d87b71cfe2affbba68 (diff) | |
download | glibc-5d228a436a8257f082e84671bf8c89b79a2c3853.tar.gz glibc-5d228a436a8257f082e84671bf8c89b79a2c3853.tar.xz glibc-5d228a436a8257f082e84671bf8c89b79a2c3853.zip |
Fix handling LC_CTYPE nonascii-case fallback in i686 SSE4.2 and SSSE3 strcasecmp/strncasecmp
Diffstat (limited to 'sysdeps/i386/i686/multiarch')
-rw-r--r-- | sysdeps/i386/i686/multiarch/strcmp-sse4.S | 12 | ||||
-rw-r--r-- | sysdeps/i386/i686/multiarch/strcmp-ssse3.S | 12 |
2 files changed, 24 insertions, 0 deletions
diff --git a/sysdeps/i386/i686/multiarch/strcmp-sse4.S b/sysdeps/i386/i686/multiarch/strcmp-sse4.S index 62f458f107..355ed4e674 100644 --- a/sysdeps/i386/i686/multiarch/strcmp-sse4.S +++ b/sysdeps/i386/i686/multiarch/strcmp-sse4.S @@ -121,8 +121,14 @@ ENTRY (__strcasecmp_sse4_2) movl (%eax), %eax # endif testl $1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%eax) +# ifdef PIC + je L(ascii) + POP (%ebx) + jmp __strcasecmp_nonascii +# else jne __strcasecmp_nonascii jmp L(ascii) +# endif END (__strcasecmp_sse4_2) #endif @@ -152,8 +158,14 @@ ENTRY (__strncasecmp_sse4_2) movl (%eax), %eax # endif testl $1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%eax) +# ifdef PIC + je L(ascii) + POP (%ebx) + jmp __strncasecmp_nonascii +# else jne __strncasecmp_nonascii jmp L(ascii) +# endif END (__strncasecmp_sse4_2) #endif diff --git a/sysdeps/i386/i686/multiarch/strcmp-ssse3.S b/sysdeps/i386/i686/multiarch/strcmp-ssse3.S index 5fd9ac881a..3eb304bca0 100644 --- a/sysdeps/i386/i686/multiarch/strcmp-ssse3.S +++ b/sysdeps/i386/i686/multiarch/strcmp-ssse3.S @@ -138,8 +138,14 @@ ENTRY (__strcasecmp_ssse3) movl (%eax), %eax # endif testl $1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%eax) +# ifdef PIC + je L(ascii) + POP (%ebx) + jmp __strcasecmp_nonascii +# else jne __strcasecmp_nonascii jmp L(ascii) +# endif END (__strcasecmp_ssse3) #endif @@ -169,8 +175,14 @@ ENTRY (__strncasecmp_ssse3) movl (%eax), %eax # endif testl $1, LOCALE_DATA_VALUES+_NL_CTYPE_NONASCII_CASE*SIZEOF_VALUES(%eax) +# ifdef PIC + je L(ascii) + POP (%ebx) + jmp __strncasecmp_nonascii +# else jne __strncasecmp_nonascii jmp L(ascii) +# endif END (__strncasecmp_ssse3) #endif |