This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]