Fix -D_FORTIFY_SOURCE memmove and bcop
authorJakub Jelinek <jakub@redhat.com>
Thu, 9 Dec 2010 15:38:18 +0000 (10:38 -0500)
committerUlrich Drepper <drepper@gmail.com>
Thu, 9 Dec 2010 15:38:18 +0000 (10:38 -0500)
ChangeLog
string/bits/string3.h
sysdeps/i386/i686/multiarch/strcmp.S

index 0fa7a55..1d5801a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-12-09  Jakub Jelinek  <jakub@redhat.com>
+
+       * string/bits/string3.h (memmove, bcopy): Remove __restrict.
+
 2010-12-03  Ulrich Drepper  <drepper@gmail.com>
 
        * po/it.po: Update from translation team.
index 1d759f1..1647725 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2004, 2005, 2007, 2009, 2010 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
@@ -53,8 +53,7 @@ __NTH (memcpy (void *__restrict __dest, __const void *__restrict __src,
 }
 
 __extern_always_inline void *
-__NTH (memmove (void *__restrict __dest, __const void *__restrict __src,
-               size_t __len))
+__NTH (memmove (void *__dest, __const void *__src, size_t __len))
 {
   return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest));
 }
@@ -88,8 +87,7 @@ __NTH (memset (void *__dest, int __ch, size_t __len))
 
 #ifdef __USE_BSD
 __extern_always_inline void
-__NTH (bcopy (__const void *__restrict __src, void *__restrict __dest,
-             size_t __len))
+__NTH (bcopy (__const void *__src, void *__dest, size_t __len))
 {
   (void) __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest));
 }
index 7136d47..8724594 100644 (file)
    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
+       .section        .gnu.linkonce.t.__i686.get_pc_thunk.dx,"ax",@progbits
+       .globl  __i686.get_pc_thunk.dx
+       .hidden __i686.get_pc_thunk.dx
+       .p2align 2
+       .type   __i686.get_pc_thunk.dx,@function
+__i686.get_pc_thunk.dx:
+       movl    (%esp), %edx
        ret
+       .size   __i686.get_pc_thunk.dx, .-__i686.get_pc_thunk.dx
 
        .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
-       cmpl    $0, KIND_OFFSET+__cpu_features@GOTOFF(%ebx)
+       call    __i686.get_pc_thunk.dx
+       addl    $_GLOBAL_OFFSET_TABLE_, %edx
+       cmpl    $0, KIND_OFFSET+__cpu_features@GOTOFF(%edx)
        jne     1f
        call    __init_cpu_features
-1:     leal    __STRCMP_IA32@GOTOFF(%ebx), %eax
-       testl   $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%ebx)
-       jz      2f
-       leal    __STRCMP_SSSE3@GOTOFF(%ebx), %eax
-       testl   $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%ebx)
-       jz      2f
-       leal    __STRCMP_SSE4_2@GOTOFF(%ebx), %eax
-2:     popl    %ebx
-       cfi_adjust_cfa_offset (-4)
-       cfi_restore (ebx)
-       ret
+1:     leal    __STRCMP_SSE4_2@GOTOFF(%edx), %eax
+       testl   $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features@GOTOFF(%edx)
+       jnz     2f
+       leal    __STRCMP_SSSE3@GOTOFF(%edx), %eax
+       testl   $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features@GOTOFF(%edx)
+       jnz     2f
+       leal    __STRCMP_IA32@GOTOFF(%edx), %ecx
+2:     ret
 END(STRCMP)
 # else
        .text
@@ -79,13 +74,13 @@ ENTRY(STRCMP)
        cmpl    $0, KIND_OFFSET+__cpu_features
        jne     1f
        call    __init_cpu_features
-1:     leal    __STRCMP_IA32, %eax
-       testl   $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
-       jz      2f
-       leal    __STRCMP_SSSE3, %eax
+1:     leal    __STRCMP_SSE4_2, %eax
        testl   $bit_SSE4_2, CPUID_OFFSET+index_SSE4_2+__cpu_features
-       jz      2f
-       leal    __STRCMP_SSE4_2, %eax
+       jnz     2f
+       leal    __STRCMP_SSSE3, %eax
+       testl   $bit_SSSE3, CPUID_OFFSET+index_SSSE3+__cpu_features
+       jnz     2f
+       leal    __STRCMP_IA32, %eax
 2:     ret
 END(STRCMP)
 # endif