crt: Provide __p__osplatform() for all CRT import libraries
_osplatform is available only in i386 and x64 versions of msvcrt.dll,
msvcr70.dll, msvcr71.dll and msvcr80.dll.
Include emulation of __p__osplatform() functions for all other CRT
libraries, including UCRT.
Signed-off-by: Martin Storsjö <martin@martin.st>
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index b1b34b9..c5dcfbe 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -361,6 +361,7 @@
misc/__badioinfo.c \
misc/__p___initenv.c \
misc/__p___winitenv.c \
+ misc/__p__osplatform_emul.c \
misc/__p__osver_emul.c \
misc/__initenv.c \
misc/__winitenv.c \
@@ -534,6 +535,7 @@
misc/__p__fmode.c \
misc/__p__mbcasemap.c \
misc/__p__mbctype.c \
+ misc/__p__osplatform_emul.c \
misc/__p__osver.c \
misc/__p__pctype.c \
misc/__p__pgmptr.c \
@@ -648,6 +650,7 @@
misc/__p__fmode.c \
misc/__p__mbcasemap.c \
misc/__p__mbctype.c \
+ misc/__p__osplatform_emul.c \
misc/__p__osver.c \
misc/__p__pctype.c \
misc/__p__pgmptr.c \
@@ -681,6 +684,7 @@
misc/__p__environ.c \
misc/__p__fmode.c \
misc/__p__mbctype.c \
+ misc/__p__osplatform_emul.c \
misc/__p__osver.c \
misc/__p__pgmptr.c \
misc/__p__pctype.c \
@@ -742,6 +746,7 @@
misc/__p__commode.c \
misc/__p__environ.c \
misc/__p__fmode.c \
+ misc/__p__osplatform_emul.c \
misc/__p__osver.c \
misc/__p__pctype.c \
misc/__p__pgmptr.c \
@@ -795,6 +800,7 @@
misc/msvcrt20__wgetmainargs.c \
misc/___mb_cur_max_func.c \
misc/__badioinfo.c \
+ misc/__p__osplatform_emul.c \
misc/__pctype_func.c \
misc/__pwctype_func.c \
misc/__set_app_type.c \
@@ -838,6 +844,7 @@
src_msvcrt40=\
misc/___mb_cur_max_func.c \
misc/__badioinfo.c \
+ misc/__p__osplatform_emul.c \
misc/__pctype_func.c \
misc/__pwctype_func.c \
misc/__sys_errlist.c \
@@ -933,6 +940,7 @@
misc/wctype.c
src_msvcr90=\
+ misc/__p__osplatform_emul.c \
misc/__p__osver_emul.c \
misc/imaxdiv.c \
misc/isblank.c \
@@ -941,6 +949,7 @@
misc/wctype.c
src_msvcr100=\
+ misc/__p__osplatform_emul.c \
misc/__p__osver_emul.c \
misc/isblank.c \
misc/iswblank.c \
@@ -948,6 +957,7 @@
misc/wctype.c
src_msvcr110=\
+ misc/__p__osplatform_emul.c \
misc/__p__osver_emul.c \
misc/isblank.c \
misc/iswblank.c \
@@ -955,6 +965,7 @@
misc/wctype.c
src_msvcr120=\
+ misc/__p__osplatform_emul.c \
misc/__p__osver_emul.c
src_msvcr120_app=\
diff --git a/mingw-w64-crt/misc/__p__osplatform_emul.c b/mingw-w64-crt/misc/__p__osplatform_emul.c
new file mode 100644
index 0000000..5e6f008
--- /dev/null
+++ b/mingw-w64-crt/misc/__p__osplatform_emul.c
@@ -0,0 +1,24 @@
+/**
+ * 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 <windows.h>
+
+#undef _osplatform
+static unsigned int _osplatform;
+
+unsigned int* __cdecl __p__osplatform(void);
+unsigned int* __cdecl __p__osplatform(void)
+{
+ if (!_osplatform)
+ {
+ OSVERSIONINFOA osvi;
+ osvi.dwOSVersionInfoSize = sizeof(osvi);
+ if (GetVersionExA(&osvi))
+ _osplatform = osvi.dwPlatformId;
+ }
+ return &_osplatform;
+}
+unsigned int* (__cdecl *__MINGW_IMP_SYMBOL(__p__osplatform))(void) = __p__osplatform;