Change memcpy ifunc to return memmove for x86
It is cleaner to do this with ifunc. This is a partial revert of:
https://android-review.googlesource.com/c/platform/bionic/+/693863
Test: run bionic unit test
Change-Id: I5fb5745fc98807805aedb94b683e959e2a76a25d
diff --git a/libc/arch-x86/dynamic_function_dispatch.cpp b/libc/arch-x86/dynamic_function_dispatch.cpp
index a925190..6624385 100644
--- a/libc/arch-x86/dynamic_function_dispatch.cpp
+++ b/libc/arch-x86/dynamic_function_dispatch.cpp
@@ -93,13 +93,6 @@
RETURN_FUNC(__memset_chk_func, __memset_chk_generic);
}
-typedef void* memcpy_func(void*, const void*, size_t);
-DEFINE_IFUNC_FOR(memcpy) {
- __builtin_cpu_init();
- if (cpu_is(ATOM)) RETURN_FUNC(memcpy_func, memcpy_atom);
- RETURN_FUNC(memcpy_func, memcpy_generic);
-}
-
typedef void* memmove_func(void* __dst, const void* __src, size_t __n);
DEFINE_IFUNC_FOR(memmove) {
__builtin_cpu_init();
@@ -107,6 +100,11 @@
RETURN_FUNC(memmove_func, memmove_generic);
}
+typedef void* memcpy_func(void*, const void*, size_t);
+DEFINE_IFUNC_FOR(memcpy) {
+ return memmove_resolver();
+}
+
typedef char* strcpy_func(char* __dst, const char* __src);
DEFINE_IFUNC_FOR(strcpy) {
__builtin_cpu_init();