[PATCH, POINTER] Let gas support mips64

Thiemo Seufer ica2_ts@csv.ica.uni-stuttgart.de
Mon Jun 18 15:53:00 GMT 2001


Hi All,

This patch adds support for mips64 to gas. Testcases are not provided for
64bit case because of the necessary bfd and binutils changes (which aren't
done in a acceptable way yet).

btw:
At least for configuration mips64-linux, current CVS fails the
'make check' in gas for test 'MIPS ELF reloc 3'. The patch does not
change this behaviour.


Thiemo


2001-06-18  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	/gas/ChangeLog
	* config/tc-mips.h (MAX_GPREL_OFFSET): Changed from the first invalid
	value to the maximum value.
	* config/tc-mips.c (USES_32BIT_REGS): Define.
	(USES_64BIT_ADDRESSES): Define.
	(S_EX_*): Declare.
	(append_insn): Add handling of mips64 relocs.
	(macro_build): Likewise. Replace numeric constants by defines. Move
	insertion of immediate constants in case 'u' to append_insn().
	(load_register): Change register width check to use USES_32BIT_REGS.
	Fix handling of sign bit in 64bit constants.
	(load_address): Add parameters required to handle 64bit addresses.
	Add handling of 64bit addresses. Change register width check to use
	USES_32BIT_REGS. Change check for MAX_GPREL_OFFSET to fit the new
	value. Formatting.
	(macro): Change register width check to use USES_32BIT_REGS.
	Formatting. Typos. Add handling of 64bit addresses. Some code cleanup.
	Change check for MAX_GPREL_OFFSET to fit the new value.
	(macro2): Formatting. Change register width check to use
	USES_32BIT_REGS. Warn on used $at in M_UL[DW] case. Change calls to
	load_address().	Mark M_USD_A as double value.
	(mips16_macro): Formatting.
	(mips_ip): Replace numeric constants by defines. Change register width
	check to use USES_32BIT_REGS. Use new return values of
	my_getSmallExpression() instead of characters. Add mips64 relocation
	handling.
	(LP): Remove.
	(RP): Remove.
	(my_getSmallExpression): Rewritten to allow arbitrary upper/lowercase,
	return more useful values and support mips64 relocations.
	(md_parse_option): Use TE_TMIPS conditional as in other places.
	(md_apply_fix): Preliminary support for mips64 relocations.
	Fix bad JMP argument generation.
	(s_cprestore): Change register width check to use USES_32BIT_REGS.
	(s_cpadd): Likewise.
	(md_estimate_size_before_relax): Code cleanup.
	(md_obj_end): Remove ugly `' in message string. :-)
	(s_mips_end): Remove unused variables.
	(s_mips_ent): Remove ugly `' in message string.


Because of it's size (82689), the actual patch is provided at
http://www.csv.ica.uni-stuttgart.de/homes/ths/linux-mips/cygnus-gas-mips64.diff



More information about the Binutils mailing list