/* OS ABI variant handling for GDB.
- Copyright (C) 2001-2016 Free Software Foundation, Inc.
+ Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GDB.
them in sync. */
static const struct osabi_names gdb_osabi_names[] =
{
+ { "unknown", NULL },
{ "none", NULL },
{ "SVR4", NULL },
{ "GNU/Hurd", NULL },
{ "Solaris", NULL },
- { "GNU/Linux", "linux(-gnu)?" },
+ { "GNU/Linux", "linux(-gnu[^-]*)?" },
{ "FreeBSD", NULL },
{ "NetBSD", NULL },
{ "OpenBSD", NULL },
{ "LynxOS178", NULL },
{ "Newlib", NULL },
{ "SDE", NULL },
+ { "PikeOS", NULL },
{ "<invalid>", NULL }
};
{
struct gdb_osabi_handler *handler;
- if (info.osabi == GDB_OSABI_UNKNOWN)
- {
- /* Don't complain about an unknown OSABI. Assume the user knows
- what they are doing. */
- return;
- }
+ gdb_assert (info.osabi != GDB_OSABI_UNKNOWN);
for (handler = gdb_osabi_handler_list; handler != NULL;
handler = handler->next)
continue;
/* If the architecture described by ARCH_INFO can run code for
- the architcture we registered the handler for, then the
+ the architecture we registered the handler for, then the
handler is applicable. Note, though, that if the handler is
for an architecture that is a superset of ARCH_INFO, we can't
use that --- it would be perfectly correct for it to install
}
}
+ if (info.osabi == GDB_OSABI_NONE)
+ {
+ /* Don't complain about no OSABI. Assume the user knows
+ what they are doing. */
+ return;
+ }
+
warning
("A handler for the OS ABI \"%s\" is not built into this configuration\n"
"of GDB. Attempting to continue with the default %s settings.\n",
/* If this assertion triggers, increase MAX_NOTESZ. */
gdb_assert (notesz <= MAX_NOTESZ);
- /* Check whether SECT is big enough to comtain the complete note. */
- if (notesz > bfd_section_size (abfd, sect))
+ /* Check whether SECT is big enough to contain the complete note. */
+ if (notesz > bfd_section_size (sect))
return 0;
/* Check the note name. */
unsigned int sectsize;
char *note;
- name = bfd_get_section_name (abfd, sect);
- sectsize = bfd_section_size (abfd, sect);
+ name = bfd_section_name (sect);
+ sectsize = bfd_section_size (sect);
/* Limit the amount of data to read. */
if (sectsize > MAX_NOTESZ)
}
\f
static void
-set_osabi (char *args, int from_tty, struct cmd_list_element *c)
+set_osabi (const char *args, int from_tty, struct cmd_list_element *c)
{
struct gdbarch_info info;
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;
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 */
void
_initialize_gdb_osabi (void)