diff options
author | Stephen Crane <sjc@immunant.com> | 2017-11-10 22:10:05 +0000 |
---|---|---|
committer | Sriraman Tallam <tmsriram@gcc.gnu.org> | 2017-11-10 22:10:05 +0000 |
commit | f382ac6d527478171d880d7c77ecb816fe114661 (patch) | |
tree | 0f14f7c8fb9beb2854010738766619a8c1acbbbc /include | |
parent | 16207ddd2ebdc9379a8ff8b274e4d8bb35d485f5 (diff) | |
download | gcc-f382ac6d527478171d880d7c77ecb816fe114661.zip gcc-f382ac6d527478171d880d7c77ecb816fe114661.tar.gz gcc-f382ac6d527478171d880d7c77ecb816fe114661.tar.bz2 |
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-11-10 Stephen Crane <sjc@immunant.com>
* plugin-api.h: Add plugin API for processing plugin-added
input files.
From-SVN: r254640
Diffstat (limited to 'include')
-rw-r--r-- | include/ChangeLog | 5 | ||||
-rw-r--r-- | include/plugin-api.h | 18 |
2 files changed, 22 insertions, 1 deletions
diff --git a/include/ChangeLog b/include/ChangeLog index 8ccc57ae..9cae3fb 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2017-11-10 Stephen Crane <sjc@immunant.com> + + * plugin-api.h: Add plugin API for processing plugin-added + input files. + 2017-10-23 David Malcolm <dmalcolm@redhat.com> * unique-ptr.h: Make include of <memory> conditional on C++11 or diff --git a/include/plugin-api.h b/include/plugin-api.h index 3a3e8b4..f081f85 100644 --- a/include/plugin-api.h +++ b/include/plugin-api.h @@ -365,6 +365,20 @@ enum ld_plugin_status (*ld_plugin_get_input_section_size) (const struct ld_plugin_section section, uint64_t *secsize); +typedef +enum ld_plugin_status +(*ld_plugin_new_input_handler) (const struct ld_plugin_input_file *file); + +/* The linker's interface for registering the "new_input" handler. This handler + will be notified when a new input file has been added after the + all_symbols_read event, allowing the plugin to, for example, set a unique + segment for sections in plugin-generated input files. */ + +typedef +enum ld_plugin_status +(*ld_plugin_register_new_input) (ld_plugin_new_input_handler handler); + + enum ld_plugin_level { LDPL_INFO, @@ -407,7 +421,8 @@ enum ld_plugin_tag LDPT_UNIQUE_SEGMENT_FOR_SECTIONS = 27, LDPT_GET_SYMBOLS_V3 = 28, LDPT_GET_INPUT_SECTION_ALIGNMENT = 29, - LDPT_GET_INPUT_SECTION_SIZE = 30 + LDPT_GET_INPUT_SECTION_SIZE = 30, + LDPT_REGISTER_NEW_INPUT_HOOK = 31 }; /* The plugin transfer vector. */ @@ -441,6 +456,7 @@ struct ld_plugin_tv ld_plugin_unique_segment_for_sections tv_unique_segment_for_sections; ld_plugin_get_input_section_alignment tv_get_input_section_alignment; ld_plugin_get_input_section_size tv_get_input_section_size; + ld_plugin_register_new_input tv_register_new_input; } tv_u; }; |