Remove support for SunOS 4.
Remove BAD_EXEC_PROTOYPE (leftover from IRIX 4 demolition).
diff --git a/Include/pyport.h b/Include/pyport.h
index 085833f..5b0e590 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -389,13 +389,6 @@
 
 /* From Modules/posixmodule.c */
 extern int fdatasync(int);
-/* XXX These are supposedly for SunOS4.1.3 but "shouldn't hurt elsewhere" */
-extern int rename(const char *, const char *);
-extern int pclose(FILE *);
-extern int lstat(const char *, struct stat *);
-extern int symlink(const char *, const char *);
-extern int fsync(int fd);
-
 #endif /* 0 */
 
 
diff --git a/Misc/BeOS-setup.py b/Misc/BeOS-setup.py
index 53b62b7..438daa7 100644
--- a/Misc/BeOS-setup.py
+++ b/Misc/BeOS-setup.py
@@ -401,10 +401,6 @@
 
         # Curses support, requring the System V version of curses, often
         # provided by the ncurses library.
-        if platform == 'sunos4':
-            inc_dirs += ['/usr/5include']
-            lib_dirs += ['/usr/5lib']
-
         if (self.compiler.find_library_file(lib_dirs, 'ncurses')):
             curses_libs = ['ncurses']
             exts.append( Extension('_curses', ['_cursesmodule.c'],
diff --git a/Modules/Setup.dist b/Modules/Setup.dist
index 3ca6dab..51442c9 100644
--- a/Modules/Setup.dist
+++ b/Modules/Setup.dist
@@ -361,8 +361,7 @@
 
 # Curses support, requring the System V version of curses, often
 # provided by the ncurses library.  e.g. on Linux, link with -lncurses
-# instead of -lcurses; on SunOS 4.1.3, insert -I/usr/5include
-# -L/usr/5lib before -lcurses).
+# instead of -lcurses).
 #
 # First, look at Setup.config; configure may have set this for you.
 
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index a61a37a..6cb4717 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -39,11 +39,6 @@
 #include <sys/mman.h>
 #include <sys/stat.h>
 
-#ifndef MS_SYNC
-/* This is missing e.g. on SunOS 4.1.4 */
-#define MS_SYNC 0
-#endif
-
 #if defined(HAVE_SYSCONF) && defined(_SC_PAGESIZE)
 static int
 my_getpagesize(void)
diff --git a/Modules/pcre-int.h b/Modules/pcre-int.h
index ceae8eb..d07d536 100644
--- a/Modules/pcre-int.h
+++ b/Modules/pcre-int.h
@@ -35,14 +35,6 @@
 modules, but which are not relevant to the outside. */
 
 
-/* To cope with SunOS4 and other systems that lack memmove() but have bcopy(),
-define a macro for memmove() if USE_BCOPY is defined. */
-
-#ifdef USE_BCOPY
-#undef  memmove        /* some systems may have a macro */
-#define memmove(a, b, c) bcopy(b, a, c)
-#endif
- 
 /* Standard C headers plus the external interface definition */
 
 #include <ctype.h>
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index aa9f36c..71a102c 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -136,16 +136,6 @@
 
 #ifndef _MSC_VER
 
-#if defined(sun) && !defined(__SVR4)
-/* SunOS 4.1.4 doesn't have prototypes for these: */
-extern int rename(const char *, const char *);
-extern int pclose(FILE *);
-extern int fclose(FILE *);
-extern int fsync(int);
-extern int lstat(const char *, struct stat *);
-extern int symlink(const char *, const char *);
-#endif
-
 #if defined(__sgi)&&_COMPILER_VERSION>=700
 /* declare ctermid_r if compiling with MIPSPro 7.x in ANSI C mode
    (default) */
@@ -2117,11 +2107,7 @@
 	}
 	argvlist[argc] = NULL;
 
-#ifdef BAD_EXEC_PROTOTYPES
-	execv(path, (const char **) argvlist);
-#else /* BAD_EXEC_PROTOTYPES */
 	execv(path, argvlist);
-#endif /* BAD_EXEC_PROTOTYPES */
 
 	/* If we get here it's definitely an error */
 
@@ -2260,12 +2246,7 @@
 	}
 	envlist[envc] = 0;
 
-
-#ifdef BAD_EXEC_PROTOTYPES
-	execve(path, (const char **)argvlist, envlist);
-#else /* BAD_EXEC_PROTOTYPES */
 	execve(path, argvlist, envlist);
-#endif /* BAD_EXEC_PROTOTYPES */
 
 	/* If we get here it's definitely an error */
 
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 66461a8..7476ac7 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -13,16 +13,6 @@
 extern double pow(double, double);
 #endif
 
-#if defined(sun) && !defined(__SVR4)
-/* On SunOS4.1 only libm.a exists. Make sure that references to all
-   needed math functions exist in the executable, so that dynamic
-   loading of mathmodule does not fail. */
-double (*_Py_math_funcs_hack[])() = {
-	acos, asin, atan, atan2, ceil, cos, cosh, exp, fabs, floor,
-	fmod, log, log10, pow, sin, sinh, sqrt, tan, tanh
-};
-#endif
-
 /* Special free list -- see comments for same code in intobject.c. */
 #define BLOCK_SIZE	1000	/* 1K less typical malloc overhead */
 #define BHEAD_SIZE	8	/* Enough for a 64-bit pointer */
diff --git a/PC/pyconfig.h b/PC/pyconfig.h
index 4bfcdbd..e8b65c7 100644
--- a/PC/pyconfig.h
+++ b/PC/pyconfig.h
@@ -348,10 +348,6 @@
 /* Define if the closedir function returns void instead of int.  */
 /* #undef VOID_CLOSEDIR */
 
-/* Define if your <unistd.h> contains bad prototypes for exec*()
-   (as it does on SGI IRIX 4.x) */
-/* #undef BAD_EXEC_PROTOTYPES */
-
 /* Define if getpgrp() must be called as getpgrp(0)
    and (consequently) setpgrp() as setpgrp(0, 0). */
 /* #undef GETPGRP_HAVE_ARGS */
diff --git a/RISCOS/pyconfig.h b/RISCOS/pyconfig.h
index fbd8ebc..bb221e2 100644
--- a/RISCOS/pyconfig.h
+++ b/RISCOS/pyconfig.h
@@ -67,10 +67,6 @@
    and you want support for AIX C++ shared extension modules. */
 #undef AIX_GENUINE_CPLUSPLUS
 
-/* Define if your <unistd.h> contains bad prototypes for exec*()
-   (as it does on SGI IRIX 4.x) */
-#undef BAD_EXEC_PROTOTYPES
-
 /* Define if your compiler botches static forward declarations
    (as it does on SCI ODT 3.0) */
 #undef BAD_STATIC_FORWARD
diff --git a/configure.in b/configure.in
index 31805c1..c4b60f7 100644
--- a/configure.in
+++ b/configure.in
@@ -332,7 +332,7 @@
 
 # Check for unsupported systems
 case $ac_sys_system/$ac_sys_release in
-SunOS/4*|Linux*/1*)
+Linux*/1*)
    echo This system \($ac_sys_system/$ac_sys_release\) is no longer supported.
    echo See README for details.
    exit 1;;
@@ -1221,7 +1221,7 @@
 fi
 AC_MSG_RESULT($SO)
 # LDSHARED is the ld *command* used to create shared library
-# -- "ld" on SunOS 4.x.x, "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
+# -- "cc -G" on SunOS 5.x, "ld -shared" on IRIX 5
 # (Shared libraries in this instance are shared modules to be loaded into
 # Python, as opposed to building Python itself as a shared library.)
 AC_MSG_CHECKING(LDSHARED)
@@ -1238,7 +1238,6 @@
 		;;
 	IRIX/5*) LDSHARED="ld -shared";;
 	IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
-	SunOS/4*) LDSHARED="ld";;
 	SunOS/5*) 
 		if test "$GCC" = "yes"
 		then LDSHARED='$(CC) -shared'
@@ -2426,18 +2425,6 @@
 ])
 AC_MSG_RESULT($works)
 
-if test "$have_prototypes" = yes; then
-bad_prototypes=no
-AC_MSG_CHECKING(for bad exec* prototypes)
-AC_TRY_COMPILE([#include <unistd.h>], [char **t;execve("@",t,t);], ,
-    AC_DEFINE(BAD_EXEC_PROTOTYPES, 1,
-    [Define if your <unistd.h> contains bad prototypes for exec*()
-    (as it does on SGI IRIX 4.x)]) 
-    bad_prototypes=yes
-)
-AC_MSG_RESULT($bad_prototypes)
-fi
-
 # check if sockaddr has sa_len member
 AC_MSG_CHECKING(if sockaddr has sa_len member)
 AC_TRY_COMPILE([#include <sys/types.h>
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 41de4e1..e1c432f 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -12,10 +12,6 @@
 /* Define this if you have AtheOS threads. */
 #undef ATHEOS_THREADS
 
-/* Define if your <unistd.h> contains bad prototypes for exec*() (as it does
-   on SGI IRIX 4.x) */
-#undef BAD_EXEC_PROTOTYPES
-
 /* Define this if you have BeOS threads. */
 #undef BEOS_THREADS