Function _initterm_e() is available since msvcr80.dll. Add emulation of this function into all pre-msvcr80 import libraries for compatibility. --- mingw-w64-crt/Makefile.am | 3 +++ mingw-w64-crt/lib-common/msvcrt.def.in | 2 +- mingw-w64-crt/misc/_initterm_e.c | 25 +++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 mingw-w64-crt/misc/_initterm_e.c
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am index b41411bb9797..5d165a6dbf02 100644 --- a/mingw-w64-crt/Makefile.am +++ b/mingw-w64-crt/Makefile.am @@ -473,6 +473,7 @@ src_msvcrt32=\ misc/_create_locale.c \ misc/_free_locale.c \ misc/_get_current_locale.c \ + misc/_initterm_e.c \ misc/btowc.c \ misc/imaxabs.c \ misc/lc_locale_func.c \ @@ -530,6 +531,7 @@ src_msvcrt64=\ misc/_create_locale.c \ misc/_free_locale.c \ misc/_get_current_locale.c \ + misc/_initterm_e.c \ misc/btowc.c \ misc/mbrtowc.c \ misc/output_format.c \ @@ -750,6 +752,7 @@ src_pre_msvcr80=\ misc/__sys_nerr.c \ misc/_configthreadlocale.c \ misc/_get_errno.c \ + misc/_initterm_e.c \ misc/_set_errno.c \ misc/btowc.c \ misc/imaxabs.c \ diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in b/mingw-w64-crt/lib-common/msvcrt.def.in index 945ce61408f5..0d1223af5adb 100644 --- a/mingw-w64-crt/lib-common/msvcrt.def.in +++ b/mingw-w64-crt/lib-common/msvcrt.def.in @@ -1444,7 +1444,7 @@ F_ARM_ANY(_gmtime32_s) ; i386 and x64 _gmtime32_s replaced by emu F_ARM_ANY(_gmtime64_s) ; i386 and x64 _gmtime64_s replaced by emu _i64toa_s _i64tow_s -_initterm_e +F_ARM_ANY(_initterm_e) ; i386 and x64 _initterm_e replaced by emu _invalid_parameter _isalnum_l _isalpha_l diff --git a/mingw-w64-crt/misc/_initterm_e.c b/mingw-w64-crt/misc/_initterm_e.c new file mode 100644 index 000000000000..c014dfeba706 --- /dev/null +++ b/mingw-w64-crt/misc/_initterm_e.c @@ -0,0 +1,25 @@ +/** + * 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 <corecrt_startup.h> + +int __cdecl _initterm_e(_PIFV * first_func, _PIFV * last_func) +{ + _PIFV * func; + int ret; + + for (func = first_func; func < last_func; func++) + { + if (!*func) + continue; + ret = (**func)(); + if (ret) + return ret; + } + + return 0; +} +int (__cdecl *__MINGW_IMP_SYMBOL(_initterm_e))(_PIFV *, _PIFV *) = _initterm_e; -- 2.20.1 _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public