Automatic date update in version.in
[platform/upstream/binutils.git] / gas / write.h
index fd21a09..0389005 100644 (file)
@@ -1,13 +1,11 @@
 /* write.h
-   Copyright 1987, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2000, 2001,
-   2002, 2003, 2005, 2006, 2007
-   Free Software Foundation, Inc.
+   Copyright (C) 1987-2014 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
    GAS is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2, or (at your option)
+   the Free Software Foundation; either version 3, or (at your option)
    any later version.
 
    GAS is distributed in the hope that it will be useful,
 #ifndef __write_h__
 #define __write_h__
 
-#ifndef TC_I960
-#ifdef hpux
-#define EXEC_MACHINE_TYPE HP9000S200_ID
-#endif
-#endif /* TC_I960 */
-
 /* This is the name of a fake symbol which will never appear in the
    assembler output.  S_IS_LOCAL detects it because of the \001.  */
 #ifndef FAKE_LABEL_NAME
@@ -70,8 +62,8 @@ struct fix
   /* The value is signed when checking for overflow.  */
   unsigned fx_signed : 1;
 
-  /* pc-relative offset adjust (only used by m68k and m68hc11) */
-  char fx_pcrel_adjust;
+  /* pc-relative offset adjust (only used by some CPU specific code) */
+  signed char fx_pcrel_adjust;
 
   /* How many bytes are involved? */
   unsigned char fx_size;
@@ -94,6 +86,9 @@ struct fix
   /* The value of dot when the fixup expression was parsed.  */
   addressT fx_dot_value;
 
+  /* The frag fx_dot_value is based on.  */
+  fragS *fx_dot_frag;
+
   /* Next fixS in linked list, or NULL.  */
   struct fix *fx_next;
 
@@ -126,6 +121,10 @@ struct fix
     const struct cgen_insn *insn;
     /* Target specific data, usually reloc number.  */
     int opinfo;
+    /* Which ifield this fixup applies to. */
+    struct cgen_maybe_multi_ifield * field;
+    /* is this field is the MSB field in a set? */
+    int msb_field_p;
   } fx_cgen;
 #endif
 
@@ -138,16 +137,38 @@ struct fix
 
 typedef struct fix fixS;
 
+struct reloc_list
+{
+  struct reloc_list *next;
+  union
+  {
+    struct
+    {
+      symbolS *offset_sym;
+      reloc_howto_type *howto;
+      symbolS *sym;
+      bfd_vma addend;
+    } a;
+    struct
+    {
+      asection *sec;
+      asymbol *s;
+      arelent r;
+    } b;
+  } u;
+  char *file;
+  unsigned int line;
+};
+
 extern int finalize_syms;
 extern symbolS *abs_section_sym;
 extern addressT dot_value;
-extern long string_byte_count;
-extern int section_alignment[];
+extern fragS *dot_frag;
+extern struct reloc_list* reloc_list;
 
 extern void append (char **charPP, char *fromP, unsigned long length);
 extern void record_alignment (segT seg, int align);
 extern int get_recorded_alignment (segT seg);
-extern void subsegs_finish (void);
 extern void write_object_file (void);
 extern long relax_frag (segT, fragS *, long);
 extern int relax_segment (struct frag *, segT, int);
@@ -156,6 +177,9 @@ extern void number_to_chars_bigendian (char *, valueT, int);
 extern fixS *fix_new
   (fragS * frag, int where, int size, symbolS * add_symbol,
    offsetT offset, int pcrel, bfd_reloc_code_real_type r_type);
+extern fixS *fix_at_start
+  (fragS * frag, int size, symbolS * add_symbol,
+   offsetT offset, int pcrel, bfd_reloc_code_real_type r_type);
 extern fixS *fix_new_exp
   (fragS * frag, int where, int size, expressionS *exp, int pcrel,
    bfd_reloc_code_real_type r_type);