_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.
---
 mingw-w64-crt/Makefile.am                 | 11 +++++++++++
 mingw-w64-crt/misc/__p__osplatform_emul.c | 24 +++++++++++++++++++++++
 2 files changed, 35 insertions(+)
 create mode 100644 mingw-w64-crt/misc/__p__osplatform_emul.c

diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index a3a497f2e965..a3b74c36073f 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -361,6 +361,7 @@ src_ucrtbase=\
   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 \
@@ -535,6 +536,7 @@ src_msvcrtarm32=\
   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 \
@@ -649,6 +651,7 @@ src_msvcrtarm64=\
   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 \
@@ -682,6 +685,7 @@ src_crtdll=\
   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 \
@@ -743,6 +747,7 @@ src_msvcrt10=\
   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 \
@@ -796,6 +801,7 @@ src_msvcrt20=\
   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 \
@@ -839,6 +845,7 @@ src_msvcrt20=\
 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 \
@@ -934,6 +941,7 @@ src_msvcr80=\
   misc/wctype.c
 
 src_msvcr90=\
+  misc/__p__osplatform_emul.c \
   misc/__p__osver_emul.c \
   misc/imaxdiv.c \
   misc/isblank.c \
@@ -942,6 +950,7 @@ src_msvcr90=\
   misc/wctype.c
 
 src_msvcr100=\
+  misc/__p__osplatform_emul.c \
   misc/__p__osver_emul.c \
   misc/isblank.c \
   misc/iswblank.c \
@@ -949,6 +958,7 @@ src_msvcr100=\
   misc/wctype.c
 
 src_msvcr110=\
+  misc/__p__osplatform_emul.c \
   misc/__p__osver_emul.c \
   misc/isblank.c \
   misc/iswblank.c \
@@ -956,6 +966,7 @@ src_msvcr110=\
   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 000000000000..5e6f0082dd43
--- /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;
-- 
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