Summary: | [2.23][ppc64le] ld hangs (indefinite loop) in ppc64_elf_size_stubs | ||
---|---|---|---|
Product: | binutils | Reporter: | Xingxing Pan <xingxing.pan> |
Component: | ld | Assignee: | Alan Modra <amodra> |
Status: | RESOLVED FIXED | ||
Severity: | critical | CC: | amodra |
Priority: | P2 | ||
Version: | 2.23 | ||
Target Milestone: | --- | ||
Host: | Target: | ||
Build: | Last reconfirmed: | 2016-11-30 00:00:00 |
Description
Xingxing Pan
2016-11-30 02:42:51 UTC
Confirmed with current master too. The binary is large enough that there are two stub sections servicing .text (which is 88M) and it so happens that between one iteration of sizing and the next that one stub section grows while the other shrinks. Since one section is always growing, the loop never terminates.. I'll need to change the algorithm to not update previous size on shrinking, once we go past a certain number of iterations. The master branch has been updated by Alan Modra <amodra@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=ea3d7d1cab4221ab729327bb4d957352c79d05f0 commit ea3d7d1cab4221ab729327bb4d957352c79d05f0 Author: Alan Modra <amodra@gmail.com> Date: Wed Nov 30 15:33:07 2016 +1030 PR20886, looping in ppc64_elf_size_stubs The PR20886 binary is large enough that there are two stub sections servicing .text (which is 88M). It so happens that between one iteration of sizing and the next that one stub section grows while the other shrinks. Since one section is always growing, the loop never terminates. This patch changes the algorithm to not update previous size on shrinking, once we go past a certain number of iterations. PR ld/20886 * elf64-ppc.c (ppc64_elf_size_stubs): Make rawsize max size seen on any pass past STUB_SHRINK_ITER. The binutils-2_27-branch branch has been updated by Alan Modra <amodra@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=5d1f2ede8f0de48b90fd18a81f67382dc99661dc commit 5d1f2ede8f0de48b90fd18a81f67382dc99661dc Author: Alan Modra <amodra@gmail.com> Date: Wed Nov 30 15:33:07 2016 +1030 PR20886, looping in ppc64_elf_size_stubs The PR20886 binary is large enough that there are two stub sections servicing .text (which is 88M). It so happens that between one iteration of sizing and the next that one stub section grows while the other shrinks. Since one section is always growing, the loop never terminates. This patch changes the algorithm to not update previous size on shrinking, once we go past a certain number of iterations. PR ld/20886 * elf64-ppc.c (ppc64_elf_size_stubs): Make rawsize max size seen on any pass past STUB_SHRINK_ITER. Fixed (In reply to Alan Modra from comment #4) > Fixed Thanks for you quick response. |