Summary: | Problems linking objectfiles optimized for size (-Os) | ||
---|---|---|---|
Product: | binutils | Reporter: | Artem Savkov <asavkov> |
Component: | ld | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | hjl.tools |
Priority: | P2 | ||
Version: | 2.29 | ||
Target Milestone: | 2.32 | ||
Host: | Target: | ||
Build: | Last reconfirmed: | ||
Attachments: |
Reproducer
A workaround |
Description
Artem Savkov
2018-11-28 16:06:25 UTC
Created attachment 11418 [details]
A workaround
The bug is in ldlang.c. In the meantime, please try this workaround in
x86 backend.
The workaround fixes both the reproducer and original kernel build for me. This is the patch: https://sourceware.org/ml/binutils/2018-11/msg00279.html I will check in. The master branch has been updated by H.J. Lu <hjl@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=b44ee3a8cf21294eeb079ffbada7eeb559a9c6b4 commit b44ee3a8cf21294eeb079ffbada7eeb559a9c6b4 Author: H.J. Lu <hjl.tools@gmail.com> Date: Sat Dec 1 05:42:33 2018 -0800 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. Fixed for 2.32. |