MIPS: Don't infer IRIX OS ABI from generic section names

There are `.MIPS.abiflags', `.MIPS.options' and `.MIPS.stubs' sections
also present in Linux executables, so we can't infer IRIX OS ABI solely
from the existence of these sections.  This is not going to be a problem
as there are bound to be other sections whose names start with `.MIPS.'
in IRIX executables and this selection only matters for a non-default OS
ABI in a multiple-target GDB executable.  As a last resort the automatic
selection can be overridden with `set osabi'.

	* 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.
This commit is contained in:
Maciej W. Rozycki
2014-09-09 23:41:28 +01:00
parent a1ada89ac6
commit 6e46637421
2 changed files with 16 additions and 6 deletions

View File

@ -1,3 +1,9 @@
2014-09-09 Maciej W. Rozycki <macro@codesourcery.com>
* 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 <james.hogan@imgtec.com> 2014-09-09 James Hogan <james.hogan@imgtec.com>
* MAINTAINERS (Write After Approval): Add "James Hogan". * MAINTAINERS (Write After Approval): Add "James Hogan".

View File

@ -38,12 +38,16 @@ mips_irix_elf_osabi_sniff_abi_tag_sections (bfd *abfd, asection *sect,
name = bfd_get_section_name (abfd, sect); name = bfd_get_section_name (abfd, sect);
sectsize = bfd_section_size (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 usually
{ indicative of an IRIX binary, however there are exceptions that
/* The presence of a section named with a ".MIPS." prefix is are present universally, so check for those names and avoid
indicative of an IRIX binary. */ switching away from the default OS ABI in the case of a match. */
*os_ident_ptr = GDB_OSABI_IRIX; 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 static enum gdb_osabi