Commit graph

631 commits

Author SHA1 Message Date
Thiemo Seufer
ad8d3bb3cf * config/tc-mips.c (my_getSmallParser): New function prototype.
(small_ex_type): Named this enum, more return values for
	my_getSmallExpression.
	(mips_ip): Allow SPC and HT between arguments. Handle some NewABI
	triple relocations. Protect some parts with ifdef OBJ_ELF.
	(percent_op_match): New struct, lookup table for %some_reloc().
	(my_getSmallParser): New function, parses nested percent_ops also.
	(my_getSmallExpression): Rewite to support nested percent_ops.
2001-10-10 00:54:53 +00:00
Thiemo Seufer
d6bc6245d6 * config/tc-mips.c
(load_address): Support both 32- and 64-bit addresses.
	(macro): Call load_register correctly. Expand 64-bit loads ans stores.
	(macro2): Call load_address correctly.
2001-10-10 00:43:36 +00:00
Thiemo Seufer
f668894301 * config/tc-mips.c (prev_insn_reloc_type): Make it an array to hold a
relocation triple.
	(prev_insn_fixp): Likewise.
	(append_insn): Changed prototype to accept a relocation pointer.
	(imm_reloc): Make it an array.
	(offset_reloc): Likewise.
	(md_assemble): Handle triple relocations.
	(append_insn): Likewise. Add handling for some NewABI relocations.
	(mips_no_prev_insn): Handle triple relocations.
	(macro_build): Likewise. Add handling for some NewABI relocations.
	Move handling for the 'u' case to append_insn().
	(mips16_macro_build): Handle triple relocations.
	(macro_build_lui): Likewise. Don't handle _gp_disp as special symbol
	for NewABI.
	(mips_ip): Handle triple relocations.
	(mips16_ip): Likewise.
	(mips_force_relocation): Force handling of triple relocations
	without symbols for NewABI.
	(md_apply_fix): Add handling for some NewABI relocations.
2001-10-04 20:07:00 +00:00
Thiemo Seufer
e013f6904c * config/tc-mips.c (mips_64): Remove.
(mips_target_format): Move downwards in file, use HAVE_64BIT_OBJECTS
	in it.
	(mips_abi_level, mips_abi): New enum.
	(mips_32bit_abi): Remove.
	(HAVE*PRS): Use mips_abi instead of mips_32bit_abi.
	(HAVE_NEWABI): New define.
	(HAVE_64BIT_OBJECTS): New define.
	(HAVE_32BIT_ADDRESSES): Don't return true for 64bit objects.
	(HAVE_64BIT_ADDRESSES): New define, inverse of HAVE_32BIT_ADDRESSES.
	(support_64bit_objects): New prototype.
	(md_begin): Use mips_abi instead of mips_32bit_abi. Don't write
	.reginfo section for n32, use .MIPS.options instead.
	(support_64bit_objects): New function, code from md_parse_option.
	(md_longopts): Add -n32 option.
	(md_parse_option): Use mips_abi instead of mips_32bit_abi/mips64.
	Add -n32 option. Protect with OBJ_ELF.
	(s_mipsset): Use mips_abi instead of mips_32bit_abi.
	(mips_elf_final_processing): Likewise. Don't write .reginfo section
	for n32, use .MIPS.options instead.
2001-10-03 20:30:15 +00:00
H.J. Lu
3882b01078 Locale changes from Bruno Haible <haible@clisp.cons.org>. 2001-09-19 05:33:36 +00:00
Eric Christopher
920acd6218 2001-09-14 Eric Christopher <echristo@redhat.com>
* config/tc-mips.c (md_parse_option): Remove setting mips_64 via
	-mgp32/mgp64.
2001-09-14 20:18:54 +00:00
Thiemo Seufer
233b8738b0 * config/tc-mips.c (append_insn): Don't rightshift BFD_RELOC_16_PCREL. 2001-09-12 21:19:37 +00:00
Alan Modra
e0890092b6 * expr.c (expr): Move code setting "retval" to the end of the loop,
and rearrange for efficiency.  For "PIC code" subtraction, use
	"rightseg" rather than recalculating.  For "symbol OP symbol"
	subtract, set "retval" to absolute_section if symbols in same
	section.
	* symbols.c (resolve_symbol_value): Resolve "sym +/- expr" to an
	O_symbol.  Simplify a +/- b code.  Allow equality and non-equality
	comparisons on symbols from any section.  Allow other comparison
	operators as for subtraction.
	(symbol_equated_reloc_p): New predicate function.
	* symbols.h (symbol_equated_reloc_p): Declare.
	* write.c (adjust_reloc_syms): Use symbol_equated_reloc_p.
	(write_relocs): Likewise.
	(write_object_file): Likewise.
	(relax_segment <rs_machine_dependent>): Ensure segment for
	expression syms is set correctly.
	* config/tc-mips.c (md_estimate_size_before_relax): Likewise.
	* config/tc-i386.c (md_assemble <Output jumps>): Don't lose part
	of a complex expression when setting up frag_var.
2001-09-09 14:01:17 +00:00
Thiemo Seufer
553178e47b Reallow unrestricted use of .set mipsX pseudo-op in gas.
Update testcases accordingly.
2001-09-07 05:54:12 +00:00
Thiemo Seufer
cb56d3d327 * elf32-mips.c (mips_elf_calculate_relocation): Fix overflow handling
of R_MIPS_PC16.

	* config/tc-mips.c (append_insn): Handle BFD_RELOC_16_PCREL.
	(macro_build): Use BFD_RELOC_16_PCREL_S2 only for embedded
	PIC, BFD_RELOC_16_PCREL for the rest.
	(mips_ip): Likewise.
        (md_pcrel_from): return the right offset for the differently shifted
        pcrel relocs.
	(md_apply_fix): Handle BFD_RELOC_16_PCREL.

	* gas/mips/beq.d: Check branches to external labels.
	* gas/mips/beq.s: Likewise.
	* gas/mips/bge.d: Likewise.
	* gas/mips/bge.s: Likewise.
	* gas/mips/bgeu.d: Likewise.
	* gas/mips/bgeu.s: Likewise.
	* gas/mips/blt.d: Likewise.
	* gas/mips/blt.s: Likewise.
	* gas/mips/bltu.d: Likewise.
	* gas/mips/bltu.s: Likewise.
	* gas/mips/elempic.d: Switch from R_MIPS_GNU_REL16_S2 to R_MIPS_PC16.
	* gas/mips/empic.d: Likewise.
	* gas/mips/empic.s: Likewise.
	* gas/mips/telempic.d: Likewise.
	* gas/mips/tempic.d: Likewise.
2001-09-07 05:00:37 +00:00
Eric Christopher
3c02b2abd6 2001-08-31 Eric Christopher <echristo@redhat.com>
Jason Eckhardt  <jle@redhat.com>

	* config/tc-mips.c (mips_cpu_info): Add support for mipsisa32,
	5kc, and 20kc.  Clean up old entries.
2001-08-31 21:06:40 +00:00
Thiemo Seufer
7283eb8605 * tc_mips.c (load_address): Reflect change to MAX_GPREL_OFFSET.
(macro): Reflect change to MAX_GPREL_OFFSET.
2001-08-27 18:48:27 +00:00
Thiemo Seufer
e7d556dfef * tc_mips.h (MAX_GPREL_OFFSET): Change it to the maximum allowed
value, not the word beyond maximum.
	* tc_mips.c (macro_build_lui): Code cleanup.
	(macro): Reflect change to MAX_GPREL_OFFSET.
	(mips_ip): Check explicitly against S_EX_NONE.
	(my_get_SmallExpression): parse for %gp_rel, not %gprel.
	(md_apply_fix): Code cleanup.
2001-08-26 10:42:12 +00:00
Thiemo Seufer
1ff54a84b4 * tc_mips.c (md_begin): Warn about incompatibility between -march=FOO
and -mipsN option, continue with default ISA.
2001-08-21 01:13:05 +00:00
Thiemo Seufer
a6bacc8047 * config/tc-mips.c (md_parse_option): #ifdef the
traditional/non-traditional names as it is done in mips_target_format.
2001-08-21 00:59:48 +00:00
H.J. Lu
e87a02842a 2001-08-18 H.J. Lu <hjl@gnu.org>
* config/tc-mips.c (show): Add the missing prototype.
2001-08-18 18:03:24 +00:00
Thiemo Seufer
fb1b323293 * config/tc-mips.c (S_EX_*): New enum for my_getSmallExpression()
return values.
	(mips_ip): Use the new return values instead of characters. Add
	support for %higher and %highest.
	(LP): Remove.
	(RP): Remove.
	(my_getSmallExpression): Make parsing case insensitive and more
	reliable. Add support for %higher and %highest. Further support	to
	parse %gprel and %neg is implemented but currently deactivated.
2001-08-18 17:24:52 +00:00
Thiemo Seufer
be00bdddad Set MIPS n32 ABI flag in ELF header if appropriate. 2001-08-16 21:48:28 +00:00
Thiemo Seufer
07ae3efa01 Remove obsolete special handling of 64bit Relocations. 2001-08-16 15:12:09 +00:00
Kazu Hirata
f72c8c98df * config/tc-mips.c: Fix a comment typo. 2001-08-11 15:15:15 +00:00
Richard Sandiford
ea1fb5dc3b * config/tc-mips.c (move_register): New function.
(macro_build): Remove OPCODE_IS_MEMBER's gp32 argument.
	(mips_ip): Likewise.
	(macro2): Use move_register rather than macro_build for moves.
	(mips16_macro): Likewise.
	(macro): Likewise.  Handle M_MOVE.
2001-08-10 16:24:32 +00:00
Thiemo Seufer
38487616e6 Replace a bunch of magic constants in tc-mips.c with their proper
defines from mips.h.
2001-08-07 13:22:46 +00:00
Thiemo Seufer
9a41af6410 Some formatting fixes and assorted cleanup in tc-mips.c. 2001-08-07 13:15:26 +00:00
Thiemo Seufer
6dce9e24b3 * config/tc-mips.c (md_begin): Take -mcpu value into account even when
-mipsX is specified. Make both -mcpu/-march and -mcpu/-mtune pairs
	mutually exclusive (if they are different).
	(md_parse_option): Warn if an -march/-mtune/-mcpu/-m<cpu> option is
	set more than once.
2001-08-07 12:46:22 +00:00
Richard Sandiford
236bd878b5 * config/tc-mips.c (md_apply_fix): Don't subtract the symbol value
from GPREL addends.
2001-08-03 18:33:34 +00:00
Richard Sandiford
ca4e0257d1 * doc/c-mips.tex (-mgp32, -mfp32): Added -mfp32, unified with -mgp32.
* config/tc-mips.c (mips_fp32, mips_32bit_abi): New static variables.
	(md_long_opts): Add -mfp32 option.
	(md_parse_option): Handle it.  Set mips_32bit_abi given -mabi=32.
	(md_show_usage): Show usage for -mfp32 and -mgp32.
	(HAVE_32BIT_GPRS, HAVE_32BIT_FPRS): New macros.
	(HAVE_64BIT_GPRS, HAVE_64BIT_FPRS): New macros, inverse of the above.
	(HAVE_32BIT_ADDRESSES): New macro.
	(load_register): Use HAVE_32BIT_GPRS to determine the register width.
	(load_address): Use HAVE_32BIT_ADDRESSES to determine the address size.
	(s_cprestore, s_cpadd): Likewise.
	(macro): Use HAVE_32BIT_GPRS to determine the width of registers
	used in branch and M_LI_D macros.  Use HAVE_64BIT_FPRS to determine
	the width registers used in M_LI_DD macros.  Use HAVE_32BIT_ADDRESSES
	to determine the width of addresses in load, store and jump macros.
	(macro2): Use HAVE_32BIT_GPRS to determine the width of registers
	used in set instructions; do not check the address size for them.
	Use HAVE_32BIT_ADDRESSES to determine the width of addresses in
	unaligned load and store macros.
	(mips_ip): Use the new macros to check the width of a register when
	processing float constants.  Force a constant into memory if it is
	destined for an FPR and the FPRs are wider than the GPRs.  Warn about
	odd FPR numbers if HAVE_32BIT_FPRS.  Use HAVE_32BIT_GPRS rather
	than mips_gp32 to select synthetic instructions.
	(macro_build): Use HAVE_32BIT_GPRS rather than mips_gp32 to select
	synthetic instructions.
2001-08-02 10:15:24 +00:00
H.J. Lu
46bac6de18 2001-07-25 H.J. Lu <hjl@gnu.org>
* config/tc-mips.c (md_estimate_size_before_relax): Make sure
	we treat weak like extern only for ELF.
	(mips_fix_adjustable): Make sure we don't adjust extern/weak
	symbols only for ELF.
2001-07-25 22:27:46 +00:00
Chris Demetriou
2f4dcb115b 2001-07-25 Chris Demetriou <cgd@broadcom.com>
* config/tc-mips.c: Fix spelling error in comment.
2001-07-25 20:34:39 +00:00
Alan Modra
ac62c3468d * symbols.c (S_GET_VALUE): Don't treat O_constant and local
symbols specially.  Always resolve, adding fr_address to value.
	* write.c (write_object_file): Don't add fr_address to sym values.
	(relax_frag): Likewise.
	(relax_segment): Likewise.
	* config/obj-ieee.c (do_symbols): Likewise.
	* config/tc-cris.c (md_convert_frag): Likewise.
	* config/tc-fr30.c (md_convert_frag): Likewise.
	* config/tc-i386.c (md_convert_frag): Likewise.
	* config/tc-m32r.c (md_convert_frag): Likewise.
	* config/tc-m68hc11.c (md_convert_frag): Likewise.
	* config/tc-mcore.c (md_convert_frag): Likewise.
	* config/tc-mips.c (mips16_extended_frag): Likewise.
	* config/tc-ns32k.c (md_convert_frag): Likewise.
	* config/tc-m68k.c (md_convert_frag_1): Likewise.
	(BRANCHBWL, BRABSJUNC, BRABSJCOND, BRANCHBW, FBRANCH, DBCCLBR,
	DBCCABSJ, PCREL1632, PCINDEX, ABSTOPCREL): Decrement.
	(md_relax_table): Remove first four entries.  Format.
	(md_estimate_size_before_relax): Remove old_fix.  Don't bother
	setting fr_var.  Simplify byte branch checks.
2001-07-23 13:03:40 +00:00
H.J. Lu
2b3c5a5dc1 2001-07-22 H.J. Lu <hjl@gnu.org>
* config/tc-mips.c (s_mips_end): Remove unused variables.
	(s_mips_frame): Add ATTRIBUTE_UNUSED.
2001-07-22 18:11:29 +00:00
Eric Christopher
18ae5d728b 2001-07-04 Eric Christopher <echristo@redhat.com>
* doc/c-mips.texi (MIPS Opts): Document 12000 as valid cpu.

	* config/tc-mips.c (mips_cpu_info_table): Add rm5200, rm5231, rm5261,
	and rm5721 as valid cpu strings.
	(md_show_usage): Add rm5200, rm5231, rm5261, rm5721.
2001-07-04 12:32:07 +00:00
Richard Sandiford
7461da6e23 [gas]
* config/tc-mips.c (md_apply_fix): Prevent addend from becoming zero
	if it's expected to be non-zero.
[gas/testsuite]
	* gas/mips/elf-rel3.s: Add zero word to end of file.
2001-07-04 09:49:29 +00:00
Eric Christopher
ec68c924f0 2001-06-28 Eric Christopher <echristo@redhat.com>
H.J. Lu  <hjl@gnu.org>

        * config/tc-mips.c (mips_arch): New. Use mips_arch instead
        of mips_cpu for the ISA selection.
        (md_longopts): Add OPTION_MARCH and OPTION_MTUNE.
        (md_parse_option): Handle OPTION_MARCH and OPTION_MTUNE.
	(mips_tune): New.  Use mips_tune for scheduling and optimization
	issues.
	(append_insn): Use mips_tune and mips_arch.
	(macro_build): Ditto.
	(mips_ip): Ditto.
	(md_begin): Handle mips_arch, mips_tune and mips_cpu.  For
	backwards compatability mips_cpu generates arch and tune.
	(md_show_usage): Document new behavior.

	* doc/c-mips.texi (MIPS Opts): Document -march and -mtune.
	Deprecate -mcpu.

	* NEWS: Update.

2001-06-28  Eric Christopher  <echristo@redhat.com>

	* gas/mips/usd.d: Change for march/mtune.
	* gas/mips/ulh-xgot.d: Ditto.
	* gas/mips/uld.d: Ditto.
	* gas/mips/trunc.d: Ditto.
	* gas/mips/rol.d: Ditto.
	* gas/mips/nodelay.d: Ditto.
	* gas/mips/mul.d: Ditto.
	* gas/mips/mul-ilocks.d: Ditto.
	* gas/mips/trap20.d: Ditto.
	* gas/mips/mips4.d: Ditto.
	* gas/mips/mips16.d: Ditto.
	* gas/mips/lif-xgot.d: Ditto.
	* gas/mips/lif-svr4pic.d: Ditto.
	* gas/mips/ld-xgot.d: Ditto.
	* gas/mips/ld-svr4pic.d: Ditto.
	* gas/mips/ld-ilocks-addr32.d: Ditto.
	* gas/mips/lb-xgot.d: Ditto.
	* gas/mips/jal-xgot.d: Ditto.
	* gas/mips/jal-svr4pic.d: Ditto.
	* gas/mips/delay.d: Ditto.
	* gas/mips/lb-xgot-ilocks.d: Ditto.
	* gas/mips/div.d: Ditto.
	* gas/mips/break20.d: Ditto.
	* gas/mips/delay.d: Ditto.
	* gas/mips/elf_e_flags3.d: Ditto.
	* gas/mips/elf_e_flags4.d: Ditto.
	* gas/mips/lineno.d: Ditto.
	* gas/mips/mips16.d: Ditto.
	* gas/mips/mips4.d: Ditto.
	* gas/mips/mips4010.d: Ditto.
	* gas/mips/mips4650.d: Ditto.
2001-06-29 21:27:43 +00:00
H.J. Lu
63486801dd 2001-06-11 H.J. Lu <hjl@gnu.org>
* NEWS: Updated for the new -n option for the MIPS assembler.

	* config/tc-mips.c (md_show_usage): Add -n.

	* doc/as.texinfo: Document the new -n option.
	* doc/c-mips.texi: Likewise.
	* doc/as.1: Regenerated.
2001-06-11 20:40:36 +00:00
H.J. Lu
39c0a33100 2001-06-08 H.J. Lu <hjl@gnu.org>
* config/tc-mips.c (warn_nops): New variable. Set to 0 to
	disable warning about all NOPS that the assembler generates.
	(macro): Warn NOPS generated only if warn_nops is not 0.
	(md_shortopts): Add `n'.
	(md_parse_option): Set warn_nops to 1 for `n'.
2001-06-09 05:24:39 +00:00
H.J. Lu
268f6bed84 2001-06-08 H.J. Lu <hjl@gnu.org>
* config/tc-mips.c (mips_ip): Properly handle illegal operands.
2001-06-09 05:01:29 +00:00
H.J. Lu
ea4ff978a2 2001-06-08 H.J. Lu <hjl@gnu.org>
* config/tc-mips.c (md_apply_fix): Don't adjust common
	extern/weak symbols for ELF.
	(md_estimate_size_before_relax): Treat weak like extern for
	ELF.
	(mips_fix_adjustable): Don't adjust extern/weak symbols for
	ELF.
2001-06-09 03:28:04 +00:00
Alan Modra
98aa84af0e * Makefile.am: 'som' is not wrongly spelled 'some'.
* Makefile.in: Regenerate.

	* config/tc-mips.c (mips16_mark_labels): Reduce number of calls to
	S_GET_VALUE by using a temp.
	(append_insn): Likewise, and for S_GET_VALUE too.
	(mips_emit_delays): Likewise.
	(my_getExpression): Likewise.
	(md_apply_fix): Likewise.  Use "valueT" rather than "long" for "value".
	(mips16_extended_frag): Remove code concerned with avoiding
	locking in a frag address now that symbols are not finalized until
	relaxation is complete.  Cater for first relaxation pass having
	bogus addresses.  Use relax_marker to reliably determine whether a
	symbol frag has been reached on the current pass.
2001-06-08 06:07:13 +00:00
H.J. Lu
add565213d 2001-06-07 H.J. Lu <hjl@gnu.org>
* config/tc-mips.c (mips_pseudo_table): Add "extern" if
	MIPS_STABS_ELF is defined.
2001-06-07 16:52:19 +00:00
Nick Clifton
d1cf510e5e Add MIPS r12k support 2001-05-23 17:26:40 +00:00
Alan Modra
6386f3a767 * symbols.c (resolve_symbol_value): Remove "finalize" param,
instead use finalize_syms directly.  Don't treat expressions
	specially with regard to finalize_syms.  Update calls to self.
	(resolve_local_symbol): Update call to resolve_symbol_value.
	(S_GET_VALUE): Likewise.  Return resolve_symbol_value if
	!finalize_syms.
	* symbols.h (resolve_symbol_value): Update prototype.
	* config/obj-aout.c (obj_crawl_symbol_chain): Update call
	to resolve_symbol_value.
	* config/obj-bout.c (obj_crawl_symbol_chain): Likewise.
	* config/obj-coff.c (do_relocs_for): Likewise.
	(yank_symbols): Likewise.
	(fixup_segment): Likewise.
	* config/obj-vms.c (obj_crawl_symbol_chain): Likewise.
	* config/tc-mips.c (md_convert_frag): Likewise.
	* config/tc-ppc.c (ppc_frob_symbol): Likewise.
	(ppc_fix_adjustable): Likewise.
	* dwarf2dbg.c (dwarf2dbg_estimate_size_before_relax): Likewise.
	(dwarf2dbg_convert_frag): Likewise.
	* ehopt.c (eh_frame_estimate_size_before_relax): Likewise.
	(eh_frame_convert_frag): Likewise.
	* expr.c (make_expr_symbol): Likewise.
	* write.c (adjust_reloc_syms): Likewise.
	(write_object_file): Likewise.
	(relax_segment): Likewise.
	(fixup_segment): Likewise.
	(finalize_syms): Init to zero, and update comment.
	(write_object_file): Set finalize_syms to 1 rather than 2.
	* doc/internals.texi (sy_value): Mention finalize_syms.
	(S_GET_VALUE): Remove restriction on when S_GET_VALUE can be called.
2001-05-22 10:23:50 +00:00
H.J. Lu
f4ddc5e633 2001-04-29 Keith M Wesolowski <wesolows@foobazco.org>
* config/tc-mips.c (md_parse_option): Also accept
	elf64-tradbigmips and elf64-tradlittlemips for OPTION_64.
2001-04-29 17:58:39 +00:00
H.J. Lu
af9539e4e5 2001-04-07 Steven J. Hill <sjhill@cotw.com>
* config/tc-mips.c: Support ELF64 for traditional MIPS targets.

	* Makefile.am: (TARG_ENV_HFILES): Add tc-mips.h.
	* Makefile.in: Regenerated.

	* configure.in: Use traditional MIPS targets for Linux/MIPS.
	* configure: Regenerated.
2001-04-08 05:09:21 +00:00
Alan Modra
1a5447b835 Pass finalize_syms on calls to resolve_symbol_value. 2001-03-30 07:07:11 +00:00
Nick Clifton
f7e42eb4af Fix copyright notices 2001-03-08 23:24:26 +00:00
Nick Clifton
9117d2197e Apply several patches from Maciej W. Rozycki 2001-02-11 23:11:41 +00:00
Chris Demetriou
0f074f60a4 2001-02-10 Chris Demetriou <cgd@broadcom.com>
* config/tc-mips.c (md_parse_option): Don't try to compile
        ELF-only option code if not ELF.
2001-02-10 21:41:12 +00:00
Richard Henderson
0a9ef43907 * as.h (rs_align_test): New.
* frags.c (NOP_OPCODE): Move default from read.c.
	(MAX_MEM_FOR_RS_ALIGN_CODE): New default.
	(frag_align_code): New.
	* frags.h (frag_align_code): Declare.
	* read.c (NOP_OPCODE): Remove.
	(do_align): Use frag_align_code.
	* write.c (NOP_OPCODE): Remove.
	(get_recorded_alignment): New.
	(cvt_frag_to_fill): Handle rs_align_test.
	(relax_segment): Likewise.
	(subsegs_finish): Align last subseg in section to the
	section alignment.  Use frag_align_code.
	* write.h (get_recorded_alignment): Declare.
	* config/obj-coff.c (size_section): Handle rs_align_test.
	(fill_section, fixup_mdeps): Likewise.
	(write_object_file): Use frag_align_code.

	* config/tc-alpha.c (alpha_align): Use frag_align_code.
	(alpha_handle_align): New.
	* config/tc-alpha.h (HANDLE_ALIGN): New.
	(MAX_MEM_FOR_RS_ALIGN_CODE): New.

	* config/tc-i386.h (md_do_align): Use frag_align_code.
	(MAX_MEM_FOR_RS_ALIGN_CODE): New.

	* config/tc-ia64.c (ia64_md_do_align): Don't do code alignment.
	(ia64_handle_align): New.
	* config/tc-ia64.h (HANDLE_ALIGN): New.
	(MAX_MEM_FOR_RS_ALIGN_CODE): New.

	* config/tc-m32r.c (m32r_do_align): Remove.
	(m32r_handle_align): New.
	(fill_insn): Use frag_align_code.
	* config/tc-m32r.h (md_do_align): Remove.
	(HANDLE_ALIGN, MAX_MEM_FOR_RS_ALIGN_CODE): New.
	* config/tc-m88k.c, config/tc-m88k.h: Similarly.
	* config/tc-mips.c, config/tc-mips.h: Similarly.

	* config/tc-sh.c (sh_cons_align): Use rs_align_test.
	(sh_handle_align): Likewise.  Handle rs_align_code.
	(sh_do_align): Remove.
	* config/tc-sh.h (md_do_align): Remove.
	(MAX_MEM_FOR_RS_ALIGN_CODE): New.

	* config/tc-sparc.c (sparc_cons_align): Use rs_align_test.
	(sparc_handle_align): Likewise.  Handle rs_align_code.
	* config/tc-sparc.h (md_do_align): Remove.
	(MAX_MEM_FOR_RS_ALIGN_CODE): New.
2000-12-28 10:07:56 +00:00
Nick Clifton
e972090a04 Fix formatting 2000-12-12 19:29:24 +00:00
Kazu Hirata
beae10d5eb 2000-12-05 Kazu Hirata <kazu@hxi.com>
* config/tc-mips.c: Fix formatting.
2000-12-05 18:51:08 +00:00
Nick Clifton
c6c98b3833 Add MIPS SB1 machine 2000-12-02 01:10:33 +00:00
Nick Clifton
84ea6cf2c5 Add MIPS V and MIPS 64 machine numbers 2000-12-02 00:55:22 +00:00
Nick Clifton
e7af610e14 Add MIPS32 as a seperate MIPS architecture 2000-12-01 21:35:38 +00:00
Nick Clifton
4372b67322 Improve MIPS32 support 2000-12-01 20:05:32 +00:00
Nick Clifton
3dacdf2eb1 When calculating offsets, don't accept as constant the difference between the
addresses of symbols in two different sections.
2000-12-01 19:06:15 +00:00
Kazu Hirata
82efde3a56 2000-09-20 Kazu Hirata <kazu@hxi.com>
* config/tc-m32r.c: Fix formatting.
	* config/tc-m32r.h: Likewise.
	* config/tc-m68851.h: Likewise.
	* config/tc-m68hc11.c: Likewise.
	* config/tc-m68hc11.h: Likewise.
	* config/tc-m88k.c: Likewise.
	* config/tc-mips.c: Likewise.
	* config/tc-mips.h: Likewise.
	* config/tc-mn10200.h: Likewise.
	* config/tc-mn10300.h: Likewise.
2000-09-20 22:05:08 +00:00
Nick Clifton
156c2f8bf7 Add support for the MIPS32 2000-09-14 01:47:38 +00:00
Kazu Hirata
bdaaa2e114 2000-09-07 Kazu Hirata <kazu@hxi.com>
* config/tc-mips.c: Fix formatting.
2000-09-07 12:45:56 +00:00
Nick Clifton
d547a75e6b *** empty log message *** 2000-07-14 22:28:24 +00:00
Nick Clifton
119d663aa4 Add new command line switch --no-construct-floats 2000-07-14 22:23:33 +00:00
Nick Clifton
bc0d738a8d Fix comments. 2000-07-07 16:58:25 +00:00
Ulf Carlsson
8614eeee67 2000-07-01 Koundinya K <kk@ddeorg.soft.net>
* configure.in: Add entry for mips-*-sysv4*MP*
        * configure: Rebuild
        * config/tc-mips.c (mips_target_format): Return elf32-tradbigmips or
        elf32-tradlittlemips for traditional mips targets.
        * config/tc-mips.c (md_estimate_size_before_relax): Duplicate the
        test for Link Once sections as in adjust_reloc_syms.
        * config/te-tmips.h: New file for traditional mips targets. Define
        TE_TMIPS.
2000-07-02 01:18:49 +00:00
Aldy Hernandez
2ae7e77be8 16 bit immediate expr support for mips 2000-06-28 19:06:25 +00:00
Nick Clifton
b946ec34e6 Add -mcpu=rmXXXX switch. 2000-06-16 19:11:27 +00:00
Alan Modra
63a0b638d4 Don't treat `;' as a line separator by default.
Explicitly mention `;' in line_separator_chars in each backend.
2000-06-09 00:00:04 +00:00
Nick Clifton
43841e9116 Fix compile time warning messages. 2000-05-29 22:05:27 +00:00
Alan Modra
426b040396 (md_estimate_size_before_relax): Use the external version of
the relocation for weak symbols.
2000-05-11 01:48:09 +00:00
Alan Modra
e799a69521 Use record_alignment, not bfd_set_section_alignment. 2000-04-25 10:02:20 +00:00
Geoffrey Keating
bb2d6cd7b1 In bfd/:
* elf32-mips.c (mips_elf_next_relocation): Rename from
	mips_elf_next_lo16_relocation, and generalize to look
	for any relocation type.
	(elf_mips_howto_table): Make R_MIPS_PC16 pcrel_offset.
	(elf_mips_gnu_rel_hi16): Howto for R_MIPS_GNU_REL_HI16.
	(elf_mips_gnu_rel_lo16): Howto for R_MIPS_GNU_REL_LO16.
	(elf_mips_gnu_rel16_s2): Howto for R_MIPS_GNU_REL16_S2.
	(elf_mips_gnu_pcrel64): Howto for R_MIPS_PC64.
	(elf_mips_gnu_pcrel32): Howto for R_MIPS_PC32.
	(bfd_elf32_bfd_reloc_type_lookup): Add new relocs.
	(mips_rtype_to_howto): Likewise.
	(mips_elf_calculate_relocation): Handle new relocs.
	(_bfd_mips_elf_relocate_section): REL_HI16/REL_LO16 relocs
	are paired.  The addend for R_MIPS_GNU_REL16_S2
	is shifted right two bits.
In gas/:
	* config/tc-mips.c (mips_ip): Don't put stuff in .rodata
	when embedded-pic.

	* config/tc-mips.c (SWITCH_TABLE): The ELF embedded-pic
 	implementation doesn't have special handling for switch
 	statements.
	(macro_build): Allow for code in sections other than .text.
	(macro): Likewise.
	(mips_ip): Likewise.
	(md_apply_fix): Do pc-relative relocation madness for MIPS ELF.
  	Don't perform relocs if we will be outputting them.
	(tc_gen_reloc): For ELF, just use fx_addnumber for pc-relative
 	relocations.  Allow BFD_RELOC_16_PCREL_S2 relocs when
 	embedded-pic.
In gas/testsuite/:
	* gas/mips/empic.d: New file.
	* gas/mips/empic.s: New file.
	* gas/mips/mips16-e.d: New file.
	* gas/mips/mips16-e.s: New file.
	* gas/mips/mips16-f.d: New file.
	* gas/mips/mips16-f.s: New file.
	* gas/mips/mips.exp: Add empic, mips16-e.  Add mips16-f as an
	expected failure.
In include/elf:
	* mips.h: Add R_MIPS_GNU_REL_HI16, R_MIPS_GNU_REL_LO16,
 	R_MIPS_GNU_REL16_S2, R_MIPS_PC64 and R_MIPS_PC32 relocation
 	numbers.
2000-03-11 02:16:25 +00:00
Nick Clifton
056350c6bd Add support for WinCE targeted toolchains. 2000-02-24 19:49:18 +00:00
Andrew Haley
c97ef257d3 1999-12-30 Andrew Haley <aph@cygnus.com>
* config/tc-mips.c (mips_gp32): New variable.
	(macro_build) Use mips_gp32.
	(mips_ip): Ditto.
	(md_longopts): Add "-mgp32" and "-mgp64".
	(md_parse_option): Add OPTION_GP32 and OPTION_GP64.
2000-02-22 14:43:54 +00:00
Catherine Moore
6b76fefe3b * config/tc-mips.c (MF_HILO_INSN): Define.
(mips_7000_hilo_fix): Declare.
           (append_insn): Conditionally insert nops after an mfhi/mflo insn.
           (md_parse_option): Check for 7000_HILO_FIX options.
           (OPTION_M7000_HILO_FIX): Define.
           (OPTION_NO_M7000_HILO_FIX): Define.
           * doc/c-mips.texi (-mfix7000): Describe.
2000-02-21 20:00:33 +00:00
Clinton Popetz
a19d8eb03e 2000-01-13 Clinton Popetz <cpopetz@cygnus.com>
* config/tc-mips.c (mips_do_align): New function.
        * config/tc-mips.h (md_do_align): Define.
2000-01-14 17:58:29 +00:00
Gavin Romig-Koch
2bd7f1f332 For include/opcode:
* mips.h (OPCODE_IS_MEMBER): New.

For gas:

	* config/tc-mips.c (macro_build): Use OPCODE_IS_MEMBER.
	(mips_ip): Use OPCODE_IS_MEMBER.

For opcodes:

	* mips-dis.c (_print_insn_mips): Use OPCODE_IS_MEMBER.
1999-11-01 19:29:55 +00:00
Gavin Romig-Koch
9ce8a5dd8e * config/tc-mips.c (ISA_HAS_COPROC_DELAYS) : New.
(ISA_HAS_64_BIT_REGS) New.
	(gpr_interlocks,md_begin,reg_needs_delay,append_insn,
	mips_emit_delays,macro_build,load_register,load_addresss,
	macro,macro2,mips_ip,s_cprestore,s_cpadd): Simplify
	and/or use new ISA_xxx macros in expressions involving
	ISA, particularly mips_opts.isa.
1999-10-21 13:23:31 +00:00
Geoffrey Keating
fba2b7f93e * config/tc-mips.c (nopic_need_relax): Allow for the
.sdata.foo sections generated by -fdata-sections,
and for the .gnu.linkonce.s sections generated by C++.
1999-09-28 04:13:25 +00:00
Ian Lance Taylor
f173e82ec8 * config/tc-mips.c (append_insn): Correct INSN_SYNC test. From
Ralf Baechle <ralf@uni-koblenz.de>.
1999-08-03 15:22:38 +00:00
Ian Lance Taylor
d7ba4a779e Based on patches from John W. Woznack <jwoznack@concentric.net>:
* itbl-ops.c (itbl_get_reg_val): Add pval parameter.  Return
	indication of success rather than a value.
	(itbl_get_val): Likewise.
	(itbl_get_field): Use strcspn.  Change delimiters to include
	parens.
	* itbl-ops.h (itbl_get_reg_val): Update declaration.
	(itbl_get_val): Likewise.
	* config/tc-mips.c (mips_ip): Update call to itbl_get_reg_val.
1999-06-10 20:35:50 +00:00
Ian Lance Taylor
49309057b4 Add support for storing local symbols in a small structure to save
memory when assembling large files.
	* as.h: Don't include struc-symbol.h.
	(symbolS): Add typedef.
	* symbols.c: Include struc-symbol.h.
	(local_hash): New static variable.
	(save_symbol_name): New static function, from symbol_create.
	(symbol_create): Call save_symbol_name.
	(local_symbol_count): New static variable.
	(local_symbol_conversion_count): Likewise.
	(LOCAL_SYMBOL_CHECK): Define.
	(local_symbol_make): New static function.
	(local_symbol_convert): New static function.
	(colon): Handle local symbols.  Create local symbol for local
	label name.
	(symbol_table_insert): Handle local symbols.
	(symbol_find_or_make): Create local symbol for local label name.
	(symbol_find_base): Check for local symbol.
	(symbol_append, symbol_insert): Check for local symbols.
	(symbol_clear_list_pointers, symbol_remove): Likewise.
	(verify_symbol_chain): Likewise.
	(copy_symbol_attributes): Likewise.
	(resolve_symbol_value): Handle local symbols.
	(resolve_local_symbol): New static function.
	(resolve_local_symbol_values): New function.
	(S_GET_VALUE, S_SET_VALUE): Handle local symbols.
	(S_IS_FUNCTION, S_IS_EXTERNAL, S_IS_WEAK, S_IS_COMMON): Likewise.
	(S_IS_DEFINED, S_IS_DEBUG, S_IS_LOCAL, S_GET_NAME): Likewise.
	(S_GET_SEGMENT, S_SET_SEGMENT, S_SET_EXTERNAL): Likewise.
	(S_CLEAR_EXTERNAL, S_SET_WEAK, S_SET_NAME): Likewise.
	(symbol_previous, symbol_next): New functions.
	(symbol_get_value_expression): Likewise.
	(symbol_set_value_expression): Likewise.
	(symbol_set_frag, symbol_get_frag): Likewise.
	(symbol_mark_used, symbol_clear_used, symbol_used_p): Likewise.
	(symbol_mark_used_in_reloc): Likewise.
	(symbol_clear_used_in_reloc, symbol_used_in_reloc_p): Likewise.
	(symbol_mark_mri_common, symbol_clear_mri_common): Likewise.
	(symbol_mri_common_p): Likewise.
	(symbol_mark_written, symbol_clear_written): Likewise.
	(symbol_written_p): Likewise.
	(symbol_mark_resolved, symbol_resolved_p): Likewise.
	(symbol_section_p, symbol_equated_p): Likewise.
	(symbol_constant_p): Likewise.
	(symbol_get_bfdsym, symbol_set_bfdsym): Likewise.
	(symbol_get_obj, symbol_set_obj): Likewise.
	(symbol_get_tc, symbol_set_tc): Likewise.
	(symbol_begin): Initialize local_hash.
	(print_symbol_value_1): Handle local symbols.
	(symbol_print_statistics): Print local symbol statistics.
	* symbols.h: Include "struc-symbol.h" if not BFD_ASSEMBLER.
	Declare new symbols.c functions.  Move many declarations here from
	struc-symbol.h.
	(SYMBOLS_NEED_BACKPOINTERS): Define if needed.
	* struc-symbol.h (SYMBOLS_NEED_BACKPOINTERS): Don't set.
	(struct symbol): Move bsym to make it clearly the first field.
	Remove TARGET_SYMBOL_FIELDS.
	(symbolS): Don't typedef.
	(struct broken_word): Remove.
	(N_TYPE_seg, seg_N_TYPE): Move to symbol.h.
	(SEGMENT_TO_SYMBOL_TYPE, N_REGISTER): Likewise.
	(symbol_clear_list_pointers): Likewise.
	(symbol_insert, symbol_remove): Likewise.
	(symbol_previous, symbol_append): Likewise.
	(verify_symbol_chain, verify_symbol_chain_2): Likewise.
	(struct local_symbol): Define.
	(local_symbol_converted_p, local_symbol_mark_converted): Define.
	(local_symbol_resolved_p, local_symbol_mark_resolved): Define.
	(local_symbol_get_frag, local_symbol_set_frag): Define.
	(local_symbol_get_real_symbol): Define.
	(local_symbol_set_real_symbol): Define.
	Define.
	* write.c (write_object_file): Call resolve_local_symbol_values.
	* config/obj-ecoff.h (OBJ_SYMFIELD_TYPE): Define.
	(TARGET_SYMBOL_FIELDS): Don't define.
	* config/obj-elf.h (OBJ_SYMFIELD_TYPE): Add local field.  If
	ECOFF_DEBUGGING, add ECOFF fields.
	(ELF_TARGET_SYMBOL_FIELDS, TARGET_SYMBOL_FIELDS): Don't define.
	* config/obj-multi.h (struct elf_obj_sy): Add local field.  If
	ECOFF_DEBUGGING, add ECOFF fields.
	(ELF_TARGET_SYMBOL_FIELDS, TARGET_SYMBOL_FIELDS): Don't define.
	(ECOFF_DEBUG_TARGET_SYMBOL_FIELDS): Don't define.
	* config/tc-mcore.h: Don't include struc-symbol.h.
	(TARGET_SYMBOL_FIELDS): Don't define.
	(struct mcore_tc_sy): Define.
	(TC_SYMFIELD_TYPE): Define.
	* Many files: Use symbolS instead of struct symbol.  Use new
	accessor functions rather than referring to symbolS fields
	directly.
	* read.c (s_mri_common): Don't add in value of line_label.
	* config/tc-mips.c (md_apply_fix): Correct parenthesization when
	checking for SEC_LINK_ONCE.
	* config/tc-sh.h (sh_fix_adjustable): Declare.
1999-06-03 00:29:48 +00:00
Doug Evans
d9a622197d -Wchar-subscripts cleanup
* listing.c (listing_newline): Use unsigned char variable, so
 	calls to isascii,iscntrl are correct.
	* atof-generic.c (atof_generic): Cast arg to isdigit, et. al. with
	(unsigned char).
	* ecoff.c (ecoff_directive_ent,ecoff_stab): Ditto.
	* config/obj-elf.c (obj_elf_vtable_inherit): Ditto.
	* config/tc-mips.c (mips_ip,mips16_ip): Ditto.
	(my_getSmallExpression,get_number,s_mips_ent): Ditto.
1999-05-28 15:28:56 +00:00
Richard Henderson
252b5132c7 19990502 sourceware import 1999-05-03 07:29:11 +00:00