This is the mail archive of the binutils-cvs@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]

[binutils-gdb] _bfd_mips_elf_final_link: Notify user about wrong .reginfo size


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=58807c48a5a317ad3e2d39a8755168a3d4d5fdf8

commit 58807c48a5a317ad3e2d39a8755168a3d4d5fdf8
Author: Vlad Ivanov <vlad@ivanov.email>
Date:   Fri Jan 12 09:25:11 2018 +0000

    _bfd_mips_elf_final_link: Notify user about wrong .reginfo size
    
    One of assertions in _bfd_mips_elf_final_link could be triggered by
    a combination of input files and a linker script.  This happens when
    either the input doesn't contain .reginfo section or when this section
    is oversized.  This patch replaces the assertion with a more useful
    error message.
    
    	* elfxx-mips.c (_bfd_mips_elf_final_link): Notify user when
    	.reginfo section has wrong size.

Diff:
---
 bfd/ChangeLog    |  5 +++++
 bfd/elfxx-mips.c | 10 +++++++++-
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index fa82d46..a31693e 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2018-01-12  Vlad Ivanov  <vlad@ivanov.email>
+
+	* elfxx-mips.c (_bfd_mips_elf_final_link): Notify user when
+	.reginfo section has wrong size.
+
 2018-01-11  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR ld/22393
diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c
index 3ef98af..fc49f2f 100644
--- a/bfd/elfxx-mips.c
+++ b/bfd/elfxx-mips.c
@@ -14374,7 +14374,15 @@ _bfd_mips_elf_final_link (bfd *abfd, struct bfd_link_info *info)
 	    }
 
 	  /* Size has been set in _bfd_mips_elf_always_size_sections.  */
-	  BFD_ASSERT(o->size == sizeof (Elf32_External_RegInfo));
+	  if (o->size != sizeof (Elf32_External_RegInfo))
+	    {
+	      _bfd_error_handler
+		(_("%B: .reginfo section size should be %d bytes, "
+		   "actual size is %d"),
+		 abfd, sizeof (Elf32_External_RegInfo), o->size);
+
+	      return FALSE;
+	    }
 
 	  /* Skip this section later on (I don't think this currently
 	     matters, but someday it might).  */


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