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; +