Introduce PyExc_Exception as the conceptual root class for all exceptions.
diff --git a/Include/pyerrors.h b/Include/pyerrors.h
index ece1f3f..580f6d7 100644
--- a/Include/pyerrors.h
+++ b/Include/pyerrors.h
@@ -53,6 +53,7 @@
 
 /* Predefined exceptions */
 
+extern DL_IMPORT(PyObject *) PyExc_Exception;
 extern DL_IMPORT(PyObject *) PyExc_StandardError;
 extern DL_IMPORT(PyObject *) PyExc_NumberError;
 extern DL_IMPORT(PyObject *) PyExc_LookupError;
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 251108f..2c858ec 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -1724,6 +1724,7 @@
 
 /* Predefined exceptions */
 
+PyObject *PyExc_Exception;
 PyObject *PyExc_StandardError;
 PyObject *PyExc_NumberError;
 PyObject *PyExc_LookupError;
@@ -1757,6 +1758,7 @@
 	int leaf_exc;
 }
 bltin_exc[] = {
+	{"Exception",          &PyExc_Exception,          0},
 	{"StandardError",      &PyExc_StandardError,      0},
 	{"NumberError",        &PyExc_NumberError,        0},
 	{"LookupError",        &PyExc_LookupError,        0},
@@ -1901,6 +1903,11 @@
 		PyTuple_SET_ITEM(PyExc_StandardError, i-1, exc);
 	}
 	PyDict_SetItemString(dict, "StandardError", PyExc_StandardError);
+
+	/* Exception is treated differently; for now, it's == StandardError */
+	PyExc_Exception = PyExc_StandardError;
+	Py_INCREF(PyExc_Exception);
+	PyDict_SetItemString(dict, "Exception", PyExc_Exception);
 	
 	if (PyErr_Occurred())
 	      Py_FatalError("Could not initialize built-in string exceptions");