x86: Delay setting the iplt section alignment
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 1 Dec 2018 13:42:33 +0000 (05:42 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Sat, 1 Dec 2018 14:35:03 +0000 (06:35 -0800)
commitb44ee3a8cf21294eeb079ffbada7eeb559a9c6b4
tree4b588c9acba669ccb1dfa6f349e7b7f1b31aa740
parent4770fb94ee04ef767cb2c171a24168d2b5acca04
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.
13 files changed:
bfd/ChangeLog
bfd/elfxx-x86.c
bfd/elfxx-x86.h
ld/ChangeLog
ld/testsuite/ld-i386/i386.exp
ld/testsuite/ld-i386/pr23930.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr23930-32.t [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr23930-x32.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr23930.d [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr23930.t [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr23930a.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/pr23930b.s [new file with mode: 0644]
ld/testsuite/ld-x86-64/x86-64.exp