[ARC] Improve printing of pc-relative instructions.
[deliverable/binutils-gdb.git] / ld / ldexp.h
index 2c726e72de5c4c4d87e3741894a61ab76acdfb02..5ff0fa0a1fc6105fd0acacce62ecf82d968b3ec9 100644 (file)
@@ -1,6 +1,5 @@
 /* ldexp.h -
-   Copyright 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2000, 2001, 2002,
-   2003, 2004, 2005, 2007, 2011, 2012 Free Software Foundation, Inc.
+   Copyright (C) 1991-2017 Free Software Foundation, Inc.
 
    This file is part of the GNU Binutils.
 
@@ -116,29 +115,48 @@ union lang_statement_union;
 enum phase_enum {
   /* We step through the first four states here as we see the
      associated linker script tokens.  */
-  exp_dataseg_none,
-  exp_dataseg_align_seen,
-  exp_dataseg_relro_seen,
-  exp_dataseg_end_seen,
+  exp_seg_none,
+  exp_seg_align_seen,
+  exp_seg_relro_seen,
+  exp_seg_end_seen,
   /* The last three states are final, and affect the value returned
-     by DATA_SEGMENT_ALIGN.  */
-  exp_dataseg_relro_adjust,
-  exp_dataseg_adjust,
-  exp_dataseg_done
+     by XXX_SEGMENT_ALIGN.  */
+  exp_seg_relro_adjust,
+  exp_seg_adjust,
+  exp_seg_done
 };
 
 enum relro_enum {
-  exp_dataseg_relro_none,
-  exp_dataseg_relro_start,
-  exp_dataseg_relro_end,
+  exp_seg_relro_none,
+  exp_seg_relro_start,
+  exp_seg_relro_end,
 };
 
+typedef struct {
+  enum phase_enum phase;
+
+  bfd_vma base, relro_offset, relro_end, end, pagesize, maxpagesize;
+
+  enum relro_enum relro;
+
+  union lang_statement_union *relro_start_stat;
+  union lang_statement_union *relro_end_stat;
+} seg_align_type;
+
 struct ldexp_control {
   /* Modify expression evaluation depending on this.  */
   lang_phase_type phase;
 
   /* Principally used for diagnostics.  */
   bfd_boolean assigning_to_dot;
+
+  /* Set if the current expression used "dot", SEGMENT_START or
+     ORIGIN, but not ABSOLUTE or combined symbols in a way that forces
+     an absolute result.  Used in tracking symbols assigned from dot
+     outside of output section statements, in order to later convert
+     them from absolute.  */
+  bfd_boolean rel_from_abs;
+
   /* If evaluating an assignment, the destination.  Cleared if an
      etree_name NAME matches this, to signal a self-assignment.
      Note that an etree_name DEFINED does not clear this field, nor
@@ -154,16 +172,7 @@ struct ldexp_control {
   asection *section;
 
   /* State machine and results for DATASEG.  */
-  struct {
-    enum phase_enum phase;
-
-    bfd_vma base, min_base, relro_end, end, pagesize, maxpagesize;
-
-    enum relro_enum relro;
-
-    union lang_statement_union *relro_start_stat;
-    union lang_statement_union *relro_end_stat;
-  } dataseg;
+  seg_align_type dataseg;
 };
 
 extern struct ldexp_control expld;
@@ -222,5 +231,8 @@ fill_type *exp_get_fill
   (etree_type *, fill_type *, char *);
 bfd_vma exp_get_abs_int
   (etree_type *, int, char *);
+void ldexp_init (void);
+void ldexp_finalize_syms (void);
+void ldexp_finish (void);
 
 #endif
This page took 0.024013 seconds and 4 git commands to generate.