/* AIX requires this to be the first thing in the file. */
#ifdef __GNUC__
-# undef alloca
-# define alloca __builtin_alloca
+# ifndef alloca
+# ifdef __STDC__
+extern void *alloca ();
+# else
+extern char *alloca ();
+# endif
+# endif
#else
# if HAVE_ALLOCA_H
# include <alloca.h>
# else
# ifndef alloca /* predefined by HP cc +Olibcalls */
# if !defined (__STDC__) && !defined (__hpux)
-char *alloca ();
+extern char *alloca ();
# else
-void *alloca ();
+extern void *alloca ();
# endif /* __STDC__, __hpux */
# endif /* alloca */
# endif /* _AIX */
later. Similar to rs_org, but different.
fr_symbol: operand
1 variable char: fill character */
- rs_space
+ 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;
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. */
relax_stateT fr_type;
relax_substateT fr_subtype;
- /* 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.
-
- In the meantime, if we get stuck like this with any other target,
- create a union here. */
- char fr_pcrel_adjust, 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;
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;
-extern int frag_now_fix ();
+extern int frag_now_fix PARAMS ((void));
/* For foreign-segment symbol fixups. */
COMMON fragS zero_address_frag;
/* 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;
long exponent_bits));
int had_err PARAMS ((void));
int ignore_input 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));
void input_scrub_begin PARAMS ((void));
void input_scrub_close PARAMS ((void));
void input_scrub_end PARAMS ((void));
-void new_logical_line PARAMS ((char *fname, int line_number));
+int new_logical_line PARAMS ((char *fname, int line_number));
void subsegs_begin PARAMS ((void));
void subseg_change PARAMS ((segT seg, int subseg));
segT subseg_new PARAMS ((const char *name, subsegT subseg));
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;