Add plugin API for processing plugin-added input files
authorStephen Crane <sjc@immunant.com>
Mon, 11 Dec 2017 22:58:38 +0000 (14:58 -0800)
committerSriraman Tallam <tmsriram@google.com>
Mon, 11 Dec 2017 22:58:38 +0000 (14:58 -0800)
commitc4e648430f3c5c135310f87280d45dba581aaa7b
tree026ea986bfbb2b5856062f4507404f4f00d2d27c
parent4c5ae11b42433dbffc33fbde75c9e415594504d8
Add plugin API for processing plugin-added input files

Gold plugins may wish to further process an input file added by a plugin. For
example, the plugin may need to assign a unique segment for sections in a
plugin-generated input file. This patch adds a plugin callback that the linker
will call when reading symbols from a new input file added after the
all_symbols_read event (i.e. an input file added by a plugin).

2017-12-11  Stephen Crane  <sjc@immunant.com>

* plugin-api.h: Add new plugin hook to allow processing of input
files added by a plugin.
(ld_plugin_new_input_handler): New function hook type.
(ld_plugin_register_new_input): New interface.
(LDPT_REGISTER_NEW_INPUT_HOOK): New enum val.
(tv_register_new_input): New member.

* plugin.cc (Plugin::load): Include hooks for register_new_input
in transfer vector.
(Plugin::new_input): New function.
(register_new_input): New function.
(Plugin_manager::claim_file): Call Plugin::new_input if in
replacement phase.
* plugin.h (Plugin::set_new_input_handler): New function.
* testsuite/plugin_new_section_layout.c: New plugin to test
new_input plugin API.
* testsuite/plugin_final_layout.sh: Add new input test.
* testsuite/Makefile.am (plugin_layout_new_file): New test case.
* testsuite/Makefile.in: Regenerate.
gold/ChangeLog
gold/plugin.cc
gold/plugin.h
gold/testsuite/Makefile.am
gold/testsuite/Makefile.in
gold/testsuite/plugin_final_layout.sh
gold/testsuite/plugin_new_section_layout.c [new file with mode: 0644]
include/ChangeLog
include/plugin-api.h