diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2016-06-20 05:10:29 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2016-06-20 05:10:46 -0700 |
commit | 7dc3990e4002e0062007c1d41b56e04b5b8ec1ec (patch) | |
tree | 4e2190341e363ae4dac71d031c109ffd265aba04 /bfd/plugin.h | |
parent | 9f99c22eb74a66e691b778cd15c24437f46d5818 (diff) | |
download | gdb-7dc3990e4002e0062007c1d41b56e04b5b8ec1ec.zip gdb-7dc3990e4002e0062007c1d41b56e04b5b8ec1ec.tar.gz gdb-7dc3990e4002e0062007c1d41b56e04b5b8ec1ec.tar.bz2 |
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.
Diffstat (limited to 'bfd/plugin.h')
-rw-r--r-- | bfd/plugin.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/bfd/plugin.h b/bfd/plugin.h index 0ad92fc..529f8c1 100644 --- a/bfd/plugin.h +++ b/bfd/plugin.h @@ -27,6 +27,7 @@ void bfd_plugin_set_program_name (const char *); void bfd_plugin_set_plugin (const char *); bfd_boolean bfd_plugin_target_p (const bfd_target *); bfd_boolean bfd_plugin_specified_p (void); +bfd_boolean bfd_link_plugin_object_p (bfd *); void register_ld_plugin_object_p (const bfd_target *(*object_p) (bfd *)); typedef struct plugin_data_struct |