Added _set_purecall_handler fallback implementation.


git-svn-id: svn+ssh://svn.code.sf.net/p/mingw-w64/code/trunk@5705 4407c894-4637-0410-b4f5-ada5f102cad1
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 6baff41..068a12e 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -195,7 +195,7 @@
   misc/wcsnlen.c         misc/wcstof.c                misc/wcstoimax.c            misc/wcstold.c             misc/wcstoumax.c      \
   misc/wctob.c           misc/wctrans.c               misc/wctype.c               misc/wdirent.c             misc/winbs_uint64.c   \
   misc/winbs_ulong.c     misc/winbs_ushort.c          misc/wmemchr.c              misc/wmemcmp.c             misc/wmemcpy.c        \
-  misc/wmemmove.c        misc/wmempcpy.c              misc/wmemset.c              \
+  misc/wmemmove.c        misc/wmempcpy.c              misc/wmemset.c              misc/purecall.c \
   \
   stdio/mingw_pformat.h    \
   stdio/vfscanf2.S         stdio/vfwscanf2.S         stdio/vscanf2.S          stdio/vsscanf2.S          stdio/vswscanf2.S \
diff --git a/mingw-w64-crt/Makefile.in b/mingw-w64-crt/Makefile.in
index 701f205..5ea512a 100644
--- a/mingw-w64-crt/Makefile.in
+++ b/mingw-w64-crt/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.12.5 from Makefile.am.
+# Makefile.in generated by automake 1.12.6 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
@@ -467,20 +467,21 @@
 	misc/wdirent.c misc/winbs_uint64.c misc/winbs_ulong.c \
 	misc/winbs_ushort.c misc/wmemchr.c misc/wmemcmp.c \
 	misc/wmemcpy.c misc/wmemmove.c misc/wmempcpy.c misc/wmemset.c \
-	stdio/mingw_pformat.h stdio/vfscanf2.S stdio/vfwscanf2.S \
-	stdio/vscanf2.S stdio/vsscanf2.S stdio/vswscanf2.S \
-	stdio/vwscanf2.S stdio/_Exit.c stdio/_findfirst64i32.c \
-	stdio/_findnext64i32.c stdio/_fstat.c stdio/_fstat64i32.c \
-	stdio/_fstati64.c stdio/_stati64.c stdio/_wstati64.c \
-	stdio/_ftime.c stdio/_getc_nolock.c stdio/_getwc_nolock.c \
-	stdio/_putc_nolock.c stdio/_putwc_nolock.c stdio/_stat.c \
-	stdio/_stat64i32.c stdio/_wfindfirst64i32.c \
-	stdio/_wfindnext64i32.c stdio/_wstat.c stdio/_wstat64i32.c \
-	stdio/asprintf.c stdio/atoll.c stdio/fgetpos64.c \
-	stdio/fopen64.c stdio/fseeko32.c stdio/fseeko64.c \
-	stdio/fsetpos64.c stdio/ftello.c stdio/ftello64.c \
-	stdio/ftruncate64.c stdio/lltoa.c stdio/lltow.c \
-	stdio/lseek64.c stdio/mingw_fprintf.c stdio/mingw_fprintfw.c \
+	misc/purecall.c stdio/mingw_pformat.h stdio/vfscanf2.S \
+	stdio/vfwscanf2.S stdio/vscanf2.S stdio/vsscanf2.S \
+	stdio/vswscanf2.S stdio/vwscanf2.S stdio/_Exit.c \
+	stdio/_findfirst64i32.c stdio/_findnext64i32.c stdio/_fstat.c \
+	stdio/_fstat64i32.c stdio/_fstati64.c stdio/_stati64.c \
+	stdio/_wstati64.c stdio/_ftime.c stdio/_getc_nolock.c \
+	stdio/_getwc_nolock.c stdio/_putc_nolock.c \
+	stdio/_putwc_nolock.c stdio/_stat.c stdio/_stat64i32.c \
+	stdio/_wfindfirst64i32.c stdio/_wfindnext64i32.c \
+	stdio/_wstat.c stdio/_wstat64i32.c stdio/asprintf.c \
+	stdio/atoll.c stdio/fgetpos64.c stdio/fopen64.c \
+	stdio/fseeko32.c stdio/fseeko64.c stdio/fsetpos64.c \
+	stdio/ftello.c stdio/ftello64.c stdio/ftruncate64.c \
+	stdio/lltoa.c stdio/lltow.c stdio/lseek64.c \
+	stdio/mingw_fprintf.c stdio/mingw_fprintfw.c \
 	stdio/mingw_fscanf.c stdio/mingw_fwscanf.c \
 	stdio/mingw_pformat.c stdio/mingw_pformatw.c \
 	stdio/mingw_printf.c stdio/mingw_printfw.c stdio/mingw_scanf.c \
@@ -886,6 +887,7 @@
 	misc/lib32_libmingwex_a-wmemmove.$(OBJEXT) \
 	misc/lib32_libmingwex_a-wmempcpy.$(OBJEXT) \
 	misc/lib32_libmingwex_a-wmemset.$(OBJEXT) \
+	misc/lib32_libmingwex_a-purecall.$(OBJEXT) \
 	stdio/lib32_libmingwex_a-vfscanf2.$(OBJEXT) \
 	stdio/lib32_libmingwex_a-vfwscanf2.$(OBJEXT) \
 	stdio/lib32_libmingwex_a-vscanf2.$(OBJEXT) \
@@ -1551,20 +1553,21 @@
 	misc/wdirent.c misc/winbs_uint64.c misc/winbs_ulong.c \
 	misc/winbs_ushort.c misc/wmemchr.c misc/wmemcmp.c \
 	misc/wmemcpy.c misc/wmemmove.c misc/wmempcpy.c misc/wmemset.c \
-	stdio/mingw_pformat.h stdio/vfscanf2.S stdio/vfwscanf2.S \
-	stdio/vscanf2.S stdio/vsscanf2.S stdio/vswscanf2.S \
-	stdio/vwscanf2.S stdio/_Exit.c stdio/_findfirst64i32.c \
-	stdio/_findnext64i32.c stdio/_fstat.c stdio/_fstat64i32.c \
-	stdio/_fstati64.c stdio/_stati64.c stdio/_wstati64.c \
-	stdio/_ftime.c stdio/_getc_nolock.c stdio/_getwc_nolock.c \
-	stdio/_putc_nolock.c stdio/_putwc_nolock.c stdio/_stat.c \
-	stdio/_stat64i32.c stdio/_wfindfirst64i32.c \
-	stdio/_wfindnext64i32.c stdio/_wstat.c stdio/_wstat64i32.c \
-	stdio/asprintf.c stdio/atoll.c stdio/fgetpos64.c \
-	stdio/fopen64.c stdio/fseeko32.c stdio/fseeko64.c \
-	stdio/fsetpos64.c stdio/ftello.c stdio/ftello64.c \
-	stdio/ftruncate64.c stdio/lltoa.c stdio/lltow.c \
-	stdio/lseek64.c stdio/mingw_fprintf.c stdio/mingw_fprintfw.c \
+	misc/purecall.c stdio/mingw_pformat.h stdio/vfscanf2.S \
+	stdio/vfwscanf2.S stdio/vscanf2.S stdio/vsscanf2.S \
+	stdio/vswscanf2.S stdio/vwscanf2.S stdio/_Exit.c \
+	stdio/_findfirst64i32.c stdio/_findnext64i32.c stdio/_fstat.c \
+	stdio/_fstat64i32.c stdio/_fstati64.c stdio/_stati64.c \
+	stdio/_wstati64.c stdio/_ftime.c stdio/_getc_nolock.c \
+	stdio/_getwc_nolock.c stdio/_putc_nolock.c \
+	stdio/_putwc_nolock.c stdio/_stat.c stdio/_stat64i32.c \
+	stdio/_wfindfirst64i32.c stdio/_wfindnext64i32.c \
+	stdio/_wstat.c stdio/_wstat64i32.c stdio/asprintf.c \
+	stdio/atoll.c stdio/fgetpos64.c stdio/fopen64.c \
+	stdio/fseeko32.c stdio/fseeko64.c stdio/fsetpos64.c \
+	stdio/ftello.c stdio/ftello64.c stdio/ftruncate64.c \
+	stdio/lltoa.c stdio/lltow.c stdio/lseek64.c \
+	stdio/mingw_fprintf.c stdio/mingw_fprintfw.c \
 	stdio/mingw_fscanf.c stdio/mingw_fwscanf.c \
 	stdio/mingw_pformat.c stdio/mingw_pformatw.c \
 	stdio/mingw_printf.c stdio/mingw_printfw.c stdio/mingw_scanf.c \
@@ -1978,6 +1981,7 @@
 	misc/lib64_libmingwex_a-wmemmove.$(OBJEXT) \
 	misc/lib64_libmingwex_a-wmempcpy.$(OBJEXT) \
 	misc/lib64_libmingwex_a-wmemset.$(OBJEXT) \
+	misc/lib64_libmingwex_a-purecall.$(OBJEXT) \
 	stdio/lib64_libmingwex_a-vfscanf2.$(OBJEXT) \
 	stdio/lib64_libmingwex_a-vfwscanf2.$(OBJEXT) \
 	stdio/lib64_libmingwex_a-vscanf2.$(OBJEXT) \
@@ -3614,7 +3618,7 @@
   misc/wcsnlen.c         misc/wcstof.c                misc/wcstoimax.c            misc/wcstold.c             misc/wcstoumax.c      \
   misc/wctob.c           misc/wctrans.c               misc/wctype.c               misc/wdirent.c             misc/winbs_uint64.c   \
   misc/winbs_ulong.c     misc/winbs_ushort.c          misc/wmemchr.c              misc/wmemcmp.c             misc/wmemcpy.c        \
-  misc/wmemmove.c        misc/wmempcpy.c              misc/wmemset.c              \
+  misc/wmemmove.c        misc/wmempcpy.c              misc/wmemset.c              misc/purecall.c \
   \
   stdio/mingw_pformat.h    \
   stdio/vfscanf2.S         stdio/vfwscanf2.S         stdio/vscanf2.S          stdio/vsscanf2.S          stdio/vswscanf2.S \
@@ -5698,6 +5702,8 @@
 	misc/$(DEPDIR)/$(am__dirstamp)
 misc/lib32_libmingwex_a-wmemset.$(OBJEXT): misc/$(am__dirstamp) \
 	misc/$(DEPDIR)/$(am__dirstamp)
+misc/lib32_libmingwex_a-purecall.$(OBJEXT): misc/$(am__dirstamp) \
+	misc/$(DEPDIR)/$(am__dirstamp)
 stdio/$(am__dirstamp):
 	@$(MKDIR_P) stdio
 	@: > stdio/$(am__dirstamp)
@@ -7251,6 +7257,8 @@
 	misc/$(DEPDIR)/$(am__dirstamp)
 misc/lib64_libmingwex_a-wmemset.$(OBJEXT): misc/$(am__dirstamp) \
 	misc/$(DEPDIR)/$(am__dirstamp)
+misc/lib64_libmingwex_a-purecall.$(OBJEXT): misc/$(am__dirstamp) \
+	misc/$(DEPDIR)/$(am__dirstamp)
 stdio/lib64_libmingwex_a-vfscanf2.$(OBJEXT): stdio/$(am__dirstamp) \
 	stdio/$(DEPDIR)/$(am__dirstamp)
 stdio/lib64_libmingwex_a-vfwscanf2.$(OBJEXT): stdio/$(am__dirstamp) \
@@ -9807,6 +9815,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-mingw_wcstof.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-mingw_wcstold.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-mktime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-purecall.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-seterrno.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-sleep.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib32_libmingwex_a-spawnv.Po@am__quote@
@@ -9909,6 +9918,7 @@
 @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-mingw_wcstof.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-mingw_wcstold.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-mktime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-purecall.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-seterrno.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-sleep.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@misc/$(DEPDIR)/lib64_libmingwex_a-spawnv.Po@am__quote@
@@ -16814,6 +16824,20 @@
 @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 misc/lib32_libmingwex_a-wmemset.obj `if test -f 'misc/wmemset.c'; then $(CYGPATH_W) 'misc/wmemset.c'; else $(CYGPATH_W) '$(srcdir)/misc/wmemset.c'; fi`
 
+misc/lib32_libmingwex_a-purecall.o: misc/purecall.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT misc/lib32_libmingwex_a-purecall.o -MD -MP -MF misc/$(DEPDIR)/lib32_libmingwex_a-purecall.Tpo -c -o misc/lib32_libmingwex_a-purecall.o `test -f 'misc/purecall.c' || echo '$(srcdir)/'`misc/purecall.c
+@am__fastdepCC_TRUE@	$(am__mv) misc/$(DEPDIR)/lib32_libmingwex_a-purecall.Tpo misc/$(DEPDIR)/lib32_libmingwex_a-purecall.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='misc/purecall.c' object='misc/lib32_libmingwex_a-purecall.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 misc/lib32_libmingwex_a-purecall.o `test -f 'misc/purecall.c' || echo '$(srcdir)/'`misc/purecall.c
+
+misc/lib32_libmingwex_a-purecall.obj: misc/purecall.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT misc/lib32_libmingwex_a-purecall.obj -MD -MP -MF misc/$(DEPDIR)/lib32_libmingwex_a-purecall.Tpo -c -o misc/lib32_libmingwex_a-purecall.obj `if test -f 'misc/purecall.c'; then $(CYGPATH_W) 'misc/purecall.c'; else $(CYGPATH_W) '$(srcdir)/misc/purecall.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) misc/$(DEPDIR)/lib32_libmingwex_a-purecall.Tpo misc/$(DEPDIR)/lib32_libmingwex_a-purecall.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='misc/purecall.c' object='misc/lib32_libmingwex_a-purecall.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 misc/lib32_libmingwex_a-purecall.obj `if test -f 'misc/purecall.c'; then $(CYGPATH_W) 'misc/purecall.c'; else $(CYGPATH_W) '$(srcdir)/misc/purecall.c'; fi`
+
 stdio/lib32_libmingwex_a-_Exit.o: stdio/_Exit.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib32_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stdio/lib32_libmingwex_a-_Exit.o -MD -MP -MF stdio/$(DEPDIR)/lib32_libmingwex_a-_Exit.Tpo -c -o stdio/lib32_libmingwex_a-_Exit.o `test -f 'stdio/_Exit.c' || echo '$(srcdir)/'`stdio/_Exit.c
 @am__fastdepCC_TRUE@	$(am__mv) stdio/$(DEPDIR)/lib32_libmingwex_a-_Exit.Tpo stdio/$(DEPDIR)/lib32_libmingwex_a-_Exit.Po
@@ -25718,6 +25742,20 @@
 @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 misc/lib64_libmingwex_a-wmemset.obj `if test -f 'misc/wmemset.c'; then $(CYGPATH_W) 'misc/wmemset.c'; else $(CYGPATH_W) '$(srcdir)/misc/wmemset.c'; fi`
 
+misc/lib64_libmingwex_a-purecall.o: misc/purecall.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT misc/lib64_libmingwex_a-purecall.o -MD -MP -MF misc/$(DEPDIR)/lib64_libmingwex_a-purecall.Tpo -c -o misc/lib64_libmingwex_a-purecall.o `test -f 'misc/purecall.c' || echo '$(srcdir)/'`misc/purecall.c
+@am__fastdepCC_TRUE@	$(am__mv) misc/$(DEPDIR)/lib64_libmingwex_a-purecall.Tpo misc/$(DEPDIR)/lib64_libmingwex_a-purecall.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='misc/purecall.c' object='misc/lib64_libmingwex_a-purecall.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 misc/lib64_libmingwex_a-purecall.o `test -f 'misc/purecall.c' || echo '$(srcdir)/'`misc/purecall.c
+
+misc/lib64_libmingwex_a-purecall.obj: misc/purecall.c
+@am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT misc/lib64_libmingwex_a-purecall.obj -MD -MP -MF misc/$(DEPDIR)/lib64_libmingwex_a-purecall.Tpo -c -o misc/lib64_libmingwex_a-purecall.obj `if test -f 'misc/purecall.c'; then $(CYGPATH_W) 'misc/purecall.c'; else $(CYGPATH_W) '$(srcdir)/misc/purecall.c'; fi`
+@am__fastdepCC_TRUE@	$(am__mv) misc/$(DEPDIR)/lib64_libmingwex_a-purecall.Tpo misc/$(DEPDIR)/lib64_libmingwex_a-purecall.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='misc/purecall.c' object='misc/lib64_libmingwex_a-purecall.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 misc/lib64_libmingwex_a-purecall.obj `if test -f 'misc/purecall.c'; then $(CYGPATH_W) 'misc/purecall.c'; else $(CYGPATH_W) '$(srcdir)/misc/purecall.c'; fi`
+
 stdio/lib64_libmingwex_a-_Exit.o: stdio/_Exit.c
 @am__fastdepCC_TRUE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib64_libmingwex_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT stdio/lib64_libmingwex_a-_Exit.o -MD -MP -MF stdio/$(DEPDIR)/lib64_libmingwex_a-_Exit.Tpo -c -o stdio/lib64_libmingwex_a-_Exit.o `test -f 'stdio/_Exit.c' || echo '$(srcdir)/'`stdio/_Exit.c
 @am__fastdepCC_TRUE@	$(am__mv) stdio/$(DEPDIR)/lib64_libmingwex_a-_Exit.Tpo stdio/$(DEPDIR)/lib64_libmingwex_a-_Exit.Po
diff --git a/mingw-w64-crt/misc/purecall.c b/mingw-w64-crt/misc/purecall.c
new file mode 100644
index 0000000..39be174
--- /dev/null
+++ b/mingw-w64-crt/misc/purecall.c
@@ -0,0 +1,17 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#include <stdlib.h>
+#include <windows.h>
+
+_purecall_handler __cdecl _set_purecall_handler(_purecall_handler handler)
+{
+    static _purecall_handler prev_handler;
+    return InterlockedExchangePointer((void**)&prev_handler, handler);
+}
+
+void *__MINGW_IMP_SYMBOL(_set_purecall_handler) = _set_purecall_handler;
+