diff --git a/Modules/_hotshot.c b/Modules/_hotshot.c
index 1eecc7e..97037ac 100644
--- a/Modules/_hotshot.c
+++ b/Modules/_hotshot.c
@@ -26,7 +26,7 @@
 #ifndef HAVE_GETTIMEOFDAY
 #error "This module requires gettimeofday() on non-Windows platforms!"
 #endif
-#ifdef macintosh
+#if defined(macintosh) || (defined(PYOS_OS2) && defined(PYCC_GCC))
 #include <sys/time.h>
 #else
 #include <sys/resource.h>
@@ -51,6 +51,10 @@
 #define PATH_MAX 254
 #endif
 
+#if defined(PYOS_OS2) && defined(PYCC_GCC)
+#define PATH_MAX 260
+#endif
+
 #ifndef PATH_MAX
 #   ifdef MAX_PATH
 #       define PATH_MAX MAX_PATH
@@ -987,7 +991,7 @@
         }
 #endif
     }
-#if defined(MS_WIN32) || defined(macintosh)
+#if defined(MS_WIN32) || defined(macintosh) || defined(PYOS_OS2)
     rusage_diff = -1;
 #else
     {
diff --git a/Modules/dbmmodule.c b/Modules/dbmmodule.c
index 233487d..056af49 100644
--- a/Modules/dbmmodule.c
+++ b/Modules/dbmmodule.c
@@ -13,7 +13,11 @@
  */
 #if defined(HAVE_NDBM_H)
 #include <ndbm.h>
+#if defined(PYOS_OS2) && !defined(PYCC_GCC)
 static char *which_dbm = "ndbm";
+#else
+static char *which_dbm = "GNU gdbm";  /* EMX port of GDBM */
+#endif
 #elif defined(HAVE_DB1_NDBM_H)
 #include <db1/ndbm.h>
 static char *which_dbm = "BSD db";
diff --git a/Modules/fcntlmodule.c b/Modules/fcntlmodule.c
index 9f84a2c..13cd0f7 100644
--- a/Modules/fcntlmodule.c
+++ b/Modules/fcntlmodule.c
@@ -222,12 +222,17 @@
 			      &lenobj, &startobj, &whence))
 	    return NULL;
 
+#if defined(PYOS_OS2) && defined(PYCC_GCC)
+	PyErr_SetString(PyExc_NotImplementedError,
+			"lockf not supported on OS/2 (EMX)");
+	return NULL;
+#else
 #ifndef LOCK_SH
 #define LOCK_SH		1	/* shared lock */
 #define LOCK_EX		2	/* exclusive lock */
 #define LOCK_NB		4	/* don't block when locking */
 #define LOCK_UN		8	/* unlock */
-#endif
+#endif  /* LOCK_SH */
 	{
 		struct flock l;
 		if (code == LOCK_UN)
@@ -275,6 +280,7 @@
 	}
 	Py_INCREF(Py_None);
 	return Py_None;
+#endif  /* defined(PYOS_OS2) && defined(PYCC_GCC) */
 }
 
 static char lockf_doc [] =
diff --git a/Modules/main.c b/Modules/main.c
index b36714c..9ce8bef 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -8,11 +8,15 @@
 #include <fcntl.h>
 #endif
 
-#if defined(PYOS_OS2) || defined(MS_WINDOWS)
+#if (defined(PYOS_OS2) && !defined(PYCC_GCC)) || defined(MS_WINDOWS)
 #define PYTHONHOMEHELP "<prefix>\\lib"
 #else
+#if defined(PYOS_OS2) && defined(PYCC_GCC)
+#define PYTHONHOMEHELP "<prefix>/Lib"
+#else
 #define PYTHONHOMEHELP "<prefix>/pythonX.X"
 #endif
+#endif
 
 #include "pygetopt.h"
 
diff --git a/Modules/pwdmodule.c b/Modules/pwdmodule.c
index 35afc4e..91989b7 100644
--- a/Modules/pwdmodule.c
+++ b/Modules/pwdmodule.c
@@ -128,8 +128,12 @@
 		return NULL;
 	if ((d = PyList_New(0)) == NULL)
 		return NULL;
+#if defined(PYOS_OS2) && defined(PYCC_GCC)
+	if ((p = getpwuid(0)) != NULL) {
+#else
 	setpwent();
 	while ((p = getpwent()) != NULL) {
+#endif
 		PyObject *v = mkpwent(p);
 		if (v == NULL || PyList_Append(d, v) != 0) {
 			Py_XDECREF(v);
diff --git a/Modules/readline.c b/Modules/readline.c
index 9b4d952..94aa1db 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -507,6 +507,10 @@
 setup_readline(void)
 {
 	rl_readline_name = "python";
+#if defined(PYOS_OS2) && defined(PYCC_GCC)
+	/* Allow $if term= in .inputrc to work */
+	rl_terminal_name = getenv("TERM");
+#endif
 	/* Force rebind of TAB to insert-tab */
 	rl_bind_key('\t', rl_insert);
 	/* Bind both ESC-TAB and ESC-ESC to the completion function */
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index ceaf3fa..0a29f2e 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -33,7 +33,7 @@
 #include <sys/types.h>
 #endif
 
-#if defined(PYOS_OS2)
+#if defined(PYOS_OS2) && !defined(PYCC_GCC)
 #include <sys/time.h>
 #include <utils.h>
 #endif
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index e34f051..b27c4b7 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -16,7 +16,7 @@
 #define SIG_ERR ((PyOS_sighandler_t)(-1))
 #endif
 
-#if defined(PYOS_OS2)
+#if defined(PYOS_OS2) && !defined(PYCC_GCC)
 #define NSIG 12
 #include <process.h>
 #endif
diff --git a/Modules/termios.c b/Modules/termios.c
index aaabe60..0c5697f 100644
--- a/Modules/termios.c
+++ b/Modules/termios.c
@@ -384,7 +384,9 @@
 #ifdef OLCUC
 	{"OLCUC", OLCUC},
 #endif
+#ifdef ONLCR
 	{"ONLCR", ONLCR},
+#endif
 #ifdef OCRNL
 	{"OCRNL", OCRNL},
 #endif
@@ -552,7 +554,9 @@
 #ifdef VLNEXT
 	{"VLNEXT", VLNEXT},
 #endif
+#ifdef VEOL2
 	{"VEOL2", VEOL2},
+#endif
 
 
 #ifdef B460800
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index 6647ecc..5d7fa51 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -54,6 +54,12 @@
 #undef HAVE_CLOCK /* We have our own version down below */
 #endif /* MS_WIN32 && !MS_WIN64 */
 
+#if defined(PYOS_OS2)
+#define INCL_DOS
+#define INCL_ERRORS
+#include <os2.h>
+#endif
+
 #if defined(PYCC_VACPP)
 #include <sys/time.h>
 #endif
@@ -752,7 +758,7 @@
 floatsleep(double secs)
 {
 /* XXX Should test for MS_WIN32 first! */
-#if defined(HAVE_SELECT) && !defined(__BEOS__)
+#if defined(HAVE_SELECT) && !defined(__BEOS__) && !defined(__EMX__)
 	struct timeval t;
 	double frac;
 	frac = fmod(secs, 1.0);
diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c
index 36c96e4..20b53a7 100644
--- a/Modules/unicodedata.c
+++ b/Modules/unicodedata.c
@@ -277,7 +277,7 @@
 }
 
 static int
-_getname(Py_UCS4 code, char* buffer, int buflen)
+_Py_getname(Py_UCS4 code, char* buffer, int buflen)
 {
     int offset;
     int i;
@@ -334,7 +334,7 @@
     /* check if code corresponds to the given name */
     int i;
     char buffer[NAME_MAXLEN];
-    if (!_getname(code, buffer, sizeof(buffer)))
+    if (!_Py_getname(code, buffer, sizeof(buffer)))
         return 0;
     for (i = 0; i < namelen; i++) {
         if (toupper(name[i]) != buffer[i])
@@ -384,7 +384,7 @@
 static const _PyUnicode_Name_CAPI hashAPI = 
 {
     sizeof(_PyUnicode_Name_CAPI),
-    _getname,
+    _Py_getname,
     _getcode
 };
 
@@ -407,7 +407,7 @@
 	return NULL;
     }
 
-    if (!_getname((Py_UCS4) *PyUnicode_AS_UNICODE(v),
+    if (!_Py_getname((Py_UCS4) *PyUnicode_AS_UNICODE(v),
                              name, sizeof(name))) {
 	if (defobj == NULL) {
 	    PyErr_SetString(PyExc_ValueError, "no such name");
