diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2015-02-11 05:01:03 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2015-02-11 05:02:12 -0800 |
commit | 5ae0078cd2b6b69e6119864e20987c8724916b29 (patch) | |
tree | 85abe7a9ee24f03cffbc4a4acf2be913b6e9b6ef /bfd/plugin.h | |
parent | 18ad82c16379e7ed7daa3043abdacee1d934867d (diff) | |
download | gdb-5ae0078cd2b6b69e6119864e20987c8724916b29.zip gdb-5ae0078cd2b6b69e6119864e20987c8724916b29.tar.gz gdb-5ae0078cd2b6b69e6119864e20987c8724916b29.tar.bz2 |
Merge linker plugin handling into BFD plugin support
Linker plugin_maybe_claim is the interface of linker plugin support.
This patch extracts linker plugin_maybe_claim into plugin_object_p and
makes it available to BFD via a new function:
void register_ld_plugin_object_p (const bfd_target *(*) (bfd *));
bfd_plugin_object_p calls plugin_object_p registered by linker first. It
adds an enum bfd_plugin_format field and a pointer to plugin dummy BFD so
that plugin_object_p stores plugin dummy BFD to allow plugin_maybe_claim
to retrieve it later.
bfd/
PR ld/17878
* bfd.c (bfd_plugin_format): New.
(bfd): Add plugin_format and plugin_dummy_bfd.
* plugin.c (try_load_plugin): Take a pointer to bfd_boolean
argument to return TRUE if any plugin is found. Set plugin_format.
(has_plugin): New.
(bfd_plugin_target_p): New.
(bfd_plugin_specified_p): Likewise.
(bfd_plugin_target_p): Likewise.
(register_ld_plugin_object_p): Likewise.
(bfd_plugin_set_plugin): Set has_plugin.
(load_plugin): Cache try_load_plugin result.
(bfd_plugin_object_p): Try ld_plugin_object_p first. Check
plugin_format.
* plugin.h (bfd_plugin_target_p): New.
(bfd_plugin_specified_p): Likewise.
(register_ld_plugin_object_p): Likewise.
* bfd-in2.h: Regenerated.
ld/
PR ld/17878
* plugin.c: Include ../bfd/plugin.h.
(plugin_get_ir_dummy_bfd): Call bfd_create with
link_info.output_bfd instead of srctemplate. Copy BFD info
from srctemplate only if it doesn't use BFD plugin target
vector.
(plugin_load_plugins): Call register_ld_plugin_object_p with
(plugin_object_p)
(plugin_maybe_claim): Renamed to ...
(plugin_object_p): This. Return dummy BFD target vector if
input is calimed by plugin library, otherwise return NULL.
Update plugin_format and plugin_dummy_bfd.
(plugin_maybe_claim): New. Use plugin_object_p.
xx
Diffstat (limited to 'bfd/plugin.h')
-rw-r--r-- | bfd/plugin.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/bfd/plugin.h b/bfd/plugin.h index af98c59..1a66e6e 100644 --- a/bfd/plugin.h +++ b/bfd/plugin.h @@ -25,6 +25,9 @@ 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); +void register_ld_plugin_object_p (const bfd_target *(*object_p) (bfd *)); typedef struct plugin_data_struct { |