[binutils-gdb] Ensure that compressed sections that have an ELF compression header structure at the start are corre

Nick Clifton nickc@sourceware.org
Thu Aug 20 14:04:36 GMT 2020


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

commit 01147b208215ae457e7ef2d5a105c9dac93d955a
Author: Nick Clifton <nickc@redhat.com>
Date:   Thu Aug 20 15:03:21 2020 +0100

    Ensure that compressed sections that have an ELF compression header structure at the start are correctly aligned.
    
            PR 26428
    bfd     * bfd.c (bfd_update_compression_header): Also set the sh_addralign
            field in the ELF header of the compressed sections.
    
    ld      * testsuite/ld-elf/zlibbegin.rS: Update expected output.
            * testsuite/ld-elf/zlibnormal.rS: Likewise.

Diff:
---
 bfd/ChangeLog                     | 6 ++++++
 bfd/bfd.c                         | 3 +++
 ld/ChangeLog                      | 6 ++++++
 ld/testsuite/ld-elf/zlibbegin.rS  | 2 +-
 ld/testsuite/ld-elf/zlibnormal.rS | 2 +-
 5 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 8c43a163fc4..670803ddfb1 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2020-08-20  Nick Clifton  <nickc@redhat.com>
+
+	PR 26428
+	* bfd.c (bfd_update_compression_header): Also set the sh_addralign
+	field in the ELF header of the compressed sections.
+
 2020-08-20  Nick Clifton  <nickc@redhat.com>
 
 	PR 26406
diff --git a/bfd/bfd.c b/bfd/bfd.c
index ec38a0673c7..449bcc6cefb 100644
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -2558,6 +2558,7 @@ bfd_update_compression_header (bfd *abfd, bfd_byte *contents,
       if ((abfd->flags & BFD_COMPRESS_GABI) != 0)
 	{
 	  const struct elf_backend_data *bed = get_elf_backend_data (abfd);
+	  struct bfd_elf_section_data * esd = elf_section_data (sec);
 
 	  /* Set the SHF_COMPRESSED bit.  */
 	  elf_section_flags (sec) |= SHF_COMPRESSED;
@@ -2571,6 +2572,7 @@ bfd_update_compression_header (bfd *abfd, bfd_byte *contents,
 			  &echdr->ch_addralign);
 	      /* bfd_log2 (alignof (Elf32_Chdr)) */
 	      bfd_set_section_alignment (sec, 2);
+	      esd->this_hdr.sh_addralign = 4;
 	    }
 	  else
 	    {
@@ -2582,6 +2584,7 @@ bfd_update_compression_header (bfd *abfd, bfd_byte *contents,
 			  &echdr->ch_addralign);
 	      /* bfd_log2 (alignof (Elf64_Chdr)) */
 	      bfd_set_section_alignment (sec, 3);
+	      esd->this_hdr.sh_addralign = 8;
 	    }
 	  break;
 	}
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 973c00077b9..0e3a8593c35 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,9 @@
+2020-08-20  Nick Clifton  <nickc@redhat.com>
+
+	PR 26428
+	* testsuite/ld-elf/zlibbegin.rS: Update expected output.
+	* testsuite/ld-elf/zlibnormal.rS: Likewise.
+
 2020-08-16  Alan Modra  <amodra@gmail.com>
 
 	* testsuite/ld-powerpc/inline.s,
diff --git a/ld/testsuite/ld-elf/zlibbegin.rS b/ld/testsuite/ld-elf/zlibbegin.rS
index dbab80c2ac8..c34a0f88986 100644
--- a/ld/testsuite/ld-elf/zlibbegin.rS
+++ b/ld/testsuite/ld-elf/zlibbegin.rS
@@ -1,3 +1,3 @@
 #...
- +\[[ 0-9]+\] .debug_.* +(PROGBITS|MIPS_DWARF) +0+ +[0-9a-f]+ +[0-9a-f]+ [0-9a-f]+ +G?C +0 +0 +1
+ +\[[ 0-9]+\] .debug_.* +(PROGBITS|MIPS_DWARF) +0+ +[0-9a-f]+ +[0-9a-f]+ [0-9a-f]+ +G?C +0 +0 +[48]
 #pass
diff --git a/ld/testsuite/ld-elf/zlibnormal.rS b/ld/testsuite/ld-elf/zlibnormal.rS
index dbab80c2ac8..c34a0f88986 100644
--- a/ld/testsuite/ld-elf/zlibnormal.rS
+++ b/ld/testsuite/ld-elf/zlibnormal.rS
@@ -1,3 +1,3 @@
 #...
- +\[[ 0-9]+\] .debug_.* +(PROGBITS|MIPS_DWARF) +0+ +[0-9a-f]+ +[0-9a-f]+ [0-9a-f]+ +G?C +0 +0 +1
+ +\[[ 0-9]+\] .debug_.* +(PROGBITS|MIPS_DWARF) +0+ +[0-9a-f]+ +[0-9a-f]+ [0-9a-f]+ +G?C +0 +0 +[48]
 #pass


More information about the Binutils-cvs mailing list