diff options
author | Ian Lance Taylor <ian@airs.com> | 1993-04-01 02:14:29 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1993-04-01 02:14:29 +0000 |
commit | 670a50ebf65de85eab0ccf22da227e218f704037 (patch) | |
tree | 1c276cc2005d44c84d9dfa5d4b1698ecb7facabc /gas/config/tc-mips.h | |
parent | 8155a95d965478c30f59cbc63a7a2bef01ef884a (diff) | |
download | gdb-670a50ebf65de85eab0ccf22da227e218f704037.zip gdb-670a50ebf65de85eab0ccf22da227e218f704037.tar.gz gdb-670a50ebf65de85eab0ccf22da227e218f704037.tar.bz2 |
* subsegs.c (subseg_new): Set output_section of new section.
* as.c (perform_an_assemly_pass): Don't set output_section here.
* expr.c (expr_part, expr): Turn off section assertions for ECOFF,
since it has additional sections.
* read.c (s_lcomm): For MIPS ECOFF, put small objects in .sbss,
not bss_section.
* config/obj-ecoff.h (TARGET_SYMBOL_FIELDS): Added
ecoff_undefined field.
* config/obj-ecoff.c (obj_symbol_new_hook): Initialize
ecoff_undefined field.
(add_file): If using stabs, just output a stabs symbol rather than
creating a new fdr.
(obj_ecoff_begin, obj_ecoff_bend): Ignore line number by reading
it with get_absolute_expression, rather than skipping it by hand.
(obj_ecoff_loc): If using stabs, just output a stabs symbol rather
than ECOFF line number information.
(obj_ecoff_stab): Accept non-zero values for stabs line number.
(ecoff_build_symbols): Set ifilesym correctly. Set storage class
to small, undefined and/or readonly sections if appropriate.
Don't output symbol names containing \001 characters.
(ecoff_frob_file): Make sure at least one fdr is output.
* config/tc-mips.h: Define TC_MIPS.
* config/tc-mips.c (g_switch_value): New static variable.
(md_assemble): Set gp size of output BFD.
(gp_reference): New function; returns 1 if expression can be
accesssed via gp. Always returns 0 if not using ECOFF.
(macro_build): Convert BFD_RELOC_LO16 to BFD_RELOC_MIPS_GPREL if
possible.
(macro): Generate sequences using gp if possible.
(md_parse_option): Ignore -EL and -EB. Parse -G.
(md_apply_fix): Added BFD_RELOC_MIPS_GPREL to ignored case.
(s_change_sec): Handle .rdata and .sdata for ECOFF.
(s_extern): Mark symbol as external. Set ecoff_undefined field.
Diffstat (limited to 'gas/config/tc-mips.h')
-rw-r--r-- | gas/config/tc-mips.h | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/gas/config/tc-mips.h b/gas/config/tc-mips.h new file mode 100644 index 0000000..b0fb9f7 --- /dev/null +++ b/gas/config/tc-mips.h @@ -0,0 +1,94 @@ +/* tc-mips.c -- header file for tc-mips.c. + Copyright (C) 1993 Free Software Foundation, Inc. + Contributed by the OSF and Ralph Campbell. + Written by Keith Knowles and Ralph Campbell, working independently. + Modified for ECOFF support by Ian Lance Taylor of Cygnus Support. + + This file is part of GAS. + + 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) + any later version. + + GAS is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + 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. */ + +#define TC_MIPS + +#define TARGET_ARCH bfd_arch_mips + +#define NO_LISTING +#define ONLY_STANDARD_ESCAPES +#define BACKSLASH_V +#define WORKING_DOT_WORD 1 +#define OLD_FLOAT_READS +#define LOCAL_LABELS_FB + +#ifdef OBJ_ECOFF +#define LOCAL_LABEL(name) ((name)[0] == '$' && (name)[1] == 'L') +#endif + +#define md_undefined_symbol(name) (0) +#define md_operand(x) + +#define LITTLE_ENDIAN 1234 +#define BIG_ENDIAN 4321 + +/* If neither TARGET_BYTES_BIG_ENDIAN nor TARGET_BYTES_LITTLE_ENDIAN + is specified, default to big endian. */ +#ifndef TARGET_BYTES_BIG_ENDIAN +#ifndef TARGET_BYTES_LITTLE_ENDIAN +#define TARGET_BYTES_BIG_ENDIAN +#endif +#endif + +#ifdef TARGET_BYTES_BIG_ENDIAN +#define BYTE_ORDER BIG_ENDIAN +#else +#define BYTE_ORDER LITTLE_ENDIAN +#endif + +#ifndef TARGET_FORMAT +#ifdef OBJ_AOUT +#ifdef TARGET_BYTES_BIG_ENDIAN +#define TARGET_FORMAT "aout-mips-big" +#else +#define TARGET_FORMAT "aout-mips-little" +#endif +#endif /* OBJ_AOUT */ +#ifdef OBJ_ECOFF +#ifdef TARGET_BYTES_BIG_ENDIAN +#define TARGET_FORMAT "ecoff-bigmips" +#else +#define TARGET_FORMAT "ecoff-littlemips" +#endif +#endif /* OBJ_ECOFF */ +#endif /* ! defined (TARGET_FORMAT) */ + +struct mips_opcode { + const char *name; + const char *args; + unsigned long match; + unsigned long mask; /* used only for error checking */ + unsigned long pinfo; /* Information used for insn/pipeline scheduling. */ +}; + +struct mips_cl_insn { + unsigned long insn_opcode; + const struct mips_opcode *insn_mo; +}; + +#ifndef BFD_ASSEMBLER +#define md_convert_frag(h,f) {as_fatal ("MIPS convert_frag\n");} +#else +#define md_convert_frag(b,s,f) {as_fatal ("MIPS convert_frag\n");} +#endif + +extern int tc_get_register PARAMS ((void)); |