Use ELF aliases for most of the strto*_l/wcsto*_l functions.

We don't need any of these no-op implementations that the compiler turns into a single branch instruction.

There is some __INTRODUCED_IN cleanup we can do here, but I'm going to do that separately as part of a broader "let's just __RENAME any of the functions that take [but ignore] a locale_t to the function that does the real work" header-only change, where we can do more.

Change-Id: I208768f95d5554455b755d21e8eb2c8a21000101
diff --git a/libc/bionic/stdlib_l.cpp b/libc/bionic/stdlib_l.cpp
index 18e9f86..a636d08 100644
--- a/libc/bionic/stdlib_l.cpp
+++ b/libc/bionic/stdlib_l.cpp
@@ -37,23 +37,6 @@
   return strtof(s, end_ptr);
 }
 
-long strtol_l(const char* s, char** end_ptr, int base, locale_t) {
-  return strtol(s, end_ptr, base);
-}
-
 long double strtold_l(const char* s, char** end_ptr, locale_t) {
   return strtold(s, end_ptr);
 }
-
-long long strtoll_l(const char* s, char** end_ptr, int base, locale_t) {
-  return strtoll(s, end_ptr, base);
-}
-
-unsigned long strtoul_l(const char* s, char** end_ptr, int base, locale_t) {
-  return strtoul(s, end_ptr, base);
-}
-
-unsigned long long strtoull_l(const char* s, char** end_ptr, int base, locale_t) {
-  return strtoull(s, end_ptr, base);
-}
-
diff --git a/libc/bionic/strtol.cpp b/libc/bionic/strtol.cpp
index def7921..607145d 100644
--- a/libc/bionic/strtol.cpp
+++ b/libc/bionic/strtol.cpp
@@ -142,34 +142,42 @@
 long strtol(const char* s, char** end, int base) {
   return StrToI<long, LONG_MIN, LONG_MAX, char>(s, end, base);
 }
+__strong_alias(strtol_l, strtol);
 
 long wcstol(const wchar_t* s, wchar_t** end, int base) {
   return StrToI<long, LONG_MIN, LONG_MAX, wchar_t>(s, end, base);
 }
+__strong_alias(wcstol_l, wcstol);
 
 long long strtoll(const char* s, char** end, int base) {
   return StrToI<long long, LLONG_MIN, LLONG_MAX, char>(s, end, base);
 }
+__strong_alias(strtoll_l, strtoll);
 
 long long wcstoll(const wchar_t* s, wchar_t** end, int base) {
   return StrToI<long long, LLONG_MIN, LLONG_MAX, wchar_t>(s, end, base);
 }
+__strong_alias(wcstoll_l, wcstoll);
 
 unsigned long strtoul(const char* s, char** end, int base) {
   return StrToI<unsigned long, 0, ULONG_MAX, char>(s, end, base);
 }
+__strong_alias(strtoul_l, strtoul);
 
 unsigned long wcstoul(const wchar_t* s, wchar_t** end, int base) {
   return StrToI<unsigned long, 0, ULONG_MAX, wchar_t>(s, end, base);
 }
+__strong_alias(wcstoul_l, wcstoul);
 
 unsigned long long strtoull(const char* s, char** end, int base) {
   return StrToI<unsigned long long, 0, ULLONG_MAX, char>(s, end, base);
 }
+__strong_alias(strtoull_l, strtoull);
 
 unsigned long long wcstoull(const wchar_t* s, wchar_t** end, int base) {
   return StrToI<unsigned long long, 0, ULLONG_MAX, wchar_t>(s, end, base);
 }
+__strong_alias(wcstoull_l, wcstoull);
 
 uintmax_t strtoumax(const char* s, char** end, int base) {
   return StrToI<uintmax_t, 0, UINTMAX_MAX, char>(s, end, base);
diff --git a/libc/bionic/wchar_l.cpp b/libc/bionic/wchar_l.cpp
index 1e7a231..b2c4a00 100644
--- a/libc/bionic/wchar_l.cpp
+++ b/libc/bionic/wchar_l.cpp
@@ -41,34 +41,6 @@
   return wcscoll(ws1, ws2);
 }
 
-double wcstod_l(const wchar_t* s, wchar_t** end_ptr, locale_t) {
-  return wcstod(s, end_ptr);
-}
-
-float wcstof_l(const wchar_t* s, wchar_t** end_ptr, locale_t) {
-  return wcstof(s, end_ptr);
-}
-
-long wcstol_l(const wchar_t* s, wchar_t** end_ptr, int base, locale_t) {
-  return wcstol(s, end_ptr, base);
-}
-
-long long wcstoll_l(const wchar_t* s, wchar_t** end_ptr, int base, locale_t) {
-  return wcstoll(s, end_ptr, base);
-}
-
-unsigned long wcstoul_l(const wchar_t* s, wchar_t** end_ptr, int base, locale_t) {
-  return wcstoul(s, end_ptr, base);
-}
-
-unsigned long long wcstoull_l(const wchar_t* s, wchar_t** end_ptr, int base, locale_t) {
-  return wcstoull(s, end_ptr, base);
-}
-
-long double wcstold_l(const wchar_t* s, wchar_t** end_ptr, locale_t) {
-  return wcstold(s, end_ptr);
-}
-
 size_t wcsxfrm_l(wchar_t* dst, const wchar_t* src, size_t n, locale_t) {
   return wcsxfrm(dst, src, n);
 }
diff --git a/libc/bionic/wcstod.cpp b/libc/bionic/wcstod.cpp
index c82d788..00c8a08 100644
--- a/libc/bionic/wcstod.cpp
+++ b/libc/bionic/wcstod.cpp
@@ -94,11 +94,14 @@
 float wcstof(const wchar_t* s, wchar_t** end) {
   return wcstod<float>(s, end, strtof);
 }
+__strong_alias(wcstof_l, wcstof);
 
 double wcstod(const wchar_t* s, wchar_t** end) {
   return wcstod<double>(s, end, strtod);
 }
+__strong_alias(wcstod_l, wcstod);
 
 long double wcstold(const wchar_t* s, wchar_t** end) {
   return wcstod<long double>(s, end, strtold);
 }
+__strong_alias(wcstold_l, wcstold);