diff options
author | Ken Raeburn <raeburn@cygnus> | 1995-05-02 19:33:00 +0000 |
---|---|---|
committer | Ken Raeburn <raeburn@cygnus> | 1995-05-02 19:33:00 +0000 |
commit | 1dc1e7989f7fcb9589f4fa8d470f7d9d08dce8e0 (patch) | |
tree | 608de255cb3a46c9d7380558219843144c26869f /gas/config/tc-mips.h | |
parent | 2209b19c4edfad132bd94a4097485d2f199f1f79 (diff) | |
download | gdb-1dc1e7989f7fcb9589f4fa8d470f7d9d08dce8e0.zip gdb-1dc1e7989f7fcb9589f4fa8d470f7d9d08dce8e0.tar.gz gdb-1dc1e7989f7fcb9589f4fa8d470f7d9d08dce8e0.tar.bz2 |
* config/tc-mips.c: Use USE_STDARG and USE_VARARGS instead of NO_STDARG &c.
* config/tc-mips.c (mips_target_format): Changed to a function, checking flavor
and byte order at run time.
(md_parse_option, cases OPTION_EB and OPTION_EL): Set target_big_endian here.
(md_begin): Not here.
* config/tc-mips.h (mips_target_format): Adjust declaration.
(TARGET_FORMAT): Call mips_target_format.
* config/tc-mips.h (USE_GLOBAL_POINTER_OPT): Define in terms of OUTPUT_FLAVOR.
* config/tc-mips.c (g_switch_value, g_switch_seen): Define unconditionally.
(md_begin, mips_ip, md_parse_option, s_change_sec, s_option, s_abicalls,
nopic_need_relax): Check USE_GLOBAL_POINTER_OPT at run time, instead of
compiling conditionally on GPOPT.
(GPOPT): Don't define.
(md_shortopts): Always include -G.
(RDATA_SECTION_NAME): Select at run time.
(md_begin): Test for ELF format at run time instead of compile time.
(mips_ip, s_change_sec): Ditto.
(md_parse_option, cases OPTION_CALL_SHARED and OPTION_NON_SHARED): Ditto.
(OPTION_CALL_SHARED, OPTION_NON_SHARED, mips_regmask_frag): Define
unconditionally.
Diffstat (limited to 'gas/config/tc-mips.h')
-rw-r--r-- | gas/config/tc-mips.h | 58 |
1 files changed, 28 insertions, 30 deletions
diff --git a/gas/config/tc-mips.h b/gas/config/tc-mips.h index 9e0f4aa..ba6d1b4 100644 --- a/gas/config/tc-mips.h +++ b/gas/config/tc-mips.h @@ -33,52 +33,36 @@ #define MAX_RELOC_EXPANSION 3 #define LOCAL_LABELS_FB -#define LOCAL_LABEL(name) ((name)[0] == '$') +/* The MIPS assembler appears to keep all symbols. */ +#define LOCAL_LABEL(name) 0 #define md_relax_frag(fragp, stretch) (0) #define md_undefined_symbol(name) (0) #define md_operand(x) +/* We permit PC relative difference expressions when generating + embedded PIC code. */ +#define DIFF_EXPR_OK + #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 +/* Default to big endian. */ #ifndef TARGET_BYTES_LITTLE_ENDIAN -#define TARGET_BYTES_BIG_ENDIAN -#endif +#undef TARGET_BYTES_BIG_ENDIAN +#define TARGET_BYTES_BIG_ENDIAN 1 #endif -#ifdef TARGET_BYTES_BIG_ENDIAN +#if 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 "a.out-mips-big" -#else -#define TARGET_FORMAT "a.out-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 */ -#ifdef OBJ_ELF -#ifdef TARGET_BYTES_BIG_ENDIAN -#define TARGET_FORMAT "elf32-bigmips" -#else -#define TARGET_FORMAT "elf32-littlemips" -#endif -#endif /* OBJ_ELF */ -#endif /* ! defined (TARGET_FORMAT) */ +/* The endianness of the target format may change based on command + line arguments. */ +#define TARGET_FORMAT mips_target_format() +extern const char *mips_target_format (); struct mips_cl_insn { unsigned long insn_opcode; @@ -87,12 +71,23 @@ struct mips_cl_insn { extern int tc_get_register PARAMS ((int frame)); +#define md_parse_long_option(arg) mips_parse_long_option (arg) +extern int mips_parse_long_option PARAMS ((const char *)); + #define tc_frob_label(sym) mips_define_label (sym) extern void mips_define_label PARAMS ((struct symbol *)); #define TC_CONS_FIX_NEW cons_fix_new_mips extern void cons_fix_new_mips (); +/* When generating embedded PIC code we must keep PC relative + relocations. */ +#define TC_FORCE_RELOCATION(fixp) mips_force_relocation (fixp) +extern int mips_force_relocation (); + +/* md_apply_fix sets fx_done correctly. */ +#define TC_HANDLE_FX_DONE 1 + /* Register mask variables. These are set by the MIPS assembly code and used by ECOFF and possibly other object file formats. */ extern unsigned long mips_gprmask; @@ -117,3 +112,6 @@ extern void mips_elf_final_processing PARAMS ((void)); extern void md_mips_end PARAMS ((void)); #define md_end() md_mips_end() + +#define USE_GLOBAL_POINTER_OPT (OUTPUT_FLAVOR == bfd_target_ecoff_flavour \ + || OUTPUT_FLAVOR == bfd_target_elf_flavour) |