_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