Add several dl.RTLD_ constants. Closes bug 110842.
diff --git a/Modules/dlmodule.c b/Modules/dlmodule.c
index b094be7..971b06f 100644
--- a/Modules/dlmodule.c
+++ b/Modules/dlmodule.c
@@ -181,6 +181,21 @@
 	{NULL,		NULL}		/* sentinel */
 };
 
+/* From socketmodule.c
+ * Convenience routine to export an integer value.
+ *
+ * Errors are silently ignored, for better or for worse...
+ */
+static void
+insint(PyObject *d, char *name, int value)
+{
+	PyObject *v = PyInt_FromLong((long) value);
+	if (!v || PyDict_SetItemString(d, name, v))
+		PyErr_Clear();
+
+	Py_XDECREF(v);
+}
+
 void
 initdl(void)
 {
@@ -202,8 +217,29 @@
 	PyDict_SetItemString(d, "error", x);
 	x = PyInt_FromLong((long)RTLD_LAZY);
 	PyDict_SetItemString(d, "RTLD_LAZY", x);
+#define INSINT(X)    insint(d,#X,X)
 #ifdef RTLD_NOW
-	x = PyInt_FromLong((long)RTLD_NOW);
-	PyDict_SetItemString(d, "RTLD_NOW", x);
+        INSINT(RTLD_NOW);
+#endif
+#ifdef RTLD_NOLOAD
+        INSINT(RTLD_NOLOAD);
+#endif
+#ifdef RTLD_GLOBAL
+        INSINT(RTLD_GLOBAL);
+#endif
+#ifdef RTLD_LOCAL
+        INSINT(RTLD_LOCAL);
+#endif
+#ifdef RTLD_PARENT
+        INSINT(RTLD_PARENT);
+#endif
+#ifdef RTLD_GROUP
+        INSINT(RTLD_GROUP);
+#endif
+#ifdef RTLD_WORLD
+        INSINT(RTLD_WORLD);
+#endif
+#ifdef RTLD_NODELETE
+        INSINT(RTLD_NODELETE);
 #endif
 }