Adopt remaining MTE string routines.
ARM has released the remaining MTE string routines, so let's start
using them. The strnlen implementation is now compatible with MTE,
so it no longer needs to be an ifunc.
Bug: 135772972
Change-Id: I9de7fb44447aa1b878f4ad3f62cb0129857b43ad
diff --git a/libc/arch-arm64/dynamic_function_dispatch.cpp b/libc/arch-arm64/dynamic_function_dispatch.cpp
index 5c6d4ed..0fd331f 100644
--- a/libc/arch-arm64/dynamic_function_dispatch.cpp
+++ b/libc/arch-arm64/dynamic_function_dispatch.cpp
@@ -45,7 +45,7 @@
typedef void* memchr_func(const void*, int, size_t);
DEFINE_IFUNC_FOR(memchr) {
if (supports_mte(arg->_hwcap2)) {
- RETURN_FUNC(memchr_func, memchr_mte);
+ RETURN_FUNC(memchr_func, __memchr_aarch64_mte);
} else {
RETURN_FUNC(memchr_func, __memchr_aarch64);
}
@@ -54,7 +54,7 @@
typedef int stpcpy_func(char*, const char*);
DEFINE_IFUNC_FOR(stpcpy) {
if (supports_mte(arg->_hwcap2)) {
- RETURN_FUNC(stpcpy_func, stpcpy_mte);
+ RETURN_FUNC(stpcpy_func, __stpcpy_aarch64_mte);
} else {
RETURN_FUNC(stpcpy_func, __stpcpy_aarch64);
}
@@ -72,7 +72,7 @@
typedef char* strchrnul_func(const char*, int);
DEFINE_IFUNC_FOR(strchrnul) {
if (supports_mte(arg->_hwcap2)) {
- RETURN_FUNC(strchrnul_func, strchrnul_mte);
+ RETURN_FUNC(strchrnul_func, __strchrnul_aarch64_mte);
} else {
RETURN_FUNC(strchrnul_func, __strchrnul_aarch64);
}
@@ -81,7 +81,7 @@
typedef int strcmp_func(const char*, const char*);
DEFINE_IFUNC_FOR(strcmp) {
if (supports_mte(arg->_hwcap2)) {
- RETURN_FUNC(strcmp_func, strcmp_mte);
+ RETURN_FUNC(strcmp_func, __strcmp_aarch64_mte);
} else {
RETURN_FUNC(strcmp_func, __strcmp_aarch64);
}
@@ -90,7 +90,7 @@
typedef int strcpy_func(char*, const char*);
DEFINE_IFUNC_FOR(strcpy) {
if (supports_mte(arg->_hwcap2)) {
- RETURN_FUNC(strcpy_func, strcpy_mte);
+ RETURN_FUNC(strcpy_func, __strcpy_aarch64_mte);
} else {
RETURN_FUNC(strcpy_func, __strcpy_aarch64);
}
@@ -108,25 +108,16 @@
typedef int strncmp_func(const char*, const char*, int);
DEFINE_IFUNC_FOR(strncmp) {
if (supports_mte(arg->_hwcap2)) {
- RETURN_FUNC(strncmp_func, strncmp_mte);
+ RETURN_FUNC(strncmp_func, __strncmp_aarch64_mte);
} else {
RETURN_FUNC(strncmp_func, __strncmp_aarch64);
}
}
-typedef size_t strnlen_func(const char*, int);
-DEFINE_IFUNC_FOR(strnlen) {
- if (supports_mte(arg->_hwcap2)) {
- RETURN_FUNC(strnlen_func, strnlen_mte);
- } else {
- RETURN_FUNC(strnlen_func, __strnlen_aarch64);
- }
-}
-
typedef char* strrchr_func(const char*, int);
DEFINE_IFUNC_FOR(strrchr) {
if (supports_mte(arg->_hwcap2)) {
- RETURN_FUNC(strrchr_func, strrchr_mte);
+ RETURN_FUNC(strrchr_func, __strrchr_aarch64_mte);
} else {
RETURN_FUNC(strrchr_func, __strrchr_aarch64);
}