Fix SSSE3/SSE4.2 strcasecmp[_l]/strncasecmp[_l] for non-PIC and -mno-tls-direct-seg-refs
This commit is contained in:
parent
d62a8200e1
commit
5583a0862c
13
ChangeLog
13
ChangeLog
@ -1,3 +1,16 @@
|
||||
2011-11-16 Andreas Schwab <schwab@redhat.com>
|
||||
|
||||
* sysdeps/i386/i686/multiarch/strcmp-ssse3.S
|
||||
[USE_AS_STRCASECMP_L]: Fix argument offsets for non-PIC.
|
||||
[USE_AS_STRNCASECMP_L]: Likewise.
|
||||
(__strcasecmp_ssse3, __strncasecmp_ssse3): Handle
|
||||
NO_TLS_DIRECT_SEG_REFS.
|
||||
* sysdeps/i386/i686/multiarch/strcmp-sse4.S [USE_AS_STRCASECMP_L]:
|
||||
Fix argument offsets for non-PIC.
|
||||
[USE_AS_STRNCASECMP_L]: Likewise.
|
||||
(__strcasecmp_sse4_2, __strncasecmp_sse4_2): Handle
|
||||
NO_TLS_DIRECT_SEG_REFS.
|
||||
|
||||
2011-11-15 Ulrich Drepper <drepper@gmail.com>
|
||||
|
||||
* locale/loadarchive.c (_nl_load_locale_from_archive): Open files to
|
||||
|
@ -48,7 +48,11 @@
|
||||
# ifndef STRCMP
|
||||
# define STRCMP __strcasecmp_l_sse4_2
|
||||
# endif
|
||||
# define STR1 12
|
||||
# ifdef PIC
|
||||
# define STR1 12
|
||||
# else
|
||||
# define STR1 8
|
||||
# endif
|
||||
# define STR2 STR1+4
|
||||
# define LOCALE 12 /* Loaded before the adjustement. */
|
||||
# ifdef PIC
|
||||
@ -63,7 +67,11 @@
|
||||
# ifndef STRCMP
|
||||
# define STRCMP __strncasecmp_l_sse4_2
|
||||
# endif
|
||||
# define STR1 16
|
||||
# ifdef PIC
|
||||
# define STR1 16
|
||||
# else
|
||||
# define STR1 12
|
||||
# endif
|
||||
# define STR2 STR1+4
|
||||
# define CNT STR2+4
|
||||
# define LOCALE 16 /* Loaded before the adjustement. */
|
||||
@ -95,10 +103,20 @@ ENTRY (__strcasecmp_sse4_2)
|
||||
call __i686.get_pc_thunk.bx
|
||||
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
||||
movl __libc_tsd_LOCALE@GOTNTPOFF(%ebx), %eax
|
||||
# else
|
||||
movl __libc_tsd_LOCALE@NTPOFF, %eax
|
||||
# endif
|
||||
# ifdef NO_TLS_DIRECT_SEG_REFS
|
||||
addl %gs:0, %eax
|
||||
movl (%eax), %eax
|
||||
# else
|
||||
movl %gs:(%eax), %eax
|
||||
# endif
|
||||
# else
|
||||
# ifdef NO_TLS_DIRECT_SEG_REFS
|
||||
movl %gs:0, %eax
|
||||
movl __libc_tsd_LOCALE@NTPOFF(%eax), %eax
|
||||
# else
|
||||
movl %gs:__libc_tsd_LOCALE@NTPOFF, %eax
|
||||
# endif
|
||||
# endif
|
||||
# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0
|
||||
movl LOCALE_T___LOCALES+LC_CTYPE*4(%eax), %eax
|
||||
# else
|
||||
@ -117,10 +135,20 @@ ENTRY (__strncasecmp_sse4_2)
|
||||
call __i686.get_pc_thunk.bx
|
||||
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
||||
movl __libc_tsd_LOCALE@GOTNTPOFF(%ebx), %eax
|
||||
# else
|
||||
movl __libc_tsd_LOCALE@NTPOFF, %eax
|
||||
# endif
|
||||
# ifdef NO_TLS_DIRECT_SEG_REFS
|
||||
addl %gs:0, %eax
|
||||
movl (%eax), %eax
|
||||
# else
|
||||
movl %gs:(%eax), %eax
|
||||
# endif
|
||||
# else
|
||||
# ifdef NO_TLS_DIRECT_SEG_REFS
|
||||
movl %gs:0, %eax
|
||||
movl __libc_tsd_LOCALE@NTPOFF(%eax), %eax
|
||||
# else
|
||||
movl %gs:__libc_tsd_LOCALE@NTPOFF, %eax
|
||||
# endif
|
||||
# endif
|
||||
# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0
|
||||
movl LOCALE_T___LOCALES+LC_CTYPE*4(%eax), %eax
|
||||
# else
|
||||
|
@ -56,7 +56,11 @@
|
||||
# ifndef STRCMP
|
||||
# define STRCMP __strcasecmp_l_ssse3
|
||||
# endif
|
||||
# define STR1 8
|
||||
# ifdef PIC
|
||||
# define STR1 8
|
||||
# else
|
||||
# define STR1 4
|
||||
# endif
|
||||
# define STR2 STR1+4
|
||||
# define LOCALE 12 /* Loaded before the adjustement. */
|
||||
# ifdef PIC
|
||||
@ -72,7 +76,11 @@
|
||||
# ifndef STRCMP
|
||||
# define STRCMP __strncasecmp_l_ssse3
|
||||
# endif
|
||||
# define STR1 12
|
||||
# ifdef PIC
|
||||
# define STR1 12
|
||||
# else
|
||||
# define STR1 8
|
||||
# endif
|
||||
# define STR2 STR1+4
|
||||
# define CNT STR2+4
|
||||
# define LOCALE 16 /* Loaded before the adjustement. */
|
||||
@ -112,10 +120,20 @@ ENTRY (__strcasecmp_ssse3)
|
||||
call __i686.get_pc_thunk.bx
|
||||
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
||||
movl __libc_tsd_LOCALE@GOTNTPOFF(%ebx), %eax
|
||||
# else
|
||||
movl __libc_tsd_LOCALE@NTPOFF, %eax
|
||||
# endif
|
||||
# ifdef NO_TLS_DIRECT_SEG_REFS
|
||||
addl %gs:0, %eax
|
||||
movl (%eax), %eax
|
||||
# else
|
||||
movl %gs:(%eax), %eax
|
||||
# endif
|
||||
# else
|
||||
# ifdef NO_TLS_DIRECT_SEG_REFS
|
||||
movl %gs:0, %eax
|
||||
movl __libc_tsd_LOCALE@NTPOFF(%eax), %eax
|
||||
# else
|
||||
movl %gs:__libc_tsd_LOCALE@NTPOFF, %eax
|
||||
# endif
|
||||
# endif
|
||||
# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0
|
||||
movl LOCALE_T___LOCALES+LC_CTYPE*4(%eax), %eax
|
||||
# else
|
||||
@ -134,10 +152,20 @@ ENTRY (__strncasecmp_ssse3)
|
||||
call __i686.get_pc_thunk.bx
|
||||
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
||||
movl __libc_tsd_LOCALE@GOTNTPOFF(%ebx), %eax
|
||||
# else
|
||||
movl __libc_tsd_LOCALE@NTPOFF, %eax
|
||||
# endif
|
||||
# ifdef NO_TLS_DIRECT_SEG_REFS
|
||||
addl %gs:0, %eax
|
||||
movl (%eax), %eax
|
||||
# else
|
||||
movl %gs:(%eax), %eax
|
||||
# endif
|
||||
# else
|
||||
# ifdef NO_TLS_DIRECT_SEG_REFS
|
||||
movl %gs:0, %eax
|
||||
movl __libc_tsd_LOCALE@NTPOFF(%eax), %eax
|
||||
# else
|
||||
movl %gs:__libc_tsd_LOCALE@NTPOFF, %eax
|
||||
# endif
|
||||
# endif
|
||||
# if LOCALE_T___LOCALES != 0 || LC_CTYPE != 0
|
||||
movl LOCALE_T___LOCALES+LC_CTYPE*4(%eax), %eax
|
||||
# else
|
||||
|
Loading…
x
Reference in New Issue
Block a user