This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH] MIPS/BFD: Fix assertions with SGI IRIX files
- From: "Maciej W. Rozycki" <macro at codesourcery dot com>
- To: binutils at sourceware dot org
- Cc: gdb-patches at sourceware dot org
- Date: Thu, 18 Aug 2011 17:40:41 +0100 (BST)
- Subject: [PATCH] MIPS/BFD: Fix assertions with SGI IRIX files
Hello,
If an SGI IRIX ELF variation binary (also produced by binutils for some
target configurations) is loaded into GDB configured for the traditional
MIPS ELF variation, then a load of assertion failures is spat. They
actually come from BFD being confused.
As no user input, however unreasonable, should ever trigger assertions
and this is simply a case of an unsupported binary format, here's a fix to
convert the offending code to do proper error reporting instead.
Verified manually with GDB, the error messages are produced. I was
unable to trigger this problem with the linker, even though this piece of
code looks reachable within to me.
OK to apply?
2011-08-18 Maciej W. Rozycki <macro@codesourcery.com>
bfd/
* elfxx-mips.c (_bfd_mips_elf_symbol_processing): Replace
assertions with warning messages.
Maciej
binutils-mips-sgi-err.diff
Index: binutils-fsf-trunk-quilt/bfd/elfxx-mips.c
===================================================================
--- binutils-fsf-trunk-quilt.orig/bfd/elfxx-mips.c 2011-08-03 14:02:30.000000000 +0100
+++ binutils-fsf-trunk-quilt/bfd/elfxx-mips.c 2011-08-03 14:04:07.000000000 +0100
@@ -6350,7 +6350,10 @@ _bfd_mips_elf_symbol_processing (bfd *ab
{
asection *section = bfd_get_section_by_name (abfd, ".text");
- BFD_ASSERT (SGI_COMPAT (abfd));
+ if (!SGI_COMPAT (abfd))
+ _bfd_error_handler (_("%B: Warning: SGI IRIX format special section "
+ "%s unsupported with the selected emulation"),
+ abfd, "MIPS_TEXT");
if (section != NULL)
{
asym->section = section;
@@ -6366,7 +6369,10 @@ _bfd_mips_elf_symbol_processing (bfd *ab
{
asection *section = bfd_get_section_by_name (abfd, ".data");
- BFD_ASSERT (SGI_COMPAT (abfd));
+ if (!SGI_COMPAT (abfd))
+ _bfd_error_handler (_("%B: Warning: SGI IRIX format special section "
+ "%s unsupported with the selected emulation"),
+ abfd, "MIPS_DATA");
if (section != NULL)
{
asym->section = section;