[binutils-gdb] Fix assertion failure in the BFD library when linking with --emit-relocs enabled.

Nick Clifton nickc@sourceware.org
Tue Mar 24 13:36:29 GMT 2020


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

commit ec2e748ad396c868839c977aa27d0333eb085970
Author: Nick Clifton <nickc@redhat.com>
Date:   Tue Mar 24 13:35:53 2020 +0000

    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:
---
 bfd/ChangeLog | 7 +++++++
 bfd/elf.c     | 9 ++++++---
 2 files changed, 13 insertions(+), 3 deletions(-)

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  <nickc@redhat.com>
+
+	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  <hongjiu.lu@intel.com>
 
 	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;


More information about the Binutils-cvs mailing list