ld: Add more tests for --as-needed
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 10 Sep 2020 14:52:03 +0000 (07:52 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 10 Sep 2020 14:52:20 +0000 (07:52 -0700)
commit93d49941edbb5274bee6ce3e547a07c7ce4c4301
tree9e66ff2bbcbe51f28f785c2de76638b2738d5bac
parent918619e5e591c492b1a67f8ce125aa8728eb4497
ld: Add more tests for --as-needed

Prior to

commit 1e3b96fd6cf0c7d018083994ad951ccf92aba582
Author: Alan Modra <amodra@gmail.com>
Date:   Fri Sep 4 13:54:21 2020 +0930

    Allow plugin syms to mark as-needed shared libs needed

when removing unused IR symbol references, ld didn't add unnecessary
DT_NEEDED libraries which may lead to undefined symbol reference in a
--as-needed library when the symbol is defined in a prior --as-needed
library and there is no reference in relocatable inputs.  This behavior
is desirable since it ensures that both lazy and non-lazy bindings work
the same way.  The problem is with --as-needed libraries, which happens
with and without LTO.  Now, the linker may add many unnecessary DT_NEEDED
libraries for IR inputs.

PR ld/26590
* testsuite/ld-elf/pr26590.err: New file.
* testsuite/ld-elf/pr26590a.c: Likewise.
* testsuite/ld-elf/pr26590b.c: Likewise.
* testsuite/ld-elf/pr26590c.c: Likewise.
* testsuite/ld-elf/pr26590d.c: Likewise.
* testsuite/ld-elf/shared.exp: Run ld/26590 tests.
ld/ChangeLog
ld/testsuite/ld-elf/pr26590.err [new file with mode: 0644]
ld/testsuite/ld-elf/pr26590a.c [new file with mode: 0644]
ld/testsuite/ld-elf/pr26590b.c [new file with mode: 0644]
ld/testsuite/ld-elf/pr26590c.c [new file with mode: 0644]
ld/testsuite/ld-elf/pr26590d.c [new file with mode: 0644]
ld/testsuite/ld-elf/shared.exp