backout m32rx stuff, not ready to be checked in
[deliverable/binutils-gdb.git] / gas / as.h
index dadbcf05926c3166a999d071e677b315cf5a5367..46b58a82800f8ecd85974fb5fef9c9f54c7d423f 100644 (file)
--- a/gas/as.h
+++ b/gas/as.h
@@ -1,5 +1,6 @@
 /* as.h - global header file
 /* as.h - global header file
-   Copyright (C) 1987, 1990, 1991, 1992 Free Software Foundation, Inc.
+   Copyright (C) 1987, 90, 91, 92, 93, 94, 95, 96, 1997
+   Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
 
    This file is part of GAS, the GNU Assembler.
 
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
    GNU General Public License for more details.
 
    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, 675 Mass Ave, Cambridge, MA 02139, USA.  */
+   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.  */
 
 
+#ifndef GAS
 #define GAS 1
 /*
  * I think this stuff is largely out of date.  xoxorich.
 #define GAS 1
 /*
  * I think this stuff is largely out of date.  xoxorich.
  * If TEST is #defined, then we are testing a module: #define COMMON as "".
  */
 
  * If TEST is #defined, then we are testing a module: #define COMMON as "".
  */
 
-/* These #defines are for parameters of entire assembler. */
+#include "config.h"
+
+/* This is the code recommended in the autoconf documentation, almost
+   verbatim.  If it doesn't work for you, let me know, and notify
+   djm@gnu.ai.mit.edu as well.  */
+/* Added #undef for DJ Delorie.  The right fix is to ensure that as.h
+   is included first, before even any system header files, in all files
+   that use it.  KR 1994.11.03 */
+/* Added void* version for STDC case.  This is to be compatible with
+   the declaration in bison.simple, used for m68k operand parsing.
+   --KR 1995.08.08 */
+/* Force void* decl for hpux.  This is what Bison uses.  --KR 1995.08.16 */
+
+/* AIX requires this to be the first thing in the file.  */
+#ifdef __GNUC__
+# ifndef alloca
+#  ifdef __STDC__
+extern void *alloca ();
+#  else
+extern char *alloca ();
+#  endif
+# endif
+#else
+# if HAVE_ALLOCA_H
+#  include <alloca.h>
+# else
+#  ifdef _AIX
+ #pragma alloca
+#  else
+#   ifndef alloca /* predefined by HP cc +Olibcalls */
+#    if !defined (__STDC__) && !defined (__hpux)
+extern char *alloca ();
+#    else
+extern void *alloca ();
+#    endif /* __STDC__, __hpux */
+#   endif /* alloca */
+#  endif /* _AIX */
+# endif /* HAVE_ALLOCA_H */
+#endif
 
 
-#define DEBUG                  /* temporary */
-/* These #includes are for type definitions etc. */
+/* Now, tend to the rest of the configuration.  */
 
 
+/* System include files first... */
 #include <stdio.h>
 #include <stdio.h>
+#include <ctype.h>
+#ifdef HAVE_STRING_H
+#include <string.h>
+#else
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
+#endif
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+/* for size_t, pid_t */
+#include <sys/types.h>
+#endif
+
+#include <getopt.h>
+/* The first getopt value for machine-independent long options.
+   150 isn't special; it's just an arbitrary non-ASCII char value.  */
+#define OPTION_STD_BASE 150
+/* The first getopt value for machine-dependent long options.
+   170 gives the standard options room to grow.  */
+#define OPTION_MD_BASE 170
+
 #ifdef DEBUG
 #undef NDEBUG
 #endif
 #ifdef DEBUG
 #undef NDEBUG
 #endif
+#if !defined (__GNUC__) || __GNUC_MINOR__ <= 5
+#define __PRETTY_FUNCTION__  ((char*)0)
+#endif
+#if 0
+
+/* Handle lossage with assert.h.  */
+#ifndef BROKEN_ASSERT
 #include <assert.h>
 #include <assert.h>
+#else /* BROKEN_ASSERT */
+#ifndef NDEBUG
+#define assert(p) ((p) ? 0 : (as_assert (__FILE__, __LINE__, __PRETTY_FUNCTION__), 0))
+#else
+#define assert(p) ((p), 0)
+#endif
+#endif /* BROKEN_ASSERT */
+
+#else
+
+#define assert(P) ((P) ? 0 : (as_assert (__FILE__, __LINE__, __PRETTY_FUNCTION__), 0))
+#undef abort
+#define abort()                as_abort (__FILE__, __LINE__, __PRETTY_FUNCTION__)
 
 
+#endif
+
+
+/* Now GNU header files... */
 #include <ansidecl.h>
 #ifdef BFD_ASSEMBLER
 #include <bfd.h>
 #endif
 #include <ansidecl.h>
 #ifdef BFD_ASSEMBLER
 #include <bfd.h>
 #endif
-#include "host.h"
-#include "flonum.h"
+#include <libiberty.h>
+
+/* Define the standard progress macros.  */
+#include <progress.h>
+
+/* This doesn't get taken care of anywhere.  */
+#ifndef __MWERKS__  /* Metrowerks C chokes on the "defined (inline)" */
+#if !defined (__GNUC__) && !defined (inline)
+#define inline
+#endif
+#endif /* !__MWERKS__ */
+
+/* Other stuff from config.h.  */
+#ifdef NEED_DECLARATION_STRSTR
+extern char *strstr ();
+#endif
+#ifdef NEED_DECLARATION_MALLOC
+extern PTR malloc ();
+extern PTR realloc ();
+#endif
+#ifdef NEED_DECLARATION_FREE
+extern void free ();
+#endif
+#ifdef NEED_DECLARATION_ERRNO
+extern int errno;
+#endif
+
+/* This is needed for VMS with DEC C.  */
+#if ! defined (__GNUC__) && ! defined (HAVE_UNLINK) && defined (HAVE_REMOVE)
+#define unlink remove
+#endif
+
+/* Hack to make "gcc -Wall" not complain about obstack macros.  */
+#if !defined (memcpy) && !defined (bcopy)
+#define bcopy(src,dest,size)   memcpy(dest,src,size)
+#endif
 
 /* Make Saber happier on obstack.h.  */
 #ifdef SABER
 
 /* Make Saber happier on obstack.h.  */
 #ifdef SABER
 #define __FILE__ "unknown"
 #endif /* __FILE__ */
 
 #define __FILE__ "unknown"
 #endif /* __FILE__ */
 
-#ifndef __STDC__
-#ifndef const
-#define const
+#ifndef FOPEN_WB
+#ifdef GO32
+#include "fopen-bin.h"
+#else
+#include "fopen-same.h"
 #endif
 #endif
-#ifndef volatile
-#define volatile
 #endif
 #endif
-#endif /* ! __STDC__ */
+
+#ifndef EXIT_SUCCESS
+#define EXIT_SUCCESS 0
+#define EXIT_FAILURE 1
+#endif
 
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free xfree
 
 #define obstack_chunk_alloc xmalloc
 #define obstack_chunk_free xfree
               (long) val, __LINE__, __FILE__); \
           }
 \f
               (long) val, __LINE__, __FILE__); \
           }
 \f
+#include "flonum.h"
 
 /* These are assembler-wide concepts */
 
 
 /* These are assembler-wide concepts */
 
@@ -119,15 +250,6 @@ typedef addressT valueT;
 #else
 #define know(p)                        /* know() checks are no-op.ed */
 #endif
 #else
 #define know(p)                        /* know() checks are no-op.ed */
 #endif
-
-#if defined (BROKEN_ASSERT) && !defined (NDEBUG)
-/* Used on machines where the "assert" macro is buggy.  (For example, on the
-   RS/6000, Reiser-cpp substitution is done to put the condition into a
-   string, so if the condition contains a string, parse errors result.)  If
-   the condition fails, just drop core file.  */
-#undef assert
-#define assert(p) ((p) ? 0 : (abort (), 0))
-#endif
 \f
 /* input_scrub.c */
 
 \f
 /* input_scrub.c */
 
@@ -143,12 +265,16 @@ typedef addressT valueT;
 
 #ifdef MANY_SEGMENTS
 #include "bfd.h"
 
 #ifdef MANY_SEGMENTS
 #include "bfd.h"
-#define N_SEGMENTS 10
-#define SEG_NORMAL(x) ((x) >= SEG_E0 && (x) <= SEG_E9)
-#define SEG_LIST SEG_E0,SEG_E1,SEG_E2,SEG_E3,SEG_E4,SEG_E5,SEG_E6,SEG_E7,SEG_E8,SEG_E9
+#define N_SEGMENTS 40
+#define SEG_NORMAL(x) ((x) >= SEG_E0 && (x) <= SEG_E39)
+#define SEG_LIST SEG_E0,SEG_E1,SEG_E2,SEG_E3,SEG_E4,SEG_E5,SEG_E6,SEG_E7,SEG_E8,SEG_E9,\
+                SEG_E10,SEG_E11,SEG_E12,SEG_E13,SEG_E14,SEG_E15,SEG_E16,SEG_E17,SEG_E18,SEG_E19,\
+                SEG_E20,SEG_E21,SEG_E22,SEG_E23,SEG_E24,SEG_E25,SEG_E26,SEG_E27,SEG_E28,SEG_E29,\
+                SEG_E30,SEG_E31,SEG_E32,SEG_E33,SEG_E34,SEG_E35,SEG_E36,SEG_E37,SEG_E38,SEG_E39
 #define SEG_TEXT SEG_E0
 #define SEG_DATA SEG_E1
 #define SEG_BSS SEG_E2
 #define SEG_TEXT SEG_E0
 #define SEG_DATA SEG_E1
 #define SEG_BSS SEG_E2
+#define SEG_LAST SEG_E39
 #else
 #define N_SEGMENTS 3
 #define SEG_NORMAL(x) ((x) == SEG_TEXT || (x) == SEG_DATA || (x) == SEG_BSS)
 #else
 #define N_SEGMENTS 3
 #define SEG_NORMAL(x) ((x) == SEG_TEXT || (x) == SEG_DATA || (x) == SEG_BSS)
@@ -189,7 +315,7 @@ COMMON segT now_seg;
 #ifdef BFD_ASSEMBLER
 #define segment_name(SEG)      bfd_get_section_name (stdoutput, SEG)
 #else
 #ifdef BFD_ASSEMBLER
 #define segment_name(SEG)      bfd_get_section_name (stdoutput, SEG)
 #else
-extern char *const seg_name[];
+extern char const *const seg_name[];
 #define segment_name(SEG)      seg_name[(int) (SEG)]
 #endif
 
 #define segment_name(SEG)      seg_name[(int) (SEG)]
 #endif
 
@@ -201,8 +327,8 @@ extern int section_alignment[];
 extern segT reg_section, expr_section;
 /* Shouldn't these be eliminated someday?  */
 extern segT text_section, data_section, bss_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)
+#define absolute_section       bfd_abs_section_ptr
+#define undefined_section      bfd_und_section_ptr
 #else
 #define reg_section            SEG_REGISTER
 #define expr_section           SEG_EXPR
 #else
 #define reg_section            SEG_REGISTER
 #define expr_section           SEG_EXPR
@@ -215,32 +341,54 @@ extern segT text_section, data_section, bss_section;
 
 /* relax() */
 
 
 /* relax() */
 
-typedef enum _relax_state
+enum _relax_state
   {
     /* Variable chars to be repeated fr_offset times.
        Fr_symbol unused. Used with fr_offset == 0 for a
        constant length frag. */
     rs_fill = 1,
 
   {
     /* Variable chars to be repeated fr_offset times.
        Fr_symbol unused. Used with fr_offset == 0 for a
        constant length frag. */
     rs_fill = 1,
 
-    /* Align: Fr_offset: power of 2. 1 variable char: fill character. */
+    /* Align.  The fr_offset field holds the power of 2 to which to
+       align.  The fr_var field holds the number of characters in the
+       fill pattern.  The fr_subtype field holds the maximum number of
+       bytes to skip when aligning, or 0 if there is no maximum.  */
     rs_align,
 
     rs_align,
 
+    /* Align code.  The fr_offset field holds the power of 2 to which
+       to align.  This type is only generated by machine specific
+       code, which is normally responsible for handling the fill
+       pattern.  The fr_subtype field holds the maximum number of
+       bytes to skip when aligning, or 0 if there is no maximum.  */
+    rs_align_code,
+
     /* Org: Fr_offset, fr_symbol: address. 1 variable char: fill
        character. */
     rs_org,
 
     /* Org: Fr_offset, fr_symbol: address. 1 variable char: fill
        character. */
     rs_org,
 
-    rs_machine_dependent
-
 #ifndef WORKING_DOT_WORD
     /* JF: gunpoint */
 #ifndef WORKING_DOT_WORD
     /* JF: gunpoint */
-      , rs_broken_word
+    rs_broken_word,
 #endif
 #endif
-  } relax_stateT;
 
 
-/* typedef unsigned char relax_substateT; */
-/* JF this is more likely to leave the end of a struct frag on an align
-   boundry.  Be very careful with this.  */
-typedef unsigned long relax_substateT;
+    /* machine-specific relaxable (or similarly alterable) instruction */
+    rs_machine_dependent,
+
+    /* .space directive with expression operand that needs to be computed
+       later.  Similar to rs_org, but different.
+       fr_symbol: operand
+       1 variable char: fill character  */
+    rs_space,
+
+    /* A DWARF leb128 value; only ELF uses this.  The subtype is 0 for
+       unsigned, 1 for signed.  */
+    rs_leb128
+  };
+
+typedef enum _relax_state relax_stateT;
+
+/* This type is used in prototypes, so it can't be a type that will be
+   widened for argument passing.  */
+typedef unsigned int relax_substateT;
 
 /* Enough bits for address, but still an integer type.
    Could be a problem, cross-assembling for 64-bit machines.  */
 
 /* Enough bits for address, but still an integer type.
    Could be a problem, cross-assembling for 64-bit machines.  */
@@ -264,6 +412,7 @@ typedef addressT relax_addressT;
  BUG: it may be smarter to have a single pointer off to various different
  notes for different frag kinds. See how code pans
  */
  BUG: it may be smarter to have a single pointer off to various different
  notes for different frag kinds. See how code pans
  */
+
 struct frag
 {
   /* Object file address. */
 struct frag
 {
   /* Object file address. */
@@ -290,26 +439,44 @@ struct frag
   relax_stateT fr_type;
   relax_substateT fr_subtype;
 
   relax_stateT fr_type;
   relax_substateT fr_subtype;
 
-  /* These are needed only on the NS32K machines */
-  char fr_pcrel_adjust;
-  char fr_bsr;
+  union {
+    /* These are needed only on the NS32K machines.  But since we don't
+       include targ-cpu.h until after this structure has been defined,
+       we can't really conditionalize it.  This code should be
+       rearranged a bit to make that possible.  */
+    struct {
+      struct frag *fr_opcode_fragP;
+      unsigned int fr_opcode_offset;
+      char fr_bsr;
+    } fr_ns32k;
+#ifdef USING_CGEN
+    /* Don't include this unless using CGEN to keep frag size down.  */
+    struct {
+      const struct cgen_insn *insn;
+      unsigned char opindex, opinfo;
+    } cgen;
+#endif
+  } fr_targ;
+
+  /* Where the frag was created, or where it became a variant frag.  */
+  char *fr_file;
+  unsigned int fr_line;
 
 
-  /* Chars begin here.
-     One day we will compile fr_literal[0]. */
+  /* Data begins here.  */
   char fr_literal[1];
 };
 
 #define SIZEOF_STRUCT_FRAG \
   char fr_literal[1];
 };
 
 #define SIZEOF_STRUCT_FRAG \
-((int)zero_address_frag.fr_literal-(int)&zero_address_frag)
+((char *)zero_address_frag.fr_literal-(char *)&zero_address_frag)
 /* We want to say fr_literal[0] above. */
 
 typedef struct frag fragS;
 
 /* We want to say fr_literal[0] above. */
 
 typedef struct frag fragS;
 
-/* Current frag we are building.  This frag is incomplete.  It is, however,
-   included in frchain_now.  The fr_fix field is bogus; instead, use:
-   obstack_next_free(&frags)-frag_now->fr_literal.  */
+/* Current frag we are building.  This frag is incomplete.  It is,
+   however, included in frchain_now.  The fr_fix field is bogus;
+   instead, use frag_now_fix ().  */
 COMMON fragS *frag_now;
 COMMON fragS *frag_now;
-#define frag_now_fix() ((char*)obstack_next_free (&frags) - frag_now->fr_literal)
+extern int frag_now_fix PARAMS ((void));
 
 /* For foreign-segment symbol fixups. */
 COMMON fragS zero_address_frag;
 
 /* For foreign-segment symbol fixups. */
 COMMON fragS zero_address_frag;
@@ -318,15 +485,43 @@ COMMON fragS bss_address_frag;
 
 /* main program "as.c" (command arguments etc) */
 
 
 /* main program "as.c" (command arguments etc) */
 
-/* ['x'] TRUE if "-x" seen. */
-COMMON char flagseen[128];
-COMMON unsigned char flag_readonly_data_in_text;
-COMMON unsigned char flag_suppress_warnings;
-COMMON unsigned char flag_always_generate_output;
+COMMON unsigned char flag_no_comments; /* -f */
+COMMON unsigned char flag_debug; /* -D */
+COMMON unsigned char flag_signed_overflow_ok; /* -J */
+#ifndef WORKING_DOT_WORD
+COMMON unsigned char flag_warn_displacement; /* -K */
+#endif
+
+/* True if local symbols should be retained.  */
+COMMON int flag_keep_locals; /* -L */
+
+/* True if we are assembling in MRI mode.  */
+COMMON int flag_mri;
+
+/* True if we are assembling in m68k MRI mode.  */
+COMMON int flag_m68k_mri;
+
+/* Should the data section be made read-only and appended to the text
+   section?  */
+COMMON unsigned char flag_readonly_data_in_text; /* -R */
+
+/* True if warnings should be inhibited.  */
+COMMON int flag_no_warnings; /* -W */
+
+/* True if we should attempt to generate output even if non-fatal errors
+   are detected.  */
+COMMON unsigned char flag_always_generate_output; /* -Z */
+
+/* This is true if the assembler should output time and space usage. */
+
+COMMON unsigned char flag_print_statistics;
 
 /* name of emitted object file */
 COMMON char *out_file_name;
 
 
 /* name of emitted object file */
 COMMON char *out_file_name;
 
+/* name of file defining extensions to the basic instruction set */
+COMMON char *insttbl_file_name;
+
 /* TRUE if we need a second pass. */
 COMMON int need_pass_2;
 
 /* TRUE if we need a second pass. */
 COMMON int need_pass_2;
 
@@ -334,98 +529,134 @@ COMMON int need_pass_2;
    leave lots of padding.  */
 COMMON int linkrelax;
 
    leave lots of padding.  */
 COMMON int linkrelax;
 
+/* TRUE if we should produce a listing.  */
+extern int listing;
+
+/* Type of debugging information we should generate.  We currently
+   only support stabs and ECOFF.  */
+
+enum debug_info_type { DEBUG_NONE, DEBUG_STABS, DEBUG_ECOFF };
+
+extern enum debug_info_type debug_type;
+
+/* Maximum level of macro nesting.  */
+extern int max_macro_nest;
+
+/* Obstack chunk size.  Keep large for efficient space use, make small to
+   increase malloc calls for monitoring memory allocation.  */
+extern int chunksize;
+
 struct _pseudo_type
   {
     /* assembler mnemonic, lower case, no '.' */
 struct _pseudo_type
   {
     /* assembler mnemonic, lower case, no '.' */
-    char *poc_name;
+    const char *poc_name;
     /* Do the work */
     /* Do the work */
-    void (*poc_handler) ();
+    void (*poc_handler) PARAMS ((int));
     /* Value to pass to handler */
     int poc_val;
   };
 
 typedef struct _pseudo_type pseudo_typeS;
 
     /* Value to pass to handler */
     int poc_val;
   };
 
 typedef struct _pseudo_type pseudo_typeS;
 
-#ifdef BFD_ASSEMBLER_xxx
-struct lineno_struct
-  {
-    alent line;
-    fragS *frag;
-    struct lineno_struct *next;
-  };
-typedef struct lineno_struct lineno;
+/* Prefer varargs for non-ANSI compiler, since some will barf if the
+   ellipsis definition is used with a no-arguments declaration.  */
+#if defined (HAVE_VARARGS_H) && !defined (__STDC__)
+#undef HAVE_STDARG_H
 #endif
 
 #endif
 
-#if defined (__STDC__) && !defined(NO_STDARG)
+#if defined (HAVE_STDARG_H)
+#define USE_STDARG
+#endif
+#if !defined (USE_STDARG) && defined (HAVE_VARARGS_H)
+#define USE_VARARGS
+#endif
 
 
-#if __GNUC__ >= 2
+#ifdef USE_STDARG
+#if (__GNUC__ >= 2) && !defined(VMS)
 /* for use with -Wformat */
 /* 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)))
                                        __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 */
 #else /* ANSI C with stdarg, but not GNU C */
-#define PRINTF_LIKE(FCN)       void FCN (const char *Format, ...)
+#define PRINTF_LIKE(FCN)       void FCN PARAMS ((const char *format, ...))
+#define PRINTF_WHERE_LIKE(FCN) void FCN PARAMS ((char *file, \
+                                                 unsigned int line, \
+                                                 const char *format, ...))
 #endif
 #endif
-#else /* not ANSI C, or not stdarg */
+#else /* not using stdarg */
 #define PRINTF_LIKE(FCN)       void FCN ()
 #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);
 #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 as_assert PARAMS ((const char *, int, const char *));
+void as_abort PARAMS ((const char *, int, const char *));
+
 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 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));
 char *input_scrub_new_file PARAMS ((char *filename));
 char *input_scrub_next_buffer PARAMS ((char **bufp));
 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));
 char *input_scrub_new_file PARAMS ((char *filename));
 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) ()));
+int do_scrub_chars PARAMS ((int (*get) (char **), char *to, int tolen));
 int gen_to_words PARAMS ((LITTLENUM_TYPE * words, int precision,
                          long exponent_bits));
 int had_err PARAMS ((void));
 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 ignore_input PARAMS ((void));
-int scrub_from_file PARAMS ((void));
-int scrub_from_file PARAMS ((void));
-int scrub_from_string PARAMS ((void));
+void cond_finish_check PARAMS ((int));
+void cond_exit_macro PARAMS ((int));
 int seen_at_least_1_file PARAMS ((void));
 void app_pop PARAMS ((char *arg));
 void as_howmuch PARAMS ((FILE * stream));
 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_perror PARAMS ((const char *gripe, const char *filename));
+void as_where PARAMS ((char **namep, unsigned int *linep));
 void bump_line_counters PARAMS ((void));
 void bump_line_counters PARAMS ((void));
-void do_scrub_begin PARAMS ((void));
+void do_scrub_begin PARAMS ((int));
 void input_scrub_begin PARAMS ((void));
 void input_scrub_close PARAMS ((void));
 void input_scrub_end 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));
+int new_logical_line PARAMS ((char *fname, int line_number));
 void subsegs_begin PARAMS ((void));
 void subseg_change PARAMS ((segT seg, int subseg));
 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_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));
 void subseg_set PARAMS ((segT seg, subsegT subseg));
-#else
-void subseg_new PARAMS ((segT seg, subsegT subseg));
+#ifdef BFD_ASSEMBLER
+segT subseg_get PARAMS ((const char *, int));
+#endif
+
+void start_dependencies PARAMS ((char *));
+void register_dependency PARAMS ((char *));
+void print_dependencies PARAMS ((void));
+
+struct expressionS;
+struct fix;
+struct symbol;
+struct relax_type;
+
+#ifdef BFD_ASSEMBLER
+/* literal.c */
+valueT add_to_literal_pool PARAMS ((struct symbol *, valueT, segT, int));
 #endif
 
 #endif
 
+#include "expr.h"              /* Before targ-*.h */
+
 /* this one starts the chain of target dependant headers */
 #include "targ-env.h"
 
 /* this one starts the chain of target dependant headers */
 #include "targ-env.h"
 
-#include "expr.h"
 #include "struc-symbol.h"
 #include "write.h"
 #include "frags.h"
 #include "struc-symbol.h"
 #include "write.h"
 #include "frags.h"
@@ -436,22 +667,19 @@ void subseg_new PARAMS ((segT seg, subsegT subseg));
 #include "tc.h"
 #include "obj.h"
 
 #include "tc.h"
 #include "obj.h"
 
+#ifdef USE_EMULATIONS
+#include "emul.h"
+#endif
 #include "listing.h"
 
 #include "listing.h"
 
-#ifdef BFD_ASSEMBLER
-/* Someday perhaps this will be selectable at run-time.  */
-#if defined (OBJ_AOUT) || defined (OBJ_BOUT)
-#define OUTPUT_FLAVOR bfd_target_aout_flavour
-#endif
-#ifdef OBJ_COFF
-#define OUTPUT_FLAVOR bfd_target_coff_flavour
-#endif
-#ifdef OBJ_ECOFF
-#define OUTPUT_FLAVOR bfd_target_ecoff_flavour
+#ifndef LOCAL_LABELS_DOLLAR
+#define LOCAL_LABELS_DOLLAR 0
 #endif
 #endif
-#ifdef OBJ_ELF
-#define OUTPUT_FLAVOR bfd_target_elf_flavour
+
+#ifndef LOCAL_LABELS_FB
+#define LOCAL_LABELS_FB 0
 #endif
 #endif
-#endif /* BFD_ASSEMBLER */
+
+#endif /* GAS */
 
 /* end of as.h */
 
 /* end of as.h */
This page took 0.029407 seconds and 4 git commands to generate.