[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r16965 - in /fsf/trunk/libc: ./ math/ nptl/ nptl/sysdeps/unix/sysv/linux/i386/ nptl/sysdeps/unix/sysv/linux/i386/i486/ sysde...



Author: eglibc
Date: Sat Feb  4 00:01:48 2012
New Revision: 16965

Log:
Import glibc-mainline for 2012-02-04

Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/math/tst-CMPLX.c
    fsf/trunk/libc/nptl/ChangeLog
    fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
    fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S
    fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
    fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S
    fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S
    fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S
    fsf/trunk/libc/sysdeps/i386/i686/memcmp.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/bcopy.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/bzero.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memchr.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcmp-sse4.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcmp.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy_chk.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memmove.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memmove_chk.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/mempcpy.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/mempcpy_chk.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memrchr.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset-sse2-rep.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset-sse2.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset_chk.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/rawmemchr.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcasecmp.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcat-sse2.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcat.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strchr.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcmp-sse4.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcmp.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcpy-sse2.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcpy.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcspn.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strlen.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strncase.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strnlen.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strrchr.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/strspn.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcschr.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcscmp.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcscpy.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcslen.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcsrchr.S
    fsf/trunk/libc/sysdeps/i386/i686/multiarch/wmemcmp.S
    fsf/trunk/libc/sysdeps/i386/sysdep.h
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sysdep.h

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Sat Feb  4 00:01:48 2012
@@ -1,3 +1,61 @@
+2012-02-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/i386/sysdep.h (GET_PC_THUNK, GET_PC_THUNK_STR): Define.
+	(SETUP_PIC_REG): Use GET_PC_THUNK.
+	* sysdeps/unix/sysv/linux/i386/sysdep.h: Use GET_PC_THUNK_STR
+	macro.
+
+2012-02-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* 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  <joseph@xxxxxxxxxxxxxxxx>
+
+	* math/tst-CMPLX.c: Include <stdio.h>.
+
 2012-01-31  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/powerpc/bits/mathdef.h (float_t): Always define as

Modified: fsf/trunk/libc/math/tst-CMPLX.c
==============================================================================
--- fsf/trunk/libc/math/tst-CMPLX.c (original)
+++ fsf/trunk/libc/math/tst-CMPLX.c Sat Feb  4 00:01:48 2012
@@ -1,4 +1,5 @@
 #include <complex.h>
+#include <stdio.h>
 
 
 static int

Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Sat Feb  4 00:01:48 2012
@@ -1,3 +1,13 @@
+2012-02-03  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* 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  <polacek@xxxxxxxxxx>
 
 	* forward.c (FORWARD_NORETURN): Define macro.

Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S Sat Feb  4 00:01:48 2012
@@ -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 <drepper@xxxxxxxxxx>, 2002.
 
@@ -649,17 +650,6 @@
 	.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

Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_post.S Sat Feb  4 00:01:48 2012
@@ -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 <drepper@xxxxxxxxxx>, 2002.
 
@@ -75,7 +76,7 @@
 	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 @@
 
 3:
 #ifdef PIC
-	call	__i686.get_pc_thunk.bx
+	SETUP_PIC_REG(bx)
 #else
 	movl	$5f, %ebx
 5:
@@ -149,15 +150,3 @@
 	.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

Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_timedwait.S Sat Feb  4 00:01:48 2012
@@ -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 <drepper@xxxxxxxxxx>, 2002.
 
@@ -148,7 +148,7 @@
 3:	negl	%esi
 6:
 #ifdef PIC
-	call	__i686.get_pc_thunk.bx
+	SETUP_PIC_REG(bx)
 #else
 	movl	$4f, %ebx
 4:

Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_trywait.S Sat Feb  4 00:01:48 2012
@@ -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 <drepper@xxxxxxxxxx>, 2002.
 
@@ -43,7 +43,7 @@
 
 1:
 #ifdef PIC
-	call	__i686.get_pc_thunk.cx
+	SETUP_PIC_REG(cx)
 #else
 	movl	$3f, %ecx
 3:
@@ -66,15 +66,3 @@
 __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

Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/i486/sem_wait.S Sat Feb  4 00:01:48 2012
@@ -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 <drepper@xxxxxxxxxx>, 2002.
 
@@ -108,7 +108,7 @@
 
 	negl	%esi
 #ifdef PIC
-	call	__i686.get_pc_thunk.bx
+	SETUP_PIC_REG(bx)
 #else
 	movl	$8f, %ebx
 8:
@@ -322,7 +322,7 @@
 	je	3b
 	negl	%esi
 #ifdef PIC
-	call	__i686.get_pc_thunk.bx
+	SETUP_PIC_REG(bx)
 #else
 	movl	$4f, %ebx
 4:

Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/pthread_once.S Sat Feb  4 00:01:48 2012
@@ -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 <drepper@xxxxxxxxxx>, 2002.
 
@@ -52,8 +52,7 @@
 	   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 @@
 
 	.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

Modified: fsf/trunk/libc/sysdeps/i386/i686/memcmp.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/memcmp.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/memcmp.S Sat Feb  4 00:01:48 2012
@@ -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,21 +36,12 @@
    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)

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/bcopy.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/bcopy.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/bcopy.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/bzero.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/bzero.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/bzero.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memchr.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memchr.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memchr.S Sat Feb  4 00:01:48 2012
@@ -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 <init-arch.h>
 
 #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 @@
 	.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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcmp-sse4.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcmp-sse4.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcmp-sse4.S Sat Feb  4 00:01:48 2012
@@ -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	\

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcmp.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcmp.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcmp.S Sat Feb  4 00:01:48 2012
@@ -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 @@
 	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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S Sat Feb  4 00:01:48 2012
@@ -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 @@
 	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 @@
 	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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy-ssse3.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy-ssse3.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy-ssse3.S Sat Feb  4 00:01:48 2012
@@ -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 @@
 	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 @@
 	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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy_chk.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy_chk.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memcpy_chk.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memmove.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memmove.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memmove.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memmove_chk.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memmove_chk.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memmove_chk.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/mempcpy.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/mempcpy.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/mempcpy.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/mempcpy_chk.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/mempcpy_chk.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/mempcpy_chk.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memrchr.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memrchr.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memrchr.S Sat Feb  4 00:01:48 2012
@@ -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 <init-arch.h>
 
 #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 @@
 	.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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset-sse2-rep.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset-sse2-rep.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset-sse2-rep.S Sat Feb  4 00:01:48 2012
@@ -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 @@
 	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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset-sse2.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset-sse2.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset-sse2.S Sat Feb  4 00:01:48 2012
@@ -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 @@
 	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 @@
 #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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset_chk.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset_chk.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/memset_chk.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/rawmemchr.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/rawmemchr.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/rawmemchr.S Sat Feb  4 00:01:48 2012
@@ -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 <init-arch.h>
 
 #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 @@
 	.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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcasecmp.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcasecmp.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcasecmp.S Sat Feb  4 00:01:48 2012
@@ -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 @@
 	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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcat-sse2.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcat-sse2.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcat-sse2.S Sat Feb  4 00:01:48 2012
@@ -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	\

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcat.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcat.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcat.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strchr.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strchr.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strchr.S Sat Feb  4 00:01:48 2012
@@ -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 <init-arch.h>
 
 #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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcmp-sse4.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcmp-sse4.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcmp-sse4.S Sat Feb  4 00:01:48 2012
@@ -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 @@
 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 @@
 
 # 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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcmp-ssse3.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcmp-ssse3.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcmp-ssse3.S Sat Feb  4 00:01:48 2012
@@ -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 @@
 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 @@
 
 # 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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcmp.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcmp.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcmp.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcpy-sse2.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcpy-sse2.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcpy-sse2.S Sat Feb  4 00:01:48 2012
@@ -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 \

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcpy.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcpy.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcpy.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcspn.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcspn.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strcspn.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strlen.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strlen.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strlen.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strncase.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strncase.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strncase.S Sat Feb  4 00:01:48 2012
@@ -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 @@
 	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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strnlen.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strnlen.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strnlen.S Sat Feb  4 00:01:48 2012
@@ -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 <init-arch.h>
 
 #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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strrchr.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strrchr.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strrchr.S Sat Feb  4 00:01:48 2012
@@ -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 <init-arch.h>
 
 #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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/strspn.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/strspn.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/strspn.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcschr.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcschr.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcschr.S Sat Feb  4 00:01:48 2012
@@ -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 <init-arch.h>
 
 #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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcscmp.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcscmp.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcscmp.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcscpy.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcscpy.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcscpy.S Sat Feb  4 00:01:48 2012
@@ -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 @@
 	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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcslen.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcslen.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcslen.S Sat Feb  4 00:01:48 2012
@@ -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 <init-arch.h>
 
 #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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcsrchr.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcsrchr.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/wcsrchr.S Sat Feb  4 00:01:48 2012
@@ -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 <init-arch.h>
 
 #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

Modified: fsf/trunk/libc/sysdeps/i386/i686/multiarch/wmemcmp.S
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/i686/multiarch/wmemcmp.S (original)
+++ fsf/trunk/libc/sysdeps/i386/i686/multiarch/wmemcmp.S Sat Feb  4 00:01:48 2012
@@ -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

Modified: fsf/trunk/libc/sysdeps/i386/sysdep.h
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/sysdep.h (original)
+++ fsf/trunk/libc/sysdeps/i386/sysdep.h Sat Feb  4 00:01:48 2012
@@ -19,6 +19,12 @@
    02111-1307 USA.  */
 
 #include <sysdeps/generic/sysdep.h>
+
+#ifdef __ASSEMBLER__
+# define GET_PC_THUNK(reg) __i686.get_pc_thunk.reg
+#else
+# define GET_PC_THUNK_STR(reg) "__i686.get_pc_thunk." #reg
+#endif
 
 #ifdef	__ASSEMBLER__
 
@@ -109,6 +115,24 @@
 #define	PSEUDO_END(name)						      \
   END (name)
 
+# define SETUP_PIC_REG(reg) \
+  .ifndef GET_PC_THUNK(reg);						      \
+  .section .gnu.linkonce.t.GET_PC_THUNK(reg),"ax",@progbits;		      \
+  .globl GET_PC_THUNK(reg);						      \
+  .hidden GET_PC_THUNK(reg);						      \
+  .p2align 4;								      \
+  .type GET_PC_THUNK(reg),@function;					      \
+GET_PC_THUNK(reg):							      \
+  movl (%esp), %e##reg;							      \
+  ret;									      \
+  .size GET_PC_THUNK(reg), . - GET_PC_THUNK(reg);			      \
+  .previous;								      \
+  .endif;								      \
+  call 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
@@ -119,23 +143,6 @@
 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;					      \
-  .type __i686.get_pc_thunk.reg,@function;				      \
-__i686.get_pc_thunk.reg:						      \
-  movl (%esp), %e##reg;							      \
-  ret;									      \
-  .size __i686.get_pc_thunk.reg, . - __i686.get_pc_thunk.reg;		      \
-  .previous;								      \
-  .endif;								      \
-  call __i686.get_pc_thunk.reg
-
-# define LOAD_PIC_REG(reg) \
-  SETUP_PIC_REG(reg); addl $_GLOBAL_OFFSET_TABLE_, %e##reg
 
 #else
 #define JUMPTARGET(name)	name

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sysdep.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sysdep.h (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sysdep.h Sat Feb  4 00:01:48 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992,1993,1995-2000,2002-2006,2007,2011
+/* Copyright (C) 1992,1993,1995-2000,2002-2006,2007,2011-2012
 	Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper, <drepper@xxxxxxx>, August 1995.
@@ -514,17 +514,17 @@
 # define check_consistency()						      \
   ({ int __res;								      \
      __asm__ __volatile__						      \
-       ("call __i686.get_pc_thunk.cx;"					      \
+       ("call "GET_PC_THUNK_STR(cx)";"					      \
 	"addl $_GLOBAL_OFFSET_TABLE_, %%ecx;"				      \
 	"subl %%ebx, %%ecx;"						      \
 	"je 1f;"							      \
 	"ud2;"								      \
 	"1:\n"								      \
-	".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:"					      \
+	".section .gnu.linkonce.t."GET_PC_THUNK_STR(cx)",\"ax\",@progbits;"   \
+	".globl "GET_PC_THUNK_STR(cx)";"				      \
+	".hidden "GET_PC_THUNK_STR(cx)";"				      \
+	".type "GET_PC_THUNK_STR(cx)",@function;"			      \
+	GET_PC_THUNK_STR(cx)":"						      \
 	"movl (%%esp), %%ecx;"						      \
 	"ret;"								      \
 	".previous"							      \

_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits