crt: Use __p__commode instead of __MINGW_IMP_SYMBOL(_commode) for initialization This matches what was done for _fmode in 2e64b9e4537d564478f17b873b2f655f518325ed. This fixes using a crtexe.c built without optimizations with UCRT (and fixes UCRT in general after the previous commit). Signed-off-by: Martin Storsjö <martin@martin.st>
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am index 9a1fe07..d38e524 100644 --- a/mingw-w64-crt/Makefile.am +++ b/mingw-w64-crt/Makefile.am
@@ -257,6 +257,7 @@ $(src_msvcrt) \ misc/__p___argv.c \ misc/__p__acmdln.c \ + misc/__p__commode.c \ misc/__p__fmode.c \ misc/__p__wcmdln.c \ misc/_create_locale.c \ @@ -267,6 +268,7 @@ $(src_msvcrt) \ misc/__p___argv.c \ misc/__p__acmdln.c \ + misc/__p__commode.c \ misc/__p__fmode.c \ misc/__p__wcmdln.c \ misc/_getpid.c \ @@ -359,6 +361,7 @@ math/arm64/truncf.S \ misc/__p___argv.c \ misc/__p__acmdln.c \ + misc/__p__commode.c \ misc/__p__fmode.c \ misc/__p__wcmdln.c \ misc/_getpid.c \ @@ -368,6 +371,7 @@ $(src_msvcrt_common) \ misc/__p___argv.c \ misc/__p__acmdln.c \ + misc/__p__commode.c \ misc/__p__fmode.c \ misc/__p__wcmdln.c
diff --git a/mingw-w64-crt/crt/crtexe.c b/mingw-w64-crt/crt/crtexe.c index bea6c04..b730dc4 100644 --- a/mingw-w64-crt/crt/crtexe.c +++ b/mingw-w64-crt/crt/crtexe.c
@@ -50,7 +50,7 @@ #define SPACECHAR _T(' ') #define DQUOTECHAR _T('\"') -extern int * __MINGW_IMP_SYMBOL(_commode); +int *__cdecl __p__commode(void); #undef _fmode extern int _fmode; @@ -142,7 +142,7 @@ __set_app_type (_CONSOLE_APP); * __p__fmode() = _fmode; - * __MINGW_IMP_SYMBOL(_commode) = _commode; + * __p__commode() = _commode; #ifdef WPRFLAG _wsetargv();
diff --git a/mingw-w64-crt/misc/__p__commode.c b/mingw-w64-crt/misc/__p__commode.c new file mode 100644 index 0000000..bd79f5a --- /dev/null +++ b/mingw-w64-crt/misc/__p__commode.c
@@ -0,0 +1,17 @@ +/** + * 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 <_mingw.h> + +extern int * __MINGW_IMP_SYMBOL(_commode); + +int *__cdecl __p__commode(void); +int *__cdecl __p__commode(void) +{ + return __MINGW_IMP_SYMBOL(_commode); +} + +typeof(__p__commode) *__MINGW_IMP_SYMBOL(__p__commode) = __p__commode;