/* OS ABI variant handling for GDB.
- Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
+
+ Copyright (C) 2001, 2002, 2003, 2004, 2007 Free Software Foundation, Inc.
This file is part of GDB.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330,
- Boston, MA 02111-1307, USA. */
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
#include "defs.h"
"HP/UX ELF",
"HP/UX SOM",
- "ARM EABI v1",
- "ARM EABI v2",
- "ARM APCS",
"QNX Neutrino",
"Cygwin",
+ "AIX",
"<invalid>"
};
{
internal_error
(__FILE__, __LINE__,
- "gdbarch_register_osabi: An attempt to register a handler for "
+ _("gdbarch_register_osabi: An attempt to register a handler for "
"OS ABI \"%s\" for architecture %s was made. The handler will "
- "not be registered",
+ "not be registered"),
gdbarch_osabi_name (osabi),
bfd_printable_arch_mach (arch, machine));
return;
{
internal_error
(__FILE__, __LINE__,
- "gdbarch_register_osabi: A handler for OS ABI \"%s\" "
- "has already been registered for architecture %s",
+ _("gdbarch_register_osabi: A handler for OS ABI \"%s\" "
+ "has already been registered for architecture %s"),
gdbarch_osabi_name (osabi),
arch_info->printable_name);
/* If user wants to continue, override previous definition. */
return user_selected_osabi;
/* If we don't have a binary, return the default OS ABI (if set) or
- an inconclusive result (otherwise). */
+ unknown (otherwise). */
if (abfd == NULL)
- {
- if (GDB_OSABI_DEFAULT != GDB_OSABI_UNKNOWN)
- return GDB_OSABI_DEFAULT;
- else
- return GDB_OSABI_UNINITIALIZED;
- }
+ return GDB_OSABI_DEFAULT;
match = GDB_OSABI_UNKNOWN;
match_specific = 0;
{
internal_error
(__FILE__, __LINE__,
- "gdbarch_lookup_osabi: invalid OS ABI (%d) from sniffer "
- "for architecture %s flavour %d",
+ _("gdbarch_lookup_osabi: invalid OS ABI (%d) from sniffer "
+ "for architecture %s flavour %d"),
(int) osabi,
bfd_printable_arch_mach (bfd_get_arch (abfd), 0),
(int) bfd_get_flavour (abfd));
{
internal_error
(__FILE__, __LINE__,
- "gdbarch_lookup_osabi: multiple %sspecific OS ABI "
+ _("gdbarch_lookup_osabi: multiple %sspecific OS ABI "
"match for architecture %s flavour %d: first "
- "match \"%s\", second match \"%s\"",
+ "match \"%s\", second match \"%s\""),
match_specific ? "" : "non-",
bfd_printable_arch_mach (bfd_get_arch (abfd), 0),
(int) bfd_get_flavour (abfd),
break;
default:
- internal_error (__FILE__, __LINE__, "\
-generic_elf_osabi_sniff_abi_tag_sections: unknown OS number %d",
+ internal_error (__FILE__, __LINE__, _("\
+generic_elf_osabi_sniff_abi_tag_sections: unknown OS number %d"),
abi_tag);
}
return;
switch (elfosabi)
{
case ELFOSABI_NONE:
- /* When elfosabi is ELFOSABI_NONE (0), then the ELF structures in the
- file are conforming to the base specification for that machine
- (there are no OS-specific extensions). In order to determine the
- real OS in use we must look for OS notes that have been added. */
+ /* When the EI_OSABI field in the ELF header is ELFOSABI_NONE
+ (0), then the ELF structures in the file are conforming to
+ the base specification for that machine (there are no
+ OS-specific extensions). In order to determine the real OS
+ in use we must look for OS-specific notes. */
bfd_map_over_sections (abfd,
generic_elf_osabi_sniff_abi_tag_sections,
&osabi);
break;
case ELFOSABI_HPUX:
+ /* For some reason the default value for the EI_OSABI field is
+ ELFOSABI_HPUX for all PA-RISC targets (with the exception of
+ GNU/Linux). We use HP-UX ELF as the default, but let any
+ OS-specific notes override this. */
osabi = GDB_OSABI_HPUX_ELF;
+ bfd_map_over_sections (abfd,
+ generic_elf_osabi_sniff_abi_tag_sections,
+ &osabi);
break;
}
/* The FreeBSD folks have been naughty; they stored the string
"FreeBSD" in the padding of the e_ident field of the ELF
header to "brand" their ELF binaries in FreeBSD 3.x. */
- if (strcmp (&elf_elfheader (abfd)->e_ident[8], "FreeBSD") == 0)
+ if (memcmp (&elf_elfheader (abfd)->e_ident[8],
+ "FreeBSD", sizeof ("FreeBSD")) == 0)
osabi = GDB_OSABI_FREEBSD_ELF;
}
}
if (i == GDB_OSABI_INVALID)
internal_error (__FILE__, __LINE__,
- "Invalid OS ABI \"%s\" passed to command handler.",
+ _("Invalid OS ABI \"%s\" passed to command handler."),
set_osabi_string);
}
graceful here. */
gdbarch_info_init (&info);
if (! gdbarch_update_p (info))
- internal_error (__FILE__, __LINE__, "Updating OS ABI failed.");
+ internal_error (__FILE__, __LINE__, _("Updating OS ABI failed."));
}
static void
-show_osabi (char *args, int from_tty)
+show_osabi (struct ui_file *file, int from_tty, struct cmd_list_element *c,
+ const char *value)
{
if (user_osabi_state == osabi_auto)
- printf_filtered ("The current OS ABI is \"auto\" (currently \"%s\").\n",
- gdbarch_osabi_name (gdbarch_osabi (current_gdbarch)));
+ fprintf_filtered (file,
+ _("The current OS ABI is \"auto\" (currently \"%s\").\n"),
+ gdbarch_osabi_name (gdbarch_osabi (current_gdbarch)));
else
- printf_filtered ("The current OS ABI is \"%s\".\n",
- gdbarch_osabi_name (user_selected_osabi));
+ fprintf_filtered (file, _("The current OS ABI is \"%s\".\n"),
+ gdbarch_osabi_name (user_selected_osabi));
if (GDB_OSABI_DEFAULT != GDB_OSABI_UNKNOWN)
- printf_filtered ("The default OS ABI is \"%s\".\n",
- gdbarch_osabi_name (GDB_OSABI_DEFAULT));
+ 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 */
if (strcmp (gdb_osabi_names[GDB_OSABI_INVALID], "<invalid>") != 0)
internal_error
(__FILE__, __LINE__,
- "_initialize_gdb_osabi: gdb_osabi_names[] is inconsistent");
+ _("_initialize_gdb_osabi: gdb_osabi_names[] is inconsistent"));
/* Register a generic sniffer for ELF flavoured files. */
gdbarch_register_osabi_sniffer (bfd_arch_unknown,
generic_elf_osabi_sniffer);
/* Register the "set osabi" command. */
- c = add_set_enum_cmd ("osabi", class_support, gdb_osabi_available_names,
- &set_osabi_string, "Set OS ABI of target.", &setlist);
-
- set_cmd_sfunc (c, set_osabi);
- add_cmd ("osabi", class_support, show_osabi, "Show OS/ABI of target.",
- &showlist);
+ add_setshow_enum_cmd ("osabi", class_support, gdb_osabi_available_names,
+ &set_osabi_string, _("\
+Set OS ABI of target."), _("\
+Show OS ABI of target."), NULL,
+ set_osabi,
+ show_osabi,
+ &setlist, &showlist);
user_osabi_state = osabi_auto;
}