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

Reply via email to