Issue 9916: Add some missing errno symbols.
diff --git a/Lib/test/test_errno.py b/Lib/test/test_errno.py
index e7d5ce5..f414a87 100755
--- a/Lib/test/test_errno.py
+++ b/Lib/test/test_errno.py
@@ -20,7 +20,8 @@
     def test_using_errorcode(self):
         # Every key value in errno.errorcode should be on the module.
         for value in errno.errorcode.values():
-            self.assertTrue(hasattr(errno, value), 'no %s attr in errno' % value)
+            self.assertTrue(hasattr(errno, value),
+                            'no %s attr in errno' % value)
 
 
 class ErrorcodeTests(unittest.TestCase):
diff --git a/Misc/NEWS b/Misc/NEWS
index 290d6a2..b4f830b 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -14,8 +14,8 @@
   threads are still running.  Instead, reinitialize the GIL on a second call to
   Py_Initialize().
 
-- All SyntaxErrors now have a column offset and therefore a caret when the error
-  is printed.
+- All SyntaxErrors now have a column offset and therefore a caret when the
+  error is printed.
 
 - Issue #9252: PyImport_Import no longer uses a fromlist hack to return the
   module that was imported, but instead gets the module from sys.modules.
@@ -62,6 +62,8 @@
 Library
 -------
 
+- Issue #9916: Add some missing errno symbols.
+
 - Issue #9877: Expose sysconfig.get_makefile_filename()
 
 - logging: Added hasHandlers() method to Logger and LoggerAdapter.
diff --git a/Modules/errnomodule.c b/Modules/errnomodule.c
index 19b8bd5..86720af 100644
--- a/Modules/errnomodule.c
+++ b/Modules/errnomodule.c
@@ -797,6 +797,36 @@
 #ifdef WSAN
     inscode(d, ds, de, "WSAN", WSAN, "Error WSAN");
 #endif
+#ifdef ENOMEDIUM
+    inscode(d, ds, de, "ENOMEDIUM", ENOMEDIUM, "No medium found");
+#endif
+#ifdef EMEDIUMTYPE
+    inscode(d, ds, de, "EMEDIUMTYPE", EMEDIUMTYPE, "Wrong medium type");
+#endif
+#ifdef ECANCELED
+    inscode(d, ds, de, "ECANCELED", ECANCELED, "Operation Canceled");
+#endif
+#ifdef ENOKEY
+    inscode(d, ds, de, "ENOKEY", ENOKEY, "Required key not available");
+#endif
+#ifdef EKEYEXPIRED
+    inscode(d, ds, de, "EKEYEXPIRED", EKEYEXPIRED, "Key has expired");
+#endif
+#ifdef EKEYREVOKED
+    inscode(d, ds, de, "EKEYREVOKED", EKEYREVOKED, "Key has been revoked");
+#endif
+#ifdef EKEYREJECTED
+    inscode(d, ds, de, "EKEYREJECTED", EKEYREJECTED, "Key was rejected by service");
+#endif
+#ifdef EOWNERDEAD
+    inscode(d, ds, de, "EOWNERDEAD", EOWNERDEAD, "Owner died");
+#endif
+#ifdef ENOTRECOVERABLE
+    inscode(d, ds, de, "ENOTRECOVERABLE", ENOTRECOVERABLE, "State not recoverable");
+#endif
+#ifdef ERFKILL
+    inscode(d, ds, de, "ERFKILL", ERFKILL, "Operation not possible due to RF-kill");
+#endif
 
     /* Solaris-specific errnos */
 #ifdef ECANCELED