From 58807c48a5a317ad3e2d39a8755168a3d4d5fdf8 Mon Sep 17 00:00:00 2001 From: Vlad Ivanov Date: Fri, 12 Jan 2018 09:25:11 +0000 Subject: [PATCH] _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. --- bfd/ChangeLog | 5 +++++ bfd/elfxx-mips.c | 10 +++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index fa82d46641..a31693e3a4 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2018-01-12 Vlad Ivanov + + * elfxx-mips.c (_bfd_mips_elf_final_link): Notify user when + .reginfo section has wrong size. + 2018-01-11 H.J. Lu PR ld/22393 diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index 3ef98af500..fc49f2f69a 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). */