aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/ChangeLog9
-rw-r--r--include/plugin-api.h18
2 files changed, 26 insertions, 1 deletions
diff --git a/include/ChangeLog b/include/ChangeLog
index ef1cfe0..8914e26 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,12 @@
+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.
+
2017-12-01 Peter Bergner <bergner@vnet.ibm.com>
* opcode/ppc.h (PPC_INT_FMT): Define.
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;
};