Issue #3080: Import builtins using Unicode strings

 - is_builtin(), init_builtin(), load_builtin() and other builtin related
   functions use Unicode strings, instead of byte strings
 - Rename _PyImport_FixupExtensionUnicode() to _PyImport_FixupExtensionObject()
 - Rename _PyImport_FindExtensionUnicode() to _PyImport_FindExtensionObject()
diff --git a/Python/importdl.c b/Python/importdl.c
index 74ca8a7..f0e1f55 100644
--- a/Python/importdl.c
+++ b/Python/importdl.c
@@ -26,17 +26,23 @@
     dl_funcptr p0;
     PyObject* (*p)(void);
     struct PyModuleDef *def;
-    PyObject *result;
+    PyObject *nameobj, *result;
 
     path = PyUnicode_DecodeFSDefault(pathname);
     if (path == NULL)
         return NULL;
 
-    if ((m = _PyImport_FindExtensionUnicode(name, path)) != NULL) {
+    nameobj = PyUnicode_FromString(name);
+    if (nameobj == NULL)
+        return NULL;
+    m = _PyImport_FindExtensionObject(nameobj, path);
+    if (m != NULL) {
+        Py_DECREF(nameobj);
         Py_INCREF(m);
         result = m;
         goto finally;
     }
+    Py_DECREF(nameobj);
     lastdot = strrchr(name, '.');
     if (lastdot == NULL) {
         packagecontext = NULL;
@@ -82,12 +88,18 @@
     else
         Py_INCREF(path);
 
-    if (_PyImport_FixupExtensionUnicode(m, name, path) < 0)
+    nameobj = PyUnicode_FromString(name);
+    if (nameobj == NULL)
+        return NULL;
+    if (_PyImport_FixupExtensionObject(m, nameobj, path) < 0) {
+        Py_DECREF(nameobj);
         goto error;
+    }
     if (Py_VerboseFlag)
-        PySys_WriteStderr(
-            "import %s # dynamically loaded from %s\n",
-            name, pathname);
+        PySys_FormatStderr(
+            "import %U # dynamically loaded from %s\n",
+            nameobj, pathname);
+    Py_DECREF(nameobj);
     result = m;
     goto finally;