Use the IR symbol table for the IR input object
authorH.J. Lu <hjl.tools@gmail.com>
Mon, 20 Jun 2016 12:10:29 +0000 (05:10 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Mon, 20 Jun 2016 12:10:46 +0000 (05:10 -0700)
commit7dc3990e4002e0062007c1d41b56e04b5b8ec1ec
tree4e2190341e363ae4dac71d031c109ffd265aba04
parent9f99c22eb74a66e691b778cd15c24437f46d5818
Use the IR symbol table for the IR input object

ELF linker shouldn't skip the IR object when searching the symbol table
of an archive element.  If linker doesn't know if the object file is an
IR object, it should give LTO plugin a chance to get the correct symbol
table and use the IR symbol table if the input is an IR object.

bfd/

PR ld/18250
PR ld/20267
* elflink.c: Include plugin.h if BFD_SUPPORTS_PLUGINS is
defined.
(elf_link_is_defined_archive_symbol): Call
bfd_link_plugin_object_p on unknown plugin object and use the
IR symbol table if the input is an IR object.
* plugin.c (bfd_link_plugin_object_p): New function.
* plugin.h (bfd_link_plugin_object_p): New prototype.

ld/

PR ld/20267
* testsuite/ld-plugin/lto.exp (lto_link_tests): Add test for
PR ld/20267.
(lto_run_tests): Likewise.
* testsuite/ld-plugin/pr20267a.c: New file.
* testsuite/ld-plugin/pr20267b.c: Likewise.
bfd/ChangeLog
bfd/elflink.c
bfd/plugin.c
bfd/plugin.h
ld/ChangeLog
ld/testsuite/ld-plugin/lto.exp
ld/testsuite/ld-plugin/pr20267a.c [new file with mode: 0644]
ld/testsuite/ld-plugin/pr20267b.c [new file with mode: 0644]