X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fosabi.c;h=627b9d98151513d1af0126ae8474139c3a515350;hb=refs%2Fheads%2Fconcurrent-displaced-stepping-2020-04-01;hp=84fa9c02739ab7bc26a4f68ae3b5607d54030f4f;hpb=61baf725eca99af2569262d10aca03dcde2698f6;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/osabi.c b/gdb/osabi.c index 84fa9c0273..627b9d9815 100644 --- a/gdb/osabi.c +++ b/gdb/osabi.c @@ -1,6 +1,6 @@ /* OS ABI variant handling for GDB. - Copyright (C) 2001-2017 Free Software Foundation, Inc. + Copyright (C) 2001-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -58,12 +58,13 @@ struct osabi_names 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 }, @@ -71,6 +72,7 @@ static const struct osabi_names gdb_osabi_names[] = { "DJGPP", NULL }, { "QNX-Neutrino", NULL }, { "Cygwin", NULL }, + { "Windows", NULL }, { "AIX", NULL }, { "DICOS", NULL }, { "Darwin", NULL }, @@ -79,6 +81,7 @@ static const struct osabi_names gdb_osabi_names[] = { "LynxOS178", NULL }, { "Newlib", NULL }, { "SDE", NULL }, + { "PikeOS", NULL }, { "", NULL } }; @@ -335,12 +338,7 @@ gdbarch_init_osabi (struct gdbarch_info info, struct gdbarch *gdbarch) { 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) @@ -349,7 +347,7 @@ gdbarch_init_osabi (struct gdbarch_info info, struct gdbarch *gdbarch) 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 @@ -375,6 +373,13 @@ gdbarch_init_osabi (struct gdbarch_info info, struct gdbarch *gdbarch) } } + 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", @@ -411,8 +416,8 @@ check_note (bfd *abfd, asection *sect, char *note, unsigned int *sectsize, /* 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. */ @@ -441,8 +446,8 @@ generic_elf_osabi_sniff_abi_tag_sections (bfd *abfd, asection *sect, void *obj) 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) @@ -592,7 +597,7 @@ generic_elf_osabi_sniffer (bfd *abfd) } 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; @@ -603,11 +608,6 @@ set_osabi (char *args, int from_tty, struct cmd_list_element *c) 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; @@ -653,11 +653,10 @@ show_osabi (struct ui_file *file, int from_tty, struct cmd_list_element *c, fprintf_filtered (file, _("The default OS ABI is \"%s\".\n"), gdbarch_osabi_name (GDB_OSABI_DEFAULT)); } - -extern initialize_file_ftype _initialize_gdb_osabi; /* -Wmissing-prototype */ +void _initialize_gdb_osabi (); void -_initialize_gdb_osabi (void) +_initialize_gdb_osabi () { if (strcmp (gdb_osabi_names[GDB_OSABI_INVALID].pretty, "") != 0) internal_error