_bfd_mips_elf_final_link: Notify user about wrong .reginfo size
authorVlad Ivanov <vlad@ivanov.email>
Fri, 12 Jan 2018 09:25:11 +0000 (09:25 +0000)
committerMaciej W. Rozycki <macro@mips.com>
Fri, 12 Jan 2018 09:25:11 +0000 (09:25 +0000)
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.

bfd/ChangeLog
bfd/elfxx-mips.c

index fa82d46641208b39ad59a85df3bd3db3d3af378b..a31693e3a43eceb9caa0719285735ec8ebb5b95c 100644 (file)
@@ -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
index 3ef98af50024f5bee7e84e7af21a137f41f1d546..fc49f2f69acb4c7a194c67275c56a3c4ecf9be78 100644 (file)
@@ -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).  */