Add secapi wrapper for wmemmove_s

wmemmove_s implementation for msvcrt.
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 7ce2bd2..1077cd3 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -191,7 +191,8 @@
   secapi/sprintf_s.c \
   secapi/strerror_s.c \
   secapi/vsprintf_s.c \
-  secapi/wmemcpy_s.c
+  secapi/wmemcpy_s.c \
+  secapi/wmemmove_s.c
 
 src_msvcrt32=\
   $(src_msvcrt) \
diff --git a/mingw-w64-crt/secapi/wmemmove_s.c b/mingw-w64-crt/secapi/wmemmove_s.c
new file mode 100644
index 0000000..c15f50b
--- /dev/null
+++ b/mingw-w64-crt/secapi/wmemmove_s.c
@@ -0,0 +1,60 @@
+#include <windows.h>
+#include <malloc.h>
+#include <errno.h>
+#include <msvcrt.h>
+
+errno_t __cdecl wmemmove_s (wchar_t *, size_t, const wchar_t *, size_t);
+static errno_t __cdecl _int_wmemmove_s (wchar_t *, size_t, const wchar_t*, size_t);
+static errno_t __cdecl _stub (wchar_t *, size_t, const wchar_t *, size_t);
+
+errno_t __cdecl (*__MINGW_IMP_SYMBOL(wmemmove_s))(wchar_t *, size_t, const wchar_t *, size_t) =
+ _stub;
+
+static errno_t __cdecl
+_stub (wchar_t *d, size_t dn, const wchar_t *s, size_t n)
+{
+  errno_t __cdecl (*f)(wchar_t *, size_t, const wchar_t *, size_t) = __MINGW_IMP_SYMBOL(wmemmove_s);
+
+  if (f == _stub)
+    {
+ f = (errno_t __cdecl (*)(wchar_t *, size_t, const wchar_t *, size_t))
+    GetProcAddress (__mingw_get_msvcrt_handle (), "wmemmove_s");
+ if (!f)
+  f = _int_wmemmove_s;
+ __MINGW_IMP_SYMBOL(wmemmove_s) = f;
+    }
+  return (*f)(d, dn, s, n);
+}
+
+errno_t __cdecl
+wmemmove_s (wchar_t *d, size_t dn, const wchar_t *s, size_t n)
+{
+  return _stub (d, dn, s, n);
+}
+
+static errno_t __cdecl
+_int_wmemmove_s (wchar_t *d, size_t dn, const wchar_t *s, size_t n)
+{
+  if (!n)
+    return 0;
+
+  if (!d || !s)
+    {
+      if (d)
+        memset (d, 0, dn * sizeof (wchar_t));
+      errno = EINVAL;
+      return EINVAL;
+    }
+
+  if (dn < n)
+    {
+      memset (d, 0, dn * sizeof (wchar_t));
+
+      errno = ERANGE;
+      return ERANGE;
+    }
+
+  memmove (d, s, n * sizeof (wchar_t));
+
+  return 0;
+}