Allow plugin syms to mark as-needed shared libs needed
authorAlan Modra <amodra@gmail.com>
Fri, 4 Sep 2020 04:24:21 +0000 (13:54 +0930)
committerAlan Modra <amodra@gmail.com>
Fri, 4 Sep 2020 04:36:44 +0000 (14:06 +0930)
commit1e3b96fd6cf0c7d018083994ad951ccf92aba582
tree0e091c1d3f126e5dbed7661c30bb0d5dfe35bb6a
parente062fcc8c2bf4c36386dce68ba7f1d408f22dedc
Allow plugin syms to mark as-needed shared libs needed

We must tell LTO about symbols in all shared libraries loaded.  That
means we can't load extra shared libraries after LTO recompilation, at
least, not those that affect the set of symbols that LTO cares about,
the IR symbols.

This change will likely result in complaints about --as-needed
libraries being loaded unnecessarily, but being correct is more
important than being optimal.  One of the PR15146 tests regresses, and
while that could be hidden by disabling the missing dso message by
making it conditional on h->root.non_ir_ref_regular, that would just
be sweeping a problem under the rug.

bfd/
PR 15146
PR 26314
PR 26530
* elflink.c (elf_link_add_object_symbols): Do set def_regular
and ref_regular for IR symbols.  Don't clear dynsym, allowing
IR symbols to load --as-needed shared libraries, but prevent
IR symbols from becoming dynamic.
ld/
* testsuite/ld-plugin/lto.exp: Don't run pr15146 tests.
* testsuite/ld-plugin/pr15146.d: Delete.
* testsuite/ld-plugin/pr15146a.c: Delete.
* testsuite/ld-plugin/pr15146b.c: Delete.
* testsuite/ld-plugin/pr15146c.c: Delete.
* testsuite/ld-plugin/pr15146d.c: Delete.
bfd/ChangeLog
bfd/elflink.c
ld/ChangeLog
ld/testsuite/ld-plugin/lto.exp
ld/testsuite/ld-plugin/pr15146.d [deleted file]
ld/testsuite/ld-plugin/pr15146a.c [deleted file]
ld/testsuite/ld-plugin/pr15146b.c [deleted file]
ld/testsuite/ld-plugin/pr15146c.c [deleted file]
ld/testsuite/ld-plugin/pr15146d.c [deleted file]
This page took 0.0255 seconds and 4 git commands to generate.