aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/x86_64/multiarch/memcpy.S
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2011-04-01 19:38:21 -0400
committerUlrich Drepper <drepper@gmail.com>2011-04-01 19:38:21 -0400
commit0354e355014b7bfda32622e0255399d859862fcd (patch)
treed2f823c407add9a82d7b6b3c055b78a9811914cb /sysdeps/x86_64/multiarch/memcpy.S
parent8593482f5ec33daa90fca63db380edc8283c39df (diff)
downloadglibc-0354e355014b7bfda32622e0255399d859862fcd.tar
glibc-0354e355014b7bfda32622e0255399d859862fcd.tar.gz
glibc-0354e355014b7bfda32622e0255399d859862fcd.tar.bz2
glibc-0354e355014b7bfda32622e0255399d859862fcd.zip
Work around old buggy program which cannot cope with memcpy semantics.
Diffstat (limited to 'sysdeps/x86_64/multiarch/memcpy.S')
-rw-r--r--sysdeps/x86_64/multiarch/memcpy.S12
1 files changed, 8 insertions, 4 deletions
diff --git a/sysdeps/x86_64/multiarch/memcpy.S b/sysdeps/x86_64/multiarch/memcpy.S
index 8e9fb190d3..9863014f55 100644
--- a/sysdeps/x86_64/multiarch/memcpy.S
+++ b/sysdeps/x86_64/multiarch/memcpy.S
@@ -1,5 +1,6 @@
/* Multiple versions of memcpy
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011
+ Free Software Foundation, Inc.
Contributed by Intel Corporation.
This file is part of the GNU C Library.
@@ -19,6 +20,7 @@
02111-1307 USA. */
#include <sysdep.h>
+#include <shlib-compat.h>
#include <init-arch.h>
/* Define multiple versions only for the definition in lib and for
@@ -26,8 +28,8 @@
happened. */
#if defined SHARED && !defined NOT_IN_libc
.text
-ENTRY(memcpy)
- .type memcpy, @gnu_indirect_function
+ENTRY(__new_memcpy)
+ .type __new_memcpy, @gnu_indirect_function
cmpl $0, KIND_OFFSET+__cpu_features(%rip)
jne 1f
call __init_cpu_features
@@ -39,7 +41,7 @@ ENTRY(memcpy)
jz 2f
leaq __memcpy_ssse3_back(%rip), %rax
2: ret
-END(memcpy)
+END(__new_memcpy)
# undef ENTRY
# define ENTRY(name) \
@@ -68,6 +70,8 @@ END(memcpy)
by the indirect call in the PLT. */
# define libc_hidden_builtin_def(name) \
.globl __GI_memcpy; __GI_memcpy = __memcpy_sse2
+
+versioned_symbol (libc, __new_memcpy, memcpy, GLIBC_2_14);
#endif
#include "../memcpy.S"