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;