Sync plugin-api.h with gold patch : http://sourceware.org/ml/binutils/2012-08/msg0044...
authorSriraman Tallam <tmsriram@google.com>
Fri, 24 Aug 2012 19:07:28 +0000 (19:07 +0000)
committerSriraman Tallam <tmsriram@gcc.gnu.org>
Fri, 24 Aug 2012 19:07:28 +0000 (19:07 +0000)
* plugin-api.h (ld_plugin_allow_unique_segment_for_sections):
New interface.
(ld_plugin_unique_segment_for_sections): New interface.
(LDPT_ALLOW_UNIQUE_SEGMENT_FOR_SECTIONS): New enum val.
(LDPT_UNIQUE_SEGMENT_FOR_SECTIONS): New enum val.
(tv_allow_unique_segment_for_sections): New member.
(tv_unique_segment_for_sections): New member.

From-SVN: r190654

include/ChangeLog
include/plugin-api.h

index 57f812de6c3d06add9be2d5de0e38826e4786a62..1de3dca84023030909c3a9900ef4fddce0aa7d4b 100644 (file)
@@ -1,3 +1,13 @@
+2012-08-24  Sriraman Tallam  <tmsriram@google.com>
+
+       * plugin-api.h (ld_plugin_allow_unique_segment_for_sections):
+       New interface.
+       (ld_plugin_unique_segment_for_sections): New interface.
+       (LDPT_ALLOW_UNIQUE_SEGMENT_FOR_SECTIONS): New enum val.
+       (LDPT_UNIQUE_SEGMENT_FOR_SECTIONS): New enum val.
+       (tv_allow_unique_segment_for_sections): New member.
+       (tv_unique_segment_for_sections): New member.
+
 2012-07-13  Doug Evans  <dje@google.com>
 
        * filenames.h: #include "hashtab.h".
index 3220142ddaa7f2056db24df9870068cc23e20d69..af60419a96af0707a8ebb324b45597e52a2e0016 100644 (file)
@@ -318,6 +318,33 @@ typedef
 enum ld_plugin_status
 (*ld_plugin_allow_section_ordering) (void);
 
+/* The linker's interface for specifying that a subset of sections is
+   to be mapped to a unique segment.  If the plugin wants to call
+   unique_segment_for_sections, it must call this function from a
+   claim_file_handler or when it is first loaded.  */
+
+typedef
+enum ld_plugin_status
+(*ld_plugin_allow_unique_segment_for_sections) (void);
+
+/* The linker's interface for specifying that a specific set of sections
+   must be mapped to a unique segment.  ELF segments do not have names
+   and the NAME is used as the name of the newly created output section
+   that is then placed in the unique PT_LOAD segment.  FLAGS is used to
+   specify if any additional segment flags need to be set.  For instance,
+   a specific segment flag can be set to identify this segment.  Unsetting
+   segment flags that would be set by default is not possible.  The
+   parameter SEGMENT_ALIGNMENT when non-zero will override the default.  */
+
+typedef
+enum ld_plugin_status
+(*ld_plugin_unique_segment_for_sections) (
+    const char* segment_name,
+    uint64_t segment_flags,
+    uint64_t segment_alignment,
+    const struct ld_plugin_section * section_list,
+    unsigned int num_sections);
+
 enum ld_plugin_level
 {
   LDPL_INFO,
@@ -355,7 +382,9 @@ enum ld_plugin_tag
   LDPT_GET_INPUT_SECTION_CONTENTS,
   LDPT_UPDATE_SECTION_ORDER,
   LDPT_ALLOW_SECTION_ORDERING,
-  LDPT_GET_SYMBOLS_V2
+  LDPT_GET_SYMBOLS_V2,
+  LDPT_ALLOW_UNIQUE_SEGMENT_FOR_SECTIONS,
+  LDPT_UNIQUE_SEGMENT_FOR_SECTIONS
 };
 
 /* The plugin transfer vector.  */
@@ -385,6 +414,8 @@ struct ld_plugin_tv
     ld_plugin_get_input_section_contents tv_get_input_section_contents;
     ld_plugin_update_section_order tv_update_section_order;
     ld_plugin_allow_section_ordering tv_allow_section_ordering;
+    ld_plugin_allow_unique_segment_for_sections tv_allow_unique_segment_for_sections; 
+    ld_plugin_unique_segment_for_sections tv_unique_segment_for_sections;
   } tv_u;
 };