OS/2 EMX port changes (Objects part of patch #450267):
  Objects/
    fileobject.c
    stringobject.c
    unicodeobject.c

This commit doesn't include the cleanup patches for stringobject.c and
unicodeobject.c which are shown separately in the patch manager.  Those
patches will be regenerated and applied in a subsequent commit, so as
to preserve a fallback position (this commit to those files).
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index ae08910..2824857 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -3100,6 +3100,15 @@
 		buf[0] = '0';
 		buf[1] = (char)type;
 	}
+#if defined(PYOS_OS2) && defined(PYCC_GCC)
+	/* unfortunately, the EMX C runtime gives us '0x' as the base
+	 * marker for %X when we expect/want '0X'
+	 */
+	else if ((flags & F_ALT) && (type == 'X')) {
+		assert(buf[1] == 'x');
+		buf[1] = (char)type;
+	}
+#endif
 	return strlen(buf);
 }