diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 5ce1ec14534..afb1f921526 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2014-09-09 Maciej W. Rozycki + + * mips-irix-tdep.c (mips_irix_elf_osabi_sniff_abi_tag_sections): + Exclude `.MIPS.abiflags', `.MIPS.options' and `.MIPS.stubs' from + the list of sections determining GDB_OSABI_IRIX. + 2014-09-09 James Hogan * MAINTAINERS (Write After Approval): Add "James Hogan". diff --git a/gdb/mips-irix-tdep.c b/gdb/mips-irix-tdep.c index a017e3bbdf9..1232be87886 100644 --- a/gdb/mips-irix-tdep.c +++ b/gdb/mips-irix-tdep.c @@ -38,12 +38,16 @@ mips_irix_elf_osabi_sniff_abi_tag_sections (bfd *abfd, asection *sect, name = bfd_get_section_name (abfd, sect); sectsize = bfd_section_size (abfd, sect); - if (strncmp (name, ".MIPS.", 6) == 0 && sectsize > 0) - { - /* The presence of a section named with a ".MIPS." prefix is - indicative of an IRIX binary. */ - *os_ident_ptr = GDB_OSABI_IRIX; - } + /* The presence of a section named with a ".MIPS." prefix is usually + indicative of an IRIX binary, however there are exceptions that + are present universally, so check for those names and avoid + switching away from the default OS ABI in the case of a match. */ + if (strncmp (name, ".MIPS.", 6) == 0 + && strcmp (name, ".MIPS.abiflags") != 0 + && strcmp (name, ".MIPS.options") != 0 + && strcmp (name, ".MIPS.stubs") != 0 + && sectsize > 0) + *os_ident_ptr = GDB_OSABI_IRIX; } static enum gdb_osabi