[binutils-gdb] Align .gnu_debuglink sections on a 4-byte boundary.

Nick Clifton nickc@sourceware.org
Wed Feb 22 17:29:00 GMT 2017


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

commit 758d96d834ba725461abf4be36df9f13e0815054
Author: Nick Clifton <nickc@redhat.com>
Date:   Wed Feb 22 17:28:33 2017 +0000

    Align .gnu_debuglink sections on a 4-byte boundary.
    
    	PR binutils/21193
    	* opncls.c (bfd_create_gnu_debuglink_section): Give the newly
    	created section 4-byte alignment.

Diff:
---
 bfd/ChangeLog | 6 ++++++
 bfd/opncls.c  | 7 +++++++
 2 files changed, 13 insertions(+)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index cf5c41b..8f8d375 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2017-02-22  Nick Clifton  <nickc@redhat.com>
+
+	PR binutils/21193
+	* opncls.c (bfd_create_gnu_debuglink_section): Give the newly
+	created section 4-byte alignment.
+
 2017-02-22  Alan Modra  <amodra@gmail.com>
 
 	* elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Don't segfault
diff --git a/bfd/opncls.c b/bfd/opncls.c
index 2ab7dfe..4137a3b 100644
--- a/bfd/opncls.c
+++ b/bfd/opncls.c
@@ -1645,6 +1645,8 @@ bfd_create_gnu_debuglink_section (bfd *abfd, const char *filename)
   if (sect == NULL)
     return NULL;
 
+  /* Compute the size of the section.  Allow for the CRC after the filename,
+     and padding so that it will start on a 4-byte boundary.  */
   debuglink_size = strlen (filename) + 1;
   debuglink_size += 3;
   debuglink_size &= ~3;
@@ -1654,6 +1656,11 @@ bfd_create_gnu_debuglink_section (bfd *abfd, const char *filename)
     /* XXX Should we delete the section from the bfd ?  */
     return NULL;
 
+  /* PR 21193: Ensure that the section has 4-byte alignment for the CRC.
+     Note - despite the name of the function being called, we are
+     setting an alignment power, not a byte alignment value.  */
+  bfd_set_section_alignment (abfd, sect, 2);
+
   return sect;
 }



More information about the Binutils-cvs mailing list