Add --debug=plugin option to record plugin actions.
authorCary Coutant <ccoutant@gmail.com>
Fri, 23 Mar 2018 17:05:38 +0000 (10:05 -0700)
committerCary Coutant <ccoutant@gmail.com>
Fri, 23 Mar 2018 17:05:38 +0000 (10:05 -0700)
commit291158a341260e97125db5638cd47c1e9aea5e8f
tree4479a33446992b8e56cc9f08d77ae0a79b06ca7e
parent2cc9b3048bcbb827e69059fb6beacb9bccbc5d7c
Add --debug=plugin option to record plugin actions.

With --debug=plugin, gold will log all plugin actions to a log file,
and make copies of plugin-supplied replacement files in a temporary
directory created under the current working directory.

gold/
* debug.h (DEBUG_PLUGIN): New constant.
(DEBUG_ALL): Add DEBUG_PLUGIN.
(debug_string_to_enum): Likewise.
* plugin.cc (make_sized_plugin_object): Add filename parameter.
(Plugin_recorder): New class.
(Plugin_manager::~Plugin_manager): Delete recorder_.
(Plugin_manager::load_plugins): Create and initialize recorder_.
(Plugin_manager::claim_file): Record claimed and unclaimed files.
(Plugin_manager::make_plugin_object): Use object name as name for
plugin object, if available.
(Plugin_manager::add_input_file): Record replacement files.
(Sized_pluginobj::do_add_symbols): Record plugin symbols.
(Plugin_finish::run): Call Plugin_recorder::finish().
(make_sized_plugin_object): Add filename parameter and pass to
Sized_pluginobj constructor.
* plugin.h (Plugin::filename): New method.
(Plugin::recorder): New method.
(Plugin::recorder_): New data member.
gold/debug.h
gold/plugin.cc
gold/plugin.h