REGISTER_TYPE is obsolete.
[deliverable/binutils-gdb.git] / gas / as.h
index b6992c8450871da2113b2f5998464f8fffa5d53a..533552673171b99f620742c590d1f1dce42e5d1e 100644 (file)
--- a/gas/as.h
+++ b/gas/as.h
@@ -17,6 +17,7 @@
    along with GAS; see the file COPYING.  If not, write to
    the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
+#ifndef GAS
 #define GAS 1
 /*
  * I think this stuff is largely out of date.  xoxorich.
 
 /* These #defines are for parameters of entire assembler. */
 
-#define DEBUG                  /* temporary */
 /* These #includes are for type definitions etc. */
 
+#include "config.h"
+
 #include <stdio.h>
 #ifdef DEBUG
 #undef NDEBUG
 #endif
 #endif /* ! __STDC__ */
 
+#if !defined (__GNUC__) && !defined (inline)
+#define inline
+#endif
+
+#ifndef FOPEN_WB
+#include "fopen-same.h"
+#endif
+
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free xfree
 
@@ -84,8 +94,8 @@
 
 #define BAD_CASE(val) \
 { \
-      as_fatal("Case value %d unexpected at line %d of file \"%s\"\n", \
-              val, __LINE__, __FILE__); \
+      as_fatal("Case value %ld unexpected at line %d of file \"%s\"\n", \
+              (long) val, __LINE__, __FILE__); \
           }
 \f
 
@@ -140,35 +150,6 @@ typedef addressT valueT;
 /* subsegs.c     Sub-segments. Also, segment(=expression type)s.*/
 
 #ifndef BFD_ASSEMBLER
-/*
- * This table describes the use of segments as EXPRESSION types.
- *
- *     X_seg   X_add_symbol  X_subtract_symbol X_add_number
- * SEG_ABSENT                                          no (legal) expression
- * SEG_PASS1                                           no (defined) "
- * SEG_BIG                                     *       > 32 bits const.
- * SEG_ABSOLUTE                                        0
- * SEG_DATA            *                       0
- * SEG_TEXT            *                       0
- * SEG_BSS             *                       0
- * SEG_UNKNOWN         *                       0
- * SEG_DIFFERENCE      0               *       0
- * SEG_REGISTER                                        *
- *
- * The blank fields MUST be 0, and are nugatory.
- * The '0' fields MAY be 0. The '*' fields MAY NOT be 0.
- *
- * SEG_BIG: X_add_number is < 0 if the result is in
- *     generic_floating_point_number.  The value is -'c' where c is the
- *     character that introduced the constant.  e.g. "0f6.9" will have  -'f'
- *     as a X_add_number value.
- *     X_add_number > 0 is a count of how many littlenums it took to
- *     represent a bignum.
- * SEG_DIFFERENCE:
- * If segments of both symbols are known, they are the same segment.
- * X_add_symbol != X_sub_symbol (then we just cancel them, => SEG_ABSOLUTE).
- */
-
 
 #ifdef MANY_SEGMENTS
 #include "bfd.h"
@@ -189,13 +170,10 @@ typedef enum _segT
     SEG_ABSOLUTE = 0,
     SEG_LIST,
     SEG_UNKNOWN,
-    SEG_ABSENT,                        /* Mythical Segment (absent): NO expression seen. */
-    SEG_PASS1,                 /* Mythical Segment: Need another pass. */
     SEG_GOOF,                  /* Only happens if AS has a logic error. */
     /* Invented so we don't crash printing */
     /* error message involving weird segment. */
-    SEG_BIG,                   /* Bigger than 32 bits constant. */
-    SEG_DIFFERENCE,            /* Mythical Segment: absolute difference. */
+    SEG_EXPR,                  /* Intermediate expression values. */
     SEG_DEBUG,                 /* Debug segment */
     SEG_NTV,                   /* Transfert vector preload segment */
     SEG_PTV,                   /* Transfert vector postload segment */
@@ -207,11 +185,8 @@ typedef enum _segT
 typedef asection *segT;
 #define SEG_NORMAL(SEG)                ((SEG) != absolute_section      \
                                 && (SEG) != undefined_section  \
-                                && (SEG) != big_section        \
                                 && (SEG) != reg_section        \
-                                && (SEG) != pass1_section      \
-                                && (SEG) != diff_section       \
-                                && (SEG) != absent_section)
+                                && (SEG) != expr_section)
 #endif
 typedef int subsegT;
 
@@ -233,18 +208,14 @@ extern int section_alignment[];
 #endif
 
 #ifdef BFD_ASSEMBLER
-extern segT big_section, reg_section, pass1_section;
-extern segT diff_section, absent_section;
+extern segT reg_section, expr_section;
 /* Shouldn't these be eliminated someday?  */
 extern segT text_section, data_section, bss_section;
 #define absolute_section       (&bfd_abs_section)
 #define undefined_section      (&bfd_und_section)
 #else
-#define big_section            SEG_BIG
 #define reg_section            SEG_REGISTER
-#define pass1_section          SEG_PASS1
-#define diff_section           SEG_DIFFERENCE
-#define absent_section         SEG_ABSENT
+#define expr_section           SEG_EXPR
 #define text_section           SEG_TEXT
 #define data_section           SEG_DATA
 #define bss_section            SEG_BSS
@@ -261,7 +232,7 @@ typedef enum _relax_state
        constant length frag. */
     rs_fill = 1,
 
-    /* Align: Fr_offset: power of 2. 1 variable char: fill character. */
+    /* Align: Fr_offset: power of 2.  Variable chars: fill pattern. */
     rs_align,
 
     /* Org: Fr_offset, fr_symbol: address. 1 variable char: fill
@@ -373,12 +344,15 @@ COMMON int need_pass_2;
    leave lots of padding.  */
 COMMON int linkrelax;
 
+/* TRUE if we should produce a listing.  */
+extern int listing;
+
 struct _pseudo_type
   {
     /* assembler mnemonic, lower case, no '.' */
     char *poc_name;
     /* Do the work */
-    void (*poc_handler) ();
+    void (*poc_handler) PARAMS ((int));
     /* Value to pass to handler */
     int poc_val;
   };
@@ -399,25 +373,35 @@ typedef struct lineno_struct lineno;
 
 #if __GNUC__ >= 2
 /* for use with -Wformat */
-#define PRINTF_LIKE(FCN)       void FCN (const char *Format, ...) \
+#define PRINTF_LIKE(FCN)       void FCN (const char *format, ...) \
                                        __attribute__ ((format (printf, 1, 2)))
+#define PRINTF_WHERE_LIKE(FCN) void FCN (char *file, unsigned int line, \
+                                         const char *format, ...) \
+                                       __attribute__ ((format (printf, 3, 4)))
 #else /* ANSI C with stdarg, but not GNU C */
-#define PRINTF_LIKE(FCN)       void FCN (const char *Format, ...)
+#define PRINTF_LIKE(FCN)       void FCN (const char *format, ...)
+#define PRINTF_WHERE_LIKE(FCN) void FCN (char *file, unsigned int line, \
+                                         const char *format, ...)
 #endif
 #else /* not ANSI C, or not stdarg */
 #define PRINTF_LIKE(FCN)       void FCN ()
+#define PRINTF_WHERE_LIKE(FCN) void FCN ()
 #endif
 
 PRINTF_LIKE (as_bad);
 PRINTF_LIKE (as_fatal);
 PRINTF_LIKE (as_tsktsk);
 PRINTF_LIKE (as_warn);
+PRINTF_WHERE_LIKE (as_bad_where);
+PRINTF_WHERE_LIKE (as_warn_where);
+
 void fprint_value PARAMS ((FILE *file, addressT value));
 void sprint_value PARAMS ((char *buf, addressT value));
 
 int had_errors PARAMS ((void));
 int had_warnings PARAMS ((void));
 
+void print_version_id PARAMS ((void));
 char *app_push PARAMS ((void));
 char *atof_ieee PARAMS ((char *str, int what_kind, LITTLENUM_TYPE * words));
 char *input_scrub_include_file PARAMS ((char *filename, char *position));
@@ -426,49 +410,49 @@ char *input_scrub_next_buffer PARAMS ((char **bufp));
 #if 0 /* incompatible with solaris 2 native cc */
 char *strstr PARAMS ((const char *s, const char *wanted));
 #endif
-char *xmalloc PARAMS ((long size));
-char *xrealloc PARAMS ((char *ptr, long n));
-int do_scrub_next_char PARAMS ((int (*get) (), void (*unget) ()));
+char *xmalloc PARAMS ((unsigned long size));
+char *xrealloc PARAMS ((char *ptr, unsigned long n));
+int do_scrub_next_char PARAMS ((int (*get) (void), void (*unget) (int)));
 int gen_to_words PARAMS ((LITTLENUM_TYPE * words, int precision,
                          long exponent_bits));
 int had_err PARAMS ((void));
-int had_errors PARAMS ((void));
-int had_warnings PARAMS ((void));
 int ignore_input PARAMS ((void));
 int scrub_from_file PARAMS ((void));
-int scrub_from_file PARAMS ((void));
 int scrub_from_string PARAMS ((void));
 int seen_at_least_1_file PARAMS ((void));
 void app_pop PARAMS ((char *arg));
 void as_howmuch PARAMS ((FILE * stream));
 void as_perror PARAMS ((char *gripe, char *filename));
-void as_where PARAMS ((void));
+void as_where PARAMS ((char **namep, unsigned int *linep));
 void bump_line_counters PARAMS ((void));
 void do_scrub_begin PARAMS ((void));
 void input_scrub_begin PARAMS ((void));
 void input_scrub_close PARAMS ((void));
 void input_scrub_end PARAMS ((void));
-void int_to_gen PARAMS ((long x));
 void new_logical_line PARAMS ((char *fname, int line_number));
 void scrub_to_file PARAMS ((int ch));
 void scrub_to_string PARAMS ((int ch));
 void subsegs_begin PARAMS ((void));
 void subseg_change PARAMS ((segT seg, int subseg));
-#ifdef BFD_ASSEMBLER
 segT subseg_new PARAMS ((const char *name, subsegT subseg));
+segT subseg_force_new PARAMS ((const char *name, subsegT subseg));
 void subseg_set PARAMS ((segT seg, subsegT subseg));
-#else
-void subseg_new PARAMS ((segT seg, subsegT subseg));
+
+struct expressionS;
+struct fix;
+struct symbol;
+
+#ifdef BFD_ASSEMBLER
+/* literal.c */
+valueT add_to_literal_pool PARAMS ((struct symbol *, valueT, segT, int));
 #endif
 
 /* this one starts the chain of target dependant headers */
 #include "targ-env.h"
 
-/* these define types needed by the interfaces */
+#include "expr.h"
 #include "struc-symbol.h"
-
 #include "write.h"
-#include "expr.h"
 #include "frags.h"
 #include "hash.h"
 #include "read.h"
@@ -495,4 +479,6 @@ void subseg_new PARAMS ((segT seg, subsegT subseg));
 #endif
 #endif /* BFD_ASSEMBLER */
 
+#endif /* GAS */
+
 /* end of as.h */
This page took 0.025915 seconds and 4 git commands to generate.