Issue #18603: Ensure that PyOS_mystricmp and PyOS_mystrnicmp are in the
Python executable and not removed by the linker's optimizer.
diff --git a/Misc/NEWS b/Misc/NEWS
index 308b674..c2cb850 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@
 Core and Builtins
 -----------------
 
+- Issue #18603: Ensure that PyOS_mystricmp and PyOS_mystrnicmp are in the
+  Python executable and not removed by the linker's optimizer.
+
 - Issue #19279: UTF-7 decoder no more produces illegal strings.
 
 - Fix macro expansion of _PyErr_OCCURRED(), and make sure to use it in at
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index ee277b6..832df53 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -96,6 +96,10 @@
 
 PyThreadState *_Py_Finalizing = NULL;
 
+/* Hack to force loading of object files */
+int (*_PyOS_mystrnicmp_hack)(const char *, const char *, Py_ssize_t) = \
+    PyOS_mystrnicmp; /* Python/pystrcmp.o */
+
 /* PyModule_GetWarningsModule is no longer necessary as of 2.6
 since _warnings is builtin.  This API should not be used. */
 PyObject *