diff --git a/libc/bionic/wchar_l.cpp b/libc/bionic/wchar_l.cpp
index 6c39e8d..a86961f 100644
--- a/libc/bionic/wchar_l.cpp
+++ b/libc/bionic/wchar_l.cpp
@@ -37,24 +37,42 @@
   return wcsncasecmp(ws1, ws2, n);
 }
 
-int wcscoll_l(const wchar_t *ws1, const wchar_t *ws2, locale_t) {
+int wcscoll_l(const wchar_t* ws1, const wchar_t* ws2, locale_t) {
   return wcscoll(ws1, ws2);
 }
 
-size_t wcsxfrm_l(wchar_t *dest, const wchar_t *src, size_t n, locale_t) {
-  return wcsxfrm(dest, src, n);
+size_t wcsftime_l(wchar_t* buf, size_t n, const wchar_t* fmt, const struct tm* tm, locale_t) {
+  return wcsftime(buf, n, fmt, tm);
 }
 
-long long wcstoll_l(const wchar_t *nptr, wchar_t **endptr, int base,
-                    locale_t) {
-  return wcstoll(nptr, endptr, base);
+size_t wcsxfrm_l(wchar_t* dst, const wchar_t* src, size_t n, locale_t) {
+  return wcsxfrm(dst, src, n);
 }
 
-unsigned long long wcstoull_l(const wchar_t *nptr, wchar_t **endptr,
-                              int base, locale_t) {
-  return wcstoull(nptr, endptr, base);
+double wcstod_l(const wchar_t* s, wchar_t** end_ptr, locale_t) {
+  return wcstod(s, end_ptr);
 }
 
-long double wcstold_l(const wchar_t *nptr, wchar_t **endptr, locale_t) {
-  return wcstold(nptr, endptr);
+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);
 }
