diff --git a/gdb/osabi.c b/gdb/osabi.c
index 776e620..bbd7635 100644
--- a/gdb/osabi.c
+++ b/gdb/osabi.c
@@ -32,7 +32,7 @@
 #endif
 
 /* State for the "set osabi" command.  */
-static enum gdb_osabi_mode user_osabi_state;
+static enum { osabi_auto, osabi_default, osabi_user } user_osabi_state;
 static enum gdb_osabi user_selected_osabi;
 static const char *gdb_osabi_available_names[GDB_OSABI_INVALID + 3] = {
   "auto",
@@ -595,48 +595,15 @@ generic_elf_osabi_sniffer (bfd *abfd)
   return osabi;
 }
 
-/* See osabi.h.  */
-
-void
-set_osabi (enum gdb_osabi_mode mode, enum gdb_osabi osabi)
-{
-  if (mode == osabi_auto)
-    user_osabi_state = osabi_auto;
-  else if (mode == osabi_default)
-    {
-      user_selected_osabi = GDB_OSABI_DEFAULT;
-      user_osabi_state = osabi_user;
-    }
-  else
-    {
-      user_selected_osabi = osabi;
-      user_osabi_state = osabi_user;
-    }
-
-  /* NOTE: At some point (true multiple architectures) we'll need to be more
-     graceful here.  */
-  gdbarch_info info;
-  if (! gdbarch_update_p (info))
-    internal_error (__FILE__, __LINE__, _("Updating OS ABI failed."));
-}
-
-/* See osabi.h.  */
-
-void
-get_osabi (enum gdb_osabi_mode &mode, enum gdb_osabi &osabi)
-{
-  mode = user_osabi_state;
-  osabi = user_selected_osabi;
-}
-
 static void
 set_osabi (const char *args, int from_tty, struct cmd_list_element *c)
 {
   if (strcmp (set_osabi_string, "auto") == 0)
-    set_osabi (osabi_auto, GDB_OSABI_INVALID);
+    user_osabi_state = osabi_auto;
   else if (strcmp (set_osabi_string, "default") == 0)
     {
-      set_osabi (osabi_default, GDB_OSABI_INVALID);
+      user_selected_osabi = GDB_OSABI_DEFAULT;
+      user_osabi_state = osabi_user;
     }
   else
     {
@@ -648,7 +615,8 @@ set_osabi (const char *args, int from_tty, struct cmd_list_element *c)
 
 	  if (strcmp (set_osabi_string, gdbarch_osabi_name (osabi)) == 0)
 	    {
-	      set_osabi (osabi_user, osabi);
+	      user_selected_osabi = osabi;
+	      user_osabi_state = osabi_user;
 	      break;
 	    }
 	}
@@ -657,6 +625,12 @@ set_osabi (const char *args, int from_tty, struct cmd_list_element *c)
 			_("Invalid OS ABI \"%s\" passed to command handler."),
 			set_osabi_string);
     }
+
+  /* NOTE: At some point (true multiple architectures) we'll need to be more
+     graceful here.  */
+  gdbarch_info info;
+  if (! gdbarch_update_p (info))
+    internal_error (__FILE__, __LINE__, _("Updating OS ABI failed."));
 }
 
 static void
diff --git a/gdb/osabi.h b/gdb/osabi.h
index 3737a77..be01673 100644
--- a/gdb/osabi.h
+++ b/gdb/osabi.h
@@ -50,13 +50,6 @@ enum gdb_osabi
   GDB_OSABI_INVALID		/* keep this last */
 };
 
-enum gdb_osabi_mode
-{
-  osabi_auto,
-  osabi_default,
-  osabi_user
-};
-
 /* Register an OS ABI sniffer.  Each arch/flavour may have more than
    one sniffer.  This is used to e.g. differentiate one OS's a.out from
    another.  The first sniffer to return something other than
@@ -96,10 +89,4 @@ const char *osabi_triplet_regexp (enum gdb_osabi osabi);
 void generic_elf_osabi_sniff_abi_tag_sections (bfd *, asection *,
 					       enum gdb_osabi *);
 
-/* Set osabi to MODE/OSABI.  */
-extern void set_osabi (enum gdb_osabi_mode mode, enum gdb_osabi osabi);
-
-/* Return current osabi setting in MODE/OSABI.  */
-extern void get_osabi (enum gdb_osabi_mode &mode, enum gdb_osabi &osabi);
-
 #endif /* OSABI_H */
diff --git a/gdb/selftest-arch.c b/gdb/selftest-arch.c
index a4d9de5..f434da7 100644
--- a/gdb/selftest-arch.c
+++ b/gdb/selftest-arch.c
@@ -66,28 +66,12 @@ foreach_arch_test_generator (const std::string &name,
       auto test_fn
 	= ([=] ()
 	   {
-	     /* Prevent warnings when setting architecture with current osabi
-		settings, like:
-		  A handler for the OS ABI "GNU/Linux" is not built into this
-		  configuration of GDB.  Attempting to continue with the
-		  default aarch64:ilp32 settings.  */
-	     enum gdb_osabi_mode mode;
-	     enum gdb_osabi osabi;
-	     get_osabi (mode, osabi);
-
-	     set_osabi (osabi_user, GDB_OSABI_NONE);
-	     SCOPE_EXIT
-	       {
-		 reset ();
-		 set_osabi (mode, osabi);
-	       };
-
 	     struct gdbarch_info info;
 	     info.bfd_arch_info = bfd_scan_arch (arch);
 	     struct gdbarch *gdbarch = gdbarch_find_by_info (info);
 	     SELF_CHECK (gdbarch != NULL);
-
 	     function (gdbarch);
+	     reset ();
 	   });
 
       tests.emplace_back (string_printf ("%s::%s", name.c_str (), arch),
