Remove partial implementation that was never completed. This was
[external/binutils.git] / gold / script-c.h
index 496e18b..4f19b63 100644 (file)
@@ -61,6 +61,21 @@ typedef Expression* Expression_ptr;
 typedef void* Expression_ptr;
 #endif
 
+/* A constraint for whether to use a particular output section
+   definition.  */
+
+enum Section_constraint
+{
+  /* No constraint.  */
+  CONSTRAINT_NONE,
+  /* Only if all input sections are read-only.  */
+  CONSTRAINT_ONLY_IF_RO,
+  /* Only if at least input section is writable.  */
+  CONSTRAINT_ONLY_IF_RW,
+  /* Special constraint.  */
+  CONSTRAINT_SPECIAL
+};
+
 /* The information we store for an output section header in the bison
    parser.  */
 
@@ -75,15 +90,8 @@ struct Parser_output_section_header
   /* The input section alignment, from the SUBALIGN specifier.  This
      may be NULL.  */
   Expression_ptr subalign;
-};
-
-/* The information we store for an output section trailer in the bison
-   parser.  */
-
-struct Parser_output_section_trailer
-{
-  /* The fill value.  This may be NULL.  */
-  Expression_ptr fill;
+  /* A constraint on this output section.  */
+  enum Section_constraint constraint;
 };
 
 /* We keep vectors of strings.  In order to manage this in both C and
@@ -97,6 +105,18 @@ typedef String_list* String_list_ptr;
 typedef void* String_list_ptr;
 #endif
 
+/* The information we store for an output section trailer in the bison
+   parser.  */
+
+struct Parser_output_section_trailer
+{
+  /* The fill value.  This may be NULL.  */
+  Expression_ptr fill;
+  /* The program segments this section should go into.  This may be
+     NULL.  */
+  String_list_ptr phdrs;
+};
+
 /* The different sorts we can find in a linker script.  */
 
 enum Sort_wildcard
@@ -148,6 +168,22 @@ struct Input_section_spec
   struct Wildcard_sections input_sections;
 };
 
+/* Information for a program header.  */
+
+struct Phdr_info
+{
+  /* A boolean value: whether to include the file header.  */
+  int includes_filehdr;
+  /* A boolean value: whether to include the program headers.  */
+  int includes_phdrs;
+  /* A boolean value: whether the flags field is valid.  */
+  int is_flags_valid;
+  /* The value to use for the flags.  */
+  unsigned int flags;
+  /* The load address.  */
+  Expression_ptr load_address;
+};
+
 struct Version_dependency_list;
 struct Version_expression_list;
 struct Version_tree;
@@ -199,11 +235,21 @@ script_end_as_needed(void* closure);
 extern void
 script_set_entry(void* closure, const char*, size_t);
 
+/* Called by the bison parser to set whether to define common symbols.  */
+
+extern void
+script_set_common_allocation(void* closure, int);
+
 /* Called by the bison parser to parse an OPTION.  */
 
 extern void
 script_parse_option(void* closure, const char*, size_t);
 
+/* Called by the bison parser to handle SEARCH_DIR.  */
+
+extern void
+script_add_search_dir(void* closure, const char*, size_t);
+
 /* Called by the bison parser to push the lexer into expression
    mode.  */
 
@@ -307,6 +353,17 @@ script_string_list_push_back(String_list_ptr, const char*, size_t);
 extern String_list_ptr
 script_string_list_append(String_list_ptr, String_list_ptr);
 
+/* Define a new program header.  */
+
+extern void
+script_add_phdr(void* closure, const char* name, size_t namelen,
+               unsigned int type, const struct Phdr_info*);
+
+/* Convert a program header string to a type.  */
+
+extern unsigned int
+script_phdr_string_to_type(void* closure, const char*, size_t);
+
 /* Called by the bison parser for expressions.  */
 
 extern Expression_ptr