diff --git a/py/modmath.c b/py/modmath.c
index f2253ab41ef2ca23e2c961f1bcedef82b2422c42..485d9462a965db4437502f70502a6161374ec1d5 100644
--- a/py/modmath.c
+++ b/py/modmath.c
@@ -151,6 +151,7 @@ STATIC const mp_map_elem_t mp_module_math_globals_table[] = {
     { MP_OBJ_NEW_QSTR(MP_QSTR_copysign), (mp_obj_t)&mp_math_copysign_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_fabs), (mp_obj_t)&mp_math_fabs_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_floor), (mp_obj_t)&mp_math_floor_obj },
+    { MP_OBJ_NEW_QSTR(MP_QSTR_fmod), (mp_obj_t)&mp_math_fmod_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_frexp), (mp_obj_t)&mp_math_frexp_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_ldexp), (mp_obj_t)&mp_math_ldexp_obj },
     { MP_OBJ_NEW_QSTR(MP_QSTR_modf), (mp_obj_t)&mp_math_modf_obj },
diff --git a/py/objexcept.c b/py/objexcept.c
index 60b3565f6d030ee2d4af0b0d920679e21fd172c8..7f5f9c73d2478b721214f5a470dc7f214b68b22a 100644
--- a/py/objexcept.c
+++ b/py/objexcept.c
@@ -168,11 +168,13 @@ MP_DEFINE_EXCEPTION(Exception, BaseException)
     MP_DEFINE_EXCEPTION(KeyError, LookupError)
   MP_DEFINE_EXCEPTION(MemoryError, Exception)
   MP_DEFINE_EXCEPTION(NameError, Exception)
+    /*
     MP_DEFINE_EXCEPTION_BASE(NameError)
-    //MP_DEFINE_EXCEPTION(UnboundLocalError, NameError)
+    MP_DEFINE_EXCEPTION(UnboundLocalError, NameError)
+    */
   MP_DEFINE_EXCEPTION(OSError, Exception)
-    MP_DEFINE_EXCEPTION_BASE(OSError)
     /*
+    MP_DEFINE_EXCEPTION_BASE(OSError)
     MP_DEFINE_EXCEPTION(BlockingIOError, OSError)
     MP_DEFINE_EXCEPTION(ChildProcessError, OSError)
     MP_DEFINE_EXCEPTION(ConnectionError, OSError)
diff --git a/py/vmentrytable.h b/py/vmentrytable.h
index 217d84d3fd32d7b5d81c3028d3126ab8847f5831..598b5b87260e5eba9321a1b6044d1df737a734ca 100644
--- a/py/vmentrytable.h
+++ b/py/vmentrytable.h
@@ -24,6 +24,11 @@
  * THE SOFTWARE.
  */
 
+#if __clang__
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Winitializer-overrides"
+#endif // __clang__
+ 
 static void* entry_table[256] = {
     [0 ... 255] = &&entry_default,
     [MP_BC_LOAD_CONST_FALSE] = &&entry_MP_BC_LOAD_CONST_FALSE,
@@ -110,3 +115,7 @@ static void* entry_table[256] = {
     [MP_BC_IMPORT_FROM] = &&entry_MP_BC_IMPORT_FROM,
     [MP_BC_IMPORT_STAR] = &&entry_MP_BC_IMPORT_STAR,
 };
+
+#if __clang__
+#pragma clang diagnostic pop
+#endif // __clang__
diff --git a/unix/modsocket.c b/unix/modsocket.c
index 72aee95eab83aaeff02da9cca0c6f162098b0887..131d9285e4fedb86e86ed609fd9cc2cd50b92807 100644
--- a/unix/modsocket.c
+++ b/unix/modsocket.c
@@ -291,6 +291,7 @@ STATIC const mp_obj_type_t microsocket_type = {
     .locals_dict = (mp_obj_t)&microsocket_locals_dict,
 };
 
+#if MICROPY_SOCKET_EXTRA
 STATIC mp_obj_t mod_socket_htons(mp_obj_t arg) {
     return MP_OBJ_NEW_SMALL_INT((machine_int_t)htons(MP_OBJ_SMALL_INT_VALUE(arg)));
 }
@@ -308,7 +309,6 @@ STATIC mp_obj_t mod_socket_inet_aton(mp_obj_t arg) {
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_socket_inet_aton_obj, mod_socket_inet_aton);
 
-#if MICROPY_SOCKET_EXTRA
 STATIC mp_obj_t mod_socket_gethostbyname(mp_obj_t arg) {
     assert(MP_OBJ_IS_TYPE(arg, &mp_type_str));
     const char *s = mp_obj_str_get_str(arg);
@@ -321,7 +321,7 @@ STATIC mp_obj_t mod_socket_gethostbyname(mp_obj_t arg) {
     return mp_obj_new_int(*(int*)*h->h_addr_list);
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_socket_gethostbyname_obj, mod_socket_gethostbyname);
-#endif
+#endif // MICROPY_SOCKET_EXTRA
 
 STATIC mp_obj_t mod_socket_getaddrinfo(uint n_args, const mp_obj_t *args) {
     // TODO: Implement all args