diff options
author | Nick Clifton <nickc@redhat.com> | 2020-08-20 15:03:21 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2020-08-20 15:03:21 +0100 |
commit | 01147b208215ae457e7ef2d5a105c9dac93d955a (patch) | |
tree | fbc5c694550b48165a1c707154633794a660bcc9 | |
parent | 33bf4c5c10d246543c7a9a8ba4bbbe173d7f3367 (diff) | |
download | binutils-01147b208215ae457e7ef2d5a105c9dac93d955a.zip binutils-01147b208215ae457e7ef2d5a105c9dac93d955a.tar.gz binutils-01147b208215ae457e7ef2d5a105c9dac93d955a.tar.bz2 |
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.
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/bfd.c | 3 | ||||
-rw-r--r-- | ld/ChangeLog | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/zlibbegin.rS | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/zlibnormal.rS | 2 |
5 files changed, 17 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 8c43a16..670803d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,11 @@ 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 * elf-bfd.h (struct bfd_elf_section_data): Add has_secondary_relocs field. @@ -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 973c000..0e3a859 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 dbab80c..c34a0f8 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 dbab80c..c34a0f8 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 |