* dw2gencfi.c (TC_DWARF2_EMIT_OFFSET): Provide default.
[binutils-gdb.git] / gas / frags.h
index 82bf7c8ef09695840fbd1b215bbce3bc3c13773d..a14e3a25541d3069ba85175983b36b07520d11f0 100644 (file)
@@ -1,12 +1,12 @@
 /* frags.h - Header file for the frag concept.
 /* frags.h - Header file for the frag concept.
-   Copyright 1987, 1992, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001
-   Free Software Foundation, Inc.
+   Copyright 1987, 1992, 1993, 1994, 1995, 1997, 1998, 1999, 2000, 2001,
+   2002, 2003, 2004, 2005, 2006, 2007 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
 
    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,
    any later version.
 
    GAS is distributed in the hope that it will be useful,
 
    You should have received a copy of the GNU General Public License
    along with GAS; see the file COPYING.  If not, write to the Free
 
    You should have received a copy of the GNU General Public License
    along with GAS; see the file COPYING.  If not, write to the Free
-   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA.  */
+   Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
+   02110-1301, USA.  */
 
 #ifndef FRAGS_H
 #define FRAGS_H
 
 
 #ifndef FRAGS_H
 #define FRAGS_H
 
-#ifdef ANSI_PROTOTYPES
 struct obstack;
 struct obstack;
-#endif
 
 /* A code fragment (frag) is some known number of chars, followed by some
    unknown number of chars. Typically the unknown number of chars is an
 
 /* A code fragment (frag) is some known number of chars, followed by some
    unknown number of chars. Typically the unknown number of chars is an
@@ -74,6 +72,11 @@ struct frag {
      fr_address has been adjusted.  */
   unsigned int relax_marker:1;
 
      fr_address has been adjusted.  */
   unsigned int relax_marker:1;
 
+  /* Used to ensure that all insns are emitted on proper address
+     boundaries.  */
+  unsigned int has_code:1;
+  unsigned int insn_addr:6;
+
   /* What state is my tail in? */
   relax_stateT fr_type;
   relax_substateT fr_subtype;
   /* What state is my tail in? */
   relax_stateT fr_type;
   relax_substateT fr_subtype;
@@ -106,58 +109,45 @@ struct frag {
    however, included in frchain_now.  The fr_fix field is bogus;
    instead, use frag_now_fix ().  */
 COMMON fragS *frag_now;
    however, included in frchain_now.  The fr_fix field is bogus;
    instead, use frag_now_fix ().  */
 COMMON fragS *frag_now;
-extern addressT frag_now_fix PARAMS ((void));
-extern addressT frag_now_fix_octets PARAMS ((void));
+extern addressT frag_now_fix (void);
+extern addressT frag_now_fix_octets (void);
 
 /* For foreign-segment symbol fixups.  */
 COMMON fragS zero_address_frag;
 /* For local common (N_BSS segment) fixups.  */
 COMMON fragS bss_address_frag;
 
 
 /* For foreign-segment symbol fixups.  */
 COMMON fragS zero_address_frag;
 /* For local common (N_BSS segment) fixups.  */
 COMMON fragS bss_address_frag;
 
-#if 0
-/* A macro to speed up appending exactly 1 char to current frag.  */
-/* JF changed < 1 to <= 1 to avoid a race condition.  */
-#define FRAG_APPEND_1_CHAR(datum)                      \
-{                                                      \
-  if (obstack_room (&frags) <= 1)                      \
-    {                                                  \
-      frag_wane (frag_now);                            \
-      frag_new (0);                                    \
-    }                                                  \
-  obstack_1grow (&frags, datum);                       \
-}
-#else
-extern void frag_append_1_char PARAMS ((int));
+extern void frag_append_1_char (int);
 #define FRAG_APPEND_1_CHAR(X) frag_append_1_char (X)
 #define FRAG_APPEND_1_CHAR(X) frag_append_1_char (X)
-#endif
 
 
-void frag_init PARAMS ((void));
-fragS *frag_alloc PARAMS ((struct obstack *));
-void frag_grow PARAMS ((unsigned int nchars));
-char *frag_more PARAMS ((int nchars));
-void frag_align PARAMS ((int alignment, int fill_character, int max));
-void frag_align_pattern PARAMS ((int alignment,
-                                const char *fill_pattern,
-                                int n_fill,
-                                int max));
-void frag_align_code PARAMS ((int alignment, int max));
-void frag_new PARAMS ((int old_frags_var_max_size));
-void frag_wane PARAMS ((fragS * fragP));
-
-char *frag_variant PARAMS ((relax_stateT type,
-                           int max_chars,
-                           int var,
-                           relax_substateT subtype,
-                           symbolS * symbol,
-                           offsetT offset,
-                           char *opcode));
-
-char *frag_var PARAMS ((relax_stateT type,
-                       int max_chars,
-                       int var,
-                       relax_substateT subtype,
-                       symbolS * symbol,
-                       offsetT offset,
-                       char *opcode));
+void frag_init (void);
+fragS *frag_alloc (struct obstack *);
+void frag_grow (unsigned int nchars);
+char *frag_more (int nchars);
+void frag_align (int alignment, int fill_character, int max);
+void frag_align_pattern (int alignment, const char *fill_pattern,
+                        int n_fill, int max);
+void frag_align_code (int alignment, int max);
+void frag_new (int old_frags_var_max_size);
+void frag_wane (fragS * fragP);
+int frag_room (void);
+
+char *frag_variant (relax_stateT type,
+                   int max_chars,
+                   int var,
+                   relax_substateT subtype,
+                   symbolS * symbol,
+                   offsetT offset,
+                   char *opcode);
+
+char *frag_var (relax_stateT type,
+               int max_chars,
+               int var,
+               relax_substateT subtype,
+               symbolS * symbol,
+               offsetT offset,
+               char *opcode);
+
+bfd_boolean frag_offset_fixed_p (const fragS *, const fragS *, bfd_vma *);
 
 #endif /* FRAGS_H */
 
 #endif /* FRAGS_H */