From 9a1d92541ff2e864aab682d66fba7ea2555ef13b Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Fri, 3 Feb 2012 23:22:53 +0000 Subject: Consistently use macros for x86 PIC thunks. --- ChangeLog | 47 ++++++++++++++++++++++ nptl/ChangeLog | 10 +++++ .../unix/sysv/linux/i386/i486/pthread_cond_wait.S | 14 +------ nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S | 19 ++------- .../unix/sysv/linux/i386/i486/sem_timedwait.S | 4 +- .../unix/sysv/linux/i386/i486/sem_trywait.S | 16 +------- nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S | 6 +-- nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S | 17 +------- sysdeps/i386/i686/memcmp.S | 13 +----- sysdeps/i386/i686/multiarch/bcopy.S | 14 +------ sysdeps/i386/i686/multiarch/bzero.S | 14 +------ sysdeps/i386/i686/multiarch/memchr.S | 14 +------ sysdeps/i386/i686/multiarch/memcmp-sse4.S | 4 +- sysdeps/i386/i686/multiarch/memcmp.S | 5 +-- sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S | 17 ++------ sysdeps/i386/i686/multiarch/memcpy-ssse3.S | 17 ++------ sysdeps/i386/i686/multiarch/memcpy.S | 14 +------ sysdeps/i386/i686/multiarch/memcpy_chk.S | 14 +------ sysdeps/i386/i686/multiarch/memmove.S | 14 +------ sysdeps/i386/i686/multiarch/memmove_chk.S | 14 +------ sysdeps/i386/i686/multiarch/mempcpy.S | 14 +------ sysdeps/i386/i686/multiarch/mempcpy_chk.S | 14 +------ sysdeps/i386/i686/multiarch/memrchr.S | 14 +------ sysdeps/i386/i686/multiarch/memset-sse2-rep.S | 15 ++----- sysdeps/i386/i686/multiarch/memset-sse2.S | 17 ++------ sysdeps/i386/i686/multiarch/memset.S | 14 +------ sysdeps/i386/i686/multiarch/memset_chk.S | 14 +------ sysdeps/i386/i686/multiarch/rawmemchr.S | 14 +------ sysdeps/i386/i686/multiarch/strcasecmp.S | 5 +-- sysdeps/i386/i686/multiarch/strcat-sse2.S | 4 +- sysdeps/i386/i686/multiarch/strcat.S | 14 +------ sysdeps/i386/i686/multiarch/strchr.S | 14 +------ sysdeps/i386/i686/multiarch/strcmp-sse4.S | 11 ++--- sysdeps/i386/i686/multiarch/strcmp-ssse3.S | 11 ++--- sysdeps/i386/i686/multiarch/strcmp.S | 14 +------ sysdeps/i386/i686/multiarch/strcpy-sse2.S | 4 +- sysdeps/i386/i686/multiarch/strcpy.S | 14 +------ sysdeps/i386/i686/multiarch/strcspn.S | 14 +------ sysdeps/i386/i686/multiarch/strlen.S | 14 +------ sysdeps/i386/i686/multiarch/strncase.S | 5 +-- sysdeps/i386/i686/multiarch/strnlen.S | 14 +------ sysdeps/i386/i686/multiarch/strrchr.S | 14 +------ sysdeps/i386/i686/multiarch/strspn.S | 14 +------ sysdeps/i386/i686/multiarch/wcschr.S | 14 +------ sysdeps/i386/i686/multiarch/wcscmp.S | 14 +------ sysdeps/i386/i686/multiarch/wcscpy.S | 5 +-- sysdeps/i386/i686/multiarch/wcslen.S | 14 +------ sysdeps/i386/i686/multiarch/wcsrchr.S | 14 +------ sysdeps/i386/i686/multiarch/wmemcmp.S | 14 +------ sysdeps/i386/sysdep.h | 23 ++++++----- 50 files changed, 177 insertions(+), 490 deletions(-) diff --git a/ChangeLog b/ChangeLog index 05bc67b0b9..a78f20931b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,50 @@ +2012-02-03 Joseph Myers + + * sysdeps/i386/sysdep.h (SETUP_PIC_REG, LOAD_PIC_REG): Define also + for non-PIC compilation. + (SETUP_PIC_REG): Add .p2align directive. + * sysdeps/i386/i686/memcmp.S: Use macros for PIC register setup. + * sysdeps/i386/i686/multiarch/bcopy.S: Likewise. + * sysdeps/i386/i686/multiarch/bzero.S: Likewise. + * sysdeps/i386/i686/multiarch/memchr.S: Likewise. + * sysdeps/i386/i686/multiarch/memcmp-sse4.S: Likewise. + * sysdeps/i386/i686/multiarch/memcmp.S: Likewise. + * sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S: Likewise. + * sysdeps/i386/i686/multiarch/memcpy-ssse3.S: Likewise. + * sysdeps/i386/i686/multiarch/memcpy.S: Likewise. + * sysdeps/i386/i686/multiarch/memcpy_chk.S: Likewise. + * sysdeps/i386/i686/multiarch/memmove.S: Likewise. + * sysdeps/i386/i686/multiarch/memmove_chk.S: Likewise. + * sysdeps/i386/i686/multiarch/mempcpy.S: Likewise. + * sysdeps/i386/i686/multiarch/mempcpy_chk.S: Likewise. + * sysdeps/i386/i686/multiarch/memrchr.S: Likewise. + * sysdeps/i386/i686/multiarch/memset-sse2-rep.S: Likewise. + * sysdeps/i386/i686/multiarch/memset-sse2.S: Likewise. + * sysdeps/i386/i686/multiarch/memset.S: Likewise. + * sysdeps/i386/i686/multiarch/memset_chk.S: Likewise. + * sysdeps/i386/i686/multiarch/rawmemchr.S: Likewise. + * sysdeps/i386/i686/multiarch/strcasecmp.S: Likewise. + * sysdeps/i386/i686/multiarch/strcat-sse2.S: Likewise. + * sysdeps/i386/i686/multiarch/strcat.S: Likewise. + * sysdeps/i386/i686/multiarch/strchr.S: Likewise. + * sysdeps/i386/i686/multiarch/strcmp-sse4.S: Likewise. + * sysdeps/i386/i686/multiarch/strcmp-ssse3.S: Likewise. + * sysdeps/i386/i686/multiarch/strcmp.S: Likewise. + * sysdeps/i386/i686/multiarch/strcpy-sse2.S: Likewise. + * sysdeps/i386/i686/multiarch/strcpy.S: Likewise. + * sysdeps/i386/i686/multiarch/strcspn.S: Likewise. + * sysdeps/i386/i686/multiarch/strlen.S: Likewise. + * sysdeps/i386/i686/multiarch/strncase.S: Likewise. + * sysdeps/i386/i686/multiarch/strnlen.S: Likewise. + * sysdeps/i386/i686/multiarch/strrchr.S: Likewise. + * sysdeps/i386/i686/multiarch/strspn.S: Likewise. + * sysdeps/i386/i686/multiarch/wcschr.S: Likewise. + * sysdeps/i386/i686/multiarch/wcscmp.S: Likewise. + * sysdeps/i386/i686/multiarch/wcscpy.S: Likewise. + * sysdeps/i386/i686/multiarch/wcslen.S: Likewise. + * sysdeps/i386/i686/multiarch/wcsrchr.S: Likewise. + * sysdeps/i386/i686/multiarch/wmemcmp.S: Likewise. + 2012-02-03 Joseph Myers * math/tst-CMPLX.c: Include . diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 0b7c5e7e78..1470566fb7 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,3 +1,13 @@ +2012-02-03 Joseph Myers + + * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S: Use + macros for PIC register setup. + * sysdeps/unix/sysv/linux/i386/i486/sem_post.S: Likewise. + * sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S: Likewise. + * sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S: Likewise. + * sysdeps/unix/sysv/linux/i386/i486/sem_wait.S: Likewise. + * sysdeps/unix/sysv/linux/i386/pthread_once.S: Likewise. + 2012-01-11 Marek Polacek * forward.c (FORWARD_NORETURN): Define macro. diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S index 54590b7b8b..8a84759dc4 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S @@ -1,4 +1,5 @@ -/* Copyright (C) 2002-2004,2006-2007,2009,2010 Free Software Foundation, Inc. +/* Copyright (C) 2002-2004,2006-2007,2009,2010,2012 + Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -649,17 +650,6 @@ __condvar_w_cleanup: .uleb128 0 .Lcstend: -#ifdef PIC - .section .gnu.linkonce.t.__i686.get_pc_thunk.cx,"ax",@progbits - .globl __i686.get_pc_thunk.cx - .hidden __i686.get_pc_thunk.cx - .type __i686.get_pc_thunk.cx,@function -__i686.get_pc_thunk.cx: - movl (%esp), %ecx; - ret - .size __i686.get_pc_thunk.cx,.-__i686.get_pc_thunk.cx -#endif - #ifdef SHARED .hidden DW.ref.__gcc_personality_v0 .weak DW.ref.__gcc_personality_v0 diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S index 9f3e63520f..624a474a4d 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S @@ -1,4 +1,5 @@ -/* Copyright (C) 2002,2003,2005,2007,2008,2011 Free Software Foundation, Inc. +/* Copyright (C) 2002,2003,2005,2007,2008,2011-2012 + Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -75,7 +76,7 @@ __new_sem_post: cfi_offset(%ebx, -8) 1: #ifdef PIC - call __i686.get_pc_thunk.bx + SETUP_PIC_REG(bx) #else movl $4f, %ebx 4: @@ -96,7 +97,7 @@ __new_sem_post: 3: #ifdef PIC - call __i686.get_pc_thunk.bx + SETUP_PIC_REG(bx) #else movl $5f, %ebx 5: @@ -149,15 +150,3 @@ __old_sem_post: .size __old_sem_post,.-__old_sem_post compat_symbol(libpthread, __old_sem_post, sem_post, GLIBC_2_0) #endif - - -#ifdef PIC - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx; - ret - .size __i686.get_pc_thunk.bx,.-__i686.get_pc_thunk.bx -#endif diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S index ee46ab9363..1192fd74d0 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002-2005, 2007, 2009, 2011 Free Software Foundation, Inc. +/* Copyright (C) 2002-2005, 2007, 2009, 2011-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -148,7 +148,7 @@ sem_timedwait: 3: negl %esi 6: #ifdef PIC - call __i686.get_pc_thunk.bx + SETUP_PIC_REG(bx) #else movl $4f, %ebx 4: diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S index 18adb9a092..a9d19ebbd3 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2005, 2007, 2011 Free Software Foundation, Inc. +/* Copyright (C) 2002-2003, 2005, 2007, 2011-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -43,7 +43,7 @@ __new_sem_trywait: 1: #ifdef PIC - call __i686.get_pc_thunk.cx + SETUP_PIC_REG(cx) #else movl $3f, %ecx 3: @@ -66,15 +66,3 @@ __new_sem_trywait: __old_sem_trywait = __new_sem_trywait compat_symbol(libpthread, __old_sem_trywait, sem_trywait, GLIBC_2_0) #endif - - -#ifdef PIC - .section .gnu.linkonce.t.__i686.get_pc_thunk.cx,"ax",@progbits - .globl __i686.get_pc_thunk.cx - .hidden __i686.get_pc_thunk.cx - .type __i686.get_pc_thunk.cx,@function -__i686.get_pc_thunk.cx: - movl (%esp), %ecx; - ret - .size __i686.get_pc_thunk.cx,.-__i686.get_pc_thunk.cx -#endif diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S index fb8a398430..3d9ee743f3 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2005, 2007, 2011 Free Software Foundation, Inc. +/* Copyright (C) 2002-2003, 2005, 2007, 2011-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -108,7 +108,7 @@ __new_sem_wait: negl %esi #ifdef PIC - call __i686.get_pc_thunk.bx + SETUP_PIC_REG(bx) #else movl $8f, %ebx 8: @@ -322,7 +322,7 @@ __old_sem_wait: je 3b negl %esi #ifdef PIC - call __i686.get_pc_thunk.bx + SETUP_PIC_REG(bx) #else movl $4f, %ebx 4: diff --git a/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S b/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S index f31d968bc5..158633d4bb 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2002, 2003, 2007 Free Software Foundation, Inc. +/* Copyright (C) 2002, 2003, 2007, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2002. @@ -52,8 +52,7 @@ __pthread_once: Get the fork generation counter now. */ 6: movl (%ebx), %eax #ifdef PIC - call __i686.get_pc_thunk.cx - addl $_GLOBAL_OFFSET_TABLE_, %ecx + LOAD_PIC_REG(cx) #endif 5: movl %eax, %edx @@ -181,15 +180,3 @@ __pthread_once_internal = __pthread_once .globl pthread_once pthread_once = __pthread_once - - -#ifdef PIC - .section .gnu.linkonce.t.__i686.get_pc_thunk.cx,"ax",@progbits - .globl __i686.get_pc_thunk.cx - .hidden __i686.get_pc_thunk.cx - .type __i686.get_pc_thunk.cx,@function -__i686.get_pc_thunk.cx: - movl (%esp), %ecx; - ret - .size __i686.get_pc_thunk.cx,.-__i686.get_pc_thunk.cx -#endif diff --git a/sysdeps/i386/i686/memcmp.S b/sysdeps/i386/i686/memcmp.S index 24f6804b0c..4b87cec726 100644 --- a/sysdeps/i386/i686/memcmp.S +++ b/sysdeps/i386/i686/memcmp.S @@ -1,5 +1,5 @@ /* Compare two memory blocks for differences in the first COUNT bytes. - Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. + Copyright (C) 2004, 2005, 2006, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -36,22 +36,13 @@ into the jump table. */ #define LOAD_JUMP_TABLE_ENTRY(TABLE, INDEX) \ /* We first load PC into EBX. */ \ - call __i686.get_pc_thunk.bx; \ + SETUP_PIC_REG(bx); \ /* Get the address of the jump table. */ \ addl $(TABLE - .), %ebx; \ /* Get the entry and convert the relative offset to the \ absolute address. */ \ addl (%ebx,INDEX,4), %ebx - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - ALIGN (4) - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ALIGN (4) ENTRY (BP_SYM (memcmp)) diff --git a/sysdeps/i386/i686/multiarch/bcopy.S b/sysdeps/i386/i686/multiarch/bcopy.S index 8671bf684e..1dbb309b3d 100644 --- a/sysdeps/i386/i686/multiarch/bcopy.S +++ b/sysdeps/i386/i686/multiarch/bcopy.S @@ -1,5 +1,5 @@ /* Multiple versions of bcopy - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -24,23 +24,13 @@ /* Define multiple versions only for the definition in lib. */ #ifndef NOT_IN_libc # ifdef SHARED - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(bcopy) .type bcopy, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/bzero.S b/sysdeps/i386/i686/multiarch/bzero.S index 8c740a42dc..eb066e93eb 100644 --- a/sysdeps/i386/i686/multiarch/bzero.S +++ b/sysdeps/i386/i686/multiarch/bzero.S @@ -1,5 +1,5 @@ /* Multiple versions of bzero - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -24,23 +24,13 @@ /* Define multiple versions only for the definition in lib. */ #ifndef NOT_IN_libc # ifdef SHARED - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(__bzero) .type __bzero, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/memchr.S b/sysdeps/i386/i686/multiarch/memchr.S index 163a83e17b..b71b55e7c6 100644 --- a/sysdeps/i386/i686/multiarch/memchr.S +++ b/sysdeps/i386/i686/multiarch/memchr.S @@ -1,5 +1,5 @@ /* Multiple versions of memchr - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -22,15 +22,6 @@ #include #ifndef NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - # define CFI_POP(REG) \ cfi_adjust_cfa_offset (-4); \ cfi_restore (REG) @@ -44,8 +35,7 @@ ENTRY(__memchr) .type __memchr, @gnu_indirect_function pushl %ebx CFI_PUSH (%ebx) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/memcmp-sse4.S b/sysdeps/i386/i686/multiarch/memcmp-sse4.S index 1f5dbc15cb..a004dfc344 100644 --- a/sysdeps/i386/i686/multiarch/memcmp-sse4.S +++ b/sysdeps/i386/i686/multiarch/memcmp-sse4.S @@ -1,5 +1,5 @@ /* memcmp with SSE4.2, wmemcmp with SSE4.2 - Copyright (C) 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 2010-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -53,7 +53,7 @@ # define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \ /* We first load PC into EBX. */ \ - call __i686.get_pc_thunk.bx; \ + SETUP_PIC_REG(bx); \ /* Get the address of the jump table. */ \ addl $(TABLE - .), %ebx; \ /* Get the entry and convert the relative offset to the \ diff --git a/sysdeps/i386/i686/multiarch/memcmp.S b/sysdeps/i386/i686/multiarch/memcmp.S index cf606a5959..80981d5835 100644 --- a/sysdeps/i386/i686/multiarch/memcmp.S +++ b/sysdeps/i386/i686/multiarch/memcmp.S @@ -1,5 +1,5 @@ /* Multiple versions of memcmp - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -30,8 +30,7 @@ ENTRY(memcmp) pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S b/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S index 8e81183827..6e14d9c0d2 100644 --- a/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S +++ b/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S @@ -1,5 +1,5 @@ /* memcpy with SSSE3 and REP string. - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -65,7 +65,7 @@ index into the jump table. SCALE is the scale of INDEX. */ # define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \ /* We first load PC into EBX. */ \ - call __i686.get_pc_thunk.bx; \ + SETUP_PIC_REG(bx); \ /* Get the address of the jump table. */ \ addl $(TABLE - .), %ebx; \ /* Get the entry and convert the relative offset to the \ @@ -81,15 +81,6 @@ addl (%ebx,INDEX,SCALE), %ebx; \ /* We loaded the jump table. Go. */ \ jmp *%ebx - - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - ALIGN (4) - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret #else # define PARMS 4 # define ENTRANCE @@ -171,7 +162,7 @@ L(48bytesormore): cmp $SHARED_CACHE_SIZE_HALF, %ecx #else # ifdef SHARED - call __i686.get_pc_thunk.bx + SETUP_PIC_REG(bx) add $_GLOBAL_OFFSET_TABLE_, %ebx cmp __x86_shared_cache_size_half@GOTOFF(%ebx), %ecx # else @@ -241,7 +232,7 @@ L(shl_0_gobble): cmp $DATA_CACHE_SIZE_HALF, %ecx #else # ifdef SHARED - call __i686.get_pc_thunk.bx + SETUP_PIC_REG(bx) add $_GLOBAL_OFFSET_TABLE_, %ebx mov __x86_data_cache_size_half@GOTOFF(%ebx), %edi # else diff --git a/sysdeps/i386/i686/multiarch/memcpy-ssse3.S b/sysdeps/i386/i686/multiarch/memcpy-ssse3.S index 26471fc0e1..7c5a64f0f1 100644 --- a/sysdeps/i386/i686/multiarch/memcpy-ssse3.S +++ b/sysdeps/i386/i686/multiarch/memcpy-ssse3.S @@ -1,5 +1,5 @@ /* memcpy with SSSE3 - Copyright (C) 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 2010-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -65,7 +65,7 @@ index into the jump table. SCALE is the scale of INDEX. */ # define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \ /* We first load PC into EBX. */ \ - call __i686.get_pc_thunk.bx; \ + SETUP_PIC_REG(bx); \ /* Get the address of the jump table. */ \ addl $(TABLE - .), %ebx; \ /* Get the entry and convert the relative offset to the \ @@ -81,15 +81,6 @@ addl (%ebx,INDEX,SCALE), %ebx; \ /* We loaded the jump table. Go. */ \ jmp *%ebx - - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - ALIGN (4) - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret #else # define PARMS 4 # define ENTRANCE @@ -173,7 +164,7 @@ L(48bytesormore): cmp $SHARED_CACHE_SIZE_HALF, %ecx #else # ifdef SHARED - call __i686.get_pc_thunk.bx + SETUP_PIC_REG(bx) add $_GLOBAL_OFFSET_TABLE_, %ebx cmp __x86_shared_cache_size_half@GOTOFF(%ebx), %ecx # else @@ -244,7 +235,7 @@ L(shl_0_gobble): cmp $DATA_CACHE_SIZE_HALF, %ecx #else # ifdef SHARED - call __i686.get_pc_thunk.bx + SETUP_PIC_REG(bx) add $_GLOBAL_OFFSET_TABLE_, %ebx cmp __x86_data_cache_size_half@GOTOFF(%ebx), %ecx # else diff --git a/sysdeps/i386/i686/multiarch/memcpy.S b/sysdeps/i386/i686/multiarch/memcpy.S index bf1c7cc2d2..d5160b89b1 100644 --- a/sysdeps/i386/i686/multiarch/memcpy.S +++ b/sysdeps/i386/i686/multiarch/memcpy.S @@ -1,5 +1,5 @@ /* Multiple versions of memcpy - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -25,23 +25,13 @@ DSO. In static binaries we need memcpy before the initialization happened. */ #if defined SHARED && !defined NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(memcpy) .type memcpy, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/memcpy_chk.S b/sysdeps/i386/i686/multiarch/memcpy_chk.S index 171ac8adef..9744214dcb 100644 --- a/sysdeps/i386/i686/multiarch/memcpy_chk.S +++ b/sysdeps/i386/i686/multiarch/memcpy_chk.S @@ -1,5 +1,5 @@ /* Multiple versions of __memcpy_chk - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -26,23 +26,13 @@ */ #ifndef NOT_IN_libc # ifdef SHARED - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(__memcpy_chk) .type __memcpy_chk, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/memmove.S b/sysdeps/i386/i686/multiarch/memmove.S index e0529c0126..574401cbd5 100644 --- a/sysdeps/i386/i686/multiarch/memmove.S +++ b/sysdeps/i386/i686/multiarch/memmove.S @@ -1,5 +1,5 @@ /* Multiple versions of memmove - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -24,23 +24,13 @@ /* Define multiple versions only for the definition in lib. */ #ifndef NOT_IN_libc # ifdef SHARED - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(memmove) .type memmove, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/memmove_chk.S b/sysdeps/i386/i686/multiarch/memmove_chk.S index e33f2a31b3..f96bc86232 100644 --- a/sysdeps/i386/i686/multiarch/memmove_chk.S +++ b/sysdeps/i386/i686/multiarch/memmove_chk.S @@ -1,5 +1,5 @@ /* Multiple versions of __memmove_chk - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -24,23 +24,13 @@ /* Define multiple versions only for the definition in lib. */ #ifndef NOT_IN_libc # ifdef SHARED - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(__memmove_chk) .type __memmove_chk, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/mempcpy.S b/sysdeps/i386/i686/multiarch/mempcpy.S index df830d2e63..b3b1633943 100644 --- a/sysdeps/i386/i686/multiarch/mempcpy.S +++ b/sysdeps/i386/i686/multiarch/mempcpy.S @@ -1,5 +1,5 @@ /* Multiple versions of mempcpy - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -25,23 +25,13 @@ DSO. In static binaries we need mempcpy before the initialization happened. */ #if defined SHARED && !defined NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(__mempcpy) .type __mempcpy, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/mempcpy_chk.S b/sysdeps/i386/i686/multiarch/mempcpy_chk.S index 828fb5e608..f846e955a1 100644 --- a/sysdeps/i386/i686/multiarch/mempcpy_chk.S +++ b/sysdeps/i386/i686/multiarch/mempcpy_chk.S @@ -1,5 +1,5 @@ /* Multiple versions of __mempcpy_chk - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -26,23 +26,13 @@ */ #ifndef NOT_IN_libc # ifdef SHARED - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(__mempcpy_chk) .type __mempcpy_chk, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/memrchr.S b/sysdeps/i386/i686/multiarch/memrchr.S index 8e5b2c50a2..495589cb0f 100644 --- a/sysdeps/i386/i686/multiarch/memrchr.S +++ b/sysdeps/i386/i686/multiarch/memrchr.S @@ -1,5 +1,5 @@ /* Multiple versions of memrchr - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -22,15 +22,6 @@ #include #ifndef NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - # define CFI_POP(REG) \ cfi_adjust_cfa_offset (-4); \ cfi_restore (REG) @@ -44,8 +35,7 @@ ENTRY(__memrchr) .type __memrchr, @gnu_indirect_function pushl %ebx CFI_PUSH (%ebx) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/memset-sse2-rep.S b/sysdeps/i386/i686/multiarch/memset-sse2-rep.S index f9a0b13d0c..d42c1034cd 100644 --- a/sysdeps/i386/i686/multiarch/memset-sse2-rep.S +++ b/sysdeps/i386/i686/multiarch/memset-sse2-rep.S @@ -1,5 +1,5 @@ /* memset with SSE2 and REP string. - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -56,7 +56,7 @@ jump table with relative offsets. */ # define BRANCH_TO_JMPTBL_ENTRY(TABLE) \ /* We first load PC into EBX. */ \ - call __i686.get_pc_thunk.bx; \ + SETUP_PIC_REG(bx); \ /* Get the address of the jump table. */ \ add $(TABLE - .), %ebx; \ /* Get the entry and convert the relative offset to the \ @@ -65,15 +65,6 @@ add %ecx, %edx; \ /* We loaded the jump table and adjuested EDX. Go. */ \ jmp *%ebx - - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - ALIGN (4) - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret #else # define ENTRANCE # define RETURN_END ret @@ -273,7 +264,7 @@ L(128bytesormore): mov $DATA_CACHE_SIZE, %ebx #else # ifdef SHARED - call __i686.get_pc_thunk.bx + SETUP_PIC_REG(bx) add $_GLOBAL_OFFSET_TABLE_, %ebx mov __x86_data_cache_size@GOTOFF(%ebx), %ebx # else diff --git a/sysdeps/i386/i686/multiarch/memset-sse2.S b/sysdeps/i386/i686/multiarch/memset-sse2.S index 92ad601bf2..5f142e7406 100644 --- a/sysdeps/i386/i686/multiarch/memset-sse2.S +++ b/sysdeps/i386/i686/multiarch/memset-sse2.S @@ -1,5 +1,5 @@ /* memset with SSE2 - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -56,7 +56,7 @@ jump table with relative offsets. */ # define BRANCH_TO_JMPTBL_ENTRY(TABLE) \ /* We first load PC into EBX. */ \ - call __i686.get_pc_thunk.bx; \ + SETUP_PIC_REG(bx); \ /* Get the address of the jump table. */ \ add $(TABLE - .), %ebx; \ /* Get the entry and convert the relative offset to the \ @@ -65,15 +65,6 @@ add %ecx, %edx; \ /* We loaded the jump table and adjuested EDX. Go. */ \ jmp *%ebx - - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - ALIGN (4) - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret #else # define ENTRANCE # define RETURN_END ret @@ -272,7 +263,7 @@ L(128bytesormore): mov $SHARED_CACHE_SIZE, %ebx #else # ifdef SHARED - call __i686.get_pc_thunk.bx + SETUP_PIC_REG(bx) add $_GLOBAL_OFFSET_TABLE_, %ebx mov __x86_shared_cache_size@GOTOFF(%ebx), %ebx # else @@ -291,7 +282,7 @@ L(128bytesormore): #else # ifdef SHARED # define RESTORE_EBX_STATE - call __i686.get_pc_thunk.bx + SETUP_PIC_REG(bx) add $_GLOBAL_OFFSET_TABLE_, %ebx cmp __x86_data_cache_size@GOTOFF(%ebx), %ecx # else diff --git a/sysdeps/i386/i686/multiarch/memset.S b/sysdeps/i386/i686/multiarch/memset.S index 34dddcef7b..fa16bb2b2b 100644 --- a/sysdeps/i386/i686/multiarch/memset.S +++ b/sysdeps/i386/i686/multiarch/memset.S @@ -1,5 +1,5 @@ /* Multiple versions of memset - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -24,23 +24,13 @@ /* Define multiple versions only for the definition in lib. */ #ifndef NOT_IN_libc # ifdef SHARED - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(memset) .type memset, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/memset_chk.S b/sysdeps/i386/i686/multiarch/memset_chk.S index d659c7e56d..611904705d 100644 --- a/sysdeps/i386/i686/multiarch/memset_chk.S +++ b/sysdeps/i386/i686/multiarch/memset_chk.S @@ -1,5 +1,5 @@ /* Multiple versions of __memset_chk - Copyright (C) 2010 Free Software Foundation, Inc. + Copyright (C) 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -24,23 +24,13 @@ /* Define multiple versions only for the definition in lib. */ #ifndef NOT_IN_libc # ifdef SHARED - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(__memset_chk) .type __memset_chk, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/rawmemchr.S b/sysdeps/i386/i686/multiarch/rawmemchr.S index 111f0dcf63..3023cc6d72 100644 --- a/sysdeps/i386/i686/multiarch/rawmemchr.S +++ b/sysdeps/i386/i686/multiarch/rawmemchr.S @@ -1,5 +1,5 @@ /* Multiple versions of rawmemchr - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -22,15 +22,6 @@ #include #ifndef NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - # define CFI_POP(REG) \ cfi_adjust_cfa_offset (-4); \ cfi_restore (REG) @@ -44,8 +35,7 @@ ENTRY(__rawmemchr) .type __rawmemchr, @gnu_indirect_function pushl %ebx CFI_PUSH (%ebx) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/strcasecmp.S b/sysdeps/i386/i686/multiarch/strcasecmp.S index 97603d884b..1e1732a0f4 100644 --- a/sysdeps/i386/i686/multiarch/strcasecmp.S +++ b/sysdeps/i386/i686/multiarch/strcasecmp.S @@ -1,5 +1,5 @@ /* Entry point for multi-version x86 strcasecmp. - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -27,8 +27,7 @@ ENTRY(__strcasecmp) pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/strcat-sse2.S b/sysdeps/i386/i686/multiarch/strcat-sse2.S index b692036cec..f085446179 100644 --- a/sysdeps/i386/i686/multiarch/strcat-sse2.S +++ b/sysdeps/i386/i686/multiarch/strcat-sse2.S @@ -1,5 +1,5 @@ /* strcat with SSE2 - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -44,7 +44,7 @@ # define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \ /* We first load PC into ECX. */ \ - call __i686.get_pc_thunk.cx; \ + SETUP_PIC_REG(cx); \ /* Get the address of the jump table. */ \ addl $(TABLE - .), %ecx; \ /* Get the entry and convert the relative offset to the \ diff --git a/sysdeps/i386/i686/multiarch/strcat.S b/sysdeps/i386/i686/multiarch/strcat.S index 14d4f91aa4..2f39bcf91c 100644 --- a/sysdeps/i386/i686/multiarch/strcat.S +++ b/sysdeps/i386/i686/multiarch/strcat.S @@ -1,5 +1,5 @@ /* Multiple versions of strcat - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -46,23 +46,13 @@ #ifndef NOT_IN_libc # ifdef SHARED - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(STRCAT) .type STRCAT, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/strchr.S b/sysdeps/i386/i686/multiarch/strchr.S index aed967c676..67a1341293 100644 --- a/sysdeps/i386/i686/multiarch/strchr.S +++ b/sysdeps/i386/i686/multiarch/strchr.S @@ -1,5 +1,5 @@ /* Multiple versions of strchr - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -22,23 +22,13 @@ #include #ifndef NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(strchr) .type strchr, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/strcmp-sse4.S b/sysdeps/i386/i686/multiarch/strcmp-sse4.S index c9e0317b60..1c4d7cf54a 100644 --- a/sysdeps/i386/i686/multiarch/strcmp-sse4.S +++ b/sysdeps/i386/i686/multiarch/strcmp-sse4.S @@ -1,5 +1,5 @@ /* strcmp with SSE4.2 - Copyright (C) 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 2010-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -100,8 +100,7 @@ ENTRY (__strcasecmp_sse4_2) # ifdef PIC PUSH (%ebx) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) movl __libc_tsd_LOCALE@GOTNTPOFF(%ebx), %eax # ifdef NO_TLS_DIRECT_SEG_REFS addl %gs:0, %eax @@ -132,8 +131,7 @@ END (__strcasecmp_sse4_2) ENTRY (__strncasecmp_sse4_2) # ifdef PIC PUSH (%ebx) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) movl __libc_tsd_LOCALE@GOTNTPOFF(%ebx), %eax # ifdef NO_TLS_DIRECT_SEG_REFS addl %gs:0, %eax @@ -173,8 +171,7 @@ END (__strncasecmp_sse4_2) # ifdef PIC PUSH (%ebx) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) # endif L(ascii): .section .rodata.cst16,"aM",@progbits,16 diff --git a/sysdeps/i386/i686/multiarch/strcmp-ssse3.S b/sysdeps/i386/i686/multiarch/strcmp-ssse3.S index cbba465504..6c3e905135 100644 --- a/sysdeps/i386/i686/multiarch/strcmp-ssse3.S +++ b/sysdeps/i386/i686/multiarch/strcmp-ssse3.S @@ -1,5 +1,5 @@ /* strcmp with SSSE3 - Copyright (C) 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 2010-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -117,8 +117,7 @@ ENTRY (__strcasecmp_ssse3) # ifdef PIC PUSH (%ebx) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) movl __libc_tsd_LOCALE@GOTNTPOFF(%ebx), %eax # ifdef NO_TLS_DIRECT_SEG_REFS addl %gs:0, %eax @@ -149,8 +148,7 @@ END (__strcasecmp_ssse3) ENTRY (__strncasecmp_ssse3) # ifdef PIC PUSH (%ebx) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) movl __libc_tsd_LOCALE@GOTNTPOFF(%ebx), %eax # ifdef NO_TLS_DIRECT_SEG_REFS addl %gs:0, %eax @@ -190,8 +188,7 @@ ENTRY (STRCMP) # ifdef PIC PUSH (%ebx) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) # endif L(ascii): .section .rodata.cst16,"aM",@progbits,16 diff --git a/sysdeps/i386/i686/multiarch/strcmp.S b/sysdeps/i386/i686/multiarch/strcmp.S index 28e2d6154c..4c83901660 100644 --- a/sysdeps/i386/i686/multiarch/strcmp.S +++ b/sysdeps/i386/i686/multiarch/strcmp.S @@ -1,5 +1,5 @@ /* Multiple versions of strcmp - Copyright (C) 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 2010-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -52,23 +52,13 @@ need strncmp before the initialization happened. */ #if (defined SHARED || !defined USE_AS_STRNCMP) && !defined NOT_IN_libc # ifdef SHARED - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(STRCMP) .type STRCMP, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/strcpy-sse2.S b/sysdeps/i386/i686/multiarch/strcpy-sse2.S index fcef748f02..e69f400545 100644 --- a/sysdeps/i386/i686/multiarch/strcpy-sse2.S +++ b/sysdeps/i386/i686/multiarch/strcpy-sse2.S @@ -1,5 +1,5 @@ /* strcpy with SSE2 and unaligned load - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -59,7 +59,7 @@ # define BRANCH_TO_JMPTBL_ENTRY(TABLE, INDEX, SCALE) \ /* We first load PC into ECX. */ \ - call __i686.get_pc_thunk.cx; \ + SETUP_PIC_REG(cx); \ /* Get the address of the jump table. */ \ addl $(TABLE - .), %ecx; \ /* Get the entry and convert the relative offset to the \ diff --git a/sysdeps/i386/i686/multiarch/strcpy.S b/sysdeps/i386/i686/multiarch/strcpy.S index d025a4fffa..617fc328a7 100644 --- a/sysdeps/i386/i686/multiarch/strcpy.S +++ b/sysdeps/i386/i686/multiarch/strcpy.S @@ -1,5 +1,5 @@ /* Multiple versions of strcpy - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -62,23 +62,13 @@ #ifndef NOT_IN_libc # ifdef SHARED - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(STRCPY) .type STRCPY, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/strcspn.S b/sysdeps/i386/i686/multiarch/strcspn.S index b2310e4a8b..7be802ccfc 100644 --- a/sysdeps/i386/i686/multiarch/strcspn.S +++ b/sysdeps/i386/i686/multiarch/strcspn.S @@ -1,5 +1,5 @@ /* Multiple versions of strcspn - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -43,23 +43,13 @@ need strpbrk before the initialization happened. */ #if (defined SHARED || !defined USE_AS_STRPBRK) && !defined NOT_IN_libc # ifdef SHARED - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(STRCSPN) .type STRCSPN, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/strlen.S b/sysdeps/i386/i686/multiarch/strlen.S index 9d465c8454..fd2288df9f 100644 --- a/sysdeps/i386/i686/multiarch/strlen.S +++ b/sysdeps/i386/i686/multiarch/strlen.S @@ -1,5 +1,5 @@ /* Multiple versions of strlen - Copyright (C) 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 2009, 2010, 2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -25,23 +25,13 @@ DSO. In static binaries, we need strlen before the initialization happened. */ #if defined SHARED && !defined NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(strlen) .type strlen, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/strncase.S b/sysdeps/i386/i686/multiarch/strncase.S index d20532f993..ee79602635 100644 --- a/sysdeps/i386/i686/multiarch/strncase.S +++ b/sysdeps/i386/i686/multiarch/strncase.S @@ -1,5 +1,5 @@ /* Entry point for multi-version x86 strncasecmp. - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -27,8 +27,7 @@ ENTRY(__strncasecmp) pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/strnlen.S b/sysdeps/i386/i686/multiarch/strnlen.S index 7e542d9b7c..74dd71fe9d 100644 --- a/sysdeps/i386/i686/multiarch/strnlen.S +++ b/sysdeps/i386/i686/multiarch/strnlen.S @@ -1,5 +1,5 @@ /* Multiple versions of strnlen - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -22,23 +22,13 @@ #include #ifndef NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(__strnlen) .type __strnlen, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/strrchr.S b/sysdeps/i386/i686/multiarch/strrchr.S index 866cac0941..7d23468b9b 100644 --- a/sysdeps/i386/i686/multiarch/strrchr.S +++ b/sysdeps/i386/i686/multiarch/strrchr.S @@ -1,5 +1,5 @@ /* Multiple versions of strrchr - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -22,23 +22,13 @@ #include #ifndef NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(strrchr) .type strrchr, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/strspn.S b/sysdeps/i386/i686/multiarch/strspn.S index cd26c80185..e2dcc56699 100644 --- a/sysdeps/i386/i686/multiarch/strspn.S +++ b/sysdeps/i386/i686/multiarch/strspn.S @@ -1,5 +1,5 @@ /* Multiple versions of strspn - Copyright (C) 2009,2010 Free Software Foundation, Inc. + Copyright (C) 2009,2010,2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -28,23 +28,13 @@ /* Define multiple versions only for the definition in libc. */ #ifndef NOT_IN_libc # ifdef SHARED - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(strspn) .type strspn, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/wcschr.S b/sysdeps/i386/i686/multiarch/wcschr.S index bf0d6d5754..fceba30cc7 100644 --- a/sysdeps/i386/i686/multiarch/wcschr.S +++ b/sysdeps/i386/i686/multiarch/wcschr.S @@ -1,5 +1,5 @@ /* Multiple versions of wcschr - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -22,23 +22,13 @@ #include #ifndef NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(wcschr) .type wcschr, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/wcscmp.S b/sysdeps/i386/i686/multiarch/wcscmp.S index c1657ad0ef..cce57e4ab9 100644 --- a/sysdeps/i386/i686/multiarch/wcscmp.S +++ b/sysdeps/i386/i686/multiarch/wcscmp.S @@ -1,5 +1,5 @@ /* Multiple versions of wcscmp - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -25,23 +25,13 @@ DSO. In static binaries, we need wcscmp before the initialization happened. */ #ifndef NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(wcscmp) .type wcscmp, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/wcscpy.S b/sysdeps/i386/i686/multiarch/wcscpy.S index c7bafbe82a..1fdae08f4c 100644 --- a/sysdeps/i386/i686/multiarch/wcscpy.S +++ b/sysdeps/i386/i686/multiarch/wcscpy.S @@ -1,5 +1,5 @@ /* Multiple versions of wcscpy - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -29,8 +29,7 @@ ENTRY(wcscpy) pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/wcslen.S b/sysdeps/i386/i686/multiarch/wcslen.S index 58670377e0..327891b64e 100644 --- a/sysdeps/i386/i686/multiarch/wcslen.S +++ b/sysdeps/i386/i686/multiarch/wcslen.S @@ -1,5 +1,5 @@ /* Multiple versions of wcslen - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -22,23 +22,13 @@ #include #ifndef NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(__wcslen) .type __wcslen, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/wcsrchr.S b/sysdeps/i386/i686/multiarch/wcsrchr.S index 8240063dd6..7fb9885143 100644 --- a/sysdeps/i386/i686/multiarch/wcsrchr.S +++ b/sysdeps/i386/i686/multiarch/wcsrchr.S @@ -1,5 +1,5 @@ /* Multiple versions of wcsrchr - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -22,23 +22,13 @@ #include #ifndef NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function -__i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(wcsrchr) .type wcsrchr, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/i686/multiarch/wmemcmp.S b/sysdeps/i386/i686/multiarch/wmemcmp.S index 5080c14ea7..dccdd16cbf 100644 --- a/sysdeps/i386/i686/multiarch/wmemcmp.S +++ b/sysdeps/i386/i686/multiarch/wmemcmp.S @@ -1,5 +1,5 @@ /* Multiple versions of wmemcmp - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011-2012 Free Software Foundation, Inc. Contributed by Intel Corporation. This file is part of the GNU C Library. @@ -24,23 +24,13 @@ /* Define multiple versions only for the definition in libc. */ #ifndef NOT_IN_libc - .section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx - .p2align 4 - .type __i686.get_pc_thunk.bx,@function - __i686.get_pc_thunk.bx: - movl (%esp), %ebx - ret - .text ENTRY(wmemcmp) .type wmemcmp, @gnu_indirect_function pushl %ebx cfi_adjust_cfa_offset (4) cfi_rel_offset (ebx, 0) - call __i686.get_pc_thunk.bx - addl $_GLOBAL_OFFSET_TABLE_, %ebx + LOAD_PIC_REG(bx) cmpl $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx) jne 1f call __init_cpu_features diff --git a/sysdeps/i386/sysdep.h b/sysdeps/i386/sysdep.h index ffa38edd42..577cf8d28b 100644 --- a/sysdeps/i386/sysdep.h +++ b/sysdeps/i386/sysdep.h @@ -109,22 +109,12 @@ lose: SYSCALL_PIC_SETUP \ #define PSEUDO_END(name) \ END (name) -#undef JUMPTARGET -#ifdef PIC -#define JUMPTARGET(name) name##@PLT -#define SYSCALL_PIC_SETUP \ - pushl %ebx; \ - cfi_adjust_cfa_offset (4); \ - call 0f; \ -0: popl %ebx; \ - cfi_adjust_cfa_offset (-4); \ - addl $_GLOBAL_OFFSET_TABLE+[.-0b], %ebx; - # define SETUP_PIC_REG(reg) \ .ifndef __i686.get_pc_thunk.reg; \ .section .gnu.linkonce.t.__i686.get_pc_thunk.reg,"ax",@progbits; \ .globl __i686.get_pc_thunk.reg; \ .hidden __i686.get_pc_thunk.reg; \ + .p2align 4; \ .type __i686.get_pc_thunk.reg,@function; \ __i686.get_pc_thunk.reg: \ movl (%esp), %e##reg; \ @@ -137,6 +127,17 @@ __i686.get_pc_thunk.reg: \ # define LOAD_PIC_REG(reg) \ SETUP_PIC_REG(reg); addl $_GLOBAL_OFFSET_TABLE_, %e##reg +#undef JUMPTARGET +#ifdef PIC +#define JUMPTARGET(name) name##@PLT +#define SYSCALL_PIC_SETUP \ + pushl %ebx; \ + cfi_adjust_cfa_offset (4); \ + call 0f; \ +0: popl %ebx; \ + cfi_adjust_cfa_offset (-4); \ + addl $_GLOBAL_OFFSET_TABLE+[.-0b], %ebx; + #else #define JUMPTARGET(name) name #define SYSCALL_PIC_SETUP /* Nothing. */ -- cgit 1.4.1