* elf.c (prep_headers): Use new EM_SPARCV9 symbol.
[deliverable/binutils-gdb.git] / ld / ldlang.h
index 5e050170627e833360b024fac862e3916f58d6b9..ee5b777c7b73306815cafc8c499c8825cbb8ac8a 100644 (file)
@@ -1,5 +1,5 @@
 /* ldlang.h - linker command language support
-   Copyright 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+   Copyright 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
    
    This file is part of GLD, the Gnu Linker.
    
@@ -96,6 +96,27 @@ 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.  */
+
+struct lang_output_section_phdr_list
+{
+  struct lang_output_section_phdr_list *next;
+  const char *name;
+  boolean used;
+};
 
 typedef struct lang_output_section_statement_struct 
 {
@@ -110,7 +131,7 @@ typedef struct lang_output_section_statement_struct
     
   asection *bfd_section;
   int flags;                   /* Or together of all input sections */
-  int loadable;                        /* set from NOLOAD flag in script */
+  enum section_type sectype;
   struct memory_region_struct *region;
   size_t block_value;
   fill_type fill;
@@ -118,7 +139,9 @@ typedef struct lang_output_section_statement_struct
   int subsection_alignment;  /* alignment of components */
   int section_alignment;  /* alignment of start of section */
 
-  union etree_union *load_base;  
+  union etree_union *load_base;
+
+  struct lang_output_section_phdr_list *phdrs;
 } lang_output_section_statement_type;
 
 
@@ -219,16 +242,18 @@ typedef struct lang_input_statement_struct
      Also default text_start to after this file's bss. */
     
   boolean just_syms_flag;
-    
+
+  /* Whether to search for this entry as a dynamic archive.  */
+  boolean dynamic;
+
+  /* Whether to include the entire contents of an archive.  */
+  boolean whole_archive;
+
   boolean loaded;
     
-    
   /*    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
@@ -304,12 +329,48 @@ typedef union lang_statement_union
   lang_group_statement_type group_statement;
 } lang_statement_union_type;
 
+/* This structure holds information about a program header, from the
+   PHDRS command in the linker script.  */
+
+struct lang_phdr
+{
+  struct lang_phdr *next;
+  const char *name;
+  unsigned long type;
+  boolean filehdr;
+  boolean phdrs;
+  etree_type *at;
+  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 boolean lang_has_input_file;
 extern etree_type *base;
 extern lang_statement_list_type *stat_ptr;
 extern boolean delete_output_file_on_failure;
 
+extern const char *entry_symbol;
+extern boolean entry_from_cmdline;
+
 extern void lang_init PARAMS ((void));
 extern struct memory_region_struct *lang_memory_region_lookup
   PARAMS ((const char *const));
@@ -319,7 +380,7 @@ extern void lang_add_output PARAMS ((const char *, int from_script));
 extern void 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,
@@ -327,7 +388,7 @@ extern void lang_enter_output_section_statement
 extern void lang_final PARAMS ((void));
 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 *, int));
+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_map PARAMS ((const char *));
@@ -393,5 +454,10 @@ extern void wild_doit
   PARAMS ((lang_statement_list_type *ptr, asection *section,
           lang_output_section_statement_type *output,
           lang_input_statement_type *file));
+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 *));
 
 #endif
This page took 0.039323 seconds and 4 git commands to generate.