From b44ee3a8cf21294eeb079ffbada7eeb559a9c6b4 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Sat, 1 Dec 2018 05:42:33 -0800 Subject: x86: Delay setting the iplt section alignment Delay setting its alignment until we know it is non-empty. Otherwise an empty iplt section may change vma and lma of the following sections, which triggers moving dot of the following section backwards, resulting in a warning and section lma not being set properly. It later leads to a "File truncated" error. bfd/ PR ld/23930 * elfxx-x86.c (_bfd_x86_elf_size_dynamic_sections): Update the iplt section alignment if it is non-empty. (_bfd_x86_elf_link_setup_gnu_properties): Set plt.iplt_alignment and delay setting the iplt section alignment. * elfxx-x86.h (elf_x86_plt_layout): Add iplt_alignment. ld/ PR ld/23930 * testsuite/ld-i386/i386.exp: Run pr23930. * testsuite/ld-i386/pr23930.d: New file. * testsuite/ld-x86-64/pr23930-32.t: Likewise. * testsuite/ld-x86-64/pr23930-x32.d: Likewise. * testsuite/ld-x86-64/pr23930.d: Likewise. * testsuite/ld-x86-64/pr23930.t: Likewise. * testsuite/ld-x86-64/pr23930a.s: Likewise. * testsuite/ld-x86-64/pr23930b.s: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run pr23930 and pr23930-x32. --- bfd/elfxx-x86.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'bfd/elfxx-x86.h') diff --git a/bfd/elfxx-x86.h b/bfd/elfxx-x86.h index 9648438..d153623 100644 --- a/bfd/elfxx-x86.h +++ b/bfd/elfxx-x86.h @@ -389,6 +389,9 @@ struct elf_x86_plt_layout This is only used for x86-64. */ unsigned int plt_got_insn_size; + /* Alignment of the .iplt section. */ + unsigned int iplt_alignment; + /* .eh_frame covering the .plt section. */ const bfd_byte *eh_frame_plt; unsigned int eh_frame_plt_size; -- cgit v1.1