Browse Source

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.
gdb-10-branch
Nick Clifton 6 years ago
parent
commit
01147b2082
  1. 6
      bfd/ChangeLog
  2. 3
      bfd/bfd.c
  3. 6
      ld/ChangeLog
  4. 2
      ld/testsuite/ld-elf/zlibbegin.rS
  5. 2
      ld/testsuite/ld-elf/zlibnormal.rS

6
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

3
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;
}

6
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,

2
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

2
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

Loading…
Cancel
Save