From: Nick Clifton Date: Tue, 24 Mar 2020 13:35:53 +0000 (+0000) Subject: Fix assertion failure in the BFD library when linking with --emit-relocs enabled. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ec2e748ad396c868839c977aa27d0333eb085970;p=binutils-gdb.git Fix assertion failure in the BFD library when linking with --emit-relocs enabled. PR 25681 * elf.c (_bfd_elf_map_sections_to_segments): When looking for a segment to use for PT_GNU_RELRO, ignore empty sections in a segment's current list. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 8ec3782d9ff..d9e1139eb1a 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,10 @@ +2020-03-24 Nick Clifton + + PR 25681 + * elf.c (_bfd_elf_map_sections_to_segments): When looking for a + segment to use for PT_GNU_RELRO, ignore empty sections in a + segment's current list. + 2020-03-24 H.J. Lu PR binutils/25717 diff --git a/bfd/elf.c b/bfd/elf.c index 1004809e454..f5354d2c7a1 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -5213,9 +5213,12 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info) { i = m->count; while (--i != (unsigned) -1) - if ((m->sections[i]->flags & (SEC_LOAD | SEC_HAS_CONTENTS)) - == (SEC_LOAD | SEC_HAS_CONTENTS)) - break; + { + if (m->sections[i]->size > 0 + && (m->sections[i]->flags & (SEC_LOAD | SEC_HAS_CONTENTS)) + == (SEC_LOAD | SEC_HAS_CONTENTS)) + break; + } if (i != (unsigned) -1) break;