crtdll.dll and ucrt needs same implementation of __initenv and __winitenv
symbols. Deduplicate code and move it into a new misc/__initenv.c file.
---
mingw-w64-crt/Makefile.am | 2 ++
mingw-w64-crt/crt/crtdll_compat.c | 6 ------
mingw-w64-crt/crt/ucrtbase_compat.c | 5 -----
mingw-w64-crt/misc/__initenv.c | 12 ++++++++++++
4 files changed, 14 insertions(+), 11 deletions(-)
create mode 100644 mingw-w64-crt/misc/__initenv.c
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index 66e0afa0421a..bf9b4bc22316 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -238,6 +238,7 @@ src_msvcrt=\
src_ucrtbase=\
crt/ucrtbase_compat.c \
math/_huge.c \
+ misc/__initenv.c \
stdio/ucrt_fprintf.c \
stdio/ucrt_fscanf.c \
stdio/ucrt_fwprintf.c \
@@ -421,6 +422,7 @@ src_msvcr80_64=\
src_crtdll=\
crt/crtdll_compat.c \
misc/___mb_cur_max_func.c \
+ misc/__initenv.c \
misc/__p___argv.c \
misc/__p__acmdln.c \
misc/__p__commode.c \
diff --git a/mingw-w64-crt/crt/crtdll_compat.c
b/mingw-w64-crt/crt/crtdll_compat.c
index 9bb48bd84095..35686658c3ff 100644
--- a/mingw-w64-crt/crt/crtdll_compat.c
+++ b/mingw-w64-crt/crt/crtdll_compat.c
@@ -7,12 +7,6 @@
#include <internal.h>
#include <math.h>
-/* Define __initenv and __winitenv as crtdll.dll does not provide them */
-static char ** local__initenv;
-static wchar_t ** local__winitenv;
-char *** __MINGW_IMP_SYMBOL(__initenv) = &local__initenv;
-wchar_t *** __MINGW_IMP_SYMBOL(__winitenv) = &local__winitenv;
-
/* Define dummy __setusermatherr() function as crtdll.dll does not provide it
*/
#undef __setusermatherr
void __setusermatherr(__UNUSED_PARAM(int (__cdecl *f)(struct _exception *))) {
}
diff --git a/mingw-w64-crt/crt/ucrtbase_compat.c
b/mingw-w64-crt/crt/ucrtbase_compat.c
index d01293abf615..02910ff2f4d8 100644
--- a/mingw-w64-crt/crt/ucrtbase_compat.c
+++ b/mingw-w64-crt/crt/ucrtbase_compat.c
@@ -111,11 +111,6 @@ unsigned int __cdecl _get_output_format(void)
return 0;
}
-static char ** local__initenv;
-static wchar_t ** local__winitenv;
-char *** __MINGW_IMP_SYMBOL(__initenv) = &local__initenv;
-wchar_t *** __MINGW_IMP_SYMBOL(__winitenv) = &local__winitenv;
-
// These are required to provide the unrepfixed data symbols "timezone"
// and "tzname"; we can't remap "timezone" via a define due to clashes
diff --git a/mingw-w64-crt/misc/__initenv.c b/mingw-w64-crt/misc/__initenv.c
new file mode 100644
index 000000000000..31fd87525bfe
--- /dev/null
+++ b/mingw-w64-crt/misc/__initenv.c
@@ -0,0 +1,12 @@
+/**
+ * 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 <internal.h>
+
+static char ** local__initenv;
+static wchar_t ** local__winitenv;
+char *** __MINGW_IMP_SYMBOL(__initenv) = &local__initenv;
+wchar_t *** __MINGW_IMP_SYMBOL(__winitenv) = &local__winitenv;
--
2.20.1
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public