2004-12-29  Alan Modra  <amodra@bigpond.net.au>

	PR gas/619
	* read.c (s_comm_internal): Don't zero end of name until size
	expression has been parsed.

2004-12-25  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/tc-avr.c (mcu_types): Move attiny{13,2313} from avr4 to avr2.

2004-12-23  Tomer Levi  <Tomer.Levi@nsc.com>

	* config/tc-crx.c: Support 'bcop' relaxation (dealt as in 'cmp&branch'
	case).

2004-12-22  Ian Lance Taylor  <ian@airs.com>

	* configure.tgt: New.
	* configure.in: Move setting of cpu_type, fmt, etc., to
	configure.tgt.
	* Makefile.am (CONFIG_STATUS_DEPENDENCIES): Add
	$(srcdir)/configure.tgt.
	* configure, Makefile.in: Rebuild.

2004-12-22  Klaus Rudolph  <lts-rudolph@gmx.de>

	* config/tc-avr.c: Add support for the new R_AVR_LDI, R_AVR_6 and
	R_AVR_6_ADIW relocs for the LDI, ADIW/SBIW and LDD/STD
	instructions.
	(avr_offset_expression): New function to parse offsets for LDI
	instructions.
	(avr_operand): Use it.
	(md_apply_fix3): Generate the relocs.

2004-12-16  Andrew Stubbs  <andrew.stubbs@st.com>

	* config/tc-sh64.c (shmedia_md_apply_fix3): Add missing
	BFD_RELOC_SH_IMMS10BY8 relocation.

	* config/tc-sh64.c (shmedia_build_Mytes): Emit an error message rather
	than just ignoring bad code.

2004-12-16  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-v850.c (handle_lo16): New function.
	(v850_reloc_prefix): Use it to check lo().
	(md_assemble, md_apply_fix3): Handle BFD_RELOC_V850_LO16_SPLIT_OFFSET.

2004-12-14  P.J. Darcy  <darcypj@us.ibm.com>

	* configure.in: Add s390x-ibm-tpf support.
	* configure: Regenerate.

2004-12-15 Jan Beulich  <jbeulich@novell.com>

	* config/obj-elf.c (obj_elf_change_section): Only set type and
	attributes on new sections. Emit warning when type of re-declared
	section doesn't match.

2004-12-15 Jan Beulich  <jbeulich@novell.com>

	* dw2gencfi.c (dot.cfi.startproc): Clear cur_cfa_offset so
	'.cfi_startproc simple' doesn't inherit the old value.

2004-12-15  Jan Beulich  <jbeulich@novell.com>

	* dw2gencfi.c (output_cfi_insn): Adjust DW_CFA_def_cfa_sf generation
	to emit a signed and factored offset. Adjust DW_CFA_def_cfa_offset_sf
	generation to emit a factored offset.

2004-12-10  Ian Lance Taylor  <ian@wasabisystems.com>

	* config/tc-mips.c (macro) [M_LA_AB]: Give an error for a offset
	which is too large in the case of NO_PIC without 64-bit
	addresses.

	* config/tc-mips.c (mips_in_shared): New static variable.
	(macro_build_lui): Permit "_gp" if !mips_in_shared.
	(md_longopts): Add -mshared and -mno-shared.
	(md_parse_option): Handle OPTION_MSHARED and OPTION_MNO_SHARED.
	(s_cpload): Implement !mips_in_shared case.
	(s_cpsetup): Likewise.
	* doc/c-mips.texi (MIPS Opts): Document -mno-shared.
	* NEWS: Mention -mno-shared.

2004-12-09  Paul Brook  <paul@codesourcery.com>

	* config/tc-arm.c (s_arm_unwind_fnend): Use R_ARM_PREL31 relocation
	for function start.

2004-12-09  Ian Lance Taylor  <ian@wasabisystems.com>

	* config/tc-mips.c (append_insn): If we emit a nop during a relax
	sequence, increase the size of the sequence.

	* config/tc-mips.c (mips_cpu_info_table): Change "9000" entry to
	use CPU_RM9000.

2004-12-07  Ben Elliston  <bje@gnu.org>

	* read.c (s_align): Use an align_limit temporary to allay a GCC
	signed/unsigned comparison warning.

2004-12-01  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.am (TARG_ENV_HFILES): Add te-armlinuxeabi.h.
	* configure.in: Use it for arm*-*-linux-gnueabi*.
	* config/tc-arm.c: Allow emulation file to set FPU_DEFAULT.
	* config/te-armlinuxeabi.h: New file.
	* Makefile.in: Regenerated.
	* aclocal.m4: Likewise.
	* configure: Likewise.
	* doc/Makefile.in: Regenerated.

2004-12-02  Bob Wilson  <bob.wilson@acm.org>

	* config/tc-xtensa.c (xtensa_switch_section_emit_state): Use subseg_set.
	(xtensa_restore_emit_state): Likewise.

2004-12-02  Alan Modra  <amodra@bigpond.net.au>

	* read.c (ALIGN_LIMIT): Define, increasing limit for BFD_ASSEMBLER.
	(s_align): Use it.

2004-11-30  Tero Niemela  <tero_niemela@yahoo.com>

	* Makefile.am: Change LOCALEDIR to $(datadir)/share.
	* Makefile.in: Regenerate.

2004-11-29  Tomer Levi  <Tomer.Levi@nsc.com>

	* config/tc-crx.c: Major code cleanup. Remove unused variables and
	functions, give functions a meaningful name, add comments.
	(check_range): New function - Replace operand size calculation
	with range checking.
	(assemble_insn): Update Algorithm, improve error issuing.
	(enum op_err): New.
	(process_label_constant): Bug fix regarding COP_BRANCH_INS relocation
	handling.

2004-11-29  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>

	* config/tc-m32r.c (md_pcrel_from_section): Fixed a pcrel relocte
	miss between different section in the same module.
	(tc_gen_reloc): Likewise.

2004-11-25  Theodore A. Roth  <troth@openavr.org>

	* gas/config/tc-avr.c (mcu_types): Add support for atmega165,
	atmega325, atmega3250, atmega645 and atmega6450.

2004-11-25 Jan Beulich  <jbeulich@novell.com>

	* config/tc-i386.c (optimize_imm): Adjust immediates to only those
	permissible for the selected instruction suffix.
	(process_suffix): For DefaultSize instructions, suppressing the
	guessing of a 'q' suffix if the instruction doesn't support it is
	pointless, because only an 'l' suffix can be guessed in this place.

2004-11-24  Nick Clifton  <nickc@redhat.com>

	* config/tc-iq2000.c: Remove support for IQ10 processor.
	Convert to ISO C90 formatting.
	* config/tc-iq2000.h: Likewise.

2004-11-23  Nick Clifton  <nickc@redhat.com>

	* config/tc-mn10300.c (md_relax_table): More fixes to the offsets
	in this table.  They should be correct now.

2004-11-23 Jan Beulich <jbeulich@novell.com>

	* config/tc-i386.h (CpuMMX2): Declare. Artificial classifier to
	indicate the MMX extensions added by both SSE and 3DNow!A.
	(Cpu3dnowA): Declare.
	(CpuUnknownFlags): Update.
	* config/tc-i386.c (cpu_sub_arch_name): Declare.
	(cpu_arch): i586 and pentium do not imply MMX. i686 and pentiumpro do
	neither imply SSE nor MMX. k6 implies MMX. k6_2 additionally implies
	3DNow!. Athlon additionally implies 3DNow!A. Several new
	entries (those starting with a dot are for sub-arch specification).
	(set_cpu_arch): Handle sub-arch specifications.
	(parse_insn): Distinguish between instructions not supported because
	of insufficient CPU features and because of 64-bit mode.
	* doc/c-i386.texi: Describe enhanced .arch directive.

2004-11-22  Bob Wilson  <bob.wilson@acm.org>

	* config/tc-xtensa.c (xg_add_opcode_fix): Set fx_no_overflow.

2004-11-22  Bob Wilson  <bob.wilson@acm.org>

	* dwarf2dbg.c (dwarf2_finish): Don't write a .debug_line section
	without a corresponding .debug_info section.

2004-11-22  Hans-Peter Nilsson  <hp@axis.com>

	* read.c (potable): Add "error" and "warning".
	(s_errwarn): New function.
	* read.h (s_errwarn): Declare.
	* doc/as.texinfo (Error, Warning): Document .error and .warning.

2004-11-22  Nick Clifton  <nickc@redhat.com>

	* config/tc-tic54x.c (tic54x_adjust_symtab): Adjust call to
	c_dot_file_symbol.

2004-11-19  Alan Modra  <amodra@bigpond.net.au>

	* config/tc-msp430.c (struct rcodes_s, MSP430_RLC, msp430_rcodes,
	struct hcodes_s, msp430_hcodes): From include/opcode/msp430.h.

2004-11-19  Alan Modra  <amodra@bigpond.net.au>

	* config/obj-coff.c (c_dot_file_symbol): Add "app" param.
	(coff_adjust_symtab): Adjust call.
	(crawl_symbols): Likewise.
	* config/obj-coff.h (c_dot_file_symbol): Add "app" param.
	(obj_app_file): Adjust.

2004-11-18  Inderpreet Singh   <inderpreetb@nioda.hcltech.com>

	* configure.in: Enable bfd_assember for the MAXQ port.
	* configure: Regenerate.

2004-11-12  Bob Wilson  <bob.wilson@acm.org>
	    Sterling Augustine  <sterling@tensilica.com>

	* config/tc-xtensa.c (finish_vinsn): Clear pending instruction if
	there is a conflict.
	(check_t1_t2_reads_and_writes): Check for both reads and writes to
	interfaces that are related as determined by xtensa_interface_class_id.

2004-11-12  Nick Clifton  <nickc@redhat.com>

	* config/tc-mn10300.c (md_relax_table): Fix off by one negative
	offsets for conditional branches.

2004-11-11  Bob Wilson  <bob.wilson@acm.org>

	* config/tc-xtensa.c (MAX_IMMED6): Change value to 65.

2004-11-10  Bob Wilson  <bob.wilson@acm.org>

	* config/tc-xtensa.c (update_next_frag_state): Always add a NOP if
	relaxing at the end of a loop.  Don't mark frags as UNREACHABLE or
	MAYBE_UNREACHABLE.
	(relax_frag_immed): Update call to update_next_frag_state.

2004-11-10  Alan Modra  <amodra@bigpond.net.au>

	* obj.h (struct format_ops <app_file>): Add int param.
	* read.h (s_app_file_string): Likewise.
	* read.c (s_app_file_string): Likewise.
	(s_app_file): Adjust s_app_file_string call.
	* config/tc-mips.c (s_mips_file): Likewise.
	* config/obj-coff.h (obj_app_file): Add app param.
	* config/obj-ecoff.h (obj_app_file): Likewise.
	* config/obj-multi.h (obj_app_file): Likewise.
	* config/obj-elf.h (elf_file_symbol): Likewise.
	* config/obj-elf.c (elf_file_symbol): Only emit one file symbol
	if called for # preprocessor lines.

2004-11-08  H.J. Lu  <hongjiu.lu@intel.com>

	PR 528
	* symbols.c (resolve_symbol_value): Convert weak symbols only
	for Windows PECOFF.
	(symbol_equated_reloc_p): Don't equate weaks when relocating
	only for Windows PECOFF.

2004-11-08  Tomer Levi  <Tomer.Levi@nsc.com>

	* config/tc-crx.c (print_insn): Check and set insn_addr.
	* config/tc-crx.h (md_frag_check): Define.

2004-11-08  Inderpreet Singh   <inderpreetb@nioda.hcltech.com>
	    Vineet Sharma      <vineets@noida.hcltech.com>

	* configure.in: Add support for new target maxq-coff.
	* configure: Regenerate.
	* NEWS: Mention new support.
	* config/tc-maxq.c: New file.
	* config/tc-maxq.h: New file.
	* config/obj-coff.h: Add support for maxq-coff.

2004-11-08  Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>

	* symbols.c (any_external_name): Define.
	(resolve_symbol_value): Convert weak symbols.
	(S_SET_EXTERNAL): Support any_external_name.
	(S_SET_NAME): Qualify parameter const.
	(symbol_equated_reloc_p): Equate to weaks when relocating.
	* symbols.h (S_SET_NAME): Qualfiy parameter const.
	* tc.h (any_external_name): Declare.
	* config/obj-coff.c ("coff/pe.h"): Include for BFD
	assemblers also.
	(weak_is_altname): Declare and define.
	(weak_name2altname): Same.
	(weak_altname2name): Same.
	(weak_uniquify): Same.
	(weak_altprefix): Define.
	(obj_coff_weak): Change .weak syntax and handling.
	(coff_frob_symbol): Fix PE weak symbol alternates.
	* config/obj-coff.h (USE_UNIQUE): Define.
	* config/tc-i386.c (md_apply_fix3): Assume weak symbols
	are in another segment.
	(tc_gen_reloc): Remove broken addend hack.
	doc/as.texinfo: Update.

2004-11-05  Sterling Augustine  <sterling@tensilica.com>

	* config/tc-xtensa.c (total_frag_text_expansion): New.
	(md_estimate_size_before_relax): Use it.
	(find_address_of_next_align_frag): Likewise.

2004-11-05  Tomer Levi  <Tomer.Levi@nsc.com>

	* config/tc-crx.c: Rename argument types.
	(processing_arg_number): Rename to 'cur_arg_num'.
	(get_number_of_bits): Rename to 'set_operand_size'.
	(get_operandtype): Rename to 'parse_operand', totally rewrite.
	(set_cons_rparams): Rename to 'set_operand', totally rewrite.
	(set_indexmode_parameters): Remove function, integrate its code into
	'set_operand'.
	(set_operand_size): Get rid of 'Operand Number' function parameter -
	use global variable 'cur_arg_num' instead.
	Use a local 'argument' pointer to reference the current argument.
	(parse_operand): Likewise.
	(set_operand): Likewise.
	(process_label_constant): Likewise.

2004-11-04  Bob Wilson  <bob.wilson@acm.org>

	* config/tc-xtensa.c: Remove XTENSA_SECTION_RENAME ifdefs.
	(add_section_rename): Delete.  Inlined into...
	(build_section_rename): ...here.  Use xstrdup instead of strdup.
	(xtensa_section_rename): Drop "const" from argument and return types.
	(md_show_usage): Indent to match show_usage().
	* config/tc-xtensa.h: Remove XTENSA_SECTION_RENAME ifdefs.
	(tc_canonicalize_section_name): Define.
	(md_elf_section_rename): Remove unused macro.
	* doc/as.texinfo (Overview): Document Xtensa --rename-section option.
	* doc/c-xtensa.texi (Xtensa Options): Likewise.
	(Frame Directive): Delete.

2004-11-04  Daniel Jacobowitz  <dan@debian.org>

	* configure.in: Remove arm-*-oabi and thumb-*-oabi.
	* config/tc-arm.c (target_oabi): Delete.
	(md_apply_fix3, elf32_arm_target_format): Remove target_oabi checks.
	(arm_opts): Remove moabi.
	* doc/as.texinfo (Overview): Remove documentation of -moabi.
	* doc/c-arm.texi (ARM Options): Likewise.
	* configure: Regenerated.

2004-11-04  Hans-Peter Nilsson  <hp@axis.com>

	* configure.in (crisv32): Recognize.  AC_DEFINE_UNQUOTED
	DEFAULT_CRIS_ARCH.  Handle crisv32-*-linux-gnu* like
	cris-*-linux-gnu* and crisv32-*-* like cris-*-*.
	* configure: Regenerate.
	* config/tc-cris.c (enum cris_archs): New.
	(cris_mach, cris_arch_from_string, s_cris_arch, get_sup_reg)
	(cris_insn_ver_valid_for_arch): New functions.
	(DEFAULT_CRIS_ARCH): New macro, default to cris_any_v0_v10.
	(cris_arch): New variable.
	(md_pseudo_table): New pseudo .arch.
	(err_for_dangerous_mul_placement): Initialize according to
	DEFAULT_CRIS_ARCH.
	(STATE_COND_BRANCH): Renamed from STATE_CONDITIONAL_BRANCH.
	All users changed.
	(STATE_COND_BRANCH_V32, STATE_COND_BRANCH_COMMON)
	(STATE_ABS_BRANCH_V32, STATE_LAPC, BRANCH_BF_V32, BRANCH_BB_V32)
	(BRANCH_WF_V32, BRANCH_WB_V32): New.
	(BRANCH_BF, BRANCH_BB, BRANCH_WF, BRANCH_WB): Don't undef after
	use in md_cris_relax_table.
	(md_cris_relax_table): Add entries for STATE_COND_BRANCH_V32,
	STATE_COND_BRANCH_COMMON, STATE_ABS_BRANCH_V32, STATE_LAPC.
	Update and improve head comment.
	(OPTION_PIC): Define in terms of previous option, OPTION_US.
	(OPTION_MULBUG_ABORT_ON, OPTION_MULBUG_ABORT_OFF): Similar.
	(OPTION_ARCH): New.
	(md_longopts): New option --march=...
	(cris_any_v0_v10_long_jump_size, crisv32_long_jump_size): New
	macros.
	(md_long_jump_size): Initialize in terms of DEFAULT_CRIS_ARCH.
	(HANDLE_RELAXABLE): New macro.
	(md_estimate_size_before_relax): Use HANDLE_RELAXABLE for common
	cases.  Check for weak symbols and assume not relaxable.  Handle
	STATE_COND_BRANCH_V32, STATE_COND_BRANCH_COMMON,
	STATE_ABS_BRANCH_V32, STATE_LAPC.  Use new variable symbolP, not
	fragP->fr_symbol.
	(md_convert_frag): Handle STATE_COND_BRANCH_V32,
	STATE_COND_BRANCH_COMMON, STATE_ABS_BRANCH_V32, STATE_LAPC.
	(cris_create_short_jump): Adjust for CRISv32.
	(cris_relax_frag): Handle new states.
	(md_create_long_jump): Ditto.  Emit error for common_v10_v32.
	(md_begin): Define symbols "..asm.arch.cris.v32",
	"..asm.arch.cris.v10", "..asm.arch.cris.common_v10_v32" and
	"..asm.arch.cris.any_v0_v10".  Use cris_insn_ver_valid_for_arch
	when entering opcode table entry points.
	(md_assemble): Adjust branch handling for CRISv32.  Handle LAPC
	relaxation.  In fix_new_exp call for main insn, pass 1 for pcrel
	parameter for 8, 16 and 32-bit pc-relative insns and LAPC.
	(cris_process_instruction): Initialize out_insnp->insn_type to
	CRIS_INSN_NONE, not CRIS_INSN_NORMAL.
	<case ']', '[', 'A', 'd', 'Q', 'N', 'n', 'Y', 'U', 'u', 'T'>: New
	cases.
	<case 'm'>: Check that modified_char == '.'.
	<invalid operands>: Consume the rest of the line.
	When operands don't match, skip over subsequent insns with
	non-matching version specifier but same mnemonic.
	<immediate constant, case SIZE_SPEC_REG>: Immediate operands for
	special registers in CRISv32 are always 32 bit long.
	<immediate constant, case SIZE_FIELD_SIGNED, SIZE_FIELD_UNSIGNED>:
	New cases.
	(get_gen_reg): Only recognize "PC" when followed by "+]" for v32
	and compatible.  Recognize "ACR" for v32, unless followed by "+".
	(get_spec_reg): Consider cris_arch when looking up register.
	(get_autoinc_prefix_or_indir_op): Don't recognize assignment for
	v32 or compatible.
	(get_3op_or_dip_prefix_op): Check for ']' after seeing '[rN+'.
	(cris_get_expression): Restore input_line_pointer if failing "early".
	(get_flags): Consider cris_arch and recognize flags accordingly.
	(branch_disp): Adjust for CRISv32.
	(gen_cond_branch_32): Similar.  Emit error for common_v10_v32.
	(cris_number_to_imm): Use as_bad_where, not as_bad.  Remove
	related FIXME.  Don't insist on BFD_RELOC_32_PCREL fixup to be
	resolved.  Don't enter zeros in object file for
	BFD_RELOC_32_PCREL.
	<case BFD_RELOC_CRIS_LAPCQ_OFFSET, BFD_RELOC_CRIS_SIGNED_16>
	<case BFD_RELOC_CRIS_SIGNED_8>: New case.
	(md_parse_option): Break out "return 1".
	<OPTION_ARCH> New case.
	(tc_gen_reloc): <case BFD_RELOC_CRIS_LAPCQ_OFFSET>
	<case BFD_RELOC_CRIS_SIGNED_16, BFD_RELOC_CRIS_SIGNED_8>
	<case BFD_RELOC_CRIS_UNSIGNED_8, BFD_RELOC_CRIS_UNSIGNED_16>
	<case BFD_RELOC_32_PCREL>: New cases.
	Addends for non-zero fx_pcrel are too in fx_offset.
	(md_show_usage): Show --march=<arch>.
	(md_apply_fix3): Adjust val for BFD_RELOC_CRIS_LAPCQ_OFFSET.
	(md_pcrel_from): BFD_RELOC_CRIS_LAPCQ_OFFSET is PC-relative too.
	(s_syntax) <struct syntaxes>: Properly constify member operand.
	* config/tc-cris.h (TARGET_MACH): Define.
	(cris_mach): Declare.
	* doc/as.texinfo (Overview) <CRIS>: Add --march=...
	* doc/c-cris.texi (CRIS-Symbols): New node for built-in symbols.
	(CRIS-Opts): Document --march=...
	(CRIS-Pseudos): Document .arch.

2004-11-04 Jan Beulich <jbeulich@novell.com>

	* config/tc-i386.c (set_intel_syntax): Allow % in symbol names when
	intel syntax and no register prefix, allow $ in symbol names when
	intel syntax.
	(set_16bit_gcc_code_flag): Replace literal 'l' by LONG_MNEM_SUFFIX.
	(intel_float_operand): Add fourth return value indicating math control
	operations. Make classification more precise.
	(md_assemble): Complain if memory operand of mov[sz]x has no size
	specified.
	(parse_insn): Translate word operands to floating point instructions
	operating on integers as well as control instructions to short ones
	as expected by AT&T syntax. Translate 'd' suffix to short one only for
	floating point instructions operating on non-integer operands.
	(match_template): Remove fldcw special case. Adjust q-suffix handling
	to permit it on fild/fistp/fisttp in AT&T mode.
	(process_suffix): Don't guess DefaultSize insns' suffix from
	stackop_size for certain floating point control instructions. Guess
	suffix for branch and [ls][gi]dt based on flag_code. Split error
	messages for Intel and AT&T syntax, and make the condition more strict
	for the former. Adjust suppressing of generation of operand size
	overrides.
	(intel parser): Allow the full set of MASM operators. Add FWORD, TBYTE,
	OWORD, and XMMWORD operand size specifiers (TBYTE replaces XWORD). Add
	more error checking.
	* config/tc-i386.h (BYTE_PTR WORD_PTR DWORD_PTR QWORD_PTR XWORD_PTR
	SHORT OFFSET_FLAT FLAT NONE_FOUND): Remove unused defines.

2004-11-03  Hans-Peter Nilsson  <hp@axis.com>

	* symbols.c (colon) [!WORKING_DOT_WORD]: Don't declare
	md_short_jump_size, md_long_jump_size.
	* write.c [!WORKING_DOT_WORD]: Ditto.
	* tc.h [!WORKING_DOT_WORD]: Declare them here.  Drop const
	qualifier.
	* config/tc-cris.h (md_short_jump_size, md_long_jump_size): Don't
	declare.
	* config/tc-cris.c (md_short_jump_size, md_long_jump_size): Drop
	const qualifier in these definitions.
	* config/tc-i370.c, config/tc-m68k.c, config/tc-pdp11.c,
	config/tc-s390.c, config/tc-tahoe.c, config/tc-vax.c: Ditto.

2004-11-02  Nick Clifton  <nickc@redhat.com>

	* dwarf2dbg.c (dwarf2_finish): Check for the existence of a file
	table before deciding to produce a .debug_line section to match up
	with a user provided .debug_info section.

2004-10-28  Tomer Levi  <Tomer.Levi@nsc.com>

	* config/tc-crx.c (getreg_image): Bug fix, a return value was
	mistakenly omitted from CRX_C_REGTYPE and CRX_CS_REGTYPE cases.

2004-10-27  Tomer Levi  <Tomer.Levi@nsc.com>

	* config/tc-crx.c: Remove global variable 'post_inc_mode'.
	(get_flags): New function.
	(get_number_of_bits): Edit comments, update numeric values to
	supported sizes.
	(process_label_constant): Don't support the colon
	format (SYMBOL:[s|m|l]).
	(set_cons_rparams): Support argument type 'arg_rbase'.
	(get_operandtype): Bug fix in 'rbase' operand type parsing.
	(handle_LoadStor): Bug fix, first handle post-increment mode.
	(getreg_image): Remove redundant code, update according to latest
	CRX spec.
	(print_constant): Bug fix relate to 3-word instructions.
	(assemble_insn): Bug fix, when matching instructions, verify also
	instruction type (not only mnemonic).
	Add various error checking.
	(preprocess_reglist): Support HI/LO and user registers.

2004-10-25  David Mosberger-Tang  <davidm@hpl.hp.com>

	* config/tc-ia64.c (fixup_unw_records): Don't let the "t" value
	in an epilogue directive go negative.

2004-10-25  H.J. Lu  <hongjiu.lu@intel.com>

	PR 474
	* config/tc-ia64.c (emit_one_bundle): Decrement md.num_slots_in_use
	after reporting template error during manual bundling. Reported
	by Michael Dupont, michaelx.dupont@intel.com.

2004-10-25  Daniel Jacobowitz  <dan@debian.org>

	* Makefile.am: Run dep-am.
	* aclocal.m4: Regenerate with automake 1.9.2.
	* Makefile.in: Regenerate with automake 1.9.2.
	* doc/Makefile.in: Likewise.

	* config/tc-arm.c: Include "dw2gencfi.h".
	(tc_arm_regname_to_dw2regnum, tc_arm_frame_initial_instructions):
	New functions.
	* config/tc-arm.h (TARGET_USE_CFIPOP, DWARF2_DEFAULT_RETURN_COLUMN)
	(DWARF2_CIE_DATA_ALIGNMENT, tc_regname_to_dw2regnum)
	(tc_cfi_frame_initial_instructions): Define.
	(tc_arm_regname_to_dw2regnum, tc_arm_frame_initial_instructions):
	Add prototypes.

2004-10-21  Tomer Levi  <Tomer.Levi@nsc.com>

	* config/tc-crx.c (assemble_insn): Check unsigned immediate
	operands validity.
	Update coprocessor id to be unsigned immediate.

2004-10-18  Aaron W. LaFramboise <aaron98wiridge9@aaronwl.com>

	* config/tc-i386.c (O_secrel): Delete.
	(tc_pe_dwarf2_emit_offset): New function.
	* config/tc-i386.h (O_secrel): Define as O_md1.
	(TC_DWARF2_EMIT_OFFSET): Define.

2004-10-18  Nick Clifton  <nickc@redhat.com>

	* config/tc-xstormy16.c (xstormy16_cons_fix_new): Accept and
	ignore @fptr() directives for 4-byte fixups.

2004-10-15  Alan Modra  <amodra@bigpond.net.au>

	* Makefile.am: Run "make dep-am"
	* Makefile.in: Regenerate.

2004-10-14  Bob Wilson  <bob.wilson@acm.org>

	* doc/c-xtensa.texi (Xtensa Options, Absolute Literals Directive):
	Remove comments about placement of literal pools.
	(Literal Directive): Update description of literal placement.
	(Literal Prefix Directive): Remove statement that this does not apply
	to absolute-mode literals.  Describe new section naming scheme.

2004-10-12  Bob Wilson  <bob.wilson@acm.org>

	* config/tc-xtensa.c (xtensa_frequency_pseudo): Use set_subseg_freq.
	(is_entry_opcode, is_movi_opcode, is_the_loop_opcode, is_jx_opcode,
	is_windowed_return_opcode): Delete.
	(xtensa_frob_label): Use get_subseg_target_freq.
	(md_assemble): Inline call to is_entry_opcode.
	(xtensa_handle_align): Inline call to get_frag_is_literal.
	(relaxation_requirements): Inline call to is_jx_opcode.
	(emit_single_op): Inline call to is_movi_opcode.
	(xg_assemble_vliw_tokens): Inline calls to get_frag_is_insn,
	get_frag_is_no_transform, is_entry_opcode, and
	set_frag_is_specific_opcode.  Use get_subseg_total_freq.
	(xtensa_fix_a0_b_retw_frags, xtensa_fix_b_j_loop_end_frags,
	xtensa_fix_close_loop_end_frags, relax_frag_immed, convert_frag_immed):
	Inline calls to get_frag_is_no_transform.
	(next_instrs_are_b_retw): Inline call to is_windowed_return_opcode.
	(xtensa_fix_short_loop_frags): Inline calls to is_the_loop_opcode and
	get_frag_is_no_transform.
	(convert_frag_immed_finish_loop): Inline calls to get_expression_value
	and set_frag_is_no_transform.
	(get_expression_value): Delete.
	(subseg_map struct): Rename cur_total_freq to total_freq.  Rename
	cur_target_freq to target_freq.
	(get_subseg_info): Split out code to create a new map entry into ...
	(add_subseg_info): ... this new function.
	(get_last_insn_flags): Check if get_subseg_info succeeded.
	(set_last_insn_flags): Call add_subseg_info if needed.
	(get_subseg_total_freq, get_subseg_target_freq, set_subseg_freq): New.
	(xtensa_reorder_segments): Compute last_sec while counting sections.
	Remove call to get_last_sec.
	(get_last_sec): Delete.
	(cache_literal_section): Inline call to retrieve_literal_seg and its
	callees, seg_present and add_seg_list.
	(retrieve_literal_seg, seg_present, add_seg_list): Delete.
	(get_frag_is_insn, get_frag_is_no_transform,
	set_frag_is_specific_opcode, set_frag_is_no_transform): Delete.
	* config/tc-xtensa.h (MAX_SLOTS): Reduce from 31 to 15.

2004-10-12  Bob Wilson  <bob.wilson@acm.org>

	* config/tc-xtensa.c: Use ISO C90 formatting.
	* config/tc-xtensa.h: Likewise.
	* config/xtensa-istack.h: Likewise.
	* config/xtensa-relax.c: Likewise.
	* config/xtensa-relax.h: Likewise.

2004-10-12  Paul Brook  <paul@codesourcery.com>

	* config/tc-arm.c (md_begin): Change EF_ARM_EABI_VER3 to
	EF_ARM_EABI_VER4.
	(arm_eabis): Ditto.
	* doc/c-arm.texi: Document that we actually support -meabi=4, not
	-meabi=3.

2004-10-08  Bob Wilson  <bob.wilson@acm.org>

	* doc/as.texinfo (VTableEntry, VTableInherit): Add "directive" to index
	entries.
	(Acknowledgements): Use "GAS" instead of AS variable.

2004-10-08  Daniel Jacobowitz  <dan@debian.org>

	* config/tc-i386.c: Include "elf/x86-64.h".
	(i386_elf_section_type): New function.
	* config/tc-i386.h (md_elf_section_type): Define.
	(i386_elf_section_type): New prototype.

2004-10-08  Linus Nielsen Feltzing  <linus@haxx.se>

	* config/m68k-parse.h (enum m68k_register): New control register,
	MBAR2 (for MCF5249)
	* config/tc-m68k.c: Correct control register set for MCF5249.

2004-10-07  Bob Wilson  <bob.wilson@acm.org>
	    Sterling Augustine  <sterling@tensilica.com>

	* config/tc-xtensa.c (absolute_literals_supported): New global flag.
	(UNREACHABLE_MAX_WIDTH): Define.
	(XTENSA_FETCH_WIDTH): Delete.
	(cur_vinsn, xtensa_fetch_width, xt_saved_debug_type, past_xtensa_end,
	prefer_const16, prefer_l32r): New global variables.
	(LIT4_SECTION_NAME): Define.
	(lit4_state struct): Add lit4_seg_name and lit4_seg fields.
	(XTENSA_PROP_*, GET_XTENSA_PROP_*, SET_XTENSA_PROP_*): Define.
	(frag_flags struct): New.
	(xtensa_block_info struct): Move from tc-xtensa.h.  Add flags field.
	(subseg_map struct): Add cur_total_freq and cur_target_freq fields.
	(bitfield, bit_is_set, set_bit, clear_bit): Define.
	(MAX_FORMATS): Define.
	(op_placement_info struct, op_placement_table): New.
	(O_pltrel, O_hi16, O_lo16): Define.
	(directiveE enum): Rename directive_generics to directive_transform.
	Delete directive_relax.  Add directive_schedule,
	directive_absolute_literals, and directive_last_directive.
	(directive_info): Rename "generics" to "transform".  Delete "relax".
	Add "schedule" and "absolute-literals".
	(directive_state): Adjust entries to match changes in directive_info.
	(xtensa_relax_statesE, RELAX_IMMED_MAXSTEPS): Move to tc-xtensa.h.
	(xtensa_const16_opcode, xtensa_movi_opcode, xtensa_movi_n_opcode,
	xtensa_l32r_opcode, xtensa_nop_opcode, xtensa_rsr_lcount_opcode): New.
	(xtensa_j_opcode, xtensa_rsr_opcode): Delete.
	(align_only_targets, software_a0_b_retw_interlock,
	software_avoid_b_j_loop_end, maybe_has_b_j_loop_end,
	software_avoid_short_loop, software_avoid_close_loop_end,
	software_avoid_all_short_loops, specific_opcode): Delete.
	(warn_unaligned_branch_targets): New.
	(workaround_a0_b_retw, workaround_b_j_loop_end, workaround_short_loop,
	workaround_close_loop_end, workaround_all_short_loops): Default FALSE.
	(option_[no_]link_relax, option_[no_]transform,
	option_[no_]absolute_literals, option_warn_unaligned_targets,
	option_prefer_l32r, option_prefer_const16, option_target_hardware):
	New enum values.
	(option_[no_]align_only_targets, option_literal_section_name,
	option_text_section_name, option_data_section_name,
	option_bss_section_name, option_eb, option_el): Delete.
	(md_longopts): Add entries for: [no-]transform, [no-]absolute-literals,
	warn-unaligned-targets, prefer-l32r, prefer-const16, [no-]link-relax,
	and target-hardware.  Delete entries for [no-]target-align-only,
	literal-section-name, text-section-name, data-section-name, and
	bss-section-name.
	(md_parse_option): Handle new options and remove old ones.  Accept but
	ignore [no-]density options.  Warn for [no-]generics and [no-]relax
	and treat them as [no-]transform.
	(md_show_usage): Add new options and remove old ones.
	(xtensa_setup_hw_workarounds): New.
	(md_pseudo_table): Change "word" entry to use xtensa_elf_cons.  Add
	"long", "short", "loc" and "frequency" entries.
	(use_generics): Rename to ...
	(use_transform): ... this function.  Add past_xtensa_end check.
	(use_longcalls): Add past_xtensa_end check.
	(code_density_available, can_relax): Delete.
	(do_align_targets): New.
	(get_directive): Accept dashes in directive names.  Warn about
	[no-]generics and [no-]relax directives and treat them as
	[no-]transform.
	(xtensa_begin_directive): Call md_flush_pending_output only for some
	directives.  Check for directives inside instruction bundles.  Warn
	about deprecated ".begin literal" usage.  Warn and ignore [no-]density
	directives.  Handle new directives.  Check generating_literals flag
	for literal_prefix.
	(xtensa_end_directive): Check for directives inside instruction
	bundles.  Warn and ignore [no-]density directives.  Handle new
	directives.  Call xtensa_set_frag_assembly_state.
	(xtensa_loc_directive_seen, xtensa_dwarf2_directive_loc,
	xtensa_dwarf2_emit_insn): New.
	(xtensa_literal_position): Call md_flush_pending_output.  Do not check
	use_literal_section flag.
	(xtensa_literal_pseudo): Call md_flush_pending_output.  Handle absolute
	literals.  Use xtensa_elf_cons to parse the expression.
	(xtensa_literal_prefix): Do not check use_literal_section.  Support
	".lit4" sections for absolute literals.  Change prefix convention to
	replace ".text" (or ".t" in a linkonce section).  No need to call
	subseg_set.
	(xtensa_frequency_pseudo, xtensa_elf_cons, xtensa_elf_suffix): New.
	(expression_end): Handle closing braces and colons.
	(PLT_SUFFIX, plt_suffix): Delete.
	(expression_maybe_register): Use new xtensa-isa.h functions.  Use
	xtensa_elf_suffix instead of checking for plt suffix, and handle O_lo16
	and O_hi16 expressions as well.
	(tokenize_arguments): Handle closing braces and colons.
	(parse_arguments): Use new xtensa-isa.h functions.  Handle "invisible"
	operands and paired register syntax.
	(get_invisible_operands): New.
	(xg_translate_sysreg_op): Handle new Xtensa LX RSR/WSR/XSR syntax.  Use
	new xtensa-isa.h functions.
	(xtensa_translate_old_userreg_ops, xtensa_translate_zero_immed): New.
	(xg_translate_idioms): Check if inside bundle.  Use use_transform.
	Handle new Xtensa LX RSR/WSR/XSR syntax.  Remove code to widen density
	instructions.  Use xtensa_translate_zero_immed.
	(operand_is_immed, operand_is_pcrel_label): Delete.
	(get_relaxable_immed): Use new xtensa-isa.h functions.
	(get_opcode_from_buf): Add slot parameter.  Use new xtensa-isa.h
	functions.
	(xtensa_print_insn_table, print_vliw_insn): New.
	(is_direct_call_opcode): Use new xtensa-isa.h functions.
	(is_call_opcode, is_loop_opcode, is_conditional_branch_opcode,
	is_branch_or_jump_opcode): Delete.
	(is_movi_opcode, decode_reloc, encode_reloc, encode_alt_reloc): New.
	(opnum_to_reloc, reloc_to_opnum): Delete.
	(xtensa_insnbuf_set_operand, xtensa_insnbuf_get_operand): Use new
	xtensa-isa.h functions.  Operate on one slot of an instruction.
	(xtensa_insnbuf_set_immediate_field, is_negatable_branch,
	xg_get_insn_size): Delete.
	(xg_get_build_instr_size): Use xg_get_single_size.
	(xg_is_narrow_insn, xg_is_single_relaxable_insn): Update calls to
	xg_build_widen_table.  Use xg_get_single_size.
	(xg_get_max_narrow_insn_size): Delete.
	(xg_get_max_insn_widen_size, xg_get_max_insn_widen_literal_size,
	xg_is_relaxable_insn): Update calls to xg_build_widen_table.  Use
	xg_get_single_size.
	(xg_build_to_insn): Record the loc field.  Handle OP_OPERAND_HI16U and
	OP_OPERAND_LOW16U.  Check xg_valid_literal_expression.
	(xg_expand_to_stack, xg_expand_narrow): Update calls to
	xg_build_widen_table.  Use xg_get_single_size.
	(xg_immeds_fit): Use new xtensa-isa.h functions.  Update call to
	xg_check_operand.
	(xg_symbolic_immeds_fit): Likewise.  Also handle O_lo16 and O_hi16, and
	treat weak symbols conservatively.
	(xg_check_operand): Use new xtensa-isa.h functions.
	(is_dnrange): Delete.
	(xg_assembly_relax): Inline previous calls to tinsn_copy.
	(xg_finish_frag): Specify separate relax states for the frag and slot0.
	(is_branch_jmp_to_next, xg_add_branch_and_loop_targets): Use new
	xtensa-isa.h functions.
	(xg_instruction_matches_option_term, xg_instruction_matches_or_options,
	xg_instruction_matches_options): New.
	(xg_instruction_matches_rule): Handle O_register expressions.  Call
	xg_instruction_matches_options.
	(transition_rule_cmp): New.
	(xg_instruction_match): Update call to xg_build_simplify_table.
	(xg_build_token_insn): Record loc fields.
	(xg_simplify_insn): Check is_specific_opcode field and
	density_supported flag.
	(xg_expand_assembly_insn): Skip checking code_density_available.  Use
	new xtensa-isa.h functions.  Call use_transform instead of can_relax.
	(xg_assemble_literal): Add error handling for O_big.  Call
	record_alignment.  Handle O_pltrel.
	(xg_valid_literal_expression): New.
	(xg_assemble_literal_space): Add slot parameter.  Remove call to
	set_expr_symbol_offset.  Add call to record_alignment.  Update call to
	xg_finish_frag.
	(xg_emit_insn): Delete.
	(xg_emit_insn_to_buf): Add format parameter.  Update calls to
	xg_add_opcode_fix and xtensa_insnbuf_to_chars.
	(xg_add_opcode_fix): Change opcode parameter to tinsn and add format
	and slot parameters.  Handle new "alternate" relocations for absolute
	literals and CONST16 instructions.  Check for bad uses of O_lo16 and
	O_hi16.  Use new xtensa-isa.h functions.
	(xg_assemble_tokens): Delete.
	(is_register_writer): Use new xtensa-isa.h functions.
	(is_bad_loopend_opcode): Check for xtensa_rsr_lcount_opcode instead of
	old-style RSR from LCOUNT.
	(next_frag_opcode): Delete.
	(next_frag_opcode_is_loop, next_frag_format_size, frag_format_size,
	update_next_frag_state): New.
	(update_next_frag_nop_state): Delete.
	(next_frag_pre_opcode_bytes): Use next_frag_opcode_is_loop.
	(xtensa_mark_literal_pool_location): Check use_literal_section flag and
	the state of the absolute-literals directive.  Add calls to
	record_alignment and xtensa_set_frag_assembly_state.  Call
	xtensa_switch_to_non_abs_literal_fragment instead of
	xtensa_switch_to_literal_fragment.
	(build_nop): New.
	(assemble_nop): Use build_nop.  Update call to xtensa_insnbuf_to_chars.
	(get_expanded_loop_offset): Change check for undefined opcode to an
	assertion.
	(xtensa_set_frag_assembly_state, relaxable_section,
	xtensa_find_unmarked_state_frags, xtensa_find_unaligned_branch_targets,
	xtensa_find_unaligned_loops, xg_apply_tentative_value): New.
	(md_begin): Update call to xtensa_isa_init.  Initialize linkrelax to 1.
	Set lit4_seg_name.  Call xg_init_vinsn.  Initialize new global opcodes.
	Call init_op_placement_info_table and xtensa_set_frag_assembly_state.
	(xtensa_init_fix_data): New.
	(xtensa_frob_label): Reset label symbol to the current frag.  Check
	do_align_targets and generating_literals flag.  Propagate frequency
	info to new alignment frag.  Call xtensa_set_frag_assembly_state.
	(xtensa_unrecognized_line): New.
	(xtensa_flush_pending_output): Check if inside a bundle.  Add a call
	to xtensa_set_frag_assembly_state.
	(error_reset_cur_vinsn): New.
	(md_assemble): Remove check for literal frag.  Remove call to
	istack_init.  Call use_transform instead of use_generics.  Parse
	explicit instruction format specifiers.  Move code for
	a0_b_retw_interlock workaround to xg_assemble_vliw_tokens.  Call
	error_reset_cur_vinsn on errors.  Add call to get_invisible_operands.
	Add dwarf2_where call.  Remote automatic alignment for ENTRY
	instructions.  Move call to xtensa_clear_insn_labels to the end.
	Rearrange to handle bundles.
	(xtensa_cons_fix_new): Delete.
	(xtensa_handle_align): New.
	(xtensa_frag_init): Call xtensa_set_frag_assembly_state.  Remove
	assignment to is_no_density field.
	(md_pcrel_from): Use new xtensa-isa.h functions.  Use decode_reloc
	instead of reloc_to_opnum.  Handle "alternate" relocations.
	(xtensa_force_relocation, xtensa_check_inside_bundle,
	xtensa_elf_section_change_hook): New.
	(xtensa_symbol_new_hook): Delete.
	(xtensa_fix_adjustable): Check for difference of symbols with an
	offset.  Check for external and weak symbols.
	(md_apply_fix3): Remove cases for XTENSA_OP{0,1,2} relocs.
	(md_estimate_size_before_relax): Return expansion for the first slot.
	(tc_gen_reloc): Handle difference of symbols by producing
	XTENSA_DIFF{8,16,32} relocs and by writing the value of the difference
	into the output.  Handle new XTENSA_SLOT*_OP relocs by storing the
	tentative values into the output when linkrelax is set.
	(XTENSA_PROP_SEC_NAME): Define.
	(xtensa_post_relax_hook): Call xtensa_find_unmarked_state_frags.
	Create literal tables only if using literal sections.  Create new
	property tables instead of old instruction tables.  Check for unaligned
	branch targets and loops.
	(finish_vinsn, find_vinsn_conflicts, check_t1_t2_reads_and_writes,
	new_resource_table, clear_resource_table, resize_resource_table,
	resources_available, reserve_resources, release_resources,
	opcode_funcUnit_use_unit, opcode_funcUnit_use_stage,
	resources_conflict, xg_find_narrowest_format, relaxation_requirements,
	bundle_single_op, emit_single_op, xg_assemble_vliw_tokens): New.
	(xtensa_end): Call xtensa_flush_pending_output.  Set past_xtensa_end
	flag.  Update checks for workaround options.  Call
	xtensa_mark_narrow_branches and xtensa_mark_zcl_first_insns.
	(xtensa_cleanup_align_frags): Add special case for branch targets.
	Check for and mark unreachable frags.
	(xtensa_fix_target_frags): Remove use of align_only_targets flag.
	Use RELAX_LOOP_END_BYTES in special case for negatable branch at the
	end of a zero-overhead loop body.
	(frag_can_negate_branch): Handle instructions with multiple slots.
	Use new xtensa-isa.h functions
	(xtensa_mark_narrow_branches, is_narrow_branch_guaranteed_in_range,
	xtensa_mark_zcl_first_insns): New.
	(xtensa_fix_a0_b_retw_frags, xtensa_fix_b_j_loop_end_frags): Error if
	transformations are disabled.
	(next_instrs_are_b_retw): Use new xtensa-isa.h functions.  Handle
	multislot instructions.
	(xtensa_fix_close_loop_end_frags, xtensa_fix_short_loop_frags):
	Likewise.  Also error if transformations are disabled.
	(unrelaxed_frag_max_size): New.
	(unrelaxed_frag_min_insn_count, unrelax_frag_has_b_j): Use new
	xtensa-isa.h functions.
	(xtensa_sanity_check, is_empty_loop, is_local_forward_loop): Use
	xtensa_opcode_is_loop instead of is_loop_opcode.
	(get_text_align_power): Replace as_fatal with assertion.
	(get_text_align_fill_size): Iterate instead of using modulus when
	use_nops is false.
	(get_noop_aligned_address): Assert that this is for a machine-dependent
	RELAX_ALIGN_NEXT_OPCODE frag.  Use next_frag_opcode_is_loop,
	xg_get_single_size, and frag_format_size.
	(get_widen_aligned_address): Rename to ...
	(get_aligned_diff): ... this function.  Add max_diff parameter.
	Remove handling of rs_align/rs_align_code frags.  Use
	next_frag_format_size, get_text_align_power, get_text_align_fill_size,
	next_frag_opcode_is_loop, and xg_get_single_size.  Compute max_diff
	and pass it back to caller.
	(xtensa_relax_frag): Use relax_frag_loop_align.  Add code for new
	RELAX_SLOTS, RELAX_MAYBE_UNREACHABLE, RELAX_MAYBE_DESIRE_ALIGN,
	RELAX_FILL_NOP, and RELAX_UNREACHABLE frag types.  Check relax_seen.
	(relax_frag_text_align): Rename to ...
	(relax_frag_loop_align): ... this function.  Assume loops can only be
	in the first slot of an instruction.
	(relax_frag_add_nop): Use assemble_nop instead of constructing an OR
	instruction.  Remove call to frag_wane.
	(relax_frag_narrow): Rename to ...
	(relax_frag_for_align): ... this function.  Extend to handle
	RELAX_FILL_NOP and RELAX_UNREACHABLE, as well as RELAX_SLOTS with
	RELAX_NARROW for the first slot.
	(find_address_of_next_align_frag, bytes_to_stretch): New.
	(future_alignment_required): Use find_address_of_next_align_frag and
	bytes_to_stretch.  Look ahead to subsequent frags to make smarter
	alignment decisions.
	(relax_frag_immed): Add format, slot, and estimate_only parameters.
	Check if transformations are enabled for b_j_loop_end workaround.
	Use new xtensa-isa.h functions and handle multislot instructions.
	Update call to xg_assembly_relax.
	(md_convert_frag): Handle new RELAX_SLOTS, RELAX_UNREACHABLE,
	RELAX_MAYBE_UNREACHABLE, RELAX_MAYBE_DESIRE_ALIGN, and RELAX_FILL_NOP
	frag types.
	(convert_frag_narrow): Add segP, format and slot parameters.  Call
	convert_frag_immed for branch instructions.  Adjust calls to
	tinsn_from_chars, tinsn_immed_from_frag, and xg_emit_insn_to_buf.  Use
	xg_get_single_size and xg_get_single_format.
	(convert_frag_fill_nop): New.
	(convert_frag_immed): Add format and slot parameters.  Handle multislot
	instructions and use new xtensa-isa.h functions.  Update calls to
	tinsn_immed_from_frag and xg_assembly_relax.  Check if transformations
	enabled for b_j_loop_end workaround.  Use build_nop instead of
	assemble_nop.  Check is_specific_opcode flag.  Check for unreachable
	frags.  Use xg_get_single_size.  Handle O_pltrel.
	(fix_new_exp_in_seg): Remove check for old plt flag.
	(convert_frag_immed_finish_loop): Update calls to tinsn_from_chars and
	xtensa_insnbuf_to_chars.  Call tinsn_immed_from_frag.  Change check
	for loop opcode to an assertion.  Mark all frags up to the end of the
	loop as not transformable.
	(get_last_insn_flags, set_last_insn_flags): Use get_subseg_info.
	(get_subseg_info): New.
	(xtensa_move_literals): Call xtensa_set_frag_assembly_state.  Add null
	check for dest_seg.
	(xtensa_switch_to_literal_fragment): Rewrite to handle absolute
	literals and use xtensa_switch_to_non_abs_literal_fragment otherwise.
	(xtensa_switch_to_non_abs_literal_fragment): New.
	(cache_literal_section): Add is_code parameter and pass it through to
	retrieve_literal_seg.
	(retrieve_literal_seg): Add is_code parameter and use it to set the
	flags on the literal section.  Handle case where head parameter is 0.
	(get_frag_is_no_transform, set_frag_is_specific_opcode,
	set_frag_is_no_transform): New.
	(xtensa_create_property_segments): Add end_property_function parameter
	and pass it through to add_xt_block_frags.  Call bfd_get_section_flags
	and skip SEC_DEBUGGING and !SEC_ALLOC sections.
	(xtensa_create_xproperty_segments, section_has_xproperty): New.
	(add_xt_block_frags): Add end_property_function parameter and call it
	if it is non-zero.  Call xtensa_frag_flags_init.
	(xtensa_frag_flags_is_empty, xtensa_frag_flags_init,
	get_frag_property_flags, frag_flags_to_number,
	xtensa_frag_flags_combinable, xt_block_aligned_size,
	xtensa_xt_block_combine, add_xt_prop_frags,
	init_op_placement_info_table, opcode_fits_format_slot,
	xg_get_single_size, xg_get_single_format): New.
	(istack_push): Inline call to tinsn_copy.
	(tinsn_copy): Delete.
	(tinsn_has_invalid_symbolic_operands): Handle O_hi16 and O_lo16 and
	CONST16 opcodes.  Handle O_big, O_illegal, and O_absent.
	(tinsn_has_complex_operands): Handle O_hi16 and O_lo16.
	(tinsn_to_insnbuf): Use xg_get_single_format and new xtensa-isa.h
	functions.  Handle invisible operands.
	(tinsn_to_slotbuf): New.
	(tinsn_check_arguments): Use new xtensa-isa.h functions.
	(tinsn_from_chars): Add slot parameter.  Rewrite using xg_init_vinsn,
	vinsn_from_chars, and xg_free_vinsn.
	(tinsn_from_insnbuf): New.
	(tinsn_immed_from_frag): Add slot parameter and handle multislot
	instructions.  Handle symbol differences.
	(get_num_stack_text_bytes): Use xg_get_single_size.
	(xg_init_vinsn, xg_clear_vinsn, vinsn_has_specific_opcodes,
	xg_free_vinsn, vinsn_to_insnbuf, vinsn_from_chars, expr_is_register,
	get_expr_register, set_expr_symbol_offset_diff): New.
	* config/tc-xtensa.h (MAX_SLOTS): Define.
	(xtensa_relax_statesE): Move from tc-xtensa.c. Add
	RELAX_CHECK_ALIGN_NEXT_OPCODE, RELAX_MAYBE_DESIRE_ALIGN, RELAX_SLOTS,
	RELAX_FILL_NOP, RELAX_UNREACHABLE, RELAX_MAYBE_UNREACHABLE, and
	RELAX_NONE types.
	(RELAX_IMMED_MAXSTEPS): Move from tc-xtensa.c.
	(xtensa_frag_type struct): Add is_assembly_state_set,
	use_absolute_literals, relax_seen, is_unreachable, is_specific_opcode,
	is_align, is_text_align, alignment, and is_first_loop_insn fields.
	Replace is_generics and is_relax fields by is_no_transform field.
	Delete is_text and is_longcalls fields.  Change text_expansion and
	literal_expansion to arrays of MAX_SLOTS entries.  Add arrays of
	per-slot information: literal_frags, slot_subtypes, slot_symbols,
	slot_sub_symbols, and slot_offsets.  Add fr_prev field.
	(xtensa_fix_data struct): New.
	(xtensa_symfield_type struct): Delete plt field.
	(xtensa_block_info struct): Move definition to tc-xtensa.h.  Add
	forward declaration here.
	(xt_section_type enum): Delete xt_insn_sec.  Add xt_prop_sec.
	(XTENSA_SECTION_RENAME): Undefine.
	(TC_FIX_TYPE, TC_INIT_FIX_DATA, TC_FORCE_RELOCATION, NO_PSEUDO_DOT,
	tc_unrecognized_line, md_do_align, md_elf_section_change_hook,
	HANDLE_ALIGN, TC_LINKRELAX_FIXUP, SUB_SEGMENT_ALIGN): Define.
	(TC_CONS_FIX_NEW, tc_symbol_new_hook): Delete.
	(unit_num_copies_func, opcode_num_units_func,
	opcode_funcUnit_use_unit_func, opcode_funcUnit_use_stage_func): New.
	(resource_table struct): New.
	* config/xtensa-istack.h (MAX_INSN_ARGS): Increase from 6 to 10.
	(TInsn struct): Add keep_wide, loc, fixup, record_fix, subtype,
	literal_space, symbol, sub_symbol, offset, and literal_frag fields.
	(tinsn_copy): Delete prototype.
	(vliw_insn struct): New.
	* config/xtensa-relax.c (insn_pattern_struct): Add options field.
	(widen_spec_list): Add option conditions for density and boolean
	instructions.  Add expansions using CONST16 and conditions for using
	CONST16 vs. L32R.  Use new Xtensa LX RSR/WSR syntax.  Add entries for
	predicted branches.
	(simplify_spec_list): Add option conditions for density instructions.
	Add entry for NOP instruction.
	(append_transition): Add cmp function pointer parameter and use it to
	insert the new entry in order.
	(operand_function_LOW16U, operand_function_HI16U): New.
	(xg_has_userdef_op_fn, xg_apply_userdef_op_fn): Handle
	OP_OPERAND_LOW16U and OP_OPERAND_HI16U.
	(enter_opname, split_string): Use xstrdup instead of strdup.
	(init_insn_pattern): Initialize new options field.
	(clear_req_or_option_list, clear_req_option_list,
	clone_req_or_option_list, clone_req_option_list, parse_option_cond):
	New.
	(parse_insn_pattern): Parse option conditions.
	(transition_applies): New.
	(build_transition): Use new xtensa-isa.h functions.  Fix incorrectly
	swapped last arguments in calls to append_constant_value_condition.
	Call clone_req_option_list.  Add warning about invalid opcode.
	Handle LOW16U and HI16U function names.
	(build_transition_table): Add cmp parameter and use it in calls to
	append_transition.  Use new xtensa-isa.h functions.  Check
	transition_applies before adding entries.
	(xg_build_widen_table, xg_build_simplify_table): Add cmp parameter and
	pass it through to build_transition_table.
	* config/xtensa-relax.h (ReqOrOptionList, ReqOrOption, ReqOptionList,
	ReqOption, transition_cmp_fn): New types.
	(OpType enum): Add OP_OPERAND_LOW16U and OP_OPERAND_HI16U.
	(transition_rule struct): Add options field.
	* doc/as.texinfo (Overview): Update Xtensa options.
	* doc/c-xtensa.texi (Xtensa Options): Delete --[no-]density,
	--[no-]relax, and --[no-]generics options.  Update descriptions of
	--text-section-literals and --[no-]longcalls.  Add
	--[no-]absolute-literals and --[no-]transform.
	(Xtensa Syntax): Add description of syntax for FLIX instructions.
	Remove use of "generic" and "specific" terminology for opcodes.
	(Xtensa Registers): Generalize the syntax description to include
	user-defined register files.
	(Xtensa Automatic Alignment): Update.
	(Xtensa Branch Relaxation): Mention limitation of unconditional jumps.
	(Xtensa Call Relaxation): Linker can now remove most of the overhead.
	(Xtensa Directives): Remove confusing rules about precedence.
	(Density Directive, Relax Directive): Delete.
	(Schedule Directive): New.
	(Generics Directive): Rename to ...
	(Transform Directive): ... this node.
	(Literal Directive): Update for absolute literals.  Missing
	literal_position directive is now an error.
	(Literal Position Directive): Update for absolute literals.
	(Freeregs Directive): Delete.
	(Absolute Literals Directive): New.
	(Frame Directive): Minor editing.
	* Makefile.am (DEPTC_xtensa_elf, DEPOBJ_xtensa_elf, DEP_xtensa_elf):
	Update dependencies.
	* Makefile.in: Regenerate.

2004-10-07  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (append_insn): Use fix_new rather than fix_new_exp
	to build the second and third fixups for a composite relocation.
	(macro_read_relocs): New function.
	(macro_build): Use it.
	(s_cpsetup): Pass all three composite relocation codes to macro_build.
	Simplify fragging code accordingly.
	(s_gpdword): Use fix_new rather than fix_new_exp for the second part
	of the composite relocation.  Set fx_tcbit in both fixups.

2004-10-07  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (append_insn): Set fx_tcbit for composite relocs.
	(md_apply_fix3): Don't treat composite relocs as done.

2004-10-07  Jan Beulich <jbeulich@novell.com>

	* macro.c (macro_expand_body): When ELF, use .LL rather than LL as
	prefix for symbol names generated from the LOCAL macro directive.

	* dw2gencfi.c (select_cie_for_fde): When separating CIE out from
	FDE, treat a DW_CFA_remember_state as we do a DW_CFA_advance_loc.

2004-10-07  Tomer Levi  <Tomer.Levi@nsc.com>

	* config/tc-crx.c (preprocess_reglist): Handle Co-processor
	Special registers.
	(md_assemble): Add error checking for Co-Processor instructions.
	(get_cinv_parameters): Add 'b' option to invalidate the
	branch-target cache.

2004-10-05  Paul Brook  <paul@codesourcery.com>

	* config/tc-arm.c (unwind): New variable.
	(vfp_sp_encode_reg): New function.
	(vfp_sp_reg_required_here): Use it.
	(vfp_sp_reg_list, vfp_dp_reg_list): Remove.
	(vfp_parse_reg_list): New function.
	(s_arm_unwind_fnstart, s_arm_unwind_fnend, s_arm_unwind_cantunwind,
	s_arm_unwind_personality, s_arm_unwind_personalityindex,
	s_arm_unwind_handlerdata, s_arm_unwind_save, s_arm_unwind_movsp,
	s_arm_unwind_pad, s_arm_unwind_setfp, s_arm_unwind_raw): New
	functions.
	(md_pseudo_table): Add them.
	(do_vfp_reg2_from_sp2): Use vfp_parse_reg_list and vfp_sp_encode_reg.
	(do_vfp_sp2_from_reg2, vfp_sp_ldstm, vfp_dp_ldstm): Ditto.
	(set_section, add_unwind_adjustsp, flush_pending_unwind,
	finish_unwind_opcodes, start_unwind_section, create_unwind_entry,
	require_hashconst, add_unwind_opcode): New functions.
	* doc/c-arm.texi: Document unwinding opcodes.
	* NEWS: Mention the new feature.

2004-10-04  Eric Christopher  <echristo@redhat.com>

	* config/tc-mips.c (md_apply_fix3): Remove erroneous assert.

2004-10-01  H.J. Lu  <hongjiu.lu@intel.com>

	* config/tc-ppc.c (md_apply_fix3): Call S_SET_THREAD_LOCAL for
	TLS relocations.
	* config/tc-s390.c (md_apply_fix3): Likewise.
	* config/tc-sparc.c (md_apply_fix3): Likewise.

2004-10-01  Paul Brook  <paul@codesourcery.com>

	* config/tc-arm.c (arm_elf_section_type): New function.
	(arm_elf_change_section): Set section link for exidx sections.
	* config/tc-arm.h (arm_elf_section_type): Add prototype.
	(md_elf_section_type): Define.

2004-10-01  Bill Farmer  <Bill@the-farmers.freeserve.co.uk>

	* config/tc-pdp11.c (md_apply_fix3): Change to sign of the SOB
	instruction's offset.

2004-10-01  Adam Nemet  <anemet@lnxw.com>

	* (TARGET_FORMAT): Remove LynxOS COFF definition.

2004-10-01  Ravi Ramaseshan  <ravi.ramaseshan@codito.com>

	* config/tc-arc.c (tc_gen_reloc): Don't assume fixP->fx_addsy is an
	asymbol *, instead use symbol_get_bfdsym.

2004-09-30  Linus Nielsen Feltzing  <linus@haxx.se>

	* config/tc-m68k.c (select_control_regs): Add mcf5249.

2004-09-30  Paul Brook  <paul@codesourcery.com>

	* config/tc-arm.c (do_smi, do_nop): New functions.
	(insns): Add ARMv6ZK instructions.
	(md_apply_fix3): Handle BFD_RELOC_ARM_SMI.
	(tc_gen_reloc): Ditto.
	(arm_cpus): Add mpcore and arm1176.
	(arm_archs): Add armv6{k,z,zk}.
	* doc/c-arm.texi: Document new cores and architectures.

2004-09-30  Nick Clifton  <nickc@redhat.com>

	* config/tc-arm.c: Use ISO C90 formatting.

2004-09-30  Vladimir Ivanov  <vladitx@nucleusys.com>

	* config/tc-arm.c (mav_reg_required_here): Allow REG_TYPE_CN
	as alternative when REG_TYPE_MVF, REG_TYPE_MVD, REG_TYPE_MVFX or
	REG_TYPE_MVDX is expected.

2004-09-29  Marc Bevand  <m.bevand@gmail.com>

	* doc/c-i386.texi (i386-Mnemonics): Fix typo.

2004-09-21  James E Wilson  <wilson@specifixinc.com>

	* config/tc-ia64.c (ENCODED_PSP_OFFSET): New.
	(output_rp_psprel, output_pfs_psprel, output_preds_psprel,
	output_spill_base, output_unat_psprel, output_lc_psprel,
	output_fpsr_psprel, output_priunat_psprel, output_bsp_psprel,
	output_bsprestore_psprel, output_rnat_psprel, output_spill_psprel,
	output_spill_psprel_p): Use it.

2004-09-20  Tomer Levi  <Tomer.Levi@nsc.com>

	* config/tc-crx.c (handle_LoadStor): New function.
	Handle load/stor unique instructions before parsing.

2004-09-17  Paul Brook  <paul@codesourcery.com>

	* config/tc-arm.c (s_arm_rel31): New funciton.
	(md_pseudo_table): Add .rel31.
	(md_apply_fix3): Handle BFD_RELOC_ARM_TARGET2,
	BFD_RELOC_32_PCREL and BFD_RELOC_ARM_PREL31.
	(tc_gen_reloc): Handle BFD_RELOC_ARM_PREL31 and BFD_RELOC_ARM_TARGET2.
	(arm_fix_adjustable): Return 0 for BFD_RELOC_ARM_TARGET2.
	(arm_parse_reloc): Add (target2).

2004-09-17  Alan Modra  <amodra@bigpond.net.au>

	* Makefile.am: Run "make dep-am".
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* doc/Makefile.in: Regenerate.
	* po/POTFILES.in: Regenerate.
	* po/gas.pot: Regenerate.

2004-09-14  Hideki IWAMOTO  <h-iwamoto@kit.hi-ho.ne.jp>

	* config/tc-mmix.c [!LLONG_MIN]: Correct #elsif to #elif.
	[!LLONG_MAX]: Ditto.

2004-09-13  Paul Brook  <paul@codesourcery.com>

	* config/tc-arm.c: Rename RELABS to TARGET1.

2004-09-13  Alan Modra  <amodra@bigpond.net.au>

	* messages.c (as_internal_value_out_of_range): Cast values passed
	to as_bad_where or as_warn_where to proper type.

2004-09-11  Theodore A. Roth  <troth@openavr.org>

	* config/tc-avr.c: Add support for
	atmega48, atmega88, atmega168, attiny13, attiny2313, at90can128.

2004-09-09  Alan Modra  <amodra@bigpond.net.au>

	* dw2gencfi.c (select_cie_for_fde): When separating CIE out
	from FDE, treat a CFI_escape as we do a DW_CFA_advance_loc.

2004-09-08  Paul Brook  <paul@codesourcery.com>

	* config/obj-elf.c (obj_elf_section_type): Handle init_array,
	fini_array and preinit_array section types.
	* config/tc-ia64.c (ia64_elf_section_type): Remove init_array
	and fini_array.
	* doc/as.texinfo: Document extra section types.

2004-09-02  Mark Mitchell  <mark@codesourcery.com>

	* Makefile.am (TARG_ENV_HFILES): Add te-symbian.h.
	* Makefile.in: Regenerated.
	* configure.in: Set em for arm*-*-symbianelf*.
	* configure: Regenerated.
	* config/tc-arm.c (elf32_arm_target_format): Use Symbian target
	vectors when appropriate.
	* config/te-symbian.h: New file.

2004-09-03  Tomer Levi  <Tomer.Levi@nsc.com>

	* config/tc-crx.c (gettrap): Exception vector can be case
	insensitive.
	(process_label_constant): Fix a 32-bit displacement bug in branch
	instructions.
	(get_operandtype) : Bug fix, wrong operand was used.
	(process_label_constant): Initialize relocation type to
	BFD_RELOC_NONE

2004-09-01  Richard Earnshaw < reanrsha@arm.com>

	* tc-arm.c (arm_cpus, arm_fpus): Allow <cpu>-s as well as <cpu>s
	for synthesizable cores.

	* doc/c-arm.texi (ARM Options): Document canonical names of CPUs.

2004-08-25  Dmitry Diky  <diwil@spec.ru>

	* config/tc-msp430.c:	Clean-up the code.
	(md_relax_table): New relax table.
	(mcu_types): Sort MCU types.
	(md_pseudo_table): Add .profiler pseudo handler.
	(pow2value): New function.
	(msp430_profiler): New function.
	(msp430_operands): Add new insns handlers.
	(msp430_srcoperand): Add register operand handler, allow complex
	expressions.
	(md_estimate_size_before_relax): Rewritten.
	(md_convert_frag): Rewritten.
	(msp430_relax_frag): New function.
	* config/tc-msp430.h (md_relax_frag): define macro
	* doc/c-msp430.texi: Update information.

2004-08-24  Nick Clifton  <nickc@redhat.com>

	* as.c (std_shortopts): Allow -g to take an optional argument.
	(parse_args): Pass any switch starting with -g on to the backend
	for parsing.

2004-08-18  Mark Mitchell  <mark@codesourcery.com>

	* configure.in (arm*-*-symbianelf*): New target.
	(arm*-*-eabi*): Likewise.
	* configure: Regenerated.

2004-08-18  Thiemo Seufer  <seufer@csv.ica.uni-stuttgart.de>
	* config/tc-mips.c (append_insn): Handle delay slots in branch likely
	correctly.

2004-08-18  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-ia64.c (start_unwind_section): Add linkonce_empty
	argument, don't do anything if current section is not
	.gnu.linkonce.t.* and linkonce_empty is set.
	(generate_unwind_image, dot_endp): Adjust callers, call
	start_unwind_section (*, 1) if nothing will be put into the
	section.

2004-08-17  Nick Clifton  <nickc@redhat.com>

	* as.c (MD_DEBUG_FORMAT_SELECTOR): Provide default definition.
	(show_usage): Add -g.
	(std_longopts): Add --gen-debug.  Alpha sort the table.
	(parse_args): Print an error message if a switch is not handled.
	Handle the -g switch, calling md_debug_format_selector() if
	necessary.
	* NEWS: Mention new feature.
	* doc/as.texinfo: Document new switch.
	* doc/internals.texi: Document behaviour of md_parse_option.

	* config/tc-arm.c (md_parse_option): Do not issue an error message
	if the switch is not recognised.
	* config/tc-m68k.c (md_parse_option): Likewise.
	* config/tc-pdp11.c (md_parse_option): Likewise.
	* config/tc-v850.c (md_parse_option): Likewise.

	* as.h: Fix up formatting.
	* tc.h: Likewise.

2004-08-16  Nick Clifton  <nickc@redhat.com>

	* macro.c (macro_set_alternate): Use ISO C90 formatting.

	* configure.in: Sort architecture based tables alphabetically.
	* configure: Regenerate.

2004-08-16  Alan Modra  <amodra@bigpond.net.au>

	* config/tc-ppc.c (tc_ppc_regname_to_dw2regnum <regnames>): Replace
	{ "cc", 68 }, with { "cr", 70 }.

2004-08-13 Jan Beulich <jbeulich@novell.com>
	   Nick Clifton <nickc@redhat.com>

	* as.c: Add and handle new --alternate command line option.
	* macro.c (macro_set_alternate): New.
	* macro.h (macro_set_alternate): Declare.
	* read.c: Add and handle new .altmacro and .noaltmacro directives.
	* doc/as.texinfo: Document new command line option and pseudo-ops
	as well as insert documentation originating from gasp about
	alternate macro syntax.
	* NEWS: Mention new command line option and pseudo-ops.

2004-08-10  Mark Mitchell  <mark@codesourcery.com>

	* expr.c (operand): Handle the "~", "-", and "!" operators applied
	to bignums.

2004-08-06  Paul Brook  <paul@codesourcery.com>

	* config/tc-arm.c (md_apply_fix3, tc_gen_reloc, arm_parse_reloc):
	Handle new relocations.
	* include/elf/arm.h (elf_arm_reloc_type): Add new EABI relocations.

2004-08-05  Bob Wilson  <bob.wilson@acm.org>

	* write.c (relax_segment): Use was_address instead of address when
	setting fr_fix field for align frag due to backwards .org.

2004-07-29  Alexandre Oliva  <aoliva@redhat.com>

	Introduce SH2a support.
	2004-02-24  Corinna Vinschen  <vinschen@redhat.com>
	* config/tc-sh.c (get_specific): Change arch_sh2a_up to
	arch_sh2a_nofpu_up.
	2004-02-24  Corinna Vinschen  <vinschen@redhat.com>
	* config/tc-sh.c (md_parse_option): Add sh2a-nofpu ISA handling.
	2004-02-20  Corinna Vinschen  <vinschen@redhat.com>
	* config/tc-sh.c (sh_elf_final_processing): Move sh2a recognition
	to end of conditional expression.
	2004-02-20  Corinna Vinschen  <vinschen@redhat.com>
	* config/tc-sh.c: Add sh2a-nofpu support.
	2003-12-29  DJ Delorie  <dj@redhat.com>
	* tc-sh.c: Add sh2a support.
	(parse_reg): Add tbr.
	(parse_at): Support @@(disp,tbr).
	(get_specific): Support sh2a opcodes.
	(insert4): New, for 4 byte relocs.
	(build_Mytes): Support sh2a opcodes.
	(md_apply_fix3_Mytes): Support sh2a opcodes.
	2003-12-02  Michael Snyder  <msnyder@redhat.com>
	* config/tc-sh.c (md_parse_option): Handle sh2a.
	(sh_elf_final_processing): Ditto.

2004-07-27  Jason Thorpe  <thorpej@wasabisystems.com>

	* config/tc-hppa.h (TARGET_FORMAT): Set to "elf32-hppa-netbsd"
	for TE_NetBSD.

2004-07-27  Alan Modra  <amodra@bigpond.net.au>

	* config/tc-ppc.c (ppc_frob_file_before_adjust): Warn if .toc too big.
	(ppc_arch): Expand comment.

2004-07-27  Tomer Levi  <Tomer.Levi@nsc.com>

	* config/tc-crx.c: Support evaluating the difference between two
	symbols.
	* config/tc-crx.h: Likewise.

2004-07-26  H.J. Lu  <hongjiu.lu@intel.com>

	* config/tc-ia64.c (start_unwind_section): Set the linked-to
	section.
	(ia64_elf_section_change_hook): Set the linked-to section for
	SHT_IA_64_UNWIND.

2004-07-26  Dmitry Diky  <diwil@spec.ru>

	* config/tc-msp430.c: Add new subtargets: msp430x1610,
	msp430x1611, msp430x1612, msp430x415, msp430x417, msp430xG437,
	msp430xG438, msp430xG439.

2004-07-25  Daniel Jacobowitz  <dan@debian.org>

	* doc/as.texinfo (Section, PushSection): Correct documentation
	for ELF.

2004-07-21  Jan Beulich  <jbeulich@novell.com>

	* config/tc-i386.c (optimize_imm): Adjust immediates to only those
	permissible for the selected instruction suffix.
	(match_template): Don't permit 64-bit general purpose operands in
	32-bit mode.
	(finalize_imm): Permit 64-bit immediates.
	(build_modrm_byte): Don't treat 32-bit addressing in 64-bit mode
	specially except for the width of the used base and/or index
	registers.  For 32-bit displacements, use sign-extended
	relocations only when using 64-bit addressing.
	Force zero displacement on rip-relative addressing when there is
	no other displacement.
	(i386_index_check): Don't treat 32-bit addressing in 64-bit mode
	specially except for the width of the used base and/or index
	registers.
	(parse_register): Disallow Reg64 registers in 32-bit mode.

	* config/tc-i386.c: For DefaultSize instructions, don't guess a 'q'
	suffix if the instruction doesn't support it.

2004-07-20  Maciej W. Rozycki  <macro@linux-mips.org>

	* config/tc-mips.c (append_insn): Handle constant expressions with
	no associated relocation.
	(mips_ip): Cancel the expression after use for the Q format
	specifier.
	(parse_relocation): Return no relocation for unsupported
	operators.
	(my_getSmallExpression): Return no relocation if no relocation
	operators are used.

2004-07-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* config/obj-som.c (adjust_stab_sections): Add prototype.
	(obj_som_compiler, obj_som_version, obj_som_copyright,
	adjust_stab_sections): Add ATTRIBUTE_UNUSED to unused arguments.
	* config/tc-hppa.c (update_subspace):  Likewise.
	(is_defined_subspace): Amplify comment.
	* config/obj-som.h (som_frob_file): Add prototype.

2004-07-19  Christopher Faylor  <cgf@timesys.com>
	    H.J. Lu  <hongjiu.lu@intel.com>

	* subsegs.c (section_symbol): Don't create a new segment when
	existing segment is undefined.

2004-07-16  Richard Earnshaw  <rearnsha@arm.com>

	* config/tc-arm.c: Include include/opcode/arm.h.
	(ARM_EXT_*, ARM_ARCH_*, ARM_ANY, ARM_ALL, COPROC_ANY): Delete.
	(FPU_FPA_EXT_* FPU_VFP_EXT_*, FPU_ANY, FPU_NONE, FPU_MAVERICK): Delete.
	(FPU_ARCH_*): Delete.
	* Makefile.am: Update dependencies.
	* Makefile.in: Regenerate.

2004-07-15  Nick Clifton  <nickc@redhat.com>

	* configure.in: Accept armbe as a big-endian arm configuration.
	* configure: Regenerate.

2004-07-13  Thomas Nystrom  <thn@saeab.se>

	* config/tc-i386.c (T_SHIFTOP): New constant.
	(intel_e05_1): Handle '&', '|' and T_SHIFTOP.
	(intel_el1): Handle '~'.
	(intel_get_token): Handle '<>', '&', '|' and '~'.

2004-07-13  Nick Clifton <nickc@redhat.com>

	(md_assemble): Remove spurious newline from end of as_bad error
	message.
	(intel_e05_1): Likewise.
	(intel_e11): Likewise.
	(intel_match_token): Likewise.

2004-07-11  Andreas Schwab  <schwab@suse.de>

	* config/tc-m68k.c: Convert to C90.  Remove redundant
	declarations.  Indentation fixup.
	[M68KCOFF]: Include "obj-coff.h" instead of declaring
	obj_coff_section ourselves.

2004-07-09  James E Wilson  <wilson@specifixinc.com>

	* config/tc-ia64.c (default_big_endian): New.
	(dot_byteorder, md_begin): Use it.
	(md_parse_option): Set it.

2004-07-09  Nick Clifton  <nickc@redhat.com>

	* configure.in: Change sh-sybmian-elf to sh-*-symbianelf.
	* configure: Regenerate.
	* NEWS: Change sh-sybmian-elf to sh-*-symbianelf.
	* config/tc-sh.c (sh_elf_final_processing): Use renamed version of
	sh_find_elf_flags if necessary.

2004-07-08  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (mips_fix_adjustable): If the full addend is
	going to be split into more than one in-place addend, return 0
	for relocations against mergeable sections.  Associate comments
	with code.

2004-07-07  Tomer Levi  <Tomer.Levi@nsc.com>

	* Makefile.am (CPU_TYPES): Add crx.
	(TARGET_CPU_CFILES): Add config/tc-crx.c.
	(TARGET_CPU_HFILES): Add config/tc-crx.h.
	(DEPTC_crx_elf): New target.
	(DEPOBJ_crx_elf): Likewise.
	(DEP_crx_elf): Likewise.
	* Makefile.in: Regenerate.
	* configure.in: Add crx* target.
	* configure: Regenerate.
	* config/tc-crx.c: New file.
	* config/tc-crx.h: New file.
	* NEWS: Mention new target.

2004-07-06  Nick Clifton  <nickc@redhat.com>

	* config.in: Undefine TARGET_SYMBIAN by default.
	* configure.in:
	* configure: Regenerate. Add sh-symbian-elf target.  If
	selected define TARGET_SYMBIAN.
	* config/tc-sh.h (TARGET_FORMAT): Select a Symbian target
	format if TARGET_SYMBIAN has been defined.

	* output-file.c (output_file_create): Report the target format
	chosen when bfd_openw reports that it is invalid.

	* config/obj-coff.c (coff_pseudo_table): Only define the weak
	pseudo for BFD based assemblers.

2004-07-05  Andrew Stubbs <andrew.stubbs@superh.com>

	gas:
	* config/tc-sh.c (md_assemble): Change isspace to ISSPACE.
	(md_parse_option): Remove redundant -isa testing.
	Make bfd_arch variable const.
	(md_show_usage): Make bfd_arch variable const.

2004-07-03  James E Wilson  <wilson@specifixinc.com>

	* config/tc-ia64.c (emit_one_bundle): Check and set insn_addr.
	* config/tc-ia64.h (md_frag_check): Define.

2004-07-03  Aaron W. LaFramboise  <aaron98wiridge9@aaronwl.com>

	* config/obj-coff.c (obj_coff_weak): New .weak syntax for PE weak
	externals.
	* doc/as.texinfo (Weak): Document PE weak symbols.

2004-07-03  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (HAVE_IN_PLACE_ADDENDS): New macro.
	(reloc_needs_lo_p): Only return true if HAVE_IN_PLACE_ADDENDS.
	(mips_frob_file): Rework so that only a single pass through the
	relocs is needed.  Allow %lo()s to have higher offsets than their
	corresponding %hi()s or %got()s.

2004-07-02  Nick Clifton  <nickc@redhat.com>

	* config/tc-arm.c (md_apply_fix3:BFD_RELOC_ARM_IMMEDIATE): Do not
	allow values which have come from undefined symbols.
	Always consider this fixup to have been processed as a reloc
	cannot be generated for it.

2004-07-02  Alan Modra  <amodra@bigpond.net.au>

	* frags.h (struct frag): Add has_code and insn_addr fields.
	* write.c (cvt_frag_to_fill): Invoke md_frag_check.
	* config/tc-ppc.c (md_assemble): Check and set insn_addr.
	* config/tc-ppc.h (md_frag_check): Define.

2004-06-28  Maciej W. Rozycki  <macro@linux-mips.org>

	* doc/Makefile.am (info): Rename goal to...
	(info-local): ... this, to preserve implicit dependencies.
	* doc/Makefile.in: Regenerate with automake 1.8.5.

2004-06-25  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* config/tc-m32r.c (md_convert_frag): Changed for @PLT.
	(m32r_cgen_record_fixup_exp): Changed for  @GOTOFF, @GOT.
	(m32r_fix_adjustable): Changed for  @GOTOFF, @GOT, @PLT.
	(tc_gen_reloc): Likewise.
	(m32r_end_of_match): Add for @GOTOFF, @GOT, @PLT.
	(m32r_parse_name): Likewise.
	(m32r_cgen_parse_fix_exp): Likewise.
	* config/tc-m32r.h (md_parse_name): Define for @GOTOFF, @GOT, @PLT.
	(O_PIC_reloc): Likewise.
	(TC_CGEN_PARSE_FIX_EXP): Likewise..
	* cgen.c (gas_cgen_parse_operand): Add TC_CGEN_PARSE_FIX_EXP
	for @GOTOFF, @GOT, @PLT.

2004-06-21 Jan Beulich  <jbeulich@novell.com>

	* gas/symbols.c: While discarding ordinary local absolute symbols
	when --strip-local-absolute is in effect, retain file symbols.

2004-06-20  Andreas Schwab  <schwab@suse.de>

	* config/tc-m68k.c (mri_chip): Replace current_chip, not augment.
	(md_parse_option): Likewise.

2004-06-17  Jan Beulich <jbeulich@novell.com>

	* config/tc-i386.c: Deal with LEX_QM the same way as with LEX_AT.
	* config/te-netware.h: New file.
	* config/te-ppcnw.h: Delete: Obsolete.
	* configure.in: Eliminate ill NetWare targets. Make generic
	NetWare target use proper emulation.
	* Makefile.am: Eliminate reference to obsolete te-ppcnw.h, add
	reference to new te-netware.h.
	* configure: Regenerate.
	* Makefile.in: Regenerate.

2004-06-15  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* config/tc-s390.c (s390_insn): Avoid incorrect signed/unsigned
	comparison in .insn pseudo operation.

2004-06-15  Alan Modra  <amodra@bigpond.net.au>

	* config/obj-coff.c (coff_adjust_section_syms): Use
	bfd_get_section_size instead of bfd_get_section_size_before_reloc.
	(coff_frob_section): Likewise.
	* config/tc-mips.c (md_apply_fix3): Likewise.
	* config/obj-elf.c (elf_frob_file): Use bfd_set_section_size.
	(elf_frob_file_after_relocs): Likewise.

2004-06-10  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* config/tc-hppa.c (log2): Rename to exact_log2.
	(pa_next_subseg): Delete unused function.
	(create_new_space): Mark unused arguments with ATTRIBUTE_UNUSED.
	(create_new_subspace): Likewise.

	Bug gas/213
	* config/tc-hppa.c (hppa_fix_adjustable): Allow reduction of fake
	labels.  Fix warning.

2004-05-28  DJ Delorie  <dj@redhat.com>

	* config/tc-mn10300.h (tc_fix_adjustable): Define.
	* config/tc-mn10300.c (mn10300_fix_adjustable): Don't adjust debug
	or non-merged symbols.

2004-05-28  H.J. Lu  <hongjiu.lu@intel.com>

	* config/tc-ia64.c (remove_marked_resource): Save, clear and
	restore the old slot when inserting srlz.i/srlz.d.

2004-05-28  Andrew Stubbs <andrew.stubbs@superh.com>

	* Makefile.am: Regenerate dependecies.
	* Makefile.in: Regenerate.
	* config/tc-sh.c (valid_arch): Make unsigned.
	(preset_target_arch): Likewise.
	(md_begin): Use new architecture flags system.
	(get_specific): Likewise.
	(assemble_ppi): Likewise.
	(md_assemble): Likewise. Also fix error check for bad opcodes.
	(md_parse_option): Likewise. Also generate -isa values according
	to the table in bfd/cpu-sh.c instead of just constants. Also
	allow <arch>-up ISA variants.
	(sh_elf_final_processing): Replace if-else chain with a call to
	sh_find_elf_flags().

2004-05-28  Peter Barada <peter@the-baradas.com>

	* config/gc-m68k.c(m68k_ip): Convert mode 5 addressing
	with zero offset into mode 2 addressing to save a word.

2004-05-27  H.J. Lu  <hongjiu.lu@intel.com>

	* config/tc-ia64.c (ar_is_in_integer_unit): Removed.
	(ar_is_only_in_integer_unit): New.
	(ar_is_only_in_memory_unit): New.
	(generate_unwind_image): Silence gcc on 32bit host.
	(md_assemble): Use ar_is_only_in_integer_unit instead of
	ar_is_in_integer_unit. Check AR access.

2004-05-27  Peter Barada  <peter@the-baradas.com>

	* config/tc-m68k.c (md_begin): Sort the opcode table into
	alphabetical order.
	(m68k_compare_opcode): New function to do the sorting.

2004-05-24  Peter Barada  <peter@the-baradas.com>

	* config/m68k-parse.y(operand): Allow for MAC/EMAC mask
	addressing on MIT style operands.
	* config/m68k-parse.y(yylex): Allow '-&' for predecrement
	w/mask addressing.
	* config/tc-m68k.c(install_operand): Comment 'G' and 'H' type
	operands.

2004-05-23  Alan Modra  <amodra@bigpond.net.au>

	* expr.c (operand, operator): Don't reject '++' and '--'.

2004-05-20  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (append_insn): Use ISA-encoded addresses in MIPS16
	dwarf tables.

2004-05-17  Adam Nemet  <anemet@lnxw.com>

	* configure.in: Add ppc-*-lynxos*.  Update i386-*-lynxos* to ELF.
	* configure: Regenerate.

2004-05-13  Paul Brook  <paul@codesourcery.com>

	* dw2gencfi.c (output_cie):  Handle dwarf3 format CIE entries.

2004-05-13  Joel Sherrill <joel@oarcorp.com>

	* configure.in (or32-*-rtems*): Switch to elf.
	* configure: Regenerate.

2004-05-13  Nick Clifton  <nickc@redhat.com>

	* po/fr.po: Updated French translation.

2004-05-11  Nick Clifton  <nickc@redhat.com>

	* doc/as.texinfo (Section): Document G and T flags to .section
	directive.  Document the extra arguments that the G flag
	requires.  Document the #tls flag.

2004-05-11  H.J. Lu  <hongjiu.lu@intel.com>

	* subsegs.c (section_symbol): Create a new section symbol if
	the existing one doesn't match.
	* symbols.c (symbol_set_bfdsym): Don't reset BFD section symbol.

2004-05-07  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (append_insn, mips_emit_delays): Extend -mfix-vr4120
	to cope with VR4181A errata MD(1) and MD(4).

2004-05-07  Brian Ford  <ford@vss.fsi.com>

	* NEWS: Mention .secrel32 for pe[i]-i386.

2004-05-07  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-frv.h (MAX_MEM_FOR_RS_ALIGN_CODE): New.
	(HANDLE_ALIGN): New.

2004-05-06  Daniel Jacobowitz  <dan@debian.org>

	* Makefile.am (DIST_SUBDIRS): Define.
	* aclocal.m4: Regenerate with automake 1.8.4.
	* Makefile.in: Likewise.
	* doc/Makefile.in: Likewise.

2004-05-06  David Mosberger-Tang  <davidm@hpl.hp.com>

	* config/tc-ia64.c (dot_serialize): Declare.
	(dot_serialize): New function.
	(md_pseudo_table): Add ".serialize.data" and
	".serialize.instruction" directives.

2004-05-06  Nick Clifton  <nickc@redhat.com>

	* messages (as_internal_value_out_of_range): Print a message about
	a value being out of range.  Be consistent about whether the
	values are printed in decimal or hexadecimal.
	(as_warn_value_out_of_range): Generate a warning message about an
	out of range value.
	(as_bad_value_out_of_range): Generate an error message about an
	out of range value.
	* as.h: Prototype the new functions.
	* config/tc-alpha.c (insert_operand): Use new function.
	* config/tc-arc.c (arc_insert_operand): Likewise.
	* config/tc-mn10200.c (mn10200_insert_operand): Likewise.
	* config/tc-mn10300.c (mn10300_insert_operand): Likewise.
	* config/tc-ppc.c (ppc_insert_operand): Likewise.
	* config/tc-s390.c (s390_insert_operand): Likewise.
	* config/tc-v850.c (v850_insert_operand): Likewise.

2004-05-05  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in: Set em=linux for frv-*-*linux*.
	* configure: Rebuilt.
	* config/tc-frv.h (TARGET_FORMAT): Use elf32-frvfdpic if...
	(frv_md_fdpic_enabled): New.
	* config/tc-frv.c (frv_md_fdpic_enabled): New.
	(DEFAULT_FDPIC): New.
	(frv_flags): Use DEFAULT_FDPIC.
	(frv_pic_flag): Likewise.
	(OPTION_NOPIC): New.
	(md_longopts): Add -mnopic.
	(md_parse_option): Handle it.
	(md_show_usage): Add -mfdpic and -mnopic.

2004-05-05  Peter Barada  <peter@the-baradas.com>

	* config/tc-m68k.c: Add find_cf_chip to print list of valid
	chips for invalid coldfire instructions, rename selectors
	for ColdFire sub-variants, add 521x,5249,547x,548x and aliases,
	add current_chip to track which chip is referred to(including save/restore),
	use current_chip to select control registers, not current_arch.
	(md_show_usage): Add new chips.
	* doc/c-m68k.texi: Document new command line switches.

2004-05-05  Jakub Jelinek  <jakub@redhat.com>

	* tc-s390.h (md_do_align, HANDLE_ALIGN): Remove.
	(NOP_OPCODE): Define.
	(s390_align_code): Remove prototype.
	* tc-s390.c (s390_align_code): Remove.

2004-05-04  H.J. Lu  <hongjiu.lu@intel.com>

	* config/tc-ia64.c (make_unw_section_name): Removed.
	(start_unwind_section): New function.
	(generate_unwind_image): Take const segT instead of const
	char *.
	(dot_handlerdata): Adjusted.
	(dot_endp): Likewise.

2004-05-02  H.J. Lu  <hongjiu.lu@intel.com>

	* config/obj-elf.c (obj_elf_change_section): Allow the
	".note.GNU-stack" section has SHF_EXECINSTR.

2004-05-02  H.J. Lu  <hongjiu.lu@intel.com>

	* config/obj-elf.c (get_section): Return bfd_boolean.
	(obj_elf_change_section): Call bfd_get_section_by_name_if
	instead of bfd_map_over_sections.

2004-04-30  H.J. Lu  <hongjiu.lu@intel.com>

	* config/obj-elf.c (get_section): New function.
	(obj_elf_change_section): Support multiple sections with same
	name.

2004-04-30  Nick Clifton  <nickc@redhat.com>

	* config/tc-arm.c (create_register_alias): Fix typo checking for
	case sensitive register aliases.
	(co_proc_number): Use error message string in all_reg_maps[]
	array.
	(cp_reg_required_here): Likewise.
	(fp_reg_required_here): Likewise.

2004-04-29  Brian Ford  <ford@vss.fsi.com>

	* dwarf2dbg.c (dwarf2_finish): Add SEC_DEBUGGING to section flags.

2004-04-28  Chris Demetriou  <cgd@broadcom.com>

	* config/tc-mips.c (HAVE_32BIT_ADDRESSES, append_insn, macro_build)
	(load_address, macro, mips_ip, md_parse_option)
	(mips_force_relocation, mips_validate_fix, md_apply_fix3)
	(s_change_sec, pic_need_relax, tc_gen_reloc): Remove all
	embedded-PIC handling, and update comments.
	(SWITCH_TABLE): Remove.
	* config/tc-mips.h (DIFF_EXPR_OK): Delete.
	(enum mips_pic_level): Remove EMBEDDED_PIC.
	(EXTERN_FORCE_RELOC): Remove embedded-PIC handling.
	(TC_FORCE_RELOCATION): Update comment.
	* ecoff.c (ecoff_build_lineno): Add comment about some code that
	might be safe to remove now that MIPS embedded-PIC is gone.

2004-04-28  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* config/obj-som.c (obj_som_init_stab_section): Add new arguments in
	call to obj_set_subsection_attributes.
	(obj_som_init_stab_section): Likewise.
	* config/tc-hppa.c (default_subspace_dict): Add comdat field.
	(pa_def_subspaces): Provide comdat default.
	(pa_subspace): Handle new "comdat" parameter.  Set SEC_LINK_ONCE and
	not SEC_IS_COMMON if section is comdat, common or dup_common.  Update
	calls to create_new_subspace and update_subspace to pass comdat flag.
	(create_new_subspace, update_subspace): Add new comdat argument.  Use
	it in calls to obj_set_subsection_attributes.
	* doc/c-hppa.texi (.subspa, .nsubspa): Document new comdat parameter
	and use of comdat, common and dup_comm parameters.

2004-04-26  H.J. Lu  <hongjiu.lu@intel.com>

	* config/obj-elf.c (obj_elf_change_section): Check if the old
	group name is NULL before comparison.

2004-04-23  Chris Demetriou  <cgd@broadcom.com>

	* config/tc-mips.h (mips_dwarf2_addr_size): Prototype.

2004-04-23  Thiemo Seufer  <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (s_mipsset): Set default CPU type for .set mipsN.

2004-04-23  Chris Demetriou  <cgd@broadcom.com>

	* config/tc-mips.c (md_longopts): Remove -membedded-pic option.
	(OPTION_MEMBEDDED_PIC): Remove.
	(OPTION_TRAP, OPTION_BREAK, OPTION_EB, OPTION_EL)
	(OPTION_FP32, OPTION_GP32, OPTION_CONSTRUCT_FLOATS)
	(OPTION_NO_CONSTRUCT_FLOATS, OPTIONS_FP64, OPTION_GP64)
	(OPTION_RELAX_BRANCH, OPTION_NO_RELAX_BRANCH)
	(OPTION_ELF_BASE): Renumber.
	(md_parse_option): Remove OPTION_MEMBEDDED_PIC handling.
	(md_show_usage): Remove mention of -membedded-pic.
	* doc/as.texinfo: Remove mention of -membedded-pic.

2004-04-23  Thiemo Seufer  <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.h (USE_GLOBAL_POINTER_OPT): Remove.
	* config/tc-mips.c (RDATA_SECTION_NAME, mips_target_format): Remove
	a.out support.
	(md_begin, mips_ip, md_parse_option, s_change_sec, s_option,
	s_abicalls, nopic_need_relax, tc_gen_reloc): Remove uses of
	USE_GLOBAL_POINTER_OPT.

2004-04-22  Thiemo Seufer  <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (macro): One more use of load_delay_nop.

2004-04-22  Atsushi Nemoto  <anemo@mba.ocn.ne.jp>

	* config/tc-mips.c (load_delay_nop): New function.
	(load_address, macro): Use load_delay_nop() to build a nop
	which can be omitted with gpr_interlocks.

2004-04-22  Thiemo Seufer  <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (hilo_interlocks, gpr_interlocks,
	cop_interlocks): Remove superfluous CPU entries.

2004-04-22  Paul Brook  <paul@codesourcery.com>

	* config/tc-arm.c (mav_parse_offset): Value must be multiple of 4.

2004-04-22  Peter Barada <peter@the-baradas.com>

	* NEWS: Added support for EMAC instructions and MAC/EMAC
	Motorola syntax.
	* config/m68k-parse.h: Add ACC[123], ACCEXT{01,23}, MAC/EMAC
	scale factor tokens, trailing_ampersand to mark mask addressing
	for MAC/EMAC instructions.
	* config/m68k-parse.y: Add options_ampersand clause, '<<',
	'>>'.
	(yylex): Handle '>', '<', and '&' following '+'.
	* config/tc-m68k.c: Set mcfmac/mcfemac on appropriate ColdFire
	architectures in archs[].
	(m68k-ip): Add '4', 'e', 'g', 'i', cases to handle mask addressing
	for MAC/EMAC instructions, ACC[0123], ACCEXT{01,23}, and '<<'/'>>'
	respectively.
	(m68k_ip): Handle trailing '&' on MAC/EMAC insns.
	(install_operand): Fix 'n' case, Add 'F', 'f', 'G', 'H', 'I', ']'
	cases.
	Add EMAC operands to init_table[].

2004-04-22  Bruno De Bus <bdebus@elis.ugent.be>

	* config/tc-arm.h (enum mstate): Move here, add MAP_UNDEFINED
	state.
	(TC_SEGMENT_INFO_TYPE): Define to enum mstate.
	* config/tc-arm.c (enum mstate): Delete from here.
	(mapping_state): Remove the static mapstate variable and instead
	store the state in the segment.  This allows a per-section mapping
	state.  Handle and ignore MAP_UNDEFINED states.
	(arm_elf_change_section): Get the current mapping state from the
	new section.
	(s_ltorg): Set the mapping state to MAP_DATA.
	(arm_cleanup): Use arm_elf_change_section to get the mapping state
	for each pool as it is emitted.

2004-04-22  Nick Clifton  <nickc@redhat.com>

	* config/tc-arm.h: Formatting tidy ups.

2004-04-20  Chris Demetriou  <cgd@broadcom.com>

	* NEWS: Note that MIPS -membedded-pic option is deprecated.

2004-04-20  DJ Delorie  <dj@redhat.com>

	* config/tc-i386.h [TE_PE] (TC_CONS_FIX_NEW): Define.
	* config/tc-i386.c (md_pseudo_table) [TE_PE]: Add "secrel32".
	[TE_PE] (O_secrel): Define.
	[TE_PE] (x86_pe_cons_fix_new): New.
	[TE_PE] (pe_directive_secrel): Likewise.
	(tc_gen_reloc) [TE_PE]: Support BFD_RELOC_32_SECREL.

2004-04-19  Eric Christopher  <echristo@redhat.com>

	* config/tc-mips.c (mips_dwarf2_addr_size): Revert part
	of previous patch for fix in gcc.

2004-04-19  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-xtensa.c (xg_assembler_literal): Fix a typo.

2004-04-19  Nathan Sidwell  <nathan@codesourcery.com>

	* read.c (do_align): Call md_flush_pending_output, if defined.

2004-04-16  Alan Modra  <amodra@bigpond.net.au>

	* expr.c (operand): Correct checks for ++ and --.

2004-04-14  H.J. Lu  <hongjiu.lu@intel.com>

	* config/tc-generic.c: Add some comments.

2004-04-14  Richard Sandiford  <rsandifo@redhat.com>

	* doc/c-mips.texi (-m{no-,}fix-vr4120): Renamed from
	-{no-}mfix-vr4122-bugs.
	* config/tc-mips.c (mips_fix_vr4120): Renamed from mips_fix_4122_bugs.
	(append_insn, mips_emit_delays): Update accordingly.
	(OPTION_FIX_VR4120, OPTION_NO_FIX_VR4120): Renamed from *VR4122.
	(md_longopts): Change -{no-,}mfix-vr4122-bugs to -m{no-,}fix-vr4120.
	(md_parse_option): Update after above changes.
	(md_show_usage): Add -mfix-vr4120.

2004-04-13  Bob Wilson  <bob.wilson@acm.org>

	* doc/as.texinfo (Sub-Sections): Conditionalize COFF-specific use
	of .section directive; add a reference to the ELF .subsection
	directive.

2004-04-13  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* config/tc-m32r.c (md_assemble): Fixed infinite loop bug
	in parallel.

2004-04-11  Thiemo Seufer  <seufer@csv.ica.uni-stuttgart.de>

	* Makefile.am: Remove mips from aout targets.
	* Makefile.in: Regenerate.
	* configure.in: Remove mips-dec-bsd* target.
	* configure: Regenerate.

2004-04-07  Alan Modra  <amodra@bigpond.net.au>

	PR 96
	* config/tc-ppc.c (ppc_elf_suffix): Add valid32 and valid64 fields
	to struct map_bfd.  Adjust MAP macro, and define MAP32, MAP64.
	Update "mapping".  Restrict some @ modifiers to 32 bit.

2004-04-01  Asgari Jinia  <asgarij@kpitcummins.com>
	    Dhananjay Deshpande <dhananjayd@kpitcummins.com>

	* config/tc-sh.c (dont_adjust_reloc_32): New variable.
	(sh_fix_adjustable): Avoid adjusting BFD_RELOC_32 when
	dont_adjust_reloc_32 is set.
	(md_longopts): Add option -renesas.
	(md_parse_option, md_show_usage): Likewise.
	* doc/c-sh.texi: Likewise.

2004-04-01  Dave Korn  <dk@artimi.com>

	* config/tc-dlx.c (md_assemble): set fx_no_overflow flag for
	hi16 and lo16 fixS structs.
	(md_assemble): generate bit_fixS for RELOC_DLX_LO16 in
	exactly the same way as for RELOC_DLX_REL16.
	(machine_ip): properly respect LO flag in the_insn and
	output RELOC_DLX_LO16 rather than RELOC_DLX_16.
	(md_apply_fix3): apply RELOC_DLX_LO16.

2004-03-30  Stan Shebs  <shebs@apple.com>

	Remove long-obsolete MPW support.
	* mpw-config.in, mpw-make.sed, mac-as.r: Remove files.
	* configure.in: Remove mention of ppc-*-mpw* config.
	* configure.in: Likewise.

2004-03-30  Nick Clifton  <nickc@redhat.com>

	* config/tc-arm.c (meabi_flags): Make its use conditional upon
	OBJ_ELF being defined.

2004-03-27  Alan Modra  <amodra@bigpond.net.au>

	* config/obj-aout.c (obj_aout_type): Remove #ifdef BFD_ASSEMBLER code.

2004-03-23  Paul Brook  <paul@codesourcery.com>

	* config/tc-arm.c (meabi_flags): New variable.
	(arm_parse_eabi): New function.
	(md_begin): Set flags for EABI v3.
	(arm_eabis): Add.
	(arm_long_opts): Add meabi.
	* doc/as.texinfo <ARM>: Document -meabi.
	* doc/c-arm.texi: Ditto.

2004-03-22  Bob Wilson  <bob.wilson@acm.org>

	* config/tc-xtensa.c (xtensa_post_relax_hook): Create literal
	tables even when use_literal_section flag is not set.

2004-03-22  Alan Modra  <amodra@bigpond.net.au>

	* config/tc-sh.c: Remove trailing whitespace.

2004-03-22  Hans-Peter Nilsson  <hp@axis.com>

	* doc/c-cris.texi (CRIS-Opts): Document --no-mul-bug-abort,
	--mul-bug-abort and the default behavior.
	* config/tc-cris.c (cris_insn_kind): New member CRIS_INSN_MUL.
	(err_for_dangerous_mul_placement): New variable.
	(STATE_MUL, OPTION_MULBUG_ABORT_ON, OPTION_MULBUG_ABORT_OFF): New
	macros.
	(md_cris_relax_table): Have placeholder for STATE_MUL.
	(md_longopts): New options --mul-bug-abort and --no-mul-bug-abort.
	(cris_relax_frag) <case ENCODE_RELAX (STATE_MUL, STATE_BYTE)>: New
	case doing nothing.
	(md_estimate_size_before_relax) <case ENCODE_RELAX (STATE_MUL,
	STATE_BYTE)>: Ditto.
	(md_convert_frag) <ENCODE_RELAX (STATE_MUL, STATE_BYTE)>: Check
	alignment and position of this frag, emit error message if
	suspicious.
	(md_assemble): For a multiply insn and when checking it,
	transform the current frag into a special frag for that purpose.
	(md_parse_option) <case OPTION_MULBUG_ABORT_OFF, case
	OPTION_MULBUG_ABORT_ON>: Handle new options.

2004-03-19  Bob Wilson  <bob.wilson@acm.org>

	* config/tc-xtensa.c (mark_literal_frags): New function.
	(xtensa_move_literals): Call mark_literal_frags for all literal
	segments, including init and fini literal segments.
	(xtensa_post_relax_hook): Swap use of xt_insn_sec and xt_literal_sec.

2004-03-19  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>

	* tc-hppa.c (cons_fix_new_hppa): Check for PC relative base type.
	(pa_comm): Set BSF_OBJECT in symbol flags.

2004-03-19  Alan Modra  <amodra@bigpond.net.au>

	* Makefile.am: Run "make dep-am".
	* Makefile.in: Regenerate.
	* doc/Makefile.in: Regenerate.
	* config.in: Regenerate.
	* po/gas.pot: Regenerate.

2004-03-18  Nathan Sidwell  <nathan@codesourcery.com>

	* read.c (read_a_source_file): Use demand_empty_rest_of_line.
	(demand_empty_rest_of_line): Issue an error here.
	(ignore_rest_of_line): Silently skip to end.
	(demand_copy_string): Issue an error, not warning.
	(equals): Likewise.
	* config/obj-elf.c (obj_elf_section_name): Likewise.
	(obj_elf_section): Likewise.
	* config/tc-arc.c (arc_extoper): Remove bogus NULL checks.
	(arc_extinst): Likewise.
	* config/tc-ia64.c (dot_saveb): Use demand_empty_rest_of_line.
	(dot_spill): Likewise.
	(dot_unwabi): Likewise.
	(dot_prologue): Likewise.

	* expr.c (operand): Reject ++ and --.
	(operator): Likewise.

2004-03-17  Kaz Kojima  <kkojima@rr.iij4u.or.jp>

	* config/tc-sh.c: Include dw2gencfi.h.
	(sh_cfi_frame_initial_instructions): New function.
	(sh_regname_to_dw2regnum): Likewise.
	* config/tc-sh.h (DWARF2_LINE_MIN_INSN_LENGTH): Move to the end of
	file.
	(TARGET_USE_CFIPOP): Define.
	(tc_cfi_frame_initial_instructions): Likewise.
	(tc_regname_to_dw2regnum): Likewise.
	(DWARF2_DEFAULT_RETURN_COLUMN, DWARF2_CIE_DATA_ALIGNMENT): Likewise.
	* Makefile.am: Update dependencies.
	* Makefile.in: Regenerate.

2004-03-17  Ralf Corsepius <corsepiu@faw.uni-ulm.de>

	* configure.in: Switch sh-*-rtems* to ELF.  Add sh-*-rtemscoff*.
	* configure: Regenerate.

2004-03-12  Bob Wilson  <bob.wilson@acm.org>

	* read.c (s_leb128): Call md_flush_pending_output.

2004-03-12  Michal Ludvig  <mludvig@suse.cz>

	* config/tc-i386.c (output_insn): Handle PadLock instructions.
	* config/tc-i386.h (CpuPadLock): New define.
	(CpuUnknownFlags): Added CpuPadLock.

2004-03-07  Andreas Schwab  <schwab@suse.de>

	* doc/c-hppa.texi (HPPA Directives): Fix typo.

2004-03-07  Richard Henderson  <rth@redhat.com>

	* dw2gencfi.c (output_cie): Align length to 4 byte boundary.
	(cfi_finish): Likewise for fde.

2004-03-05  H.J. Lu  <hongjiu.lu@intel.com>

	* config/tc-ia64.c (md_assemble): Properly handle NULL
	align_frag.
	(ia64_handle_align): Don't abort if failed to add a stop bit.

2004-03-04  H.J. Lu  <hongjiu.lu@intel.com>

	* Makefile.in: Regenerated.
	* aclocal.m4: Likewise.
	* configure: Likewise.
	* doc/Makefile.in: Likewise.

2004-03-03  H.J. Lu  <hongjiu.lu@intel.com>

	* config/tc-ia64.c (dot_align): New.
	(ia64_do_align): Make it static.
	(md_pseudo_table): Use "dot_align" for "align".
	(ia64_md_do_align): Don't set align_frag here.
	(ia64_handle_align): Add a stop bit to the previous bundle if
	needed.

	* config/tc-ia64.h (ia64_do_align): Removed.

2003-03-03  Andrew Stubbs  <andrew.stubbs@superh.com>

	* config/tc-sh.c (md_parse_option): Add -isa=sh4-nofpu and
	-isa=sh4-nommu-nofpu options. Adjust help messages accordingly.
	(sh_elf_final_processing): Output BFD type sh4_nofpu if that is
	the most general type or the user specifically requested it.
	(md_assemble): Add a new error message for when an instruction
	is understood, but is not allowed due to an -isa option.

2004-03-02  H.J. Lu  <hongjiu.lu@intel.com>

	* config/tc-ia64.c (align_frag): New.
	(md_assemble): Set the tc_frag_data field in align_frag for
	IA64_OPCODE_FIRST instructions.
	(ia64_md_do_align): Set align_frag.
	(ia64_handle_align): Add a stop bit if needed.

	* config/tc-ia64.h (TC_FRAG_TYPE): New.
	(TC_FRAG_INIT): New.

2004-03-01  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-frv.c (fr400_audio): New variable.
	(md_parse_option, md_show_usage): Add -mcpu=fr405 and -mcpu=fr450.
	(md_parse_option): Set fr400_audio for -mcpu=fr400 and -mcpu=fr405.
	(target_implements_insn_p): New function.
	(md_assemble): Report an error if the processor doesn't implement
	the instruction.

2004-02-27  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* config/tc-m32r.c (md_longopts): Added -no-bitinst option.
	(md_parse_option): Ditto.
	(OPTION_NO_SPECIAL_M32R): Added.
	(md_show_usage): Document it.
	(enable_speial_m32r): Changed a default value from 0 to 1.
	* doc/c-m32r.texi: Document the -no-bitinst option.

2004-02-27  Nick Clifton  <nickc@redhat.com>

	* config/tc-sh.c (get_operand): Revert previous delta.
	(tc_gen_reloc): Check for an unknown reloc type before processing
	the addend.

2004-02-27  Hannes Reinecke  <hare@suse.de>

	* config/tc-s390.c (s390_insn): Correct range check for opcode in
	.insn pseudo operation.

2004-02-27  Anil Paranjpe  <anilp1@kpitcummins.com>

	* config/tc-sh.c (get_operand):  In case of #Imm, check has been
	added for wrong syntax.

2004-02-26  Eric Christopher  <echristo@redhat.com>

	* config/tc-mips.c (mips_dwarf2_addr_size): New.
	* config/tc-mips.h (DWARF2_ADDR_SIZE): Use.

2004-02-26  Andrew Stubbs <andrew.stubbs@superh.com>

	* config/tc-sh.c (build_Mytes): Add REG_N_D and REG_N_B01
	nibble types to assembler.

2004-02-25  Fred Fish  <fnf@redhat.com>

	* config/tc-iq2000.c: Add missing \n\ in multiline string literal.

2004-02-20  James E Wilson  <wilson@specifixinc.com>

	* config/tc-ia64.c (slot_index): New arg before_relax.  Use instead of
	finalize_syms.
	(fixup_unw_records): New arg before_relax.  Pass to slot_index.
	(ia64_estimate_size_before_relax): New.
	(ia64_convert_frag): Pass 0 to fixup_unw_records.  Add comment.
	(generate_unwind_image): Pass 1 to fixup_unw_records.
	* config/tc-ia64.h (ia64_estimate_size_before_relax): Declare.
	(md_estimate_size_before_relax): Call ia64_estimate_size_before_relax.

2004-02-19  Jakub Jelinek  <jakub@redhat.com>

	* stabs.c (generate_asm_file): Avoid warning about use of
	uninitialized variable.

2004-02-18  David Mosberger  <davidm@hpl.hp.com>

	* config/tc-ia64.c (ia64_flush_insns): In addition to prologue,
	body, and endp, allow unwind records which do not have a "t"
	(time/instruction) field.

2004-02-17  Petko Manolov  <petkan@nucleusys.com>

	* config/tc-arm.c (do_mav_dspsc_1): Correct offset of CRn.
	(do_mav_dspsc_2): Likewise.
	Fix accumulator registers move opcodes.

2004-02-13  Hannes Reinecke  <hare@suse.de>
	    Jakub Jelinek  <jakub@redhat.com>

	* dwarf2dbg.c (get_filenum): Do not read beyond allocated memory.

2004-02-10  Steve Ellcey  <sje@cup.hp.com>

	* config/tc-ia64.h (ia64_frob_symbol): New declaration.
	(tc_frob_symbol): New macro definition.
	* config/tc-ia64.c (ia64_frob_symbol): New routine.

2004-02-09  Daniel Jacobowitz  <drow@mvista.com>

	* config/tc-arm.c (md_begin): Mark .note.gnu.arm.ident as
	read-only.

2004-02-09  Nathan Sidwell  <nathan@codesourcery.com>

	* read.h (IGNORE_OPCODE_CASE): Do not define. Replace with ...
	(TC_CASE_SENSITIVE): ... this.
	* read.c: Replace IGNORE_OPCODE_CASE with TC_CASE_SENSITIVE.
	* doc/internals.texi (TC_CASE_SENSITIVE): Document.

2004-02-06  James E Wilson  <wilson@specifixinc.com>

	* config/tc-ia64.c (dot_endp): Delete call to output_endp.
	(generate_unwind_image): Re-add it here.

2004-02-06  Nathan Sidwell  <nathan@codesourcery.com>

	* dwarf2dbg.c (DWARF2_ADDR_SIZE): Remove trailing ';'
	* read.h (SKIP_WHITESPACE): Turn into an expression.
	* read.c (read_a_source_file): A pseudo is removed by having a
	NULL handler.

2004-02-05  James E Wilson  <wilson@specifixinc.com>

	* config/tc-ia64.c (output_endp): New.
	(count_bits): Delete.
	(ia64_flush_insns, process_one_record, optimize_unw_records): Handle
	endp unwind records.
	(fixup_unw_records): Handle endp unwind records.  Delete code for
	shortening prologue regions not followed by a body record.
	(dot_endp): Call add_unwind_entry to emit endp unwind record.
	* config/tc-ia64.h (unw_record_type): Add endp.

2004-02-03  James E Wilson  <wilson@specifixinc.com>

	* config/tc-ia64.c (ia64_convert_frag): Call md_number_to_chars to
	fill padding bytes with zeroes.
	(emit_one_bundle): New locals last_ptr, end_ptr.  Rewrite code that
	sets unwind_record slot_number and slot_frag fields.

2004-02-02  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* config/tc-mips.c (add_got_offset_hilo): New function.
	(macro): Use load_register() and add_got_offset_hilo() to load
	constants instead of hardcoding code sequences throughout.

2004-01-28  H.J. Lu  <hongjiu.lu@intel.com>

	* config/tc-ia64.c (emit_one_bundle): Add proper indentation.

2004-01-26  Bernardo Innocenti  <bernie@develer.com>

	* config/tc-m68k.h (EXTERN_FORCE_RELOC): Handle m68k-uclinux specially,
	like m68k-elf.
	* config/tc-m68k.c (RELAXABLE_SYMBOL): Use EXTERN_FORCE_RELOC instead
	of hard-coded test for TARGET_OS=elf.

2004-01-24  Chris Demetriou  <cgd@broadcom.com>

	* config/tc-mips.c (hilo_interlocks): Change definition
	so that MIPS32, MIPS64 and later ISAs are included, along with
	the already-included machines.  Update comments.

2004-01-23  Daniel Jacobowitz  <drow@mvista.com>

	* config/tc-arm.c (tc_gen_reloc): Improve error message for
	undefined local labels.

2004-01-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (load_address, macro): Update comments about
	NewABI GP relaxation.

2004-01-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (macro_build): Remove place and counter arguments.
	(mips_build_lui, macro_build_ldst_constoffset): Likewise.
	(mips16_macro_build, macro_build_jalr): Remove counter argument.
	(set_at, load_register, load_address, move_register): Likewise.
	(load_got_offset, add_got_offset): Likewise.
	Update all calls and tidy accordingly.

2004-01-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (RELAX_ENCODE): Remove WARN argument.
	(RELAX_FIRST, RELAX_SECOND): Turn into 8-bit quantities.
	(RELAX_USE_SECOND): Bump to 0x10000.
	(RELAX_SECOND_LONGER, RELAX_NOMACRO, RELAX_DELAY_SLOT): New flags.
	(mips_macro_warning): New variable.
	(md_assemble): Wrap macro expansion in macro_start() and macro_end().
	(s_cpload, s_cpsetup, s_cprestore, s_cpreturn): Likewise.
	(relax_close_frag): Set mips_macro_warning.first_frag.  Adjust use
	of RELAX_ENCODE.
	(append_insn): Update mips_macro_warning.sizes.
	(macro_start, macro_warning, macro_end): New functions.
	(macro_build): Don't emit warnings here.
	(macro_build_lui, md_estimate_size_before_relax): ...or here.
	(md_convert_frag): Check for cases where one macro alternative
	needs a warning and the other doesn't.  Emit a warning if the
	longer sequence was chosen.

2004-01-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.h (tc_frag_data_type, TC_FRAG_TYPE): Remove.
	* config/tc-mips.c (RELAX_ENCODE): Take three arguments: the size of
	the first sequence, the size of the second sequence, and a flag
	that says whether we should warn.
	(RELAX_OLD, RELAX_NEW, RELAX_RELOC[123]): Delete.
	(RELAX_FIRST, RELAX_SECOND): New.
	(mips_relax): New variable.
	(relax_close_frag, relax_start, relax_switch, relax_end): New fns.
	(append_insn): Remove "place" argument.  Use mips_relax.sequence
	rather than "place" to check whether we're expanding the second
	alternative of a relaxable macro.  Remove redundant check for
	branch relaxation.  If generating a normal insn, and there
	is not enough room in the current frag, call relax_close_frag()
	to close it.  Update mips_relax.sizes[].  Emit fixups for the
	second version of a relaxable macro.  Record the first relaxable
	fixup in mips_relax.  Remove tc_gen_reloc workaround.
	(macro_build): Remove all uses of "place".  Use mips_relax.sequence
	in the same way as in append_insn.
	(mips16_macro_build): Remove "place" argument.
	(macro_build_lui): As for macro_build.  Don't drop the add_symbol
	when generating the second version of a relaxable macro.
	(load_got_offset, add_got_offset): New functions.
	(load_address, macro): Use new relaxation machinery.  Remove
	tc_gen_reloc workarounds.
	(md_estimate_size_before_relax): Set RELAX_USE_SECOND if the second
	version of a relaxable macro is needed.  Return -RELAX_SECOND if the
	first version is needed.
	(tc_gen_reloc): Remove relaxation handling.
	(md_convert_frag): Go through the fixups for a relaxable macro and
	mark those that belong to the unneeded alternative as done.  If the
	second alternative is needed, adjust the fixup addresses to account
	for the deleted first alternative.

2004-01-23  Richard Sandiford  <rsandifo@redhat.com>

	* frags.h (frag_room): Declare.
	* frags.c (frag_room): New function.
	* doc/internals.texi: Document it.

2004-01-22  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (append_insn): Don't do r3900 interlock
	optimization for -mtune=r3900, as this will break on other CPUs.

2004-01-11  Tom Rix   <tcrix@worldnet.att.net>

	* config/tc-m68hc11.c (build_indexed_byte): movb and movw cannot
	be relaxed, use fixup.
	(md_apply_fix3): Use 5 bit reloc from movb and movw fixup.

2004-01-19  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-sparc.c (sparc_ip): Disallow %f32-%f63 for single
	precision operands.

2004-01-14  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* config/tc-mips.c (append_insn): Properly detect variant frags
	that preclude swapping of relaxed branches.  Correctly swap
	instructions between frags when dealing with relaxed branches.

2004-01-14  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* acinclude.m4: Quote names of macros to be defined by AC_DEFUN
	throughout.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.

2004-01-12  Anil Paranjpe  <anilp1@KPITCummins.com>

	* config/tc-h8300.c (build_bytes): Apply relaxation to bit
	manipulation insns.

2004-01-12  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (macro_build_jalr): When adding an R_MIPS_JALR
	reloc, reserve space for the delay slot as well as the jalr itself.

2004-01-09  Paul Brook  <paul@codesourcery.com>

	* config/tc-arm.c (do_vfp_reg2_from_sp2): Rename from do_vfp_sp_reg2.
	(do_vfp_sp2_from_reg2): New function.
	(insns): Use them.
	(do_vfp_dp_from_reg2): Check return values properly.

2004-01-08  Ian Lance Taylor  <ian@wasabisystems.com>

	* config/tc-mips.c (warn_nops): Remove static variable.
	(macro): Remove test of warn_nops.
	(md_shortops): Remove 'n'.
	(md_parse_option): Remove 'n' case.
	(md_show_usage): Remove -n.
	* doc/as.texinfo (Overview): Remove MIPS -n option.
	* doc/c-mips.texi (MIPS Opts): Remove mention -n.
	* NEWS: Mention removal of MIPS -n option.

	* config/tc-mips.c (ISA_HAS_COPROC_DELAYS): Remove.
	(cop_interlocks): Check ISA level.
	(cop_mem_interlocks): Define.
	(reg_needs_delay): Check cop_interlocks rather than
	ISA_HAS_COPROC_DELAYS.
	(append_insn): Likewise.  Use cop_mem_interlocks rather than
	directly checking mips_opts.isa.
	(mips_emit_delays): Likewise.

2004-01-07  H.J. Lu  <hongjiu.lu@intel.com>

	* config/tc-ia64.c (unwind): Move next_slot_number and
	next_slot_frag to ...
	(unw_rec_list): Here.
	(free_list_records): Removed.
	(output_unw_records): Likewise.
	(generate_unwind_image): Make it void.
	(alloc_record): Initialize next_slot_number and next_slot_frag.
	(slot_index): Take .org, .space and .align into account.
	(fixup_unw_records): Don't set slot_number to 0. Use
	list->next_slot_number and list->next_slot_frag instead of
	unwind.next_slot_number and unwind.next_slot_frag.
	(ia64_convert_frag): New.
	(generate_unwind_image): Generate a rs_machine_dependent frag
	for unwind record.
	(emit_one_bundle): Use list->next_slot_number and
	list->next_slot_frag instead of unwind.next_slot_number and
	unwind.next_slot_frag.

	* config/tc-ia64.h (md_convert_frag): Defined as
	ia64_convert_frag.
	(md_estimate_size_before_relax): Defined as (f)->fr_var.

2004-01-06  Alexandre Oliva  <aoliva@redhat.com>

	2003-12-19  Alexandre Oliva  <aoliva@redhat.com>
	* config/tc-frv.h (md_apply_fix3): Don't define.
	* config/tc-frv.c (md_apply_fix3): New.  Shift/truncate %hi/%lo
	operands.
	* config/tc-frv.h (TC_FORCE_RELOCATION_SUB_LOCAL): Define.
	2003-10-07  Alexandre Oliva  <aoliva@redhat.com>
	* config/tc-frv.c (line_separator_chars): Add `!'.
	2003-09-19  Alexandre Oliva  <aoliva@redhat.com>
	* config/tc-frv.c (md_assemble): Clear insn upfront.
	2003-09-18  Alexandre Oliva  <aoliva@redhat.com>
	* config/tc-frv.c (OPTION_FDPIC): New macro.
	(md_longopts): Add mfdpic.
	(md_parse_option): Handle it.
	2003-08-04  Alexandre Oliva  <aoliva@redhat.com>
	* config/tc-frv.c (md_cgen_lookup_reloc) <FRV_OPERAND_D12,
	FRV_OPERAND_S12>: Use reloc type encoded in fix-up.
	(frv_pic_ptr): Parse funcdesc.

2004-01-05  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* doc/as.texinfo: Let texi2pod parse asconfig.texi and
	gasver.texi.  Remove duplicate symbol definitions for texi2pod.

2004-01-05  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* Makefile.am (Makefile): Move the dependency on
	$(BFDDIR)/configure.in to...
	(CONFIG_STATUS_DEPENDENCIES): ... here.
	(AUTOMAKE_OPTIONS): Require automake 1.8.
	* Makefile.in: Regenerate.
	* doc/Makefile.am (BASEDIR, BFDDIR): Define.
	(CONFIG_STATUS_DEPENDENCIES): Add a dependency on
	$(BFDDIR)/configure.in here as well.
	* doc/Makefile.in: Regenerate.

2004-01-05  Maciej W. Rozycki  <macro@ds2.pg.gda.pl>

	* Makefile.am (install, install-info, RECURSIVE_TARGETS): Remove.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* doc/Makefile.am (install, install-info): Remove.
	(install-data-local): A new hook for install-info.
	(AUTOMAKE_OPTIONS): Require automake 1.8.
	* doc/Makefile.in: Regenerate.

2004-01-02  Nutan Singh <nutan@kpitcummins.com>

	* doc/c-sh.texi: Update description about floating point behavior
	of SH family.

2004-01-02  Bernardo Innocenti  <bernie@develer.com>

	* configure.in: Add m68k-uClinux target.
	* configure: Regenerate.

For older changes see ChangeLog-0203

Copyright (C) 2004 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
