+static void
+set_osabi (char *args, int from_tty, struct cmd_list_element *c)
+{
+ struct gdbarch_info info;
+
+ if (strcmp (set_osabi_string, "auto") == 0)
+ user_osabi_state = osabi_auto;
+ else if (strcmp (set_osabi_string, "default") == 0)
+ {
+ user_selected_osabi = GDB_OSABI_DEFAULT;
+ user_osabi_state = osabi_user;
+ }
+ else if (strcmp (set_osabi_string, "none") == 0)
+ {
+ user_selected_osabi = GDB_OSABI_UNKNOWN;
+ user_osabi_state = osabi_user;
+ }
+ else
+ {
+ int i;
+ for (i = 1; i < GDB_OSABI_INVALID; i++)
+ if (strcmp (set_osabi_string, gdbarch_osabi_name (i)) == 0)
+ {
+ user_selected_osabi = i;
+ user_osabi_state = osabi_user;
+ break;
+ }
+ if (i == GDB_OSABI_INVALID)
+ internal_error (__FILE__, __LINE__,
+ _("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_init (&info);
+ if (! gdbarch_update_p (info))
+ internal_error (__FILE__, __LINE__, _("Updating OS ABI failed."));
+}
+
+static void
+show_osabi (struct ui_file *file, int from_tty, struct cmd_list_element *c,
+ const char *value)
+{
+ if (user_osabi_state == osabi_auto)
+ fprintf_filtered (file,
+ _("The current OS ABI is \"auto\" (currently \"%s\").\n"),
+ gdbarch_osabi_name (gdbarch_osabi (current_gdbarch)));
+ else
+ fprintf_filtered (file, _("The current OS ABI is \"%s\".\n"),
+ gdbarch_osabi_name (user_selected_osabi));
+
+ if (GDB_OSABI_DEFAULT != GDB_OSABI_UNKNOWN)
+ fprintf_filtered (file, _("The default OS ABI is \"%s\".\n"),
+ gdbarch_osabi_name (GDB_OSABI_DEFAULT));
+}
+\f
+extern initialize_file_ftype _initialize_gdb_osabi; /* -Wmissing-prototype */