[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