* secapi/wmemcpy_s.c: New file.
        * secapi/memcpy_s.c: New file.


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@5348 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-crt/ChangeLog b/mingw-w64-crt/ChangeLog
index 1a08181..b065afa 100644
--- a/mingw-w64-crt/ChangeLog
+++ b/mingw-w64-crt/ChangeLog
@@ -1,5 +1,7 @@
 2012-08-07  Kai Tietz  <ktietz@redhat.com>
 
+	* secapi/wmemcpy_s.c: New file.
+	* secapi/memcpy_s.c: New file.
 	* secapi/_strdate_s.c: New file.
 	* secapi/_wstrdate_s.c: New file.
 	* secapi/_strtime_s.c: New file.
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index dffe239..d05d9a4 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -249,7 +249,8 @@
   secapi/_localtime32_s.c secapi/_localtime64_s.c \
   secapi/_gmtime64_s.c secapi/_gmtime32_s.c \
   secapi/_strdate_s.c secapi/_wstrdate_s.c \
-  secapi/_strtime_s.c secapi/_wstrtime_s.c
+  secapi/_strtime_s.c secapi/_wstrtime_s.c \
+  secapi/wmemcpy_s.c secapi/memcpy_s.c
 
 # these only go into the 64 bit version:
 src_libmingwex64=\
diff --git a/mingw-w64-crt/Makefile.in b/mingw-w64-crt/Makefile.in
index 6806fca..e834dad 100644
--- a/mingw-w64-crt/Makefile.in
+++ b/mingw-w64-crt/Makefile.in
@@ -489,10 +489,10 @@
 	secapi/_localtime32_s.c secapi/_localtime64_s.c \
 	secapi/_gmtime64_s.c secapi/_gmtime32_s.c secapi/_strdate_s.c \
 	secapi/_wstrdate_s.c secapi/_strtime_s.c secapi/_wstrtime_s.c \
-	intrincs/membarrier.c intrincs/readfsbyte.c \
-	intrincs/readfsword.c intrincs/readfsdword.c \
-	intrincs/writefsbyte.c intrincs/writefsword.c \
-	intrincs/writefsdword.c
+	secapi/wmemcpy_s.c secapi/memcpy_s.c intrincs/membarrier.c \
+	intrincs/readfsbyte.c intrincs/readfsword.c \
+	intrincs/readfsdword.c intrincs/writefsbyte.c \
+	intrincs/writefsword.c intrincs/writefsdword.c
 am__objects_13 = crt/lib32_libmingwex_a-dllentry.$(OBJEXT) \
 	crt/lib32_libmingwex_a-dllmain.$(OBJEXT) \
 	complex/lib32_libmingwex_a-cabs.$(OBJEXT) \
@@ -1013,7 +1013,9 @@
 	secapi/lib32_libmingwex_a-_strdate_s.$(OBJEXT) \
 	secapi/lib32_libmingwex_a-_wstrdate_s.$(OBJEXT) \
 	secapi/lib32_libmingwex_a-_strtime_s.$(OBJEXT) \
-	secapi/lib32_libmingwex_a-_wstrtime_s.$(OBJEXT)
+	secapi/lib32_libmingwex_a-_wstrtime_s.$(OBJEXT) \
+	secapi/lib32_libmingwex_a-wmemcpy_s.$(OBJEXT) \
+	secapi/lib32_libmingwex_a-memcpy_s.$(OBJEXT)
 am__objects_14 = intrincs/lib32_libmingwex_a-membarrier.$(OBJEXT) \
 	intrincs/lib32_libmingwex_a-readfsbyte.$(OBJEXT) \
 	intrincs/lib32_libmingwex_a-readfsword.$(OBJEXT) \
@@ -1542,17 +1544,17 @@
 	secapi/_localtime32_s.c secapi/_localtime64_s.c \
 	secapi/_gmtime64_s.c secapi/_gmtime32_s.c secapi/_strdate_s.c \
 	secapi/_wstrdate_s.c secapi/_strtime_s.c secapi/_wstrtime_s.c \
-	intrincs/bittest64.c intrincs/bittestc64.c \
-	intrincs/bittestr64.c intrincs/bittestri64.c \
-	intrincs/bittests64.c intrincs/bittestsi64.c \
-	intrincs/bitscanfwd64.c intrincs/bitscanrev64.c \
-	intrincs/ilockadd64.c intrincs/readgsbyte.c \
-	intrincs/readgsword.c intrincs/readgsdword.c \
-	intrincs/readgsqword.c intrincs/writegsbyte.c \
-	intrincs/writegsword.c intrincs/writegsdword.c \
-	intrincs/writegsqword.c intrincs/mul128ex.c \
-	intrincs/umul128ex.c intrincs/_mul128.c intrincs/_umul128.c \
-	intrincs/__movsq.c intrincs/__stosq.c \
+	secapi/wmemcpy_s.c secapi/memcpy_s.c intrincs/bittest64.c \
+	intrincs/bittestc64.c intrincs/bittestr64.c \
+	intrincs/bittestri64.c intrincs/bittests64.c \
+	intrincs/bittestsi64.c intrincs/bitscanfwd64.c \
+	intrincs/bitscanrev64.c intrincs/ilockadd64.c \
+	intrincs/readgsbyte.c intrincs/readgsword.c \
+	intrincs/readgsdword.c intrincs/readgsqword.c \
+	intrincs/writegsbyte.c intrincs/writegsword.c \
+	intrincs/writegsdword.c intrincs/writegsqword.c \
+	intrincs/mul128ex.c intrincs/umul128ex.c intrincs/_mul128.c \
+	intrincs/_umul128.c intrincs/__movsq.c intrincs/__stosq.c \
 	intrincs/__shiftright128.c intrincs/__shiftleft128.c
 am__objects_38 = crt/lib64_libmingwex_a-dllentry.$(OBJEXT) \
 	crt/lib64_libmingwex_a-dllmain.$(OBJEXT) \
@@ -2074,7 +2076,9 @@
 	secapi/lib64_libmingwex_a-_strdate_s.$(OBJEXT) \
 	secapi/lib64_libmingwex_a-_wstrdate_s.$(OBJEXT) \
 	secapi/lib64_libmingwex_a-_strtime_s.$(OBJEXT) \
-	secapi/lib64_libmingwex_a-_wstrtime_s.$(OBJEXT)
+	secapi/lib64_libmingwex_a-_wstrtime_s.$(OBJEXT) \
+	secapi/lib64_libmingwex_a-wmemcpy_s.$(OBJEXT) \
+	secapi/lib64_libmingwex_a-memcpy_s.$(OBJEXT)
 am__objects_39 = intrincs/lib64_libmingwex_a-bittest64.$(OBJEXT) \
 	intrincs/lib64_libmingwex_a-bittestc64.$(OBJEXT) \
 	intrincs/lib64_libmingwex_a-bittestr64.$(OBJEXT) \
@@ -3544,7 +3548,8 @@
   secapi/_localtime32_s.c secapi/_localtime64_s.c \
   secapi/_gmtime64_s.c secapi/_gmtime32_s.c \
   secapi/_strdate_s.c secapi/_wstrdate_s.c \
-  secapi/_strtime_s.c secapi/_wstrtime_s.c
+  secapi/_strtime_s.c secapi/_wstrtime_s.c \
+  secapi/wmemcpy_s.c secapi/memcpy_s.c
 
 
 # these only go into the 64 bit version:
@@ -5862,6 +5867,10 @@
 	secapi/$(am__dirstamp) secapi/$(DEPDIR)/$(am__dirstamp)
 secapi/lib32_libmingwex_a-_wstrtime_s.$(OBJEXT):  \
 	secapi/$(am__dirstamp) secapi/$(DEPDIR)/$(am__dirstamp)
+secapi/lib32_libmingwex_a-wmemcpy_s.$(OBJEXT): secapi/$(am__dirstamp) \
+	secapi/$(DEPDIR)/$(am__dirstamp)
+secapi/lib32_libmingwex_a-memcpy_s.$(OBJEXT): secapi/$(am__dirstamp) \
+	secapi/$(DEPDIR)/$(am__dirstamp)
 intrincs/lib32_libmingwex_a-membarrier.$(OBJEXT):  \
 	intrincs/$(am__dirstamp) intrincs/$(DEPDIR)/$(am__dirstamp)
 intrincs/lib32_libmingwex_a-readfsbyte.$(OBJEXT):  \
@@ -7367,6 +7376,10 @@
 	secapi/$(am__dirstamp) secapi/$(DEPDIR)/$(am__dirstamp)
 secapi/lib64_libmingwex_a-_wstrtime_s.$(OBJEXT):  \
 	secapi/$(am__dirstamp) secapi/$(DEPDIR)/$(am__dirstamp)
+secapi/lib64_libmingwex_a-wmemcpy_s.$(OBJEXT): secapi/$(am__dirstamp) \
+	secapi/$(DEPDIR)/$(am__dirstamp)
+secapi/lib64_libmingwex_a-memcpy_s.$(OBJEXT): secapi/$(am__dirstamp) \
+	secapi/$(DEPDIR)/$(am__dirstamp)
 intrincs/lib64_libmingwex_a-bittest64.$(OBJEXT):  \
 	intrincs/$(am__dirstamp) intrincs/$(DEPDIR)/$(am__dirstamp)
 intrincs/lib64_libmingwex_a-bittestc64.$(OBJEXT):  \
@@ -9701,6 +9714,8 @@
 	-rm -f secapi/lib32_libmingwex_a-_wstrdate_s.$(OBJEXT)
 	-rm -f secapi/lib32_libmingwex_a-_wstrtime_s.$(OBJEXT)
 	-rm -f secapi/lib32_libmingwex_a-asctime_s.$(OBJEXT)
+	-rm -f secapi/lib32_libmingwex_a-memcpy_s.$(OBJEXT)
+	-rm -f secapi/lib32_libmingwex_a-wmemcpy_s.$(OBJEXT)
 	-rm -f secapi/lib64_libmingwex_a-_access_s.$(OBJEXT)
 	-rm -f secapi/lib64_libmingwex_a-_cgets_s.$(OBJEXT)
 	-rm -f secapi/lib64_libmingwex_a-_cgetws_s.$(OBJEXT)
@@ -9731,6 +9746,8 @@
 	-rm -f secapi/lib64_libmingwex_a-_wstrdate_s.$(OBJEXT)
 	-rm -f secapi/lib64_libmingwex_a-_wstrtime_s.$(OBJEXT)
 	-rm -f secapi/lib64_libmingwex_a-asctime_s.$(OBJEXT)
+	-rm -f secapi/lib64_libmingwex_a-memcpy_s.$(OBJEXT)
+	-rm -f secapi/lib64_libmingwex_a-wmemcpy_s.$(OBJEXT)
 	-rm -f stdio/lib32_libmingwex_a-_Exit.$(OBJEXT)
 	-rm -f stdio/lib32_libmingwex_a-_findfirst64i32.$(OBJEXT)
 	-rm -f stdio/lib32_libmingwex_a-_findnext64i32.$(OBJEXT)
@@ -11277,6 +11294,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib32_libmingwex_a-_wstrdate_s.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib32_libmingwex_a-_wstrtime_s.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib32_libmingwex_a-asctime_s.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib32_libmingwex_a-memcpy_s.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib32_libmingwex_a-wmemcpy_s.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmingwex_a-_access_s.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmingwex_a-_cgets_s.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmingwex_a-_cgetws_s.Po@am__quote@
@@ -11307,6 +11326,8 @@
 @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmingwex_a-_wstrdate_s.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmingwex_a-_wstrtime_s.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmingwex_a-asctime_s.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmingwex_a-memcpy_s.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@secapi/$(DEPDIR)/lib64_libmingwex_a-wmemcpy_s.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib32_libmingwex_a-_Exit.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib32_libmingwex_a-_findfirst64i32.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@stdio/$(DEPDIR)/lib32_libmingwex_a-_findnext64i32.Po@am__quote@
@@ -20446,6 +20467,34 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib32_libmingwex_a-_wstrtime_s.obj `if test -f 'secapi/_wstrtime_s.c'; then $(CYGPATH_W) 'secapi/_wstrtime_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/_wstrtime_s.c'; fi`
 
+secapi/lib32_libmingwex_a-wmemcpy_s.o: secapi/wmemcpy_s.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib32_libmingwex_a-wmemcpy_s.o -MD -MP -MF secapi/$(DEPDIR)/lib32_libmingwex_a-wmemcpy_s.Tpo -c -o secapi/lib32_libmingwex_a-wmemcpy_s.o `test -f 'secapi/wmemcpy_s.c' || echo '$(srcdir)/'`secapi/wmemcpy_s.c
+@am__fastdepCC_TRUE@	$(am__mv) secapi/$(DEPDIR)/lib32_libmingwex_a-wmemcpy_s.Tpo secapi/$(DEPDIR)/lib32_libmingwex_a-wmemcpy_s.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='secapi/wmemcpy_s.c' object='secapi/lib32_libmingwex_a-wmemcpy_s.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib32_libmingwex_a-wmemcpy_s.o `test -f 'secapi/wmemcpy_s.c' || echo '$(srcdir)/'`secapi/wmemcpy_s.c
+
+secapi/lib32_libmingwex_a-wmemcpy_s.obj: secapi/wmemcpy_s.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib32_libmingwex_a-wmemcpy_s.obj -MD -MP -MF secapi/$(DEPDIR)/lib32_libmingwex_a-wmemcpy_s.Tpo -c -o secapi/lib32_libmingwex_a-wmemcpy_s.obj `if test -f 'secapi/wmemcpy_s.c'; then $(CYGPATH_W) 'secapi/wmemcpy_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/wmemcpy_s.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) secapi/$(DEPDIR)/lib32_libmingwex_a-wmemcpy_s.Tpo secapi/$(DEPDIR)/lib32_libmingwex_a-wmemcpy_s.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='secapi/wmemcpy_s.c' object='secapi/lib32_libmingwex_a-wmemcpy_s.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib32_libmingwex_a-wmemcpy_s.obj `if test -f 'secapi/wmemcpy_s.c'; then $(CYGPATH_W) 'secapi/wmemcpy_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/wmemcpy_s.c'; fi`
+
+secapi/lib32_libmingwex_a-memcpy_s.o: secapi/memcpy_s.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib32_libmingwex_a-memcpy_s.o -MD -MP -MF secapi/$(DEPDIR)/lib32_libmingwex_a-memcpy_s.Tpo -c -o secapi/lib32_libmingwex_a-memcpy_s.o `test -f 'secapi/memcpy_s.c' || echo '$(srcdir)/'`secapi/memcpy_s.c
+@am__fastdepCC_TRUE@	$(am__mv) secapi/$(DEPDIR)/lib32_libmingwex_a-memcpy_s.Tpo secapi/$(DEPDIR)/lib32_libmingwex_a-memcpy_s.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='secapi/memcpy_s.c' object='secapi/lib32_libmingwex_a-memcpy_s.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib32_libmingwex_a-memcpy_s.o `test -f 'secapi/memcpy_s.c' || echo '$(srcdir)/'`secapi/memcpy_s.c
+
+secapi/lib32_libmingwex_a-memcpy_s.obj: secapi/memcpy_s.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib32_libmingwex_a-memcpy_s.obj -MD -MP -MF secapi/$(DEPDIR)/lib32_libmingwex_a-memcpy_s.Tpo -c -o secapi/lib32_libmingwex_a-memcpy_s.obj `if test -f 'secapi/memcpy_s.c'; then $(CYGPATH_W) 'secapi/memcpy_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/memcpy_s.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) secapi/$(DEPDIR)/lib32_libmingwex_a-memcpy_s.Tpo secapi/$(DEPDIR)/lib32_libmingwex_a-memcpy_s.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='secapi/memcpy_s.c' object='secapi/lib32_libmingwex_a-memcpy_s.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib32_libmingwex_a-memcpy_s.obj `if test -f 'secapi/memcpy_s.c'; then $(CYGPATH_W) 'secapi/memcpy_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/memcpy_s.c'; fi`
+
 intrincs/lib32_libmingwex_a-membarrier.o: intrincs/membarrier.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT intrincs/lib32_libmingwex_a-membarrier.o -MD -MP -MF intrincs/$(DEPDIR)/lib32_libmingwex_a-membarrier.Tpo -c -o intrincs/lib32_libmingwex_a-membarrier.o `test -f 'intrincs/membarrier.c' || echo '$(srcdir)/'`intrincs/membarrier.c
 @am__fastdepCC_TRUE@	$(am__mv) intrincs/$(DEPDIR)/lib32_libmingwex_a-membarrier.Tpo intrincs/$(DEPDIR)/lib32_libmingwex_a-membarrier.Po
@@ -29224,6 +29273,34 @@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib64_libmingwex_a-_wstrtime_s.obj `if test -f 'secapi/_wstrtime_s.c'; then $(CYGPATH_W) 'secapi/_wstrtime_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/_wstrtime_s.c'; fi`
 
+secapi/lib64_libmingwex_a-wmemcpy_s.o: secapi/wmemcpy_s.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib64_libmingwex_a-wmemcpy_s.o -MD -MP -MF secapi/$(DEPDIR)/lib64_libmingwex_a-wmemcpy_s.Tpo -c -o secapi/lib64_libmingwex_a-wmemcpy_s.o `test -f 'secapi/wmemcpy_s.c' || echo '$(srcdir)/'`secapi/wmemcpy_s.c
+@am__fastdepCC_TRUE@	$(am__mv) secapi/$(DEPDIR)/lib64_libmingwex_a-wmemcpy_s.Tpo secapi/$(DEPDIR)/lib64_libmingwex_a-wmemcpy_s.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='secapi/wmemcpy_s.c' object='secapi/lib64_libmingwex_a-wmemcpy_s.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib64_libmingwex_a-wmemcpy_s.o `test -f 'secapi/wmemcpy_s.c' || echo '$(srcdir)/'`secapi/wmemcpy_s.c
+
+secapi/lib64_libmingwex_a-wmemcpy_s.obj: secapi/wmemcpy_s.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib64_libmingwex_a-wmemcpy_s.obj -MD -MP -MF secapi/$(DEPDIR)/lib64_libmingwex_a-wmemcpy_s.Tpo -c -o secapi/lib64_libmingwex_a-wmemcpy_s.obj `if test -f 'secapi/wmemcpy_s.c'; then $(CYGPATH_W) 'secapi/wmemcpy_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/wmemcpy_s.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) secapi/$(DEPDIR)/lib64_libmingwex_a-wmemcpy_s.Tpo secapi/$(DEPDIR)/lib64_libmingwex_a-wmemcpy_s.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='secapi/wmemcpy_s.c' object='secapi/lib64_libmingwex_a-wmemcpy_s.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib64_libmingwex_a-wmemcpy_s.obj `if test -f 'secapi/wmemcpy_s.c'; then $(CYGPATH_W) 'secapi/wmemcpy_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/wmemcpy_s.c'; fi`
+
+secapi/lib64_libmingwex_a-memcpy_s.o: secapi/memcpy_s.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib64_libmingwex_a-memcpy_s.o -MD -MP -MF secapi/$(DEPDIR)/lib64_libmingwex_a-memcpy_s.Tpo -c -o secapi/lib64_libmingwex_a-memcpy_s.o `test -f 'secapi/memcpy_s.c' || echo '$(srcdir)/'`secapi/memcpy_s.c
+@am__fastdepCC_TRUE@	$(am__mv) secapi/$(DEPDIR)/lib64_libmingwex_a-memcpy_s.Tpo secapi/$(DEPDIR)/lib64_libmingwex_a-memcpy_s.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='secapi/memcpy_s.c' object='secapi/lib64_libmingwex_a-memcpy_s.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib64_libmingwex_a-memcpy_s.o `test -f 'secapi/memcpy_s.c' || echo '$(srcdir)/'`secapi/memcpy_s.c
+
+secapi/lib64_libmingwex_a-memcpy_s.obj: secapi/memcpy_s.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT secapi/lib64_libmingwex_a-memcpy_s.obj -MD -MP -MF secapi/$(DEPDIR)/lib64_libmingwex_a-memcpy_s.Tpo -c -o secapi/lib64_libmingwex_a-memcpy_s.obj `if test -f 'secapi/memcpy_s.c'; then $(CYGPATH_W) 'secapi/memcpy_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/memcpy_s.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) secapi/$(DEPDIR)/lib64_libmingwex_a-memcpy_s.Tpo secapi/$(DEPDIR)/lib64_libmingwex_a-memcpy_s.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='secapi/memcpy_s.c' object='secapi/lib64_libmingwex_a-memcpy_s.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o secapi/lib64_libmingwex_a-memcpy_s.obj `if test -f 'secapi/memcpy_s.c'; then $(CYGPATH_W) 'secapi/memcpy_s.c'; else $(CYGPATH_W) '$(srcdir)/secapi/memcpy_s.c'; fi`
+
 intrincs/lib64_libmingwex_a-bittest64.o: intrincs/bittest64.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT intrincs/lib64_libmingwex_a-bittest64.o -MD -MP -MF intrincs/$(DEPDIR)/lib64_libmingwex_a-bittest64.Tpo -c -o intrincs/lib64_libmingwex_a-bittest64.o `test -f 'intrincs/bittest64.c' || echo '$(srcdir)/'`intrincs/bittest64.c
 @am__fastdepCC_TRUE@	$(am__mv) intrincs/$(DEPDIR)/lib64_libmingwex_a-bittest64.Tpo intrincs/$(DEPDIR)/lib64_libmingwex_a-bittest64.Po
diff --git a/mingw-w64-crt/lib32/msvcrt.def b/mingw-w64-crt/lib32/msvcrt.def
index 6a5dab7..7e0c3fa 100644
--- a/mingw-w64-crt/lib32/msvcrt.def
+++ b/mingw-w64-crt/lib32/msvcrt.def
@@ -1179,7 +1179,7 @@
 getenv_s
 mbsrtowcs_s
 mbstowcs_s
-memcpy_s
+; memcpy_s replaced by emu
 memmove_s
 printf_s
 qsort_s
diff --git a/mingw-w64-crt/lib64/msvcrt.def b/mingw-w64-crt/lib64/msvcrt.def
index f2f8f09..bb82de6 100644
--- a/mingw-w64-crt/lib64/msvcrt.def
+++ b/mingw-w64-crt/lib64/msvcrt.def
@@ -1135,7 +1135,7 @@
 memchr
 memcmp
 memcpy
-memcpy_s
+; memcpy_s replaced by emu
 memmove
 memmove_s
 memset
diff --git a/mingw-w64-crt/secapi/memcpy_s.c b/mingw-w64-crt/secapi/memcpy_s.c
new file mode 100644
index 0000000..0f16fca
--- /dev/null
+++ b/mingw-w64-crt/secapi/memcpy_s.c
@@ -0,0 +1,60 @@
+#include <windows.h>
+#include <malloc.h>
+#include <errno.h>
+
+HMODULE __mingw_get_msvcrt_handle (void);
+errno_t __cdecl memcpy_s (void *, size_t, const void *, size_t);
+static errno_t __cdecl _int_memcpy_s (void *, size_t, const void *, size_t);
+static errno_t __cdecl _stub (void *, size_t, const void *, size_t);
+
+errno_t __cdecl (*__MINGW_IMP_SYMBOL(memcpy_s))(void *, size_t, const void *, size_t) = 
+ _stub;
+
+static errno_t __cdecl
+_stub (void *d, size_t dn, const void *s, size_t n)
+{
+  errno_t __cdecl (*f)(void *, size_t, const void *, size_t) = __MINGW_IMP_SYMBOL(memcpy_s);
+
+  if (f == _stub)
+    {
+	f = (errno_t __cdecl (*)(void *, size_t, const void *, size_t))
+	    GetProcAddress (__mingw_get_msvcrt_handle (), "memcpy_s");
+	if (!f)
+	  f = _int_memcpy_s;
+	__MINGW_IMP_SYMBOL(memcpy_s) = f;
+    }
+  return (*f)(d, dn, s, n);
+}
+
+errno_t __cdecl
+memcpy_s (void *d, size_t dn, const void *s, size_t n)
+{
+  return _stub (d, dn, s, n);
+}
+
+static errno_t __cdecl
+_int_memcpy_s (void *d, size_t dn, const void *s, size_t n)
+{
+  if (!n)
+    return 0;
+
+  if (!d || !s)
+    {
+      if (d)
+        memset (d, 0, dn);
+      errno = EINVAL;
+      return EINVAL;
+    }
+
+  if (dn < n)
+    {
+      memset (d, 0, dn);
+
+      errno = ERANGE;
+      return ERANGE;
+    }
+
+  memcpy (d, s, n);
+
+  return 0;
+}
diff --git a/mingw-w64-crt/secapi/wmemcpy_s.c b/mingw-w64-crt/secapi/wmemcpy_s.c
new file mode 100644
index 0000000..b2a6de8
--- /dev/null
+++ b/mingw-w64-crt/secapi/wmemcpy_s.c
@@ -0,0 +1,60 @@
+#include <windows.h>
+#include <malloc.h>
+#include <errno.h>
+
+HMODULE __mingw_get_msvcrt_handle (void);
+errno_t __cdecl wmemcpy_s (wchar_t *, size_t, const wchar_t *, size_t);
+static errno_t __cdecl _int_wmemcpy_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(wmemcpy_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(wmemcpy_s);
+
+  if (f == _stub)
+    {
+	f = (errno_t __cdecl (*)(wchar_t *, size_t, const wchar_t *, size_t))
+	    GetProcAddress (__mingw_get_msvcrt_handle (), "wmemcpy_s");
+	if (!f)
+	  f = _int_wmemcpy_s;
+	__MINGW_IMP_SYMBOL(wmemcpy_s) = f;
+    }
+  return (*f)(d, dn, s, n);
+}
+
+errno_t __cdecl
+wmemcpy_s (char_t *d, size_t dn, const wchar_t *s, size_t n)
+{
+  return _stub (d, dn, s, n);
+}
+
+static errno_t __cdecl
+_int_wmemcpy_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;
+    }
+
+  memcpy (d, s, n * sizeof (wchar_t));
+
+  return 0;
+}
diff --git a/mingw-w64-headers/crt/sec_api/memory_s.h b/mingw-w64-headers/crt/sec_api/memory_s.h
index da95039..53196d0 100644
--- a/mingw-w64-headers/crt/sec_api/memory_s.h
+++ b/mingw-w64-headers/crt/sec_api/memory_s.h
@@ -15,7 +15,7 @@
 
 #ifndef _MEMORY_S_DEFINED
 #define _MEMORY_S_DEFINED
-_CRTIMP errno_t __cdecl memcpy_s(void *_dest,size_t _numberOfElements,const void *_src,size_t _count);
+ errno_t __cdecl memcpy_s (void *_dest,size_t _numberOfElements,const void *_src,size_t _count);
 #endif /*_MEMORY_S_DEFINED*/
 
 #ifdef __cplusplus
diff --git a/mingw-w64-headers/crt/sec_api/string_s.h b/mingw-w64-headers/crt/sec_api/string_s.h
index b17c30c..1ea0b6c 100644
--- a/mingw-w64-headers/crt/sec_api/string_s.h
+++ b/mingw-w64-headers/crt/sec_api/string_s.h
@@ -60,7 +60,7 @@
 
 #ifndef _MEMORY_S_DEFINED
 #define _MEMORY_S_DEFINED
-_CRTIMP errno_t __cdecl memcpy_s(void *_dest,size_t _numberOfElements,const void *_src,size_t _count);
+  errno_t __cdecl memcpy_s (void *_dest,size_t _numberOfElements,const void *_src,size_t _count);
 #endif /*_MEMORY_S_DEFINED*/
 
 #ifdef __cplusplus
diff --git a/mingw-w64-headers/crt/sec_api/wchar_s.h b/mingw-w64-headers/crt/sec_api/wchar_s.h
index 9b1af2a..ae49ceb 100644
--- a/mingw-w64-headers/crt/sec_api/wchar_s.h
+++ b/mingw-w64-headers/crt/sec_api/wchar_s.h
@@ -156,7 +156,7 @@
   _CRTIMP errno_t __cdecl wcsrtombs_s(size_t *_Retval,char *_Dst,size_t _SizeInBytes,const wchar_t **_Src,size_t _Size,mbstate_t *_State);
   __DEFINE_CPP_OVERLOAD_SECURE_FUNC_1_3(errno_t,wcsrtombs_s,size_t,_Retval,char,_Dst,const wchar_t**,_Src,size_t,_Size,mbstate_t,_State)
 
-  _CRTIMP errno_t __cdecl wmemcpy_s(wchar_t *_dest,size_t _numberOfElements,const wchar_t *_src,size_t _count);
+  errno_t __cdecl wmemcpy_s (wchar_t *_dest,size_t _numberOfElements,const wchar_t *_src,size_t _count);
   _CRTIMP errno_t __cdecl wmemmove_s(wchar_t *_dest,size_t _numberOfElements,const wchar_t *_src,size_t _count);
 
 #ifdef __cplusplus