* som.c (struct fixup_format): Constify `format'.
[deliverable/binutils-gdb.git] / ld / ldlang.h
index 3d6a6f3b886a6cc4f8cec9ce8d00c7396ad777d3..1a428c61e875fa75862100343ce2f2c32be42e4a 100644 (file)
@@ -1,5 +1,6 @@
 /* ldlang.h - linker command language support
-   Copyright 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+   Copyright 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000
+   Free Software Foundation, Inc.
    
    This file is part of GLD, the Gnu Linker.
    
@@ -14,8 +15,9 @@
    GNU General Public License for more details.
    
    You should have received a copy of the GNU General Public License
-   along with GLD; see the file COPYING.  If not, write to
-   the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   along with GLD; see the file COPYING.  If not, write to the Free
+   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+   02111-1307, USA.  */
 
 #ifndef LDLANG_H
 #define LDLANG_H
@@ -46,7 +48,8 @@ typedef struct memory_region_struct
   bfd_size_type length;
   bfd_vma current;
   bfd_size_type old_length;
-  int flags;
+  flagword flags;
+  flagword not_flags;
   boolean had_full_message;
 } lang_memory_region_type ;
 
@@ -96,6 +99,17 @@ typedef struct lang_output_statement_struct
   const char *name;
 } lang_output_statement_type;
 
+/* Section types specified in a linker script.  */
+
+enum section_type
+{
+  normal_section,
+  dsect_section,
+  copy_section,
+  noload_section,
+  info_section,
+  overlay_section
+};
 
 /* This structure holds a list of program headers describing segments
    in which this section should be placed.  */
@@ -119,9 +133,10 @@ typedef struct lang_output_section_statement_struct
   boolean processed;
     
   asection *bfd_section;
-  int flags;                   /* Or together of all input sections */
-  int loadable;                        /* set from NOLOAD flag in script */
+  flagword flags;              /* Or together of all input sections */
+  enum section_type sectype;
   struct memory_region_struct *region;
+  struct memory_region_struct *lma_region;
   size_t block_value;
   fill_type fill;
 
@@ -243,9 +258,6 @@ typedef struct lang_input_statement_struct
   /*    unsigned int globals_in_this_file;*/
   const char *target;
   boolean real;
-  asection *common_section;
-  asection *common_output_section;
-  boolean complained;
 } lang_input_statement_type;
 
 typedef struct
@@ -268,7 +280,11 @@ typedef struct lang_wild_statement_struct
 {
   lang_statement_header_type header;
   const char *section_name;
+  boolean sections_sorted;
   const char *filename;
+  boolean filenames_sorted;
+  boolean keep_sections;
+  struct name_list *exclude_filename_list;
   lang_statement_list_type children;
 } lang_wild_statement_type;
 
@@ -335,7 +351,27 @@ struct lang_phdr
   etree_type *flags;
 };
 
+/* This structure is used to hold a list of sections which may not
+   cross reference each other.  */
+
+struct lang_nocrossref
+{
+  struct lang_nocrossref *next;
+  const char *name;
+};
+
+/* The list of nocrossref lists.  */
+
+struct lang_nocrossrefs
+{
+  struct lang_nocrossrefs *next;
+  struct lang_nocrossref *list;
+};
+
+extern struct lang_nocrossrefs *nocrossref_list;
+
 extern lang_output_section_statement_type *abs_output_section;
+extern lang_statement_list_type lang_output_section_statement;
 extern boolean lang_has_input_file;
 extern etree_type *base;
 extern lang_statement_list_type *stat_ptr;
@@ -343,17 +379,21 @@ extern boolean delete_output_file_on_failure;
 
 extern const char *entry_symbol;
 extern boolean entry_from_cmdline;
+extern lang_statement_list_type file_chain;
 
 extern void lang_init PARAMS ((void));
 extern struct memory_region_struct *lang_memory_region_lookup
   PARAMS ((const char *const));
+extern struct memory_region_struct *lang_memory_region_default
+  PARAMS ((asection *));
 extern void lang_map PARAMS ((void));
-extern void lang_set_flags PARAMS ((int *, const char *));
+extern void lang_set_flags PARAMS ((lang_memory_region_type *, const char *,
+                                   int));
 extern void lang_add_output PARAMS ((const char *, int from_script));
-extern void lang_enter_output_section_statement
+extern lang_output_section_statement_type *lang_enter_output_section_statement
   PARAMS ((const char *output_section_statement_name,
           etree_type * address_exp,
-          int flags,
+          enum section_type sectype,
           bfd_vma block_value,
           etree_type *align,
           etree_type *subalign,
@@ -363,15 +403,17 @@ extern void lang_process PARAMS ((void));
 extern void lang_section_start PARAMS ((const char *, union etree_union *));
 extern void lang_add_entry PARAMS ((const char *, boolean));
 extern void lang_add_target PARAMS ((const char *));
-extern void lang_add_wild PARAMS ((const char *const , const char *const));
+extern void lang_add_wild
+  PARAMS ((const char *, boolean, const char *, boolean, boolean, name_list *));
 extern void lang_add_map PARAMS ((const char *));
 extern void lang_add_fill PARAMS ((int));
-extern void lang_add_assignment PARAMS ((union etree_union *));
+extern lang_assignment_statement_type * lang_add_assignment PARAMS ((union etree_union *));
 extern void lang_add_attribute PARAMS ((enum statement_enum));
 extern void lang_startup PARAMS ((const char *));
 extern void lang_float PARAMS ((enum bfd_boolean));
-extern void lang_leave_output_section_statement PARAMS ((bfd_vma,
-                                                        const char *));
+extern void lang_leave_output_section_statement
+  PARAMS ((bfd_vma, const char *, struct lang_output_section_phdr_list *,
+           const char *));
 extern void lang_abs_symbol_at_end_of PARAMS ((const char *, const char *));
 extern void lang_abs_symbol_at_beginning_of PARAMS ((const char *,
                                                     const char *));
@@ -389,7 +431,6 @@ extern bfd_vma lang_do_assignments
           bfd_vma dot));
 
 #define LANG_FOR_EACH_INPUT_STATEMENT(statement)               \
-  extern lang_statement_list_type file_chain;                  \
   lang_input_statement_type *statement;                                \
   for (statement = (lang_input_statement_type *)file_chain.head;\
        statement != (lang_input_statement_type *)NULL;         \
@@ -416,6 +457,7 @@ extern void lang_add_reloc
 extern void lang_for_each_statement
   PARAMS ((void (*func) (lang_statement_union_type *)));
 extern PTR stat_alloc PARAMS ((size_t size));
+extern void dprint_statement PARAMS ((lang_statement_union_type *, int));
 extern bfd_vma lang_size_sections
   PARAMS ((lang_statement_union_type *s,
           lang_output_section_statement_type *output_section_statement,
@@ -430,6 +472,25 @@ extern void wild_doit
 extern void lang_new_phdr
   PARAMS ((const char *, etree_type *, boolean, boolean, etree_type *,
           etree_type *));
-extern void lang_section_in_phdr PARAMS ((const char *));
+extern void lang_add_nocrossref PARAMS ((struct lang_nocrossref *));
+extern void lang_enter_overlay PARAMS ((etree_type *, etree_type *, int));
+extern void lang_enter_overlay_section PARAMS ((const char *));
+extern void lang_leave_overlay_section
+  PARAMS ((bfd_vma, struct lang_output_section_phdr_list *));
+extern void lang_leave_overlay
+  PARAMS ((bfd_vma, const char *, struct lang_output_section_phdr_list *,
+           const char *));
+
+extern struct bfd_elf_version_tree *lang_elf_version_info;
+
+extern struct bfd_elf_version_expr *lang_new_vers_regex
+  PARAMS ((struct bfd_elf_version_expr *, const char *, const char *));
+extern struct bfd_elf_version_tree *lang_new_vers_node
+  PARAMS ((struct bfd_elf_version_expr *, struct bfd_elf_version_expr *));
+extern struct bfd_elf_version_deps *lang_add_vers_depend
+  PARAMS ((struct bfd_elf_version_deps *, const char *));
+extern void lang_register_vers_node
+  PARAMS ((const char *, struct bfd_elf_version_tree *,
+          struct bfd_elf_version_deps *));
 
 #endif
This page took 0.029707 seconds and 4 git commands to generate.