2002-08-13 H.J. Lu <hjl@gnu.org>
[deliverable/binutils-gdb.git] / ld / ldlang.h
index 20895917ea7e286c6488f496e81ed8cb971219b5..cb4b6d332dc1faf208ecea664440107e8c22cb92 100644 (file)
@@ -32,7 +32,10 @@ typedef enum {
   lang_input_file_is_file_enum
 } lang_input_file_enum_type;
 
-typedef unsigned int fill_type;
+struct _fill_type {
+  size_t size;
+  unsigned char data[1];
+};
 
 typedef struct statement_list {
   union lang_statement_union *head;
@@ -125,13 +128,19 @@ typedef struct lang_output_section_statement_struct {
   struct memory_region_struct *region;
   struct memory_region_struct *lma_region;
   size_t block_value;
-  fill_type fill;
+  fill_type *fill;
 
   int subsection_alignment;    /* alignment of components */
   int section_alignment;       /* alignment of start of section */
 
   union etree_union *load_base;
 
+  /* If non-null, an expression to evaluate after setting the section's
+     size.  The expression is evaluated inside REGION (above) with '.'
+     set to the end of the section.  Used in the last overlay section
+     to move '.' past all the overlaid sections.  */
+  union etree_union *update_dot_tree;
+
   struct lang_output_section_phdr_list *phdrs;
 } lang_output_section_statement_type;
 
@@ -145,7 +154,7 @@ typedef struct {
 
 typedef struct {
   lang_statement_header_type header;
-  fill_type fill;
+  fill_type *fill;
   int size;
   asection *output_section;
 } lang_fill_statement_type;
@@ -275,7 +284,7 @@ typedef struct {
   bfd_vma output_offset;
   size_t size;
   asection *output_section;
-  fill_type fill;
+  fill_type *fill;
 } lang_padding_statement_type;
 
 /* A group statement collects a set of libraries together.  The
@@ -355,7 +364,7 @@ extern etree_type *base;
 extern lang_statement_list_type *stat_ptr;
 extern boolean delete_output_file_on_failure;
 
-extern const char *entry_symbol;
+extern struct bfd_sym_chain entry_symbol;
 extern const char *entry_section;
 extern boolean entry_from_cmdline;
 extern lang_statement_list_type file_chain;
@@ -385,13 +394,13 @@ extern void lang_add_target PARAMS ((const char *));
 extern void lang_add_wild
   PARAMS ((struct wildcard_spec *, struct wildcard_list *, boolean));
 extern void lang_add_map PARAMS ((const char *));
-extern void lang_add_fill PARAMS ((int));
+extern void lang_add_fill PARAMS ((fill_type *));
 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 *, struct lang_output_section_phdr_list *,
+  PARAMS ((fill_type *, 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 *,
@@ -407,7 +416,7 @@ extern void lang_reset_memory_regions PARAMS ((void));
 extern bfd_vma lang_do_assignments
   PARAMS ((lang_statement_union_type * s,
           lang_output_section_statement_type *output_section_statement,
-          fill_type fill,
+          fill_type *fill,
           bfd_vma dot));
 
 #define LANG_FOR_EACH_INPUT_STATEMENT(statement)               \
@@ -441,7 +450,7 @@ 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,
-          lang_statement_union_type **prev, fill_type fill,
+          lang_statement_union_type **prev, fill_type *fill,
           bfd_vma dot, boolean *relax));
 extern void lang_enter_group PARAMS ((void));
 extern void lang_leave_group PARAMS ((void));
@@ -453,13 +462,13 @@ extern void lang_new_phdr
   PARAMS ((const char *, etree_type *, boolean, boolean, etree_type *,
           etree_type *));
 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 PARAMS ((etree_type *));
 extern void lang_enter_overlay_section PARAMS ((const char *));
 extern void lang_leave_overlay_section
-  PARAMS ((bfd_vma, struct lang_output_section_phdr_list *));
+  PARAMS ((fill_type *, struct lang_output_section_phdr_list *));
 extern void lang_leave_overlay
-  PARAMS ((bfd_vma, const char *, struct lang_output_section_phdr_list *,
-           const char *));
+  PARAMS ((etree_type *, int, fill_type *, const char *,
+          struct lang_output_section_phdr_list *, const char *));
 
 extern struct bfd_elf_version_tree *lang_elf_version_info;
 
This page took 0.02578 seconds and 4 git commands to generate.