2001-12-31  Richard Henderson  <rth@redhat.com>

	* config/tc-ia64.c (errata_nop_necessary_p): Prototype.
	(make_unw_section_name): Constify local variables.

	* config/tc-ia64.c (has_suffix_p): New.
	(note_register_values): Use it instead of strstr.

2001-12-31  Jeffrey A Law  (law@redhat.com)

	* config/tc-hppa.c (pa_ip): Handle new 'c' mode completers,
	'X', 'M', and 'A'.

2001-12-21  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-sparc.h (TC_PARSE_CONS_EXPRESSION): Define.
	(sparc_cons): Provide prototype.
	* config/tc-sparc.c (tc_gen_reloc): Handle BFD_RELOC_*_PCREL and
	BFD_RELOC_SPARC_PLT{32,64}.  Enumerate for which relocs
	reloc->addend = fixp->fx_addnumber shouldn't be done instead of
	enumarating for which pc relative ones it should be done.
	(sparc_cons_special_reloc): New variable.
	(sparc_cons): New function.
	(cons_fix_new_sparc): Use sparc_cons_special_reloc.

2001-12-20  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
	    Daniel Jacobowitz <drow@mvista.com>

	* config/tc-mips.c (file_mips_gp32): Initialize to invalid value.
	(file_mips_fp32): Likewise.
	(md_begin): Compatibility handling for -mipsN option.

2001-12-20  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-sh.c (parse_at): Reject @(r0) and @(r0,).

2001-12-20  matthew green  <mrg@redhat.com>

	* config/tc-ppc.c (md_parse_option): Make -maltivec default
	to generating PowerPC instructions.

2001-12-20  Jason Thorpe  <thorpej@wasabisystems.com>

	* configure.in (mips-dec-netbsd*): Delete.
	* configure: Regenerate.

	* configure.in (arm-*-netbsdelf*): Add target.
	* configure: Regenerate.

2001-12-18  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/tc-mips.h (TC_HANDLE_FX_DONE): Remove redundant
	definition.

2001-12-18  Niibe Yutaka  <gniibe@m17n.org>

	* configure.in (assign object format): Bug fix for setting
	endian.
	* configure: Regenerate.

2001-12-18  matthew green  <mrg@eterna.com.au>

	* configure.in (m68k-*-netbsdelf*): New target.
	(m68k-*-netbsd*): Also include ELF support.
	(m68k-*-netbsdaout*): New alias for m68*-*-netbsd*.
	* configure: Regenerate.

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

	* gasp.c (main): Protoype.

2001-12-17  Richard Henderson  <rth@redhat.com>

	* config/tc-alpha.c (alpha_handle_align): Encode unop with RB as $sp.

2001-12-17  Nick Clifton  <nickc@cambridge.redhat.com>

	* cgen.c: Add prototype for queue_fixup.
	(gas_cgen_parse_operand): Move initilisastion of errmsg to avoid
	possible longjmp corruption.
	* cgen.h: Add prototype for gas_cgen_md_operand.

2001-12-15  Alan Modra  <amodra@bigpond.net.au>

	* config/obj-elf.c (obj_elf_init_stab_section): References are
	kept to section name strings.  Don't alloca them!

2001-12-12  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-d10v.c (get_operands): Mark OPERAND_PLUS after
	OPERAND_ATSIGN as O_absent.

2001-12-07  Geoffrey Keating  <geoffk@redhat.com>
	    Richard Henderson  <rth@redhat.com>

	* configure.in: Add support for xstormy16.
	* configure: Regenerated.
	* Makefile.am: Add support for xstormy16.
	* Makefile.in: Regenerated.
	* config/tc-xstormy16.c: New file.
	* config/tc-xstormy16.h: New file.

2001-12-06  Richard Earnshaw (rearnsha@arm.com)

	* tc-arm.c (do_arit, do_cmp, do_mov, do_ldst, do_ldstt, do_ldmstm)
	(do_branch, do_swi, do_adr, do_adrl, do_empty, do_mul, do_mla)
	(do_swap, do_msr, do_mrs, do_mull, do_ldstv4, do_bx, do_blx)
	(do_bkpt, do_clz, do_lstc2, do_cdp2, do_co_reg2, do_smla, do_smlal)
	(do_smul, do_qadd, do_pld, do_ldrd, do_co_reg2c, do_cdp, do_lstc)
	(do_co_reg, do_fpa_ctrl, do_fpa_ldst, do_fpa_ldmstm, do_fpa_monadic)
	(do_fpa_dyadic, do_fpa_cmp, do_fpa_from_reg, do_fpa_to_reg, do_mia)
	(do_mar, do_mra, do_c_binops, do_c_binops_1, do_c_binops_2)
	(do_c_binops_3, do_c_triple, do_c_triple_4, do_c_triple_5, do_c_quad)
	(do_c_quad_6, do_c_dspsc, do_c_dspsc_1, do_c_dspsc_2, do_c_shift)
	(do_c_shift_1, do_c_shift_2, do_c_ldst, do_c_ldst_1, do_c_ldst_2)
	(do_c_ldst_3, do_c_ldst_4, do_branch25): Delete redundant argument,
	FLAGS.
	(struct asm_opcode): Adjust parms field accordingly.
	(md_assemble): Don't pass dummy second argument when calling worker
	functions.
	(build_arm_ops_hsh): Add prototype
	(BAD_FLAGS): Delete.

2001-12-05  Richard Earnshaw  <rearnsha@arm.com>

	* tc-arm.c (struct asm_opcode): Delete comp_suffix and flags.  Add
	cond_offset.  Rename variants->variant.
	(insns): Adjust for new format.  Explicitly code each variant that
	takes flags.  Remove temporary instructions.
	(struct arm_it): Remove redundant field suffix.
	(s_flag, ldr_flags, str_flags, byte_flag, cmp_flags, ldm_flags)
	(stm_flags, lfm_flags, sfm_flags, round_flags, fix_flags, except_flag)
	(long_flag): Delete.
	(struct asm_flg): Delete.
	(LONGEST_INST): Delete.
	(V4_STR_BIT): Define.
	(struct thumb_opcode): Rename variants->variant.
	(do_empty): Renamed from do_nop.
	(ldst_extend): Delete argument hwse.  Split code for half-word and
	signed byte instructions to ...
	(ldst_extend_v4): ... here.
	(ld_mode_required_here): Use ldst_extend_v4.
	(do_ldrd): Simplify now that this is only called for ldrd.  No
	need to test for XScale, which was wrong anyway.  Don't reject r12
	as a target register.  Add test that ldrd doesn't update an index
	register.
	(do_pld): Don't allow post-indexed or write-back addressing modes.
	Adjust call to ldst_extend.
	(do_adr): Split code for adrl to ...
	(do_adrl): ... here.
	(do_cmp): No need to fold in COND_BIT.
	(do_ldst): Simplify.  Split code for ldrt/strt into do_ldstt.  Split
	code to handle half-word and signed byte instructions to ...
	(do_ldstv4): ... here.
	(do_ldstt): New function.  Handle load/store with translate.
	(do_ldmstm): Write feature modification bits directly into
	inst.instruction.
	(do_fpa_ldst): Remove suffix handling code.
	(do_fpa_dyadic, do_fpa_monadic, do_fpa_from_reg): Likewise.
	(do_fpa_ldmstm): Type of access is now held in inst.instruction.
	(build_arm_ops_hsh): New function.
	(md_begin): Call it.  Don't build the ARM opcode directly.
	(md_assemble): Simplify ARM instruction handling.

2001-12-05  Arati Dikey <aratid@kpit.com>

	* tc-sh.c (parse_at): Corrected incorrect op->type selection due
	to missing 'else'.

2001-12-04  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-d10v.c (write_2_short): Don't skip dummy fixups, so
	that we can tell which operand refers to the insn put in the L
	container and mark it as such, so that the relocation type can be
	adjusted.

2001-12-04  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (mips_cpreturn_offset): Better comment.
	(load_register): Better error message. Cast away signedness
	mismatches. Add casts needed for varargs.
	(load_address): Replace checks of HAVE_64BIT_ADDRESS with dbl.
	Remove superfluous casts.
	(macro): Cast away signedness mismatches. Remove superfluous casts.
	(s_cpload): Fix wrong comment.
	(s_mips_weakext): Standardize output message.
	(get_number): Likewise.

2001-12-04  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (append_insn): Add jump address range overflow
	check.

2001-12-04  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (md_parse_option): Fix comment. Allow -mabi option
	for ELF only.
	(show): Document -mabi option.

2001-12-03  Jeroen Dobbelaere  <jeroen.dobbelaere@acunia.com>

	* config/tc-arm.c (md_parse_option): Only clear cpu part when
	specifying 'xscale' cpu (don't change the fpu part).

2001-12-04  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-d10v.c (find_opcode): Reject SP operand if
	OPERAND_NOSP flag is present.

2001-12-03  Eric Christopher  <echristo@redhat.com>

	* config/tc-mips.c (tc_gen_reloc): One missed BFD_RELOC_MIPS_GPREL.

2001-12-02  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (macro_build): Replace BFD_RELOC_MIPS_GPREL
	by BFD_RELOC_GPREL16.
	(load_address): Likewise.
	(macro): Likewise.
	(md_apply_fix): Likewise. Replace BFD_RELOC_MIPS_GPREL32 by
	BFD_RELOC_GPREL32.
	(s_gpword): Replace BFD_RELOC_MIPS_GPREL32 by BFD_RELOC_GPREL32.
	(tc_gen_reloc): Replace BFD_RELOC_MIPS_GPREL by BFD_RELOC_GPREL16.
	*config/tc-mips.h: Replace BFD_RELOC_MIPS_GPREL by BFD_RELOC_GPREL16.

2001-11-29  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-d10v.c (get_operands): Emit OPERAND_PLUS for
	prefix `+'.

	* config/tc-d10v.c (find_opcode): Reject non-SP operand if
	flags requires SP.

2001-11-29 Arati Dikey <aratid@kpit.com>

	* tc-sh.c (parse_at): Removed case-sensitivity of index register
	R8, R9.

2001-11-28  Jakub Jelinek  <jakub@redhat.com>

	* write.c (adjust_reloc_syms): Mark SEC_MERGE symbols as used
	in reloc if it has non-zero addend.
	* config/tc-alpha.c (tc_gen_reloc): Reinstall SEC_MERGE check.
	* config/tc-sparc.c (md_apply_fix3): Likewise.

2001-11-28  Andreas Schwab  <schwab@suse.de>

	* as.c (parse_args): Call md_after_parse_args if defined.
	* config/tc-ia64.h (md_after_parse_args): Define.
	* config/tc-ia64.c (ia64_after_parse_args): Reject --gstabs.
	* doc/internals.texi (CPU backend): Document md_after_parse_args.

2001-11-23  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-alpha.c (tc_gen_reloc): Remove SEC_MERGE test.
	* write.c (adjust_reloc_syms): Don't handle relocs against
	SEC_MERGE section symbols specially.
	(fixup_segment): Likewise.

2001-11-21  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (mips_need_elf_addend_fixup): New, extracted from...
	(md_apply_fix3): ...here.  Don't prevent the symbol value being
	subtracted twice from GPREL addends.
	(tc_gen_reloc): Add the symbol value to a GPREL addend if it was
	subtracted by the previous function.

2001-11-20  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/tc-avr.c (md_apply_fix3): Fix typo introduced by
	md_apply_fix3 change.

2001-11-20  Ben Elliston  <bje@redhat.com>

	* config/tc-m88k.c (md_apply_fix3): Match local variable `val' to
	 usage after md_apply_fix3 cleanups.

2001-11-19  Hans-Peter Nilsson  <hp@bitrange.com>

	* doc/c-mmix.texi: Use texinfo 4 features.
	(MMIX-mmixal): Fix typo.

2001-11-17  Hans-Peter Nilsson  <hp@axis.com>

	* config/tc-cris.c (md_apply_fix3): Cast value, not pointer, in
	val assignment.

2001-11-16  Michael Snyder  <msnyder@redhat.com>

	* stabs.c (stabs_generate_asm_lineno): Remember file and line number
	from one call to the next, and eliminate consecutive duplicates
	(thereby emitting only one line symbol per source line).
	* dwarf2dbg.c (dwarf2_gen_line_info): Ditto.

2001-11-16  Alan Modra  <amodra@bigpond.net.au>

	* config/tc-m68k.c (md_apply_fix3): Change val back to a signed type.

2001-11-15  H.J. Lu  <hjl@gnu.org>

	* config/tc-hppa.c (md_apply_fix3): Fix a typo.

2001-11-15  H.J. Lu  <hjl@gnu.org>

	* config/tc-alpha.c (md_apply_fix3): Fix a typo.

2001-11-15  Nick Clifton  <nickc@cambridge.redhat.com>

	* write.c (fixup_segment): Remove references to md_apply_fix and
	TC_HANDLE_FX_DONE.
	* cgen.c, config/obj-coff.c, config/tc-*.c: Update all occurances
	of md_apply_fix to md_apply_fix3.
	Make all md_apply_fix3 functions void.
	* cgen.h, config/obj-coff.h, tc-*.h: Remove all definitions of
	MD_APPLY_FIX3 and TC_HANDLE_FX_DONE.
	* doc/internals.texi: Update references to md_apply_fix3.
	* tc.h: Update prototype for md_apply_fix3.

2001-11-15  Alan Modra  <amodra@bigpond.net.au>

	* config/tc-i386.h (md_end): Define.
	(i386_elf_emit_arch_note): Declare.
	(CpuUnknown): Delete.
	* config/tc-i386.c (default_arch): Constify.
	(smallest_imm_type): Remove CpuUnknown test.
	(md_assemble): Don't bother checking cpu_arch_flags non-zero.
	(i386_elf_emit_arch_note): New function.

	* po/POTFILES.in: Regenerate.

2001-11-15  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (mips_ip): Re-allow %hi() op for non-ELF assembler.

2001-11-15  Alan Modra  <amodra@bigpond.net.au>

	* frags.c (frag_grow): Revert last change.

	* dwarf2dbg.c (get_frag_fix): Align last frag size.

	* config/tc-ppc.c (ppc_insert_operand): Pass (ppc_cpu | ppc_size)
	to operand->insert.
	(md_assemble): Likewise.

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

	* frags.c (frag_grow): Use frag_make_room() to grow the
	obstack.

2001-11-14  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/tc-sparc.c (md_apply_fix3): Do not remove the symbol's
	value from the addend for fixups against local symbols in
	SEC_MERGE sections - it was not added in, in the first place.

2001-11-11  Timothy Wall  <twall@alum.mit.edu>

	* write.c (relax_segment): Convert symbol address into an octet
	offset prior to adding to the frag address, which is an octet
	offset.   Add comments to that effect.
	* config/tc-tic54x.c: Fix bugs causing tests to fail.
	* config/tc-tic54x.h: Ditch PARAMS macro.

2001-11-13  Alan Modra  <amodra@bigpond.net.au>

	* config/obj-elf.c (obj_elf_version): Ensure terminating NUL is
	put in note section.  Use sizeof instead of hard-coded constants.

2001-11-12  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (support_64bit_objects): Define for OBJ_ELF only.
	(md_longopts): Allow OPTION_MABI for ELF compilation only. RE-allow
	OPTION_GP32, OPTION_GP64, OPTION_FP32 for non-ELF compilation.
	Sort options a bit more logical.
	(md_parse_option): Allow OPTION_32, OPTION_N32, OPTION_N64,
	OPTION_MABI only for elf targets.

2001-11-12  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (set_at): Add cast needed for varargs.
	(load_register): Likewise.
	(macro): Likewise. Some code reformatting.
	(macro2): Add cast needed for varargs.
	(mips16_macro): Likewise.

2001-11-12  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (md_assemble): Remove superflous casts.
	(append_insn): Likewise.
	(mips16_macro_build): Likewise.
	(macro): Likewise.
	(mips16_ip): Likewise.
	(s_cpload): Likewise.
	(mips_relax_frag): Likewise.

2001-11-12  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (mips_abi_level): Move in front of
	mips_set_options.
	(mips_set_options): Add members gp32, fp32, abi.
	(file_mips_gp32): New flag.
	(file_mips_fp32): New flag.
	(mips_opts): Initialize the new members.
	(mips_gp32): Remove.
	(mips_fp32): Remove.
	(HAVE_32BIT_GPRS): Use the new values from mips_opts.
	(HAVE_32BIT_FPRS): Likewise.
	(HAVE_NEWABI): Likewise.
	(HAVE_64BIT_OBJECTS): Likewise.
	(md_begin): Likewise. Save default (file) values.
	(md_parse_option): Use the new values from mips_opts.
	(s_mipsset): Likewise. Fix logic to keep the ABI selection if
	possible. Let .set mipsN work together with .set push/pop.
	Enhance error messages.
	(mips_elf_final_processing): Use file_mips_* for header processing.

2001-11-09  Marek Michalkiewicz  <marekm@amelek.gda.pl>

	* config/tc-avr.c (mcu_types): Update for new devices.

2001-11-09  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* doc/Makefile.am (POD2MAN): Use 'GNU Development Tools' for
	the page man title.
	* doc/Makefile.in: Rebuild.
	* doc/as.texinfo: Do not put man SEEALSO in document;
	Use @command for commands, @option for options; Reorganize usage
	to clearly identify target specific options.

2001-11-08  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (mips_force_relocation): Remove duplicate code.

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

	* config/tc-mips.c (my_getSmallParser): Fix small parser bug.

2001-11-05  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* config/tc-s390.c (tc_s390_force_relocation): Force all relocations
	that need the global offset table.
	(md_apply_fix3): Add code to undo opertions done in fixup_segment
	triggered by TC_FORCE_RELOCATION.
	* config/tc-s390.h (TC_FORCE_RELOCATION): Replace macro code with
	a call to function tc_s390_force_relocation.
	(TC_FIX_ADJUSTABLE): Define.

2001-11-04  Chris Demetriou  <cgd@broadcom.com>

	* configure.in (mips-*-netbsd*): Add support for target.
	* configure: Regenerate.

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

	* configure.in (ALL_LINGUAS): Add 'fr'.
	* configure: Regernate.
	* po/fr.po: New file.  Obtained from the translation project web
	site.

2001-11-02  Richard Earnshaw  <rearnsha@arm.com>

	* tc-arm.c: Re-arrange prototypes by architecture.
	(insns): Re-arrange instructions by archtitecture.  Pld instruction
	is part of ARMv5E.
	(tinsns): blx and bkpt are part of ARMv5T.
	(do_fp_{ctrl,ldst,ldstm,dyadic,monadic,cmp,from_reg,to_reg}): Rename
	to do_fpa_*.  All callers changed.

	* tc-arm.c (insns): Add two temporary instructions to handle
	ldrd/strd.

2001-11-01  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/tc-m68hc11.c (build_jump_insn): Allocate worst case storage
	for bra/bsr and use frag_variant(), this ensure that the possible
	16-bit BFD_RELOC_16 will be in the same frag.

2001-10-31  Chris Demetriou  <cgd@broadcom.com>

	* config/tc-mips.c (HAVE_32BIT_ADDRESSES): If compiling embedded
	PIC code, assume pointers the same size as GPRs.
	(macro): In M_LA_AB handling for embedded PIC code, support
	"la $treg,foo-bar($breg)".  In load/store handling
	(label ld_st) support "<op> $treg,<sym>-<local_sym>($breg)"
	which is used by the compiler for switch statements.
	In load/store double multi-instruction macro handling
	(label ldd_std) add a comment that no special handling
	is currently done for embedded PIC.
	(mips_ip): In 'o' (16-bit offset) case, only accept 16
	bit offsets.

2001-10-31  Richard Earnshaw  <rearnsha@arm.com>

	General cleanup of feature definitions.
	* tc-arm.c (ARM_EXT_LONGMUL, ARM_EXT_HALFWORD, ARM_EXT_THUMB): Delete.
	(ARM_2UP, ARM_ALL, ARM_3UP, ARM_6UP): Delete.
	(FPU_CORE, FPU_FPA10, FPA_FPA11, FPU_ALL, FPA_MEMMULTI): Delete.
	(ARM_EXT_V{1,2,2S,3,3M,4,4T,5T,5ExP}): New defines.
	(ARM_EXT_V{5,5E}): Synchronize with above.
	(ARM_ARCH_V*): Define a complete set in terms of above features.
	(ARM_{1,2,3,250,6,7,8,9,STRONG}): Define in terms of architecture.
	(FPU_FPA_EXT_V[12]): Define.
	(FPU_ARCH_FPE, FPU_ARCH_FPA): Define in terms of above.
	(FPU_ANY): Define.
	(FPU_DEFAULT): Default to FPA.
	(CPU_DEFAULT): For XScale, this is now just ARM_ARCH_XSCALE; for
	Thumb, this is now ARM_ARCH_V5T.
	(insns): Rework for new feature defines.
	(tinsns): Likewise.
	(opcode_select, do_ldst, md_begin, md_parse_option): Likewise.

2001-10-31  NIIBE Yutaka  <gniibe@m17n.org>

	* configure.in: Handle sh*eb-*-linux* and sh*-*-linux*.
	* configure: Regenerate.
	* Makefile.in: Regenerate.
	* doc/c-sh.texi (SH Options): Added descriptions.

2001-10-30  Hans-Peter Nilsson  <hp@bitrange.com>

	* configure.in: Update for MMIX port.
	* Makefile.am: Ditto.  Regenerate dependencies.
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* config/tc-mmix.h, config/tc-mmix.c: New files.
	* doc/Makefile.am (CPU_DOCS): Add c-mmix.texi
	* doc/Makefile.in: Regenerate.
	* doc/all.texi: @set MMIX.
	* doc/as.texinfo: Ditto.  Add MMIX gas manpage option overview.
	Include c-mmix.texi.
	* doc/c-mmix.texi: New file.

2001-10-24  Chris Demetriou  <cgd@broadcom.com>

	* config/tc-mips.c (hilo_interlocks, cop_interlocks): Make
	these evaluate to true if mips_arch indicates SB-1.

2001-10-23  Alan Modra  <amodra@bigpond.net.au>

	* as.c (parse_args): Print the date as well for --version.

2001-10-20  Chris Demetriou  <cgd@broadcom.com>

	* config/tc-mips.c (md_show_usage): Print "sb1" for Broadcom
	SB-1 CPU for consistency.
	(mips_cpu_info_table): Tweak comment about SB-1.

2001-10-20  H.J. Lu  <hjl@gnu.org>

	* config/tc-arm.c (do_c_shift): Use ISDIGIT instead of isdigit.
	(cirrus_parse_offset): Likewise.

2001-10-19  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/tc-arm.c: Restore line_comment_chars.

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

	* config/tc-arm.c (comment_chars): Remove semi-colon accidentally
	added to the list.

2001-10-18  Hans-Peter Nilsson  <hp@bitrange.com>

	* write.c (fixup_segment): Handle fixups for SEC_MERGE sections as
	for undefined symbols.

2001-10-17  Chris Demetriou  <cgd@broadcom.com>

	* doc/as.texinfo (MIPS ISA options):  Added accidentally
	omitted "-mips64" option to list of options.

2001-10-17  matthew green  <mrg@redhat.com>

	* config/tc-ppc.c (md_show_usage): Add missing -maltivec, -m7400,
	-m7410, -m7450 and -m7455 options.

2001-10-17  Alan Modra  <amodra@bigpond.net.au>

	* config/tc-ppc.c (PPC_HA, PPC_HIGHERA, PPC_HIGHESTA): Simplify.
	(ppc_size): Select PPC_OPCODE_64 if 64 bit.
	(md_begin): Don't set ppc_size here.
	(ppc_target_format): Test ppc_size as well as BFD_DEFAULT_TARGET_SIZE.
	(md_shortopts): Constify.
	(md_longopts): Likewise.
	(md_longopts_size): Likewise.
	(ppc_elf_suffix): Only allow 64-bit relocs when ppc_size specifies
	64-bit opcodes.
	(ppc_machine): Explain why this function is a nop.

2001-10-17  Alan Modra  <amodra@bigpond.net.au>

	* bit_fix.h: Comment typo fix.
	* config/tc-mips.c: Likewise.
	* config/tc-sh.c: Likewise.
	* config/tc-arc.c (arc_code_symbol): Remove unnecessary test.

	* configure.in (MIPS_STABS_ELF): AC_DEFINE in only one place so
	that autoheader doesn't duplicate config.in entries.
	(DEFAULT_ARCH): Ditto.
	* configure: Regenerate.
	* config.in: Regenerate.

2001-10-16  Alan Modra  <amodra@bigpond.net.au>

	From Andrew Pines <apines@cosmodog.com>
	* config/tc-m68k.c (m68k_ip): Correct absolute jmp opcodes.

2001-10-16  NIIBE Yutaka  <gniibe@m17n.org>,
	    Hans-Peter Nilsson  <hp@bitrange.com>

	* config/tc-sh.c (shl): Remove.
	(big): New function.
	(little): Remove shl handling.  Emit error for endian mismatch.
	(md_show_usage): Add description of -big.
	(md_parse_option): Handle OPTION_BIG.  Remove shl handling.
	(OPTION_BIG): Add.
	(md_pseudo_table): Add .big.
	(md_longopts): Add -big.
	(md_begin): Don't set target_big_endian here.
	* config/tc-sh.h (TARGET_BYTES_BIG_ENDIAN): Remove.
	(LISTING_HEADER, COFF_MAGIC, TARGET_FORMAT): Use target_big_endian.
	(shl): Remove.
	* configure.in (endian): Default is big.
	(sh-*-pe*): Little endian.
	(cpu_type): Set sh for target sh*.
	* configure: Regenerate.

2001-10-15  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (md_apply_fix): Preliminary handling of NewABI
	relocations.

2001-10-13  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/tc-arm.c: Replace CONST with const.

	* cgen.c: Tidy up formatting.

2001-10-12  matthew green  <mrg@redhat.com>

	* config/tc-ppc.c (md_parse_option): New -m7410, -m7450 and -m7455
	flags, equivalent to -m7400.  New -maltivec to enable AltiVec
	instructions.  New -mbook64 and -mbooke/-mbooke32 flags to enable
	64-bit and 32-bit BookE support, respectively.  Change -m403 and
	-m405 to set PPC403 option.
	(md_show_usage): Adjust for new options.
	* doc/all.texi: Set PPC.
	* doc/as.texinfo: Add PPC support and pull in c-ppc.texi.
	* doc/c-ppc.texi: New file.
	* doc/Makefile.am (CPU_DOCS): Add c-ppc.texi.
	* doc/Makefile.in: Regenerate.

2001-10-12  Nick Clifton  <nickc@cambridge.redhat.com>

	* read.c (s_bad_endr): New function.  Issues a warning message
	about a bad use of the .rept pseudo op.
	(po_table[]): Add .endr.
	* read.h: Prototype s_bad_endr.

	* CONTRIBUTORS: Update contact email address.

2001-10-11  Kazu Hirata  <kazu@hxi.com>

	* config/tc-alpha.c: Fix comment typos.
	* config/tc-cris.c: Likewise.
	* config/tc-hppa.c: Likewise.
	* config/tc-i370.c: Likewise.
	* config/tc-mips.c: Likewise.
	* config/tc-mn10200.c: Likewise.
	* config/tc-mn10300.c: Likewise.
	* config/tc-sh.c: Likewise.
	* config/tc-tahoe.c: Likewise.
	* config/tc-v850.c: Likewise.

2001-10-11  Kazu Hirata  <kazu@hxi.com>

	* app.c: Fix comment typos.
	* bit_fix.h: Likewise.
	* expr.c: Likewise.
	* itbl-ops.c: Likewise.

2001-10-11  Nick Clifton  <nickc@cambridge.redhat.com>

	* input-file.c: Include safe-ctype.h.
	(input_file_open): Use ISSPACE instead of isspace.

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

	* config/tc-mips.c (mips_cpreturn_offset): New variable.
	(mips_cpreturn_register): Likewise.
	(mips_gp_register): Likewise.
	(s_cpsetup): New function prototype.
	(s_cplocal): Likewise.
	(s_cpreturn): Likewise.
	(s_gpvalue): Likewise.
	(mips_pseudo_table): Add .cpsetup, .cplocal, .cpreturn, .gpvalue
	pseudo-ops.
	(macro): Don't warn about .cprestore for NewABI.
	(md_pcrel_from): Code cleanup.
	(mips_force_relocation): Force output of some NewABI relocations even
	without a defined symbol.
	(s_cpload): Ignore .cpload for NewABI.
	(s_cpsetup): Handle .cpsetup.
	(s_cplocal): Handle .cplocal.
	(s_cprestore): Ignore .cprestore for NewABI.
	(s_cpreturn): Handle .cpreturn.
	(s_gpvalue): Handle .gpvalue.
	(s_cpadd): Ignore .cpadd for NewABI.
	(nopic_need_relax): Take g_switch_value into account as gp
	optimization.
	(tc_gen_reloc): Don't handle BFD_RELOC_MIPS_{CALL,GOT}* for NewABI.

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

	* config/tc-mips.c (my_getSmallParser): New function prototype.
	(small_ex_type): Named this enum, more return values for
	my_getSmallExpression.
	(mips_ip): Allow SPC and HT between arguments. Handle some NewABI
	triple relocations. Protect some parts with ifdef OBJ_ELF.
	(percent_op_match): New struct, lookup table for %some_reloc().
	(my_getSmallParser): New function, parses nested percent_ops also.
	(my_getSmallExpression): Rewite to support nested percent_ops.

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

	* config/tc-mips.c
	(load_address): Support both 32- and 64-bit addresses.
	(macro): Call load_register correctly. Expand 64-bit loads ans stores.
	(macro2): Call load_address correctly.

2001-10-09  Christian Groessler <cpg@aladdin.de>

	* config/tc-z8k.c: Include opcodes/z8k-opc.h after bfd.h
	since z8k-opc.h now uses the PARAMS macro.

2001-10-09  Aldy Hernandez  <aldyh@redhat.com>

	* config/tc-arm.c: Change MAVERIK to MAVERICK.

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

	* config/obj-elf.c: Make use of elf_group_name and elf_next_in_group
	throughout file.
	(obj_elf_change_section): Rename "group" to "group_name".
	(obj_elf_section): Likewise.
	(elf_frob_file): Don't use sec->lineno for SHT_GROUP section to store
	first member section; Instead use elf_next_in_group.

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

	* config/obj-elf.c: (obj_elf_change_section): Add "group" param.
	Set elf_section_data group from it.  Warn if group name changed.
	(obj_elf_parse_section_letters): Parse 'G' too.
	(obj_elf_section): Parse group name.
	(struct group_list): New.
	(build_group_lists): New function.
	(elf_frob_file): Create SEC_GROUP section(s).

	* config/obj-elf.c: (elf_copy_symbol_attributes): Zap trailing
	whitespace.

2001-10-08  Aldy Hernandez  <aldyh@redhat.com>

	* doc/arm/c-arm.texi (ARM Options): Add arm9e documentation.

	* config/tc-arm.c (ARM_EXT_MAVERIK): New macro.
	(cirrus_regtype): New enum.
	(LONGEST_INST): Change to 10.
	(CIRRUS_MODE1): New.
	(CIRRUS_MODE2): New.
	(CIRRUS_MODE3): New.
	(CIRRUS_MODE4): New.
	(CIRRUS_MODE5): New.
	(CIRRUS_MODE6): New.
	(insns): Add cirrus dsp instructions.
	(ARM_EXT_MAVERIKSC_REG): New.
	(cirrus_register): New.
	(cirrus_mvf_register): New.
	(cirrus_mvd_register): New.
	(cirrus_mvfx_register): New.
	(cirrus_mvdx_register): New.
	(cirrus_mvax_register): New.
	(ARM_EXT_MAVERIKsc_register): New.
	(reg_table): Add cirrus registers.
	(cirrus_valid_reg): New.
	(cirrus_reg_required_here): New.
	(do_c_binops_1): New.
	(do_c_binops_2): New.
	(do_c_binops_3): New.
	(do_c_triple_4): New.
	(do_c_triple_5): New.
	(do_c_quad_6): New.
	(do_c_dspsc_1): New.
	(do_c_dspsc_2): New.
	(do_c_shift_1): New.
	(do_c_shift_2): New.
	(do_c_ldst_1): New.
	(do_c_ldst_2): New.
	(do_c_ldst_3): New.
	(do_c_ldst_4): New.
	(do_c_binops): New.
	(do_c_triple): New.
	(do_c_quad): New.
	(do_c_dspsc): New.
	(do_c_shift): New.
	(cirrus_parse_offset): New.
	(do_c_ldst): New.
	(md_parse_option): Add arm9e.
	(md_show_usage): Same.

2001-10-08  Tom Rix <trix@redhat.com>

	* config/tc-ppc (ppc_bf, ppc_biei) : Set first .bi lineno value to
	location of next .bf
	* config/obj-coff.c (coff_frob_symbol) : XCOFF does not use endndx.

2001-10-07  Alan Modra  <amodra@bigpond.net.au>

	* config/obj-elf.c: Standardize error/warning messages - don't
	capitalise, no final period or newline, don't say "ignoring" for
	as_bad messages.  In some cases, change the wording to that used
	elsewhere for similar messages.
	(obj_elf_section_name): New function, split out from ..
	(obj_elf_section): .. here.  Correctly mask off SHF_MERGE if
	entsize not specified.

2001-10-05  Jakub Jelinek  <jakub@redhat.com>

	* doc/as.texinfo: Document M and S ELF section flags.

2001-10-05  Alan Modra  <amodra@bigpond.net.au>

	* subsegs.c (subseg_text_p): Return 0 for absolute section.
	* read.c (do_align): If in absolute section, warn about and ignore
	non-zero fill pattern.

2001-10-05  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-mn10300.c (tc_gen_reloc): Don't free
	reloc->sym_ptr_ptr if it's not allocated.

2001-10-04  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (prev_insn_reloc_type): Make it an array to hold a
	relocation triple.
	(prev_insn_fixp): Likewise.
	(append_insn): Changed prototype to accept a relocation pointer.
	(imm_reloc): Make it an array.
	(offset_reloc): Likewise.
	(md_assemble): Handle triple relocations.
	(append_insn): Likewise. Add handling for some NewABI relocations.
	(mips_no_prev_insn): Handle triple relocations.
	(macro_build): Likewise. Add handling for some NewABI relocations.
	Move handling for the 'u' case to append_insn().
	(mips16_macro_build): Handle triple relocations.
	(macro_build_lui): Likewise. Don't handle _gp_disp as special symbol
	for NewABI.
	(mips_ip): Handle triple relocations.
	(mips16_ip): Likewise.
	(mips_force_relocation): Force handling of triple relocations
	without symbols for NewABI.
	(md_apply_fix): Add handling for some NewABI relocations.

2001-10-05  Alan Modra  <amodra@bigpond.net.au>

	* config/tc-i386.c (parse_register): If not producing code for
	x86_64, reject x86_64 register name matches.
	(md_assemble): Remove now redundant check for x86_64 regs.

2001-10-04  Alan Modra  <amodra@bigpond.net.au>

	* config/tc-ppc.c (md_assemble <DS relocs>): Test ppc_size as well
	as BFD_DEFAULT_TARGET_SIZE.
	(ppc_tc): Likewise.
	(ppc_is_toc_sym): Likewise.
	(md_apply_fix3): Likewise.

2001-10-03  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (mips_64): Remove.
	(mips_target_format): Move downwards in file, use HAVE_64BIT_OBJECTS
	in it.
	(mips_abi_level, mips_abi): New enum.
	(mips_32bit_abi): Remove.
	(HAVE*PRS): Use mips_abi instead of mips_32bit_abi.
	(HAVE_NEWABI): New define.
	(HAVE_64BIT_OBJECTS): New define.
	(HAVE_32BIT_ADDRESSES): Don't return true for 64bit objects.
	(HAVE_64BIT_ADDRESSES): New define, inverse of HAVE_32BIT_ADDRESSES.
	(support_64bit_objects): New prototype.
	(md_begin): Use mips_abi instead of mips_32bit_abi. Don't write
	.reginfo section for n32, use .MIPS.options instead.
	(support_64bit_objects): New function, code from md_parse_option.
	(md_longopts): Add -n32 option.
	(md_parse_option): Use mips_abi instead of mips_32bit_abi/mips64.
	Add -n32 option. Protect with OBJ_ELF.
	(s_mipsset): Use mips_abi instead of mips_32bit_abi.
	(mips_elf_final_processing): Likewise. Don't write .reginfo section
	for n32, use .MIPS.options instead.

2001-10-03  Alan Modra  <amodra@bigpond.net.au>

	* po/POTFILES.in: Regenerate.
	* configure: Regenerate.

2001-10-02  Alan Modra  <amodra@bigpond.net.au>

	* config/tc-ppc.c (md_apply_fix3 <BFD_RELOC_CTOR>): Make it 64
	bits if target is 64 bit.

	* doc/as.texinfo (listing): Fix typo.

	* as.c (print_version_id): Use BFD_VERSION_STRING in place of
	BFD_VERSION.
	* Makefile.am (Makefile): Depend on bfd/configure.in.
	Run "make dep-am".
	* Makefile.in: Regenerate.

2001-09-30  H.J. Lu  <hjl@gnu.org>

	* config/obj-elf.c (obj_elf_parse_section_letters): Accept "am"
	and "ams" for compatibility.

2001-09-30  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/tc-sh.c (md_pcrel_from_section): Transformed from
	md_pcrel_from.  Handle pc-relativeness against link-time
	symbol.  Handle relativeness to elsewhere than the fixup.
	* config/tc-sh.h (MD_PCREL_FROM_SECTION): Define.
	(md_pcrel_from_section): Prototype.

	* Makefile.am: Update dependencies with "make dep-am".
	* Makefile.in: Regenerate.

2001-09-30  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/tc-m68hc11.c (cmp_opcode): Define prototype.
	(print_opcode_format, skip_whites): Likewise.
	(convert_branch, m68hc11_new_insn): Likewise.
	(build_dbranch_insn, build_indexed_byte): Likewise.
	(build_reg_mode, find, find_opcode): Likewise.
	(print_insn_format): Fix call to print_opcode_format.
	(md_assemble): Fix call to build_dbranch_insn.

2001-09-27  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/tc-arm.c: Add missing prototypes.

2001-09-26  Jeff Johnston  <jjohnstn@redhat.com>

	* input-file.c (input_file_open): When reading the
	first line looking for #NO_APP, prepare for the possibility
	of finding #APP instead.  Also fix algorithm to allow
	white-space to follow either #NO_APP or #APP directives.

2001-09-25  Geoff Berry  <geoff.berry@bops.com>

	* listing.c (buffer_line): Don't write past the end of `line' when
	EOF is reached.

2001-09-25  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-mn10300.c (tc_gen_reloc): Don't emit an *ABS*
	relocation for differences between symbols in a section other
	than the one in which the difference is to be placed; apply
	the relocation instead.

2001-09-24  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/tc-arc.c: Add missing prototype.
	(md_atof): Change type to int. Add missing prototype.
	* config/tc-arc.h: Prototype exported functions.

2001-09-22  Nick Clifton  <nickc@cambridge.redhat.com>

	* as.c: Add missing function prototype.
	* config/obj-aout.c: Fix compile time warning.

2001-09-21  Bruno Haible  <haible@clisp.cons.org>

	* config/tc-openrisc.c: Don't include <ctype.h>.

2001-09-19  Martin Schwidefsky <schwidefsky@de.ibm.com>

	* gas/config/tc-s390.c: Add option -mwarn-areg-zero.

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

	* config/tc-i370.c: Fix typo in last change.

2001-09-19  Nick Clifton  <nickc@cambridge.redhat.com>

	* doc/as.texinfo (Symbol Names): Improve documentation on local
	labels and add documenation about dollar labels.

2001-09-18  Bruno Haible  <haible@clisp.cons.org>

	* as.h: Don't include <ctype.h>.
	* as.c (main): For gettext, also set the LC_CTYPE locate facet.
	* atof-generic.c: Include "safe-ctype.h" instead of <ctype.h>.
	(atof_generic): Use ISDIGIT instead of isdigit.
	* config/m68k-parse.y: Include "safe-ctype.h".
	(yylex): Use ISDIGIT/ISALNUM instead of isdigit/isalnum.
	* config/obj-elf.c: Include "safe-ctype.h".
	(obj_elf_vtable_inherit): Use ISSPACE instead of isspace.
	* config/obj-vms.c: Include "safe-ctype.h".
	(Write_VMS_MHD_Records): Use TOUPPER instead of islower/toupper.
	(VMS_Case_Hack_Symbol): Use ISUPPER/ISLOWER/TOUPPER/TOLOWER
	instead of isupper/islower/toupper/tolower.
	* config/tc-a29k.c: Include "safe-ctype.h" instead of <ctype.h>.
	(insert_sreg): Use TOUPPER instead of islower/toupper.
	(machine_ip): Use ISALPHA/ISALNUM/ISUPPER/TOLOWER instead of
	isalpha/isalnum/isupper/tolower.
	(a29k_unrecognized_line, md_operand): Use ISDIGIT instead of
	isdigit.
	* config/tc-alpha.c: Include "safe-ctype.h" instead of <ctype.h>.
	(md_undefined_symbol, s_alpha_ent): Use ISDIGIT instead of isdigit.
	* config/tc-arc.c: Include "safe-ctype.h" instead of <ctype.h>.
	(md_assemble): Use ISSPACE/ISALNUM instead of isspace/isalnum.
	(arc_extoper): Use TOLOWER instead of isupper/tolower.
	* config/tc-arm.c: Include "safe-ctype.h" instead of <ctype.h>.
	(arm_psr_parse): Use ISALPHA instead of isalpha.
	(accum0_required_here): Use ISALNUM instead of isalnum.
	(do_ldrd): Use ISSPACE instead of isspace.
	(decode_shift): Use ISALPHA instead of isalpha.
	(insert_reg): Use TOUPPER instead of islower/toupper.
	(arm_reg_parse): Use ISALPHA instead of isalpha.
	(arm_parse_reloc): Use ISALNUM/ISPUNCT/TOLOWER instead of
	isalnum/ispunct/tolower.
	* config/tc-avr.c: Include "safe-ctype.h" instead of <ctype.h>.
	(md_parse_option): Use TOLOWER instead of tolower.
	(avr_operand): Use ISDIGIT/TOLOWER instead of isdigit/tolower.
	* config/tc-cris.c: Include "safe-ctype.h" instead of <ctype.h>.
	(cris_process_instruction): Use ISLOWER instead of islower.
	(get_gen_reg): Use ISALNUM/ISDIGIT instead of isalnum/isdigit.
	(get_spec_reg): Use TOLOWER/ISALNUM instead of isupper/tolower/isalnum.
	(get_flags): Use ISSPACE instead of isspace.
	* config/tc-d10v.c: Include "safe-ctype.h" instead of <ctype.h>.
	(do_assemble): Use TOLOWER instead of tolower.
	* config/tc-d30v.c: Include "safe-ctype.h" instead of <ctype.h>.
	(do_assemble): Use TOLOWER instead of tolower.
	(d30v_start_line): Use ISSPACE instead of isspace.
	* config/tc-fr30.c: Include "safe-ctype.h" instead of <ctype.h>.
	(fr30_is_colon_insn): Use TOLOWER instead of tolower.
	* config/tc-h8300.c: Include "safe-ctype.h" instead of <ctype.h>.
	(skip_colonthing, get_operand): Use ISDIGIT instead of isdigit.
	* config/tc-h8500.c: Include "safe-ctype.h" instead of <ctype.h>.
	(start_label): Use ISALPHA instead of isalpha.
	* config/tc-hppa.c: Include "safe-ctype.h" instead of <ctype.h>.
	(pa_ip): Use ISUPPER/ISLOWER/TOLOWER instead of
	isupper/islower/tolower.
	(pa_parse_number): Use ISDIGIT instead of isdigit.
	(pa_chk_field_selector): Use TOLOWER instead of tolower.
	(pa_stringer): Use ISDIGIT instead of isdigit.
	* config/tc-i370.c: Include "safe-ctype.h" instead of <ctype.h>.
	(register_name): Use ISALPHA instead of isalpha.
	(i370_elf_suffix): Use ISALNUM/TOLOWER instead of
	isalnum/islower/tolower.
	(i370_addr_offset): Use ISDIGIT/ISALPHA instead of
	isdigit/isalpha.
	(i370_addr_cons): Use ISALPHA/ISXDIGIT instead of
	isalpha/isxdigit.
	(md_assemble): Use ISSPACE instead of isspace.
	* config/tc-i386.c: Include "safe-ctype.h" instead of <ctype.h>.
	(md_begin): Use ISDIGIT/ISLOWER/ISUPPER/TOLOWER/ISALPHA
	instead of isdigit/islower/isupper/tolower/isalpha.
	(output_invalid): Use ISPRINT instead of isprint.
	* config/tc-i860.c: Include "safe-ctype.h" instead of <ctype.h>.
	(i860_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit.
	* config/tc-i960.c: Include "safe-ctype.h" instead of <ctype.h>.
	(get_args): Use ISALNUM instead of isalnum.
	* config/tc-ia64.c: Include "safe-ctype.h".
	(dot_pred_rel): Use TOUPPER/ISDIGIT instead of toupper/isdigit.
	(ia64_unrecognized_line): Use ISDIGIT instead of isdigit.
	(ia64_parse_name): Likewise.
	* config/tc-m32r.c: Include "safe-ctype.h" instead of <ctype.h>.
	(assemble_two_insns): Use ISSPACE/ISALNUM/ISUPPER/TOLOWER
	instead of isspace/isalnum/isupper/tolower.
	* config/tc-m68hc11.c: Include "safe-ctype.h" instead of <ctype.h>.
	(md_assemble): Use TOLOWER/ISALNUM instead of tolower/isalnum.
	* config/tc-m68k.c: Include "safe-ctype.h" instead of <ctype.h>.
	(mklower_table): Remove variable.
	(mklower): Remove macro.
	(insert_reg): Use TOUPPER instead of islower/toupper.
	(md_begin): Remove initialization of mklower_table.
	(s_reg): Use ISALNUM instead of isalnum.
	(mri_assemble): Use ISUPPER/TOLOWER instead of isupper/tolower.
	(parse_mri_condition): Use TOLOWER instead of isupper/tolower.
	(build_mri_control_operand): Use TOLOWER instead of tolower.
	(s_mri_else, s_mri_break, s_mri_next, s_mri_for): Likewise.
	* config/tc-m88k.c: Include "safe-ctype.h" instead of <ctype.h>.
	(md_assemble): Use ISSPACE instead of isspace.
	(get_imm16): Use ISALNUM instead of isalnum.
	(get_cnd): Use ISDIGIT/ISUPPER/TOLOWER instead of
	isdigit/isupper/tolower.
	(get_bf_offset_expression): Use ISALPHA/ISUPPER/TOLOWER
	instead of isalpha/isupper/tolower.
	(hexval): Use ISDIGIT/ISLOWER/ISUPPER instead of
	isdigit/islower/isupper.
	* config/tc-mcore.c: Include "safe-ctype.h" instead of <ctype.h>.
	(mcore_s_section): Use ISSPACE instead of isspace.
	(parse_reg): Use ISSPACE/TOLOWER/ISALNUM instead of
	isspace/tolower/isalnum.
	(parse_creg): Use ISSPACE/TOLOWER instead of isspace/tolower.
	(parse_psrmod): Use TOLOWER instead of isascii/tolower.
	(parse_exp, parse_mem, md_assemble): Use ISSPACE instead of
	isspace.
	* config/tc-mips.c: Include "safe-ctype.h" instead of <ctype.h>.
	(mips_ip): Use ISSPACE/ISDIGIT instead of isspace/isdigit.
	(mips16_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit.
	(my_getSmallExpression): Use ISDIGIT/TOLOWER instead of
	isdigit/tolower.
	(tc_get_register): Likewise.
	(get_number): Use ISDIGIT/ISXDIGIT instead of isdigit/isxdigit.
	(s_mips_ent): Use ISDIGIT instead of isdigit.
	* config/tc-mn10200.c: Include "safe-ctype.h" instead of <ctype.h>.
	(md_assemble): Use ISSPACE instead of isspace.
	* config/tc-mn10300.c: Include "safe-ctype.h" instead of <ctype.h>.
	(md_assemble): Use ISSPACE instead of isspace.
	* config/tc-ns32k.c: Don't include <ctype.h>.
	* config/tc-pdp11.c: Include "safe-ctype.h".
	(mklower): Remove function.
	(parse_reg): Use TOLOWER instead of mklower.
	* config/tc-pj.c: Include "safe-ctype.h".
	(md_assemble): Use ISSPACE instead of isspace.
	* config/tc-ppc.c: Include "safe-ctype.h" instead of <ctype.h>.
	(register_name): Use ISALPHA instead of isalpha.
	(ppc_elf_suffix): Use ISALNUM/TOLOWER instead of
	isalnum/islower/tolower.
	(md_assemble): Use ISSPACE instead of isspace.
	(ppc_canonicalize_symbol_name): Use ISLOWER/TOUPPER instead of
	islower/toupper.
	* config/tc-s390.c: Include "safe-ctype.h" instead of <ctype.h>.
	(register_name): Use ISALPHA instead of isalpha.
	(s390_elf_suffix, s390_lit_suffix): Use ISALNUM instead of isalnum.
	(md_gather_operands, md_assemble, s390_insn): Use ISSPACE instead of
	isspace.
	* config/tc-sh.c: Include "safe-ctype.h" instead of <ctype.h>.
	(sh_elf_suffix): Use ISALNUM/TOLOWER instead of
	isalnum/islower/tolower.
	(IDENT_CHAR): Use ISALNUM instead of isalnum.
	(parse_reg): Use TOLOWER instead of tolower.
	(find_cooked_opcode): Use TOLOWER instead of isupper/tolower.
	* config/tc-sparc.c: Include "safe-ctype.h" instead of <ctype.h>.
	(sparc_ip): Use ISLOWER/ISDIGIT instead of islower/isdigit.
	(parse_keyword_arg): Use ISALNUM instead of isalnum.
	* config/tc-tahoe.c: Include "safe-ctype.h".
	(tahoe_reg_parse): Use ISDIGIT instead of isdigit.
	(tip_op): Use TOLOWER instead of isupper/tolower.
	* config/tc-tic30.c: Include "safe-ctype.h".
	(md_begin): Use ISLOWER/ISDIGIT/ISUPPER/TOLOWER/ISLOWER/
	ISALPHA instead of islower/isdigit/isupper/tolower/islower/isalpha.
	(tic30_operand): Use TOLOWER instead of tolower.
	(tic30_find_parallel_insn): Likewise.
	(output_invalid): Use ISPRINT instead of isprint.
	* config/tc-tic54x.c: Include "safe-ctype.h".
	(tic54x_asg, tic54x_eval): Use ISALPHA instead of isalpha.
	(lookup_version): Use TOUPPER instead of toupper.
	(tic54x_var): Use ISALPHA instead of isalpha.
	(tic54x_mlib): Use ISSPACE instead of isspace.
	(subsym_iscons): Use TOUPPER instead of toupper.
	(get_operands): Use ISSPACE instead of isspace.
	(is_type): Use TOUPPER/ISDIGIT instead of toupper/isdigit.
	(encode_indirect, encode_operand): Use TOUPPER instead of toupper.
	(next_line_shows_parallel): Use ISSPACE instead of isspace.
	(subsym_get_arg, subsym_substitute): Use ISDIGIT instead of isdigit.
	(tic54x_start_line_hook, md_assemble, tic54x_start_label): Use
	ISSPACE instead of isspace.
	* config/tc-tic80.c: Include "safe-ctype.h".
	(md_assemble): Use ISSPACE instead of isspace.
	* config/tc-v850.c: Include "safe-ctype.h" instead of <ctype.h>.
	(system_register_name): Use ISDIGIT instead of isdigit.
	(md_assemble): Use ISSPACE instead of isspace.
	* config/tc-vax.c: Include "safe-ctype.h" instead of <ctype.h>.
	(vax_reg_parse): Use TOLOWER/ISDIGIT instead of
	isupper/tolower/isdigit.
	(vip_op): Use TOLOWER instead of isupper/tolower.
	* config/tc-w65.c: Don't include <ctype.h>.
	* config/tc-z8k.c: Include "safe-ctype.h" instead of <ctype.h>.
	(tohex): Use ISDIGIT/ISLOWER instead of isdigit/islower.
	(whatreg): Use ISDIGIT instead of isdigit.
	* ecoff.c: Include "safe-ctype.h" instead of <ctype.h>.
	(ecoff_directive_ent, ecoff_stab): Use ISDIGIT instead of isdigit.
	* expr.c: Include "safe-ctype.h" instead of <ctype.h>.
	(integer_constant): Use ISALNUM/TOUPPER instead of
	isalnum/islower/toupper.
	(operand): Use TOLOWER instead of isupper/tolower.
	* gasp.c: Include "safe-ctype.h" instead of <ctype.h>.
	(sb_strtol, level_0, change_base, doinstr): Use ISDIGIT instead
	of isdigit.
	(process_assigns, whatcond): Use TOUPPER instead of toupper.
	(chartype_init): Use ISALPHA/ISDIGIT instead of isalpha/isdigit.
	(main): For gettext, also set the LC_CTYPE locate facet.
	* hash.c: Include "safe-ctype.h".
	(main): Use TOLOWER instead of isupper/tolower.
	* itbl-lex.l: Don't include <ctype.h>.
	* listing.c: Include "safe-ctype.h" instead of <ctype.h>.
	(listing_newline): Use ISCNTRL instead of isascii/iscntrl. Don't
	omit non-ASCII characters.
	(debugging_pseudo): Use ISSPACE instead of isspace.
	* macro.c: Include "safe-ctype.h" instead of <ctype.h>.
	(buffer_and_nest): Use ISALNUM instead of isalnum.
	(get_token): Use ISALPHA/ISALNUM instead of isalpha/isalnum.
	(define_macro): Use ISUPPER/TOLOWER instead of isupper/tolower.
	(macro_expand_body): Use ISALNUM/ISDIGIT/ISUPPER/ISALPHA
	instead of isalnum/isdigit/isupper/isalpha.
	(check_macro): Use ISALPHA/ISALNUM/ISUPPER/TOLOWER instead
	of isalpha/isalnum/isupper/tolower.
	* read.c: Include "safe-ctype.h" instead of <ctype.h>.
	(read_a_source_file): Use ISUPPER/TOLOWER/ISDIGIT instead of
	isupper/tolower/isdigit.
	(s_mri_common): Use ISDIGIT instead of isdigit.
	(s_mri_sect): Use ISDIGIT/TOUPPER instead of isdigit/toupper.
	(s_float_space): Use ISALPHA instead of isalpha.
	(ignore_rest_of_line): Use ISPRINT instead of isprint.
	(float_cons): Use ISALPHA instead of isalpha.
	(next_char_of_string): Use ISDIGIT/ISXDIGIT instead of
	isdigit/isxdigit.
	* symbols.c: Include "safe-ctype.h" instead of <ctype.h>.
	(save_symbol_name): Use ISLOWER/TOUPPER instead of
	islower/toupper.
	(symbol_find_base): Use TOUPPER instead of islower/toupper.
	(decode_local_label_name): Use ISDIGIT instead of isdigit.

2001-09-18  Martin Schwidefsky <schwidefsky@de.ibm.com>

	* tc-s390.c (s390_insn): Add code to cope with 6 byte O_constants
	in 64 bit mode and make format "e" work.

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

	* dwarf2dbg.c (dwarf2_directive_file): Avoid signed/unsigned warning.

	* write.c (set_symtab): Update bfd_alloc declaration.  Use a temp
	var to ensure bfd_alloc arg is the right type.
	(write_object_file): Cast args of bfd_seek.  Replace bfd_write with
	bfd_bwrite.

	* config/obj-coff.c: Replace calls to bfd_write with calls to
	bfd_bwrite.  Cast args of bfd_seek.

	* config/obj-elf.c (obj_elf_change_section): Avoid signed/unsigned
	warning.

	* config/tc-mn10300.c (set_arch_mach): Make param unsigned.

	* config/tc-tic54x.c (tic54x_mlib): Replace bfd_read call with
	call to bfd_bread.

2001-09-15  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/tc-sh.h (sh_force_relocation): Prototype.
	(struct fix): Forward declare.
	* config/tc-sh.c (type sh_operand_info): Move to top of file.
	(cons, s_align_bytes): Remove old-type declarations.
	(sh_elf_suffix, parse_reg, dot, parse_exp, parse_at, get_operand,
	get_operands, get_specific, insert, build_relax,
	insert_loop_bounds, build_Mytes): Prototype.
	(little): Make static.  Prototype.
	(check, tc_Nout_fix_to_chars): Delete unused functions.

2001-09-14  Eric Christopher  <echristo@redhat.com>

	* config/tc-mips.c (md_parse_option): Remove setting mips_64 via
	-mgp32/mgp64.

2001-09-14  Kevin Lo <kevlo@openbsd.org>

	* configure.in: Add arm-openbsd target.
	* configure: Regenerate.

2001-09-14  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* configure.in: Change machine triplets from mips-*-linux-gnu* to
	mips*-*-linux*.

2001-09-12  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (append_insn): Don't rightshift BFD_RELOC_16_PCREL.

2001-09-11  Richard Henderson  <rth@redhat.com>

	* config/tc-alpha.c (alpha_elf_section_letter): New.
	(alpha_elf_section_flags): New.
	* config/tc-alpha.h (md_elf_section_letter): New.
	(md_elf_section_flags): New.
	* config/tc-ia64.c (ia64_elf_section_letter): New.
	* config/tc-ia64.h (md_elf_section_letter): New.

2001-09-11  Jakub Jelinek  <jakub@redhat.com>

	* config/obj-elf.c (obj_elf_parse_section_letters): Use 'M' instead
	of 'm', 'S' instead of 's'.  Update bad_msg.
	* config/tc-ppc.c (ppc_section_letter): Update bad_msg.
	* config/tc-i370.c (i370_sectioN_letter): Update bad_msg.

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

	* expr.c (expr): Move code setting "retval" to the end of the loop,
	and rearrange for efficiency.  For "PIC code" subtraction, use
	"rightseg" rather than recalculating.  For "symbol OP symbol"
	subtract, set "retval" to absolute_section if symbols in same
	section.
	* symbols.c (resolve_symbol_value): Resolve "sym +/- expr" to an
	O_symbol.  Simplify a +/- b code.  Allow equality and non-equality
	comparisons on symbols from any section.  Allow other comparison
	operators as for subtraction.
	(symbol_equated_reloc_p): New predicate function.
	* symbols.h (symbol_equated_reloc_p): Declare.
	* write.c (relax_segment <rs_machine_dependent>): Ensure segment
	for expression syms is set correctly.
	(adjust_reloc_syms): Use symbol_equated_reloc_p.
	(write_relocs): Likewise.
	(write_object_file): Likewise.
	* config/tc-mips.c (md_estimate_size_before_relax): Likewise.
	* config/tc-i386.c (md_assemble <Output jumps>): Don't lose part
	of a complex expression when setting up frag_var.

2001-09-07  Richard Henderson  <rth@redhat.com>

	* config/tc-alpha.c (alpha_reloc_op_tag): Replace need_seq with
	require_seq and allow_seq.  Let !literal omit the sequence number.
	(tokenize_arguments): Reject sequence numbers of !allow_seq.

2001-09-08  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-sparc.c (md_apply_fix3): Handle relocs against SEC_MERGE
	section symbols the same way as externs.

2001-09-07  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (s_mipsset): Reallow unrestricted use of .set mipsX
	pseudo-op.

2001-09-07  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

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

2001-09-05  Richard Henderson  <rth@redhat.com>

	* config/tc-ia64.c (FUNC_IPLT_RELOC): New.
	(pseudo_func): Add @iplt.
	(pseudo_opcode): Add data16 and data16.ua.
	(md_begin): Set iplt pseudo.
	(ia64_cons_fix_new): Handle 16 byte iplt reloc specially.

2001-09-04  Richard Henderson  <rth@redhat.com>

	* config/tc-alpha.c (struct alpha_insn): Make sequence scalar long.
	(MACRO_LITERAL, MACRO_BASE, MACRO_BYTOFF, MACRO_JSR): Remove.
	(alpha_macros): Remove occurrences of same.
	(O_lituse_addr, O_gprel): New.
	(DUMMY_RELOC_LITUSE_*): New.
	(s_alpha_ucons, s_alpha_arch): Prototype.
	(alpha_reloc_op): Construct elements via DEF macro.
	(ALPHA_RELOC_SEQUENCE_OK): Remove.
	(struct alpha_reloc_tag): Rename from alpha_literal_tag; rename
	members to not be literal specific.
	(next_sequence_num): New.
	(md_apply_fix3): Cope with missing GPDISP_LO16.  Adjust for
	added/removed BFD relocations.
	(alpha_force_relocation, alpha_fix_adjustable): Likewise.
	(alpha_adjust_symtab_relocs): Handle GPDISP relocs as well.
	(tokenize_arguments): Parse ! relocations properly.
	(find_macro_match): Delete unused macro argument types.
	(assemble_insn): Add reloc parameter; emit that instead of the
	default as appropriate.
	(get_alpha_reloc_tag): New.  Split from ...
	(emit_insn): ... here.  Allocate a reloc tag for GPDISP.
	(assemble_tokens): Don't search macros if user relocation present.
	Copy reloc sequence number to insn struct.
	(emit_ldgp): Remove user reloc handling.
	(load_expression, emit_lda, emit_ldah, emit_ir_load): Likewise.
	(emit_loadstore, emit_ldXu, emit_ldil, emit_stX): Likewise.
	(emit_sextX, emit_division, emit_jsrjmp, emit_retjcr): Likewise.
	* config/tc-alpha.h (tc_adjust_symtab): Always define.
	(struct alpha_fix_tag): Name members less literal specific.

2001-09-04  Jeffrey A Law  (law@cygnus.com)

	* tc-h8300.c (tc_gen_reloc): Give an error if we try to take the
	address of two symbols in different sections.

2001-08-31  Eric Christopher  <echristo@redhat.com>
	    Jason Eckhardt  <jle@redhat.com>

	* config/tc-mips.c (mips_cpu_info): Add support for mipsisa32,
	5kc, and 20kc.  Clean up old entries.

2001-08-31  J"orn Rennecke <amylaar@redhat.com>
	    Jeff Law <law@redhat.com>

	* config/tc-h8300.c (build_bytes): For OBJ_ELF, make relocation's
	offset match H8 ELF spec.
	(md_section_align): Alternate implementation for BFD_ASSEMBLER.
	(md_apply_fix): Fix argument and return types for BFD_ASSEMBLER.

	* tc-h8300.c (relocation mappings): Remove.  Moved to tc-h8300.h.
	(build_bytes): Mark fixups for PCrel branches as signed.  For
	OBJ_ELF, make sure the reloc's offset points to the first byte
	to be modified.
	(md_convert_frag): Update definiton based on BFD_ASSEMBLER.
	* tc-h8300.h (relocation mappings): Add.

2001-08-30  J"orn Rennecke <amylaar@redhat.com>

	* tc-h8300.c (tc_crawl_symbol_chain, tc_headers_hook): Don't
	define for BFD_ASSEMBLER.
	(tc_reloc_mangle): Likewise.
	(tc_gen_reloc): New function for BFD_ASSEMBLER.

2001-08-29  Jeffrey A Law  (law@cygnus.com)

	* config/tc-h8300.c (h8300hmode): Record the machine type
	if BFD_ASSEMBLER is defined.
	(h8300smode, md_begin): Similarly.

2001-08-29  Joel Sherrill <joel@OARcorp.com>

	* configure.in (i[3456]86-*-rtems*, m68*-*-rtems*): Change
	default from coff to elf.
	* configure: Regenerate.

2001-08-29  J"orn Rennecke <amylaar@redhat.com>

	* tc-h8300.c: If OBJ_ELF, include elf/h8.h, and define
	assorted coff relocations to the corresponding elf relocations.
	* tc-h8300.h (TARGET_ARCH, TARGET_FORMAT): Define appropriately.

	* configure.in: Add case for h8300-*-elf.
	* configure: Regenerate.

2001-08-29  J"orn Rennecke <amylaar@redhat.com>

	* doc/internals.texi (MD_PCREL_FROM_SECTION): Change
	documentation to reflect reality.

2001-08-27  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (load_address): Reflect change to MAX_GPREL_OFFSET.
	(macro): Reflect change to MAX_GPREL_OFFSET.

2001-08-27  Torbjorn Granlund  <tege@swox.com>
	    Staffan Ulfberg  <staffanu@swox.se>
	    Linus Nordberg  <linus@swox.se>
	    Alan Modra  <amodra@bigpond.net.au>

	* configure.in: Recognise powerpc*le*, not just powerpcle*.
	* configure: Regenerate.
	* config/tc-ppc.c (PPC_LO, PPC_HI, PPC_HA, PPC_HIGHER,
	PPC_HIGHERA, PPC_HIGHEST, PPC_HIGHESTA, SEX16): New macros.
	(md_assemble): Use them.
	(ppc_machine): Support stub for ELF64 as well as XCOFF.
	(md_pseudo_table): Add "llong", "quad".
	(md_parse_option): Match default_cpu of powerpc*.
	(ppc_arch): Likewise.
	(ppc_subseg_align): Only for OBJ_XCOFF.
	(ppc_target_format): Return elf64-powerpc strings for 64 bit ELF.
	(md_begin): Select PPC_OPCODE_64 for 64 bit.
	(ppc_insert_operand): Don't bother testing 'file' before calling
	as_bad_where.  Use as_bad_where for operand->insert errors.
	(mapping): Add ELF64 relocation modifiers.
	(ppc_elf_suffix): Replace symbol on BFD_RELOC_PPC64_TOC reloc
	expressions with abs_symbol.
	(ppc_elf_cons): Correct offset for little endian targets.
	(ppc_elf_frob_symbol): New.
	(md_assemble): Add support for 64 bit ELF relocs.
	(ppc_tc): Ensure 8 byte alignment when 64 bit.
	(ppc_is_toc_sym): Only define for OBJ_XCOFF and OBJ_ELF.  Match
	".toc" section for 64 bit ELF.
	(ppc_fix_adjustable): New.  Macro body moved from tc-ppc.h.
	(md_apply_fix3): Silence warning with ATTRIBUTE_UNUSED.  Only do
	the ppc_is_toc_sym check for OBJ_XCOFF and OBJ_ELF.  For 64 bit,
	use BFD_RELOC_PPC64_TOC16_DS instead of BFD_RELOC_PPC_TOC16.
	Expand on comments, error message.  Add support for 64 bit relocs,
	and use PPC_HI etc. macros.
	* config/tc-ppc.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define.
	(HANDLE_ALIGN): Define to generate nops in code sections rather
	than zeros.
	(TC_FORCE_RELOCATION): Force for BFD_RELOC_PPC64_TOC.
	(ELF_TC_SPECIAL_SECTIONS): Add 64 bit ELF sections.
	(tc_fix_adjustable): Move body of macro to tc-ppc.c.
	(ppc_fix_adjustable): Declare.
	(tc_frob_symbol): Define.
	(ppc_elf_frob_symbol): Declare.

2001-08-26  Andreas Jaeger  <aj@suse.de>

	* config/tc-s390.c: Add missing prototypes
	(md_gather_operands): Make static.

2001-08-26  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.h (MAX_GPREL_OFFSET): Change it to the maximum
	allowed value, not the word beyond maximum.
	* config/tc-mips.c (macro_build_lui): Code cleanup.
	(macro): Reflect change to MAX_GPREL_OFFSET.
	(mips_ip): Check explicitly against S_EX_NONE.
	(my_get_SmallExpression): parse for %gp_rel, not %gprel.
	(md_apply_fix): Code cleanup.

2001-08-24  Andreas Jaeger  <aj@suse.de>

	* config/tc-ppc.h: Fix prototype declaration.

2001-08-23  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-ia64.c (dot_endp): Set function symbol sizes.
	* config/obj-elf.c (obj_elf_size): When size is constant, free
	and clear symbol_get_obj(sym)->size if any.

2001-08-21  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (md_begin): Warn about incompatibility between
	-march=FOO and -mipsN option, continue with default ISA.

2001-08-21  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (md_parse_option): #ifdef the
	traditional/non-traditional names as it is done in mips_target_format.

2001-08-20  Richard Henderson  <rth@redhat.com>

	* config/tc-alpha.h (MD_APPLY_FIX3): Define.
	* config/tc-alpha.c (md_apply_fix3): Rename from md_apply_fix;
	use seg parameter instead of now_seg.

2001-08-18  H.J. Lu  <hjl@gnu.org>

	* config/tc-mips.c (show): Add the missing prototype.

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

	* config/tc-mips.c (S_EX_*): New enum for my_getSmallExpression()
	return values.
	(mips_ip): Use the new return values instead of characters. Add
	support for %higher and %highest.
	(LP): Remove.
	(RP): Remove.
	(my_getSmallExpression): Make parsing case insensitive and more
	reliable. Add support for %higher and %highest. Further support	to
	parse %gprel and %neg is implemented but currently deactivated.

2001-08-17  Alan Modra  <amodra@bigpond.net.au>

	* ecoff.c (ecoff_frob_symbol): Remove casts from bfd_get_gp_size.
	(ecoff_build_symbols): Likewise.
	* read.c (s_lcomm_internal): Fix signed/unsigned warning.

2001-08-16  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (mips_elf_final_processing): Set elf	header flags
	for n32 ABI if appropriate.

2001-08-16  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (cons_fix_new_mips): Remove.
	* config/tc-mips.h (TC_CONS_FIX_NEW): Remove.
	(cons_fix_new_mips): Remove.

2001-08-14  Jeff Johnston  <jjohnstn@redhat.com>

	* expr.c (operand)[LITERAL_PREFIXDOLLAR_HEX]: Treat $L as
	a label, not a hex constant.

2001-08-13  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/tc-v850.h: Add missing prototypes.

2001-08-12  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* config/tc-s390.c (s390_elf_cons): Correct fixups for PLT
	relocations.

2001-08-12  TAKAI Kousuke  <takai@vlsi.kuee.kyoto-u.ac.jp>

	* config/tc-sparc.c (cons_fix_new_sparc): Move
	`sparc_no_align_cons = 0;' to...
	(s_uacons): ...here so that sparc_no_align_cons will get
	cleared properly.

2001-08-11  Kazu Hirata  <kazu@hxi.com>

	* config/tc-mips.c: Fix a comment typo.

2001-08-10  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (move_register): New function.
	(macro_build): Remove OPCODE_IS_MEMBER's gp32 argument.
	(mips_ip): Likewise.
	(macro2): Use move_register rather than macro_build for moves.
	(mips16_macro): Likewise.
	(macro): Likewise.  Handle M_MOVE.

2001-08-10  Andreas Jaeger  <aj@suse.de>

	* configure.in: Add -Wstrict-prototypes and -Wmissing-prototypes
	to build warnings.
	* configure: Regenerate.

2001-08-10  Alan Modra  <amodra@bigpond.net.au>

	* as.h (alloca): Don't declare if __GNUC__.  Remove an old comment.
	Comment indentation of #pragma.
	* macro.c (alloca): Likewise.

	* config/tc-ppc.c: Revert 2001-08-08.

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

	* symbols.c: Add missing prototypes.
	* config/e-i386elf.c: Likewise.
	* config/e-i386coff.c: Likewise.
	* config/e-i386aout.c: Likewise.
	* config/obj-coff.c: Likewise.
	(def_symbol_in_progress, stack): Move definition.
	* config/obj-elf.c: Add missing prototypes.
	(obj_elf_change_section): Make static.
	(obj_elf_parse_section_letters): Likewise.
	(obj_elf_section_word): Likewise.
	(obj_elf_section_type): Likewise.

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

	From 1999-10-25  Torbjorn Granlund  <tege@swox.com>
	* config/tc-ppc.c (md_apply_fix3): Replace haphazard code for
	determining reloc type with code reading operands->reloc field.

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

	* config/obj-elf.c (elf_copy_symbol_attributes): Make it a global
	function, and expand old obj-elf.h OBJ_COPY_SYMBOL_ATTRIBUTES here.
	* config/obj-elf.h (elf_copy_symbol_attributes): Declare.
	(OBJ_COPY_SYMBOL_ATTRIBUTES): Call elf_copy_symbol_attributes.

	* output-file.c (output_file_create): Don't try to open a second
	time as it's unnecessary.  FOPEN_W was undefined too.

2001-08-07  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (macro_build): Replace magic constants by defines.
	(mips_ip): Likewise. Typo.

2001-08-04  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (mips_abi_string): Initialize with NULL instead
	of 0.
	(RELAX_ENCODE): Replace bfd_vma by valueT.
	(load_address): Formatting.
	(macro): Likewise. Code cleanup. Typo.
	(macro2): Formatting.
	(md_parse_option): Typo.
	(s_mipsset): Reorder cases to look nicer.
	(md_estimate_size_before_relax): Formatting. Code cleanup.
	(mips_elf_final_processing): Check against NULL instead of 0.
	(md_obj_end): Remove ugly `' in message string.
	(s_mips_ent): Remove ugly `' in message string.

2001-07-30  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (md_begin): Take -mcpu value into account even when
	-mipsX is specified. Make both -mcpu/-march and -mcpu/-mtune pairs
	mutually exclusive (if they are different).
	(md_parse_option): Warn if an -march/-mtune/-mcpu/-m<cpu> option is
	set more than once.

2001-08-03  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (md_apply_fix): Don't subtract the symbol value
	from GPREL addends.

2001-08-02  Richard Sandiford  <rsandifo@redhat.com>

	* doc/c-mips.tex (-mgp32, -mfp32): Added -mfp32, unified with -mgp32.
	* config/tc-mips.c (mips_fp32, mips_32bit_abi): New static variables.
	(md_long_opts): Add -mfp32 option.
	(md_parse_option): Handle it.  Set mips_32bit_abi given -mabi=32.
	(md_show_usage): Show usage for -mfp32 and -mgp32.
	(HAVE_32BIT_GPRS, HAVE_32BIT_FPRS): New macros.
	(HAVE_64BIT_GPRS, HAVE_64BIT_FPRS): New macros, inverse of the above.
	(HAVE_32BIT_ADDRESSES): New macro.
	(load_register): Use HAVE_32BIT_GPRS to determine the register width.
	(load_address): Use HAVE_32BIT_ADDRESSES to determine the address size.
	(s_cprestore, s_cpadd): Likewise.
	(macro): Use HAVE_32BIT_GPRS to determine the width of registers
	used in branch and M_LI_D macros.  Use HAVE_64BIT_FPRS to determine
	the width registers used in M_LI_DD macros.  Use HAVE_32BIT_ADDRESSES
	to determine the width of addresses in load, store and jump macros.
	(macro2): Use HAVE_32BIT_GPRS to determine the width of registers
	used in set instructions; do not check the address size for them.
	Use HAVE_32BIT_ADDRESSES to determine the width of addresses in
	unaligned load and store macros.
	(mips_ip): Use the new macros to check the width of a register when
	processing float constants.  Force a constant into memory if it is
	destined for an FPR and the FPRs are wider than the GPRs.  Warn about
	odd FPR numbers if HAVE_32BIT_FPRS.  Use HAVE_32BIT_GPRS rather
	than mips_gp32 to select synthetic instructions.
	(macro_build): Use HAVE_32BIT_GPRS rather than mips_gp32 to select
	synthetic instructions.

2001-08-01  Christian Groessler <cpg@aladdin.de>

	* config/tc-z8k.c (parse_reg): If a string starts with "r", "rl",
	"rh", "rr", "rq", or "sp" then don't automatically assume
	it's a register name.  Check whether there is a number
	following.

2001-08-01  Alan Modra  <amodra@bigpond.net.au>

	* config/tc-i386.c (lex_got): Match lower case relocation tokens.
	Don't allocate more space than necessary for the input line copy.

2001-08-01  Alan Modra  <amodra@bigpond.net.au>

	* read.c: Standardize error/warning messages - don't capitalise, no
	final period or newline, don't say "ignored" or "zero assumed" for
	as_bad messages.  In some cases, change the wording to that used
	elsewhere for similar messages.
	* app.c: Likewise.
	* as.c: Likewise.
	* atof-generic.c: Likewise.
	* cgen.c: Likewise.
	* cond.c: Likewise.
	* depend.c: Likewise.
	* dwarf2dbg.c: Likewise.
	* ecoff.c: Likewise.
	* expr.c: Likewise.
	* frags.c: Likewise.
	* input-file.c: Likewise.
	* input-scrub.c: Likewise.
	* listing.c: Likewise.
	* output-file.c: Likewise.
	* stabs.c: Likewise.
	* subsegs.c: Likewise.
	* symbols.c: Likewise.
	* write.c: Likewise.
	* ecoff.c (ecoff_directive_end): Test for missing name by
	comparing input line pointers rather than reading string.
	(ecoff_directive_ent): Likewise.
	* read.c (s_set): Likewise.
	(s_align): Report a warning rather than an error for
	alignment too large.
	(s_comm): Check for missing symbol name.
	(s_lcomm_internal): Likewise.
	(s_lsym): Likewise.
	(s_globl): Use is_end_of_line instead of looking for '\n'.
	(s_lcomm_internal): Likewise.
	(ignore_rest_of_line): Report a warning rather than an error.

2001-07-31  Geoffrey Keating  <geoffk@redhat.com>

	* config/tc-ppc.c (ppc_elf_validate_fix): It's OK to have
	any kind of relocation against a not-loaded section.

2001-07-30  Alan Modra  <amodra@bigpond.net.au>

	* config/obj-elf.c (obj_elf_symver): Temporarily modify lex_type
	to include '@' in symbol names when parsing versioned symbols
	rather than calling get_symbol_end multiple times.
	* config/tc-i370.c (register_name): Format fixes.  Don't call
	get_symbol_end after parsing number.
	* config/tc-mn10200.c (data_register_name): Format fixes.  Hoist
	code out of conditional.
	(address_register_name): Likewise.
	(other_register_name): Likewise.
	* config/tc-mn10300.c (r_register_name): Likewise.
	(xr_register_name): Likewise.
	(data_register_name): Likewise.
	(address_register_name): Likewise.
	(other_register_name): Likewise.
	* config/tc-ppc.c (register_name): Likewise.
	* config/tc-s390.c (register_name): Likewise.

2001-07-27  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/tc-m68hc11.c (md_estimate_size_before_relax): Fix bsr
	and bra relax: update fragP->fr_fix after the fixup.

2001-07-27  Tracy Kuhrt  <Tracy.Kuhrt@microchip.com>

	* read.c (s_set): Check for missing symbol name.

2001-07-26  Alan Modra  <amodra@bigpond.net.au>

	* write.c (relax_segment <rs_space>): Account for fr_fix.

2001-07-25  H.J. Lu  <hjl@gnu.org>

	* config/tc-mips.c (md_estimate_size_before_relax): Make sure
	we treat weak like extern only for ELF.
	(mips_fix_adjustable): Make sure we don't adjust extern/weak
	symbols only for ELF.

2001-07-25  Chris Demetriou  <cgd@broadcom.com>

	* config/tc-mips.c: Fix spelling error in comment.

2001-07-25  Dave Brolley  <brolley@redhat.com>

	* app.c (LEX_IS_PARALLEL_SEPARATOR): New macro.
	(IS_PARALLEL_SEPARATOR): New macro.
	(do_scrub_begin): Set up characters in tc_parallel_separator_chars
	as LEX_IS_PARALLEL_SEPARATOR, if it is defined.
	(do_scrub_chars): Handle LEX_PARALLEL_SEPARATOR chars like
	LEX_LINE_SEPARATOR except that we go to state 1 (as if the label has
	been seen).

2001-07-24  Alan Modra  <amodra@bigpond.net.au>

	* Makefile.am (DEP_FLAGS): Define, add -DOBJ_MAYBE_ELF.
	(DEP1, DEPTC, DEPOBJ, DEP2): Use it.
	Update dependencies with "make dep-am".
	* Makefile.in: Regenerate.
	* doc/Makefile.in: Regenerate.

2001-07-23  Kazu Hirata  <kazu@hxi.com>

	* config/tc-alpha.h: Fix formatting.
	* config/tc-arc.c: Likewise.
	* config/tc-d10v.h: Likewise.
	* config/tc-hppa.c: Likewise.
	* config/tc-i370.c: Likewise.
	* config/tc-i386.h: Likewise.
	* config/tc-i960.h: Likewise.
	* config/tc-ia64.c: Likewise.
	* config/tc-ia64.h: Likewise.
	* config/tc-m32r.c: Likewise.
	* config/tc-m68k.c: Likewise.
	* config/tc-m88k.c: Likewise.
	* config/tc-ns32k.c: Likewise.
	* config/tc-pdp11.c: Likewise.
	* config/tc-pj.h: Likewise.
	* config/tc-s390.c: Likewise.
	* config/tc-sparc.c: Likewise.
	* config/tc-sparc.h: Likewise.
	* config/tc-tic80.c: Likewise.
	* config/tc-w65.h: Likewise.

2001-07-23  Alan Modra  <amodra@bigpond.net.au>

	* symbols.c (S_GET_VALUE): Don't treat O_constant and local
	symbols specially.  Always resolve, adding fr_address to value.
	* write.c (write_object_file): Don't add fr_address to sym values.
	(relax_frag): Likewise.
	(relax_segment): Likewise.
	* config/obj-ieee.c (do_symbols): Likewise.
	* config/tc-cris.c (md_convert_frag): Likewise.
	* config/tc-fr30.c (md_convert_frag): Likewise.
	* config/tc-i386.c (md_convert_frag): Likewise.
	* config/tc-m32r.c (md_convert_frag): Likewise.
	* config/tc-m68hc11.c (md_convert_frag): Likewise.
	* config/tc-mcore.c (md_convert_frag): Likewise.
	* config/tc-mips.c (mips16_extended_frag): Likewise.
	* config/tc-ns32k.c (md_convert_frag): Likewise.
	* config/tc-m68k.c (md_convert_frag_1): Likewise.
	(BRANCHBWL, BRABSJUNC, BRABSJCOND, BRANCHBW, FBRANCH, DBCCLBR,
	DBCCABSJ, PCREL1632, PCINDEX, ABSTOPCREL): Decrement.
	(md_relax_table): Remove first four entries.  Format.
	(md_estimate_size_before_relax): Remove old_fix.  Don't bother
	setting fr_var.  Simplify byte branch checks.

2001-07-23  Alan Modra  <amodra@bigpond.net.au>

	* config/tc-hppa.c (pa_parse_nonneg_cmpsub_cmpltr): Remove
	"isbranch" param as all calls have it set.
	(pa_parse_neg_cmpsub_cmpltr): Likewise.
	(pa_parse_nonneg_add_cmpltr): Likewise.  Remember result of
	strcasecmp in "nullify" var.
	(pa_parse_neg_add_cmpltr): Likewise.
	(pa_ip): Don't "save_s" unnecessarily.  Update calls to above
	functions.  Don't print wrong conditions in error messages.

2001-07-23  Andreas Jaeger  <aj@suse.de>

	* config/tc-s390.c (s390_force_relocation): Removed.

	* config/tc-s390.h: Remove double declaration of
	TC_FORCE_RELOCATION.

2001-07-22  H.J. Lu <hjl@gnu.org>

	* config/tc-mips.c (s_mips_end): Remove unused variables.
	(s_mips_frame): Add ATTRIBUTE_UNUSED.

2001-07-17  Andreas Schwab  <schwab@suse.de>

	* config/tc-m68k.c (md_pseudo_table) [OBJ_ELF]: Add .file and
	.loc.
	(md_assemble) [OBJ_ELF]: Call dwarf2_emit_insn before emitting
	insn.
	* config/tc-m68k.h (DWARF2_LINE_MIN_INSN_LENGTH): Define.

2001-07-17  matthew green  <mrg@eterna.com.au>

	* config/tc-i386.c (comment_chars): Don't use '/' as comment start if
	TE_NetBSD.
	(line_comment_chars): Set to '/' if TE_NetBSD.

2001-07-14  matthew green  <mrg@eterna.com.au>

	* configure.in (i386-*-netbsdelf*): New target.
	* configure: Regenerate.

2001-07-10  Mark Elbrecht  <snowball3@softhome.net>

	* config/obj-coff.c (coff_frob_symbol): Don't merge if the storage
	class of the non-debug symbol is C_NULL.

2001-07-10  Anders Norlander <anorland@synergenix.se>

	* doc/as.texinfo (Incbin): Fix grammatical errors.

2001-07-10  Nick Clifton  <nickc@cambridge.redhat.com>

	* depend.c: Use FOPEN_.. macros in calls to fopen().
	* input-file.c: As above.
	* itbl-ops.c: As above.
	* listing.c: As above.
	* output-file.c: As above.
	* read.c: As above.

2001-07-08  Anders Norlander <anorland@synergenix.se>

	* read.c (s_incbin): New .incbin function.
	* read.c (potable): Add "incbin" pseudo-op.
	* read.h: Add s_incbin prototype.
	* doc/as.texinfo (incbin): Document .incbin pseudo-op.
	* NEWS: Mention new feature.

2001-07-07  Nick Clifton  <nickc@cambridge.redhat.com>

	* ecoff.c (add_file): Only set debug_type to DEBUG_NONE if it is
	DEBUG_UNSPECIFIED.

2001-07-06  John Healy  <jhealy@redhat.com>

	* cgen.c (gas_cgen_save_fixups): Modified to allow more than one
	set of fixups to be stored.
	(gas_cgen_restore_fixups): Modified to allow the fixup chain to be
	restored to be chosen from any that are saved.
	(gas_cgen_swap_fixups): Modified to allow the current set of
	fixups to be swapped with any other set that has been saved.
	(gas_cgen_initialize_saved_fixups_array): New routine.
	* cgen.h: Modifed prototypes for gas_cgen_save_fixups,
	gas_cgen_restore_fixups, and gas_cgen_swap_fixups.  Added definitions
	or MAX_SAVED_FIXUP_CHAINS.
	* config/tc-m32r.c (assemble_two_insns): Changed calls to fixup
	store, swap and restore fuctions to reflect the new interface.

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

	* config/tc-m68k.c (md_estimate_size_before_relax): Catch and
	ignore empty, ineffectual alignment frags when deciding if a
	branch can be short.

2001-07-05  Steve Ellcey  <sje@cup.hp.com>

	* config/tc-ia64.c (special_section): Add SPECIAL_SECTION_INIT_ARRAY
	and SPECIAL_SECTION_FINI_ARRAY.
	(special_section_name): Add .init_array and .fini_array.
	(md_pseudo_table): Add init_array and fini_array.
	(md): Add pointer_size and pointer_size_shift fields.
	(setup_unwind_header): New static function.
	(output_unw_records): Modify to use setup_unwind_header.
	(generate_unwind_image, dot_endp): Modify to use md.pointer_size and
	md.pointer_size_shift.
	(md_begin): Initialize md.pointer_size and md.pointer_size_shift.

2001-07-05  Ben Elliston  <bje@redhat.com>

	* README (Supported platforms): m88k no longer suffers bitrot.

	* config/tc-m88k.c (md_pseudo_table): Remove redundant "global".

2001-07-05  Alan Modra  <amodra@bigpond.net.au>

	* struc-symbol.h (struct local_symbol): Rename lsy_offset to
	lsy_value.  Correct typos in comments.
	* symbols.c (local_symbol_make): Update for name change.
	(local_symbol_convert): Likewise.
	(colon): Likewise.
	(S_GET_VALUE): Likewise.
	(S_SET_VALUE): Likewise.
	(print_symbol_value_1): Likewise.
	(resolve_symbol_value): Likewise.  Don't divide local sym values
	by OCTETS_PER_BYTE twice.

2001-07-04  Jim Wilson  <wilson@redhat.com>

	* config/tc-ia64.c (md_pseudo_table): Add 2byte, 4byte, and 8byte.

	* config/tc-ia64.c (is_conditional_branch): Rewrite to exclude mod
	sched branches.

2001-07-05  Ben Elliston  <bje@redhat.com>

	* read.c (s_fill): Correct spelling error in comments.

	* doc/c-m88k.texi: New file.
	* doc/Makefile.am (CPU_DOCS): Add c-m88k.texi.
	* doc/Makefile.in: Regenerate.
	* doc/all.texi: Set M880X0.
	* doc/as.texinfo: Hook in m88k-dependent documentation.

2001-07-04  Eric Christopher  <echristo@redhat.com>

	* doc/c-mips.texi (MIPS Opts): Document 12000 as valid cpu.

	* config/tc-mips.c (mips_cpu_info_table): Add rm5200, rm5231, rm5261,
	and rm5721 as valid cpu strings.
	(md_show_usage): Add rm5200, rm5231, rm5261, rm5721.

2001-07-04  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mips.c (md_apply_fix): Prevent addend from becoming zero
	if it's expected to be non-zero.

2001-07-03  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/tc-sh.c (sh_frob_section): Replace symbol_get_frag() with
	fscan->fx_frag.

	* write.c (TC_FINALIZE_SYMS_BEFORE_SIZE_SEG): Default to 1.
	(write_object_file): Set finalize_syms to
	TC_FINALIZE_SYMS_BEFORE_SIZE_SEG just before size_segs is
	called.

	* doc/internals.texi: Document
	TC_FINALIZE_SYMS_BEFORE_SIZE_SEG.

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

	* config/tc-ppc.c: Formatting fixes.

2001-07-01  Ben Elliston  <bje@redhat.com>

	* config/tc-m88k.c: Back out warning fixes from 2001-06-24, as
	they cause some subtle breakage.  Will fix them again later.

2001-06-28  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/obj-coff.c (obj_coff_ln): Treat a .ln directive
	outside of a function as a .appline directive.

2001-06-28  Eric Christopher <echristo@redhat.com>
	    H.J. Lu  <hjl@gnu.org>

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

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

	* NEWS: Update.

2001-06-27  Nick Clifton  <nickc@cambridge.redhat.com>

	* write.c (write_object_file): Do not set finalize_syms until
	after the segments have been sized.  Some backends may still
	need to access the syms's frags in order to adjust relaxed
	frags.

	* config/tc-arm.c (do_ldst): Use MVN to build simple inverted
	constants.

2001-06-27  Alan Modra  <amodra@bigpond.net.au>

	* write.c (fixup_segment <Difference of 2 syms same seg>): Don't
	subtract MD_PCREL_FROM_SECTION for 68k.
	(fixup_segment <Difference of 2 syms different seg>): Only fudge
	by adding MD_PCREL_FROM_SECTION for 68k or if not already pcrel.

2001-06-27  Tracy A. Kuhrt  <Tracy.Kuhrt@microchip.com>

	* write.c (fixup_segment <Difference of 2 syms same seg>): If
	pcrel, subtract MD_PCREL_FROM_SECTION value.

2001-06-24  Ben Elliston  <bje@redhat.com>

	* stabs.c (generate_asm_file): Make local variable `len' a size_t.

2001-06-24  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-alpha.c (tc_gen_reloc): Handle relocs against SEC_MERGE
	section symbols the same way as externs.

2001-06-24  Ben Elliston  <bje@redhat.com>

	* config/tc-m88k.c (md_number_to_imm): Remove; unused since 1993.
	(emit_relocations): Ditto.
	(s_bss): Ditto.
	(md_begin): Reformat comments to conform to the GNU standards.
	(md_assemble): Ditto.

	* config/tc-m88k.c (get_reg): Adjust type of `reg_prefix' to char.
	(md_parse_option): Mark parameters as unused.
	(md_show_usage): Ditto.
	(calcop): Adjust type of `reg_prefix' to char.
	(get_reg): Ditto.
	(getval): Adjust type of local `c' to char.
	(md_create_short_jump): Mark from_addr, to_addr params as unused.
	(md_create_long_jump): Ditto.
	(md_estimate_size_before_relax): Mark parameters as unused.

	* config/tc-m88k.c (md_pseudo_table): Properly terminate the table
	to allay a possible compiler warning.

2001-06-22  Nick Clifton  <nickc@cambridge.redhat.com>

	* doc/internals.texi (CPU backend): Document md_atof.

2001-06-22  Matthew Wilcox  <willy@ldl.fc.hp.com>

	* config/tc-hppa.c (pre_defined_registers): Add %mrp (millicode
	return pointer) alias for %r2 or %r31, depending on 32 or 64 bit
	architecture.

2001-06-21  Philip Blundell  <philb@gnu.org>

	* config/tc-arm.c (cplong_flag): Rename to long_flag.  All uses
	updated.
	(insns): Remove entry for adrl.  Add long_flag for adr.
	(do_adr): Handle `l' suffix.
	(do_adrl): Delete.

2001-06-21  Alan Modra  <amodra@bigpond.net.au>

	* config/tc-hppa.c (CHECK_FIELD_WHERE): Define.
	(md_apply_fix): Use it here.  Replace printf with equivalent
	as_bad_where.
	(tc_gen_reloc): Use as_bad_where instead of as_bad.
	(md_apply_fix): Here too.
	* config/tc-i386.c (tc_gen_reloc): Use as_bad_where instead of as_bad.
	* config/tc-m68k.c (tc_gen_reloc): Likewise.
	(md_convert_frag_1): Likewise.

2000-06-20  Tom Rix <trix@redhat.com>

	* config/tc-ppc.c (ppc_comm): Change default alignment to 4 bytes.

2001-06-18  H.J. Lu <hjl@gnu.org>

	* doc/Makefile.am (info): Depend on $(MANS).
	(as.1): Remove the prefix `$(srcdir)/'.
	* doc/Makefile.in: Regenerated.

	* as.1: Removed.

2001-06-18  Philip Blundell  <philb@gnu.org>

	* config/tc-arm.c (do_msr): Remove restriction on usage of
	immediate operands.

2001-06-19  Alan Modra  <amodra@bigpond.net.au>

	* dwarf2dbg.c (dwarf2_finish): Output file info even when no
	line info.

2001-06-13  Philip Blundell  <philb@gnu.org>

	* config/tc-arm.c (thumb_shift): Improve wording of error message.
	(do_t_arit): Likewise.

2001-06-13  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/tc-sh.c (md_pseudo_table): Only intercept the .file and
	.loc pseudos if the dfwarf2 functions are available.
	(md_assemble): Only call dwarf2_emit_insn if it is available.

	* expr.c: Fix typo in comment.

2001-06-12  Nick Clifton  <nickc@cambridge.redhat.com>

	* doc/as.texinfo (Infix Ops): Document that comparison and
	combiner operators can be used as infix operators.

2001-06-12  Peter Jakubek <pjak@snafu.de>

	* config/tc-m68k.c (parse_mri_control_operand): Fix handling
	of AND/OR.
	(swap_mri_condition): Add HS (alias fo CC) and LO (alias for CS).
	(reverse_mri_condition): Likewise.
	(swap_mri_condition): Issue warning for conditions that can not be
	swapped.
	(build_mri_control_operand): Fix order of operands (swapped).
	(build_mri_control_operand): Allow upper case extension in structured
	control directives.
	(s_mri_else): Likewise.
	(s_mri_next): Likewise.
	(s_mri_for): Likewise.
	(s_mri_if): Fix handling comment ('*') in mri mode.
	(s_mri_while): Likewise.
	* macro.c (macro_expand): Allow macro invocation with empty
	extension.

2001-06-12  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/tc-arm.c: Fix test for overlow of literal pool.

2001-06-11  H.J. Lu  <hjl@gnu.org>

	* NEWS: Updated for the new -n option for the MIPS assembler.

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

	* doc/as.texinfo: Document the new -n option.
	* doc/c-mips.texi: Likewise.
	* doc/as.1: Regenerated.

2001-06-10  Alan Modra  <amodra@bigpond.net.au>

	* config/obj-coff.c (obj_coff_section): Formatting fix.

	* config/tc-i386.c (md_assemble): Accept branch hints as ",pt" and
	",pn".

2001-06-08  H.J. Lu  <hjl@gnu.org>

	* config/tc-mips.c (warn_nops): New variable. Set to 0 to
	disable warning about all NOPS that the assembler generates.
	(macro): Warn NOPS generated only if warn_nops is not 0.
	(md_shortopts): Add `n'.
	(md_parse_option): Set warn_nops to 1 for `n'.

2001-06-08  H.J. Lu  <hjl@gnu.org>

	* config/tc-mips.c (mips_ip): Properly handle illegal operands.

2001-06-08  H.J. Lu  <hjl@gnu.org>

	* config/tc-mips.c (md_apply_fix): Don't adjust common
	extern/weak symbols for ELF.
	(md_estimate_size_before_relax): Treat weak like extern for
	ELF.
	(mips_fix_adjustable): Don't adjust extern/weak symbols for
	ELF.

2001-06-08  Alan Modra  <amodra@bigpond.net.au>

	* Makefile.am: 'som' is not wrongly spelled 'some'.
	* Makefile.in: Regenerate.

	* config/tc-mips.c (mips16_mark_labels): Reduce number of calls to
	S_GET_VALUE by using a temp.
	(append_insn): Likewise, and for S_SET_VALUE too.
	(mips_emit_delays): Likewise.
	(my_getExpression): Likewise.
	(md_apply_fix): Likewise.  Use "valueT" rather than "long" for "value".
	(mips16_extended_frag): Remove code concerned with avoiding
	locking in a frag address now that symbols are not finalized until
	relaxation is complete.  Cater for first relaxation pass having
	bogus addresses.  Use relax_marker to reliably determine whether a
	symbol frag has been reached on the current pass.

2001-06-07  H.J. Lu  <hjl@gnu.org>

	* configure.in: Move "mips-*-linux-gnu*" before "mips-*-gnu*".
	* configure: Regenerate.

2001-06-07  H.J. Lu  <hjl@gnu.org>

	* configure.in: Use MIPS_STABS_ELF for Linux/mips and remove
	ecoff emulation.
	* configure: Regenerate.

2001-06-07  H.J. Lu  <hjl@gnu.org>

	* config/tc-mips.c (mips_pseudo_table): Add "extern" if
	MIPS_STABS_ELF is defined.

2001-06-06  Nick Clifton  <nickc@cambridge.redhat.com>

	* as.c (show_usage): Remove L from listing options.  It is not a
	generic option.

2001-06-06  Christian Groessler <cpg@aladdin.de>

	* config/tc-z8k.c: Removed many warnings by removing unused
	variables and tagging unused parameters as such.
	(md_begin): Fixed a typo (","instead of ";").
	(struct ctrl_table): Add parentheses to initialize array
	correctly.
	(struct flag_table): Likewise.
	(struct intr_table): Likewise.
	(struct table): Likewise.
	(check_operand): "#if 0"'ed since it doesn't seem to be used.

2001-06-06  Peter Jakubek <pjak@snafu.de>

	* config/tc-m68k.c (md_show_usage): Add all supported ColdFire
	options to list (e.g. m5206e, m5307, m5407).

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

	* config/tc-s390.h (TC_FORCE_RELOCATION): Always emit relocations
	BFD_RELOC_VTABLE_INHERIT and BFD_RELOC_VTABLE_ENTRY.

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

	* config/tc-i386.c (md_assemble): Handle Pentium4 branch hints.
	<JumpByte, JumpDword insn output>: Remove dead code.

2001-06-06  Tracy Kuhrt <Tracy.Kuhrt@microchip.com>

	* as.c (parse_args): Correct option name "listing-lhs-width2".

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

	* symbols.c (S_SET_EXTERNAL): Do not override a section symbol's
	status.

2001-05-30  Richard Henderson  <rth@redhat.com>

	* read.c (emit_leb128_expr): Call md_cons_align.

2001-05-28  Jeff Sturm  <jsturm@one-point.com>

	* config/tc-sparc.c (md_apply_fix3): Handle BFD_RELOC_SPARC_UA16,
	BFD_RELOC_SPARC_UA32 and BFD_RELOC_SPARC_UA64.
	(tc_gen_reloc): Likewise.
	(sparc_cons_align): Don't clear sparc_no_align_cons.
	(cons_fix_new_sparc): Substitute BFD_RELOC_SPARC_UA{16|32|64} for
	BFD_RELOC_{16|32|64} iff sparc_no_align_cons is set.

2001-05-27  Alan Modra  <amodra@one.net.au>

	* write.c (relax_segment <rs_space>): Check the section of a
	symbol to determine whether it is absolute rather than comparing
	its frag against zero_address_frag as listings play tricks with
	frags.

	* config/tc-m68k.c (md_assemble): Ensure variable part of frag is
	allocated in the same chunk as the fixed part.

2001-05-26  Alan Modra  <amodra@one.net.au>

	* write.c (relax_segment <rs_space>): Calculate growth using
	addresses before stretch.  Prevent repeated error messages.
	From Peter Jakubek  <pjak@snafu.de>
	Use as_bad_where and as_warn_where to pinpoint errors.

2001-05-25  Alan Modra  <amodra@one.net.au>

	* symbols.c (resolve_symbol_value): Always set segment, even when
	not finalizing symbol value.

	* config/obj-ieee.c (write_object_file): Set finalize_syms.
	* config/obj-coff.c (write_object_file): Likewise.
	* (size_section): Remove rs_space assert as fr_symbol is no longer
	removed.
	(fill_section): Likewise.

	* configure.in: Replace linuxoldld with linux*oldld.
	* configure: Regenerate.

	From 2.11 branch 2001-03-30  Richard Henderson  <rth@redhat.com>
	* config/tc-i386.c (md_convert_frag): Don't die on local symbols
	that have been finalized.

	* symbols.c (resolve_symbol_value): Clear sy_resolving before
	taking exit_dont_set_value.

	* write.c (relax_segment <rs_space>): Don't zap fr_symbol when
	relaxing.

2000-05-24  Tom Rix <trix@redhat.com>

	* config/obj-coff.c (add_lineno): xcoff allows negative line
	numbers
	* config/tc-ppc.c (ppc_stabx): fix generated symbol

2001-05-24  Alan Modra  <amodra@one.net.au>

	* write.c (write_object_file): Set finalize_syms = 1 before
	size_seg is called.

2001-05-23  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* config/tc-mips.c (ISA_HAS_64BIT_REGS): Add ISA_MIPS64 as 64 bit
	architecture, remove erraneous ISA_MIPS32.
	(md_show_usage): Add MIPS r12k support.
	(mips_cpu_info_table): Add MIPS r12k support.

2001-05-22  Alan Modra  <amodra@one.net.au>

	* config/tc-arc.c (md_assemble): Use is_end_of_line instead of
	testing for NULs.

	* symbols.c (resolve_symbol_value): Remove "finalize" param,
	instead use finalize_syms directly.  Don't treat expressions
	specially with regard to finalize_syms.  Update calls to self.
	(resolve_local_symbol): Update call to resolve_symbol_value.
	(S_GET_VALUE): Likewise.  Return resolve_symbol_value if
	!finalize_syms.
	* symbols.h (resolve_symbol_value): Update prototype.
	* config/obj-aout.c (obj_crawl_symbol_chain): Update call
	to resolve_symbol_value.
	* config/obj-bout.c (obj_crawl_symbol_chain): Likewise.
	* config/obj-coff.c (do_relocs_for): Likewise.
	(yank_symbols): Likewise.
	(fixup_segment): Likewise.
	* config/obj-vms.c (obj_crawl_symbol_chain): Likewise.
	* config/tc-mips.c (md_convert_frag): Likewise.
	* config/tc-ppc.c (ppc_frob_symbol): Likewise.
	(ppc_fix_adjustable): Likewise.
	* dwarf2dbg.c (dwarf2dbg_estimate_size_before_relax): Likewise.
	(dwarf2dbg_convert_frag): Likewise.
	* ehopt.c (eh_frame_estimate_size_before_relax): Likewise.
	(eh_frame_convert_frag): Likewise.
	* expr.c (make_expr_symbol): Likewise.
	* write.c (adjust_reloc_syms): Likewise.
	(write_object_file): Likewise.
	(relax_segment): Likewise.
	(fixup_segment): Likewise.
	(finalize_syms): Init to zero, and update comment.
	(write_object_file): Set finalize_syms to 1 rather than 2.
	* doc/internals.texi (sy_value): Mention finalize_syms.
	(S_GET_VALUE): Remove restriction on when S_GET_VALUE can be called.

	* config/tc-m68k.c (relaxable_symbol): Only treat external symbols
	as relaxable if embedded system, make weak syms non-relaxable.
	Move definition..
	(tc_m68k_fix_adjustable): ..so it can be used here.
	(md_apply_fix_2): Sign extend without conditional.

	* config/tc-v850.c: Update copyright.

2001-05-16  Jeff Johnston  <jjohnstn@redhat.com>

	* cgen.c (gas_cgen_tc_gen_reloc): Changed error message when
	howto entry is not found.

2001-05-15  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-mn10300.c (mn10300_force_relocation): Don't
	optimize differences between symbols in code sections to
	constants.
	(mn10300_fix_adjustable): Don't adjust to section+offset
	relocations pointing at symbols in code sections.

2001-05-16  Alan Modra  <amodra@one.net.au>

	* config/tc-arc.c (md_assemble): Correct dwarf2_emit_insn param
	for 8 byte insns.
	* config/tc-i386.c (md_assemble): Call dwarf2_emit_insn before
	opcodes are output rather than after.  Delete insn_size.
	* config/tc-v850.c (md_assemble): Similarly, but delete
	total_insn_size.

2001-05-14  Richard Henderson  <rth@redhat.com>

	* ehopt.c (eh_frame_convert_frag): Fix missed subtype adjustment
	last change.

2001-05-14  Richard Henderson  <rth@redhat.com>

	* ehopt.c (get_cie_info): Rename from eh_frame_code_alignment;
	also collect whether to expect an FDE augmentation.
	(check_eh_frame): Rewrite as a state machine.  Track where in
	an FDE we are located, skip any augmentation.
	(eh_frame_estimate_size_before_relax): Get code alignment from
	the fragment subtype.
	(eh_frame_relax_frag, eh_frame_convert_frag): Likewise.
	* read.c (emit_leb128_expr): Call check_eh_frame.

2001-05-14  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-mn10300.c (md_assemble): Anchor dwarf2 line info
	before a relaxable insns.

2001-05-13  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-mn10300.c (tc_gen_reloc): Don't reject differences
	between symbols if the base symbol is in the current section;
	emit a PC-relative relocation instead.

2001-05-12  Peter Targett  <peter.targett@arccores.com>

	* config/tc-arc.c: Update copyright and tidy source comments.
	(md_pseudo_table): Add directive .cpu back as an alias for
	.option.  Add .file and .line for dwarf2 support.
	(arc_mach_type): Make bfd_mach_arc_6 default.
	(md_longopts): Add entry 'pre-v6' representing old command line
	option when assembling for 'arc5' core versions.
	(md_parse_option): Make OPTION_ARC same as OPTION_ARC6, for new
	default behaviour.
	(arc_code_symbol): Make symbol value for @h30 fixup expression
	equal to O_constant.
	(md_assemble): Call dwarf2_emit_insn.
	Include "dwarf2dbg2.h".  Formatting fixes throughout file.
	* config/tc-arc.h (DWARF2_LINE_MIN_INSN_LENGTH): Define.
	* doc/c-arc.texi (ARC_CORE_DEFAULT): Update to new default.

2001-05-11  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-ia64.c (special_linkonce_name): New.
	(make_unw_section): Map .gnu.linkonce.t.FOO text section into
	.gnu.linkonce.ia64unw{,i}.FOO.
	(ia64_elf_section_type): Handle .gnu.linkonce.ia64unw{,i}.FOO.
	(dot_endp): Add comment about it.

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

	* config/tc-arm.c (arm_handle_align): When truncating an aligned
	block, ensure that the low order bits of the alignment are
	preserved.

2001-05-10  Alan Modra  <amodra@one.net.au>

	* config/obj-vms.c (obj_crawl_symbol_chain): Don't take address of
	symbol_next.

	* config/tc-fr30.c (md_estimate_size_before_relax): Return size of
	current variable part of frag.
	* config/tc-m32r.c (md_estimate_size_before_relax): Likewise.
	* config/tc-openrisc.c (md_estimate_size_before_relax): Likewise.
	* config/tc-m68hc11.c (RELAX_STATE): Define.
	(RELAX_LENGTH): Define.
	(md_estimate_size_before_relax): Handle non-relaxable cases
	separately from relaxable cases for clarity, and return correct
	size for multi-pass relaxation.
	* config/tc-tahoe.c (RELAX_LENGTH): Correct.
	(md_estimate_size_before_relax): As for tc-m68hc11.c.
	(md_convert_frag): Remove "length_code".
	* config/tc-vax.c (RELAX_STATE): Define.
	(RELAX_LENGTH): Define.
	(md_relax_table): Add missing entry.
	(md_estimate_size_before_relax): As for tc-m68hc11.c.
	(md_convert_frag): Remove "length_code".
	* config/tc-ns32k.c (md_estimate_size_before_relax): Simplify and
	don't bother setting fr_var.  Return correct size for multi-pass
	relaxation.
	* config/tc-v850.c (md_estimate_size_before_relax): Rewrite.
	(md_convert_frag): Don't bother clearing fr_var.
	(md_pseudo_table): Correct initialization.
	* config/tc-h8500.c (md_convert_frag): Don't bother clearing fr_var.
	(md_estimate_size_before_relax): No need to set fr_var.
	* config/tc-mcore.c (md_convert_frag): Don't bother clearing fr_var.
	(md_estimate_size_before_relax): No need to set fr_var.

2001-05-09  Richard Henderson  <rth@redhat.com>

	* config/tc-ia64.c (generate_unwind_image): Align the fragment
	beginning a function's unwind info block.

2001-05-09  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-mn10300.c (md_apply_fix3): Accept PC-relative relocs.

2001-05-08  Andreas Schwab  <schwab@suse.de>

	* config/tc-m68k.c: Instead of replacing -1 by 64 in assignment to
	fx_pcrel_adjust explicitly sign extend when reading it.

2001-05-08  Alan Modra  <amodra@one.net.au>

	* config/tc-m68k.c (md_estimate_size_before_relax): Set fr_var
	from md_relax_table, and combine some switch cases.

2001-05-06  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-mn10300.c (md_assemble): Subtract operand->shift
	from offset in non-pcrel operands too.

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

	* config/tc-arm.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define.
	* config/tc-arm.c (arm_handle_align): Do not insert more than
	MAX_MEM_FOR_RS_ALIGN_CODE bytes.
	(arm_frag_align_code): Use MAX_MEM_FOR_RS_ALIGN_CODE.

2001-05-03  Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>

	* Makefile.am (TARG_ENV_HFILES): Add te-hppa64.h and te-hppalinux64.h.
	Run "make dep-am".
	* Makefile.in: Regenerate.
	* configure.in: Remove duplicate mips-*-ecoff* entry.
	* configure: Regenerate.

	* config/obj-ecoff.c (obj_pseudo_table): Fix terminating entry.
	(n_names): Cast away type mismatch.
	(ecoff_sec_sym_ok_for_reloc): Add unused attribute.
	(obj_ecoff_frob_symbol): Likewise.
	* ecoff.c: (add_file): Add unused attribute.
	(ecoff_directive_begin): Likewise.
	(ecoff_directive_bend): Likewise.
	(ecoff_directive_def): Likewise.
	(ecoff_directive_dim): Likewise.
	(ecoff_directive_scl): Likewise.
	(ecoff_directive_size): Likewise.
	(ecoff_directive_type): Likewise.
	(ecoff_directive_tag): Likewise.
	(ecoff_directive_val): Likewise.
	(ecoff_directive_endef): Likewise.
	(ecoff_directive_end): Likewise.
	(ecoff_directive_ent): Likewise.
	(ecoff_directive_extern): Likewise.
	(ecoff_directive_file): Likewise.
	(ecoff_directive_fmask): Likewise.
	(ecoff_directive_frame): Likewise.
	(ecoff_directive_mask): Likewise.
	(ecoff_directive_loc): Likewise.
	(mark_stabs): Likewise.
	(ecoff_stab):  Likewise.
	(ecoff_frob_symbol): Cast away type mismatch.
	(ecoff_padding_adjust): Likewise.
	(ecoff_build_symbols): Likewise.
	(ecoff_build_procs): Likewise.
	(ecoff_build_aux): Likewise.
	(ecoff_build_strings): Likewise.
	(ecoff_build_fdr): Likewise.
	(ecoff_build_debug): Likewise.
	* itbl-ops.c (itbl_assemble): Variable initialization.

2001-05-03  Alan Modra  <amodra@one.net.au>

	* config/tc-i386.c (i386_displacement): Call as_bad for bad GOTOFF
	expressions rather than triggering an assert.

2001-05-02  Johan Rydberg  <jrydberg@opencores.org>

	* config/tc-openrisc.c: New file.
	* config/tc-openrisc.h: Likewise.

	* Makefile.am: Add OpenRISC target.
	* Makefile.in: Regenerated.

	* configure.in (openrisc-*-*): Add target.
	* configure: Regenerated.

2001-05-02  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/tc-arm.c (arm_frag_align_code): Change error message to
	more explanatory version.

2001-04-29  Keith M Wesolowski <wesolows@foobazco.org>

	* config/tc-mips.c (md_parse_option): Also accept
	elf64-tradbigmips and elf64-tradlittlemips for OPTION_64.

2001-04-27  David Mosberger  <davidm@hpl.hp.com>

	* config/tc-ia64.c (dot_spillmem_p): Fix output_spill_?sprel_p()
	argument passing order: predicate goes last, not first.

2001-04-27  Sean McNeil <sean@mcneil.com>

	* configure.in: Add arm-vxworks.
	* configure: Regenerate.

2001-04-26  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/tc-arm.c (arm_handle_align): New Function:  Generate
	no-op filled alignment frags.
	(arm_frag_align_code): New Function: Create a code alignment frag.
	(arm_init_frag): New Function: Initialse the target dependent
	parts of a frag.

	* config/tc-arm.h (TC_FRAG_TYPE): Define.
	(TC_FRAG_INIT): Define.
	(HANDLE_ALIGN): Define.
	(md_do_align): Define.

2001-04-25  Nick Clifton  <nickc@cambridge.redhat.com>

	* config/obj-coff.c (do_linenos_for): Check to see if the filename
	symbol has been initialised before extracting its symbol index.

2001-04-24  H.J. Lu  <hjl@gnu.org>

	* configure: Regenerated with the right version of autoconf.

2001-04-24  Christian Groessler  <cpg@aladdin.de>

	* config/tc-z8k.c (build_bytes): 12 and 16 bit displacements now
	generate R_CALLR and R_REL16 relocations

2000-04-20  Jason Eckhardt  <jle@redhat.com>

	* config/tc-d10v.h (tc_frob_label): Update the symbol's frag
	since frag_now can change after d10v_cleanup is called.

2001-04-16  David O'Brien  <obrien@FreeBSD.org>

	* configure.in: Add the em type for FreeBSD targets.
	* configure: Regenerate.

2001-04-14  Alexandre Oliva  <aoliva@redhat.com>

	* struc-symbol.h (struct local_symbol): New TC_LOCAL_SYMFIELD_TYPE.
	* symbols.c (local_symbol_convert): Call TC_LOCAL_SYMFIELD_CONVERT.

	* config/tc-mn10300.c (md_assemble): Simplify offset adjustment of
	pc-relative relocations not placed at the end of the instruction.

2001-04-13  Jim Wilson  <wilson@redhat.com>

	* tc-ia64.c (is_conditional_branch): Return true for br, brl, and br.
	excluding br.i.

2001-04-13  Jakub Jelinek  <jakub@redhat.com>

	* config/obj-elf.c (obj_elf_change_section): Add entsize argument,
	handle SHF_MERGE and SHF_STRINGS.
	(obj_elf_parse_section_letters): Set SHF_MERGE and SHF_STRINGS.
	(obj_elf_section): Allow additional argument specifying entity size.
	* write.c (adjust_reloc_syms): Keep relocations against local symbols
	in SEC_MERGE sections.

2001-04-12  Jason Merrill  <jason_merrill@redhat.com>

	* dwarf2dbg.c (process_entries): Don't optimize redundant line notes.

2001-04-12  Alexandre Oliva  <aoliva@redhat.com>

	* expr.c (operand): Pass &c to md_parse_name().
	* config/tc-ia64.h, config/tc-ppc.h, config/tc-tic54x.h: Adjust.

2001-04-07  Steven J. Hill  <sjhill@cotw.com>

	* config/tc-mips.c: Support ELF64 for traditional MIPS targets.

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

	* configure.in: Use traditional MIPS targets for Linux/MIPS.
	* configure: Regenerated.

2001-04-06  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-mn10300.c (xr_registers): Added `pc'.

2001-04-05  Alan Modra  <alan@linuxcare.com.au>

	* configure.in: Add h8500-*-coff and h8500-*-rtems targets.
	* configure: Regenerate.

	* config/tc-h8500.c (md_estimate_size_before_relax): Add missing
	cases, and always return size based on current fr_subtype.
	(md_begin): Move initialization of md_relax_table..
	(md_relax_table): ..to static initializer.  Set rlx_length for
	UNDEF_WORD_DISP cases.
	* config/tc-w65.c (md_estimate_size_before_relax): Likewise.
	(md_begin): Likewise.
	(md_relax_table): Likewise.
	* config/tc-mcore.c (md_estimate_size_before_relax): Likewise.
	(md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases.
	Set rlx_backward and rlx_forward to zero for unused states.
	* config/tc-sh.c (md_estimate_size_before_relax): Likewise.
	(md_relax_table): Set rlx_length for UNDEF_WORD_DISP cases.
	(UNCOND12, UNCOND32): Remove duplicate defines.

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

	* config/tc-cris.c (md_estimate_size_before_relax) <case
	ENCODE_RELAX (STATE_CONDITIONAL_BRANCH, STATE_UNDF)>: Don't emit
	32-bit branch, just set fragP->fr_subtype.  Set fragP->fr_var.
	<all cases>: Always set fragP->fr_var using md_cris_relax_table.
	Add cases to cover all relax states.
	(cris_insn_first_word_frag): New.
	(md_assemble): Call cris_insn_first_word_frag to get the first
	frag in an insn, not frag_more.  Don't call dwarf2_emit_insn at
	end.  Drop variable insn_size.
	(gen_bdap): Call cris_insn_first_word_frag, not frag_more.
	(cris_sym_leading_underscore): Wrap first as_bad parameter in _().
	(cris_sym_no_leading_underscore, s_cris_file, s_cris_loc): Ditto.

	* write.c (write_object_file): Reset broken word state before
	calling relax_seg.

2001-03-31  Alan Modra  <alan@linuxcare.com.au>

	* listing.c (listing_listing): Enable listing on EDICT_NOLIST_NEXT
	for one line if not already enabled.
	* cond.c (s_elseif): Correct conditional assembly listing.
	(s_else): Likewise.

	* cond.c (s_endif): Correct handling of "if .. elseif .." trees.
	Don't abort on NULL current_cframe.

2001-03-30  Alan Modra  <alan@linuxcare.com.au>

	* dwarf2dbg.c (dwarf2_directive_file): Fix warnings.
	(dwarf2dbg_convert_frag): Pass `finalize_syms' to resolve_symbol_value.
	* config/obj-aout.c (obj_crawl_symbol_chain): Likewise.
	* config/obj-bout.c (obj_crawl_symbol_chain): Likewise.
	* config/obj-coff.c (do_relocs_for): Likewise.
	(yank_symbols): Likewise.
	(fixup_segment): Likewise.
	* config/tc-ppc.c (ppc_frob_symbol): Likewise.
	(ppc_fix_adjustable): Likewise.
	* config/tc-mips.c (md_convert_frag): Likewise.
	* config/obj-vms.c (obj_crawl_symbol_chain): Likewise.
	* ehopt.c (eh_frame_convert_frag): Likewise.
	* expr.c (make_expr_symbol): Likewise.

	* frags.h (struct frag): Add last_fr_address.  Reorder fields for
	better packing.
	* symbols.c (resolve_symbol_value): Don't fix expression values
	until relaxation is complete.
	(resolve_local_symbol): Pass `finalize_syms' to resolve_symbol_value.
	(S_GET_VALUE): Likewise, and return unresolved expression value.
	* write.c (finalize_syms): New.
	(relax_and_size_seg): Split into..
	(relax_seg): New function, returns 1 if anything changed..
	(size_seg): And the remainder of relax_and_size_seg.
	(fixup_segment): Arrange for final resolution of sym values.
	(adjust_reloc_syms): Likewise.
	(write_object_file): Likewise, and repeatedly call relax_seg until
	nothing more changes.
	(relax_segment): Return 1 if anything changed.  Use correct types
	for rs_org `target' and `after'.
	* write.h (finalize_syms): Declare.
	(relax_segment): Update prototype.

	* config/tc-sh.c (md_estimate_size_before_relax): Add extra
	do-nothing cases to switch to avoid abort on a second relaxation
	pass, and tidy code a little.
	* config/tc-cris.c (md_estimate_size_before_relax): Likewise.
	* config/tc-h8500.c (md_estimate_size_before_relax): Likewise.
	* config/tc-w65.c (md_estimate_size_before_relax): Likewise.
	* config/tc-i386.c (UNCOND_JUMP, COND_JUMP, COND_JUMP86): Decrement.
	(md_relax_table): Remove first four unused entries.  Increment
	rlx_length by one throughout table, and update comments to suit.
	(md_estimate_size_before_relax): Return size of current variable
	part of frag to reflect reality when relaxing more than once.
	* config/tc-mcore.c (COND12, UNCD12): Rename to DISP12 throughout.
	(COND32, UNCD32): Rename to DISP32 throughout.
	(UNDEF_WORD_DISP): Renumber to 3.
	(md_estimate_size_before_relax): Add extra do-nothing cases.
	* config/tc-mn10200.c (md_estimate_size_before_relax): Rewrite.
	* config/tc-mn10300.c (md_estimate_size_before_relax): Rewrite.
	* config/tc-ns32k.c (md_estimate_size_before_relax): Add cases to
	handle word and dword branches.

2001-03-29  Hans-Peter Nilsson  <hp@axis.com>

	* config/tc-cris.h (tc_fix_adjustable): Allow only
	BFD_RELOC_CRIS_32_GOTREL of the PIC relocs.
	* config/tc-cris.c (cris_get_pic_suffix): Correct reloc type in
	example in comment to valid type.

2001-03-28  H.J. Lu  <hjl@gnu.org>

	* read.c (equals): Set to local for COFF only if it hasn't been
	defined before.

2001-03-28  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (DEFAULT_LEVEL): Define.
	(md_begin): Use it when setting default architecture.

2001-03-27  Nick Papadonis  <nick@coelacanth.com>

	* read.c (equals): (for COFF) default symbols to being local.

2001-03-27  Hans-Peter Nilsson  <hp@axis.com>

	* configure.in (cris-*-*): Change default emulation to criself.
	(cris-*-*aout*): New rule.
	* configure: Regenerate.

2001-03-26  Martin Schwidefsky  <schwidefsky@de.ibm.com>

	* config/tc-s390.c (tc_s390_fix_adjustable): Add test for
	BFD_RELOC_390_GOTENT.
	* config/tc-s390.h (TC_RELOC_RTSYM_LOC_FIXUP): Add test for
	BFD_RELOC_390_GOTENT.

2001-03-26  Nick Clifton  <nickc@redhat.com>

	* config/tc-s390.h (TC_FORCE_RELOCATION): Define.
	* config/tc-s390.c (s390_force_relocation): New function: Force
	relocations for VTINHERIT relocs.

2001-03-23  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* doc/as.texinfo: Put @c man begin to generate the as man page.
	When generating man, define all the variables. Re-organize some
	options to obtain better indentation of man page.
	* doc/Makefile.am (MANCONF, TEXI2POD, POD2MAN): New variable.
	(as.1): Build from as.texinfo.
	* doc/Makefile.in: Regenerate.Index: binutils/Makefile.am

2001-03-25  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c (i386_scale): Accept an absolute expression for
	scale factor, and return the end of the expression.
	(i386_operand): Modify for above.

2001-03-23  Nick Clifton  <nickc@redhat.com>

	* doc/as.texinfo: Document --listing-XXX command line switches.
	Explain why listings behave differently when -pipe is used.

2001-03-23  Richard Sandiford  <rsandifo@redhat.com>

	* write.c (fix_new_exp): Print an error if passed a register.

2001-03-23  Hans-Peter Nilsson  <hp@axis.com>

	* config/tc-cris.c: Tweak attribution.  Fix typos.  PIC support.
	(PIC_SUFFIX_CHAR): New macro.
	(cris_get_pic_suffix, cris_get_pic_reloc_size): New functions.
	(pic): New variable.
	(md_longopts): New option --pic.
	(OPTION_PIC): Define.
	(md_estimate_size_before_relax): Tweak longish comment.
	(md_create_long_jump): Make the long jumps generate ADD.D offset,PC.
	(md_assemble): Handle a PIC relocation on prefix and normal
	instruction operands.
	<output_instruction.insn_type == CRIS_INSN_BRANCH>: Handle
	"complex" operand expressions.  Call frag_more outside
	gen_cond_branch_32 parameter list.
	(cris_process_instruction): Handle PIC relocs on parsed
	operand expressions.  Validize PIC reloc sizes.
	(get_autoinc_prefix_or_indir_op): Handle PIC suffix.
	(gen_bdap): Handle "complex" operand expressions.
	(gen_cond_branch_32): Use as_warn_where, not as_warn.  Use
	ADD.D offset,PC as jump instruction if generating PIC.  Generate
	error instead of crashing on complex expressions.
	(cris_number_to_imm): Add segT parameter.  All callers changed.
	Use segT parameter, not now_seg, for segment of fixup.  Handle
	PCREL relocations but check that they are fully resolved.
	(md_parse_option): Handle OPTION_PIC.
	(tc_gen_reloc): Handle PIC relocs.
	(md_show_usage): Update for --pic.
	(md_apply_fix3): Renamed from md_apply_fix.
	(md_pcrel_from): Accept emitting PCREL relocs when ELF.
	(md_cris_force_relocation): Force relocation for PIC relocs.

	* config/tc-cris.h: Tweak attribution.
	(MD_APPLY_FIX3): Define.
	(IS_CRIS_PIC_RELOC): New macro.
	(TC_RELOC_RTSYM_LOC_FIXUP): Define.
	(tc_fix_adjustable): Don't adjust a globally visible symbol when
	generating ELF.
	(tc_frob_symbol): Avoid emitting undefined symbols.

2001-03-20  Alan Modra  <alan@linuxcare.com.au>

	* frags.h (struct frag): Add relax_marker.
	* write.c (is_dnrange): Delete.
	(relax_frag): Use correct types for `aim', `target', `address'.
	Delete `offset', `was_address'.  Test `relax_marker' instead of
	using fragile (and slow) address test.
	(relax_segment): Init and flip `relax_marker'.

2001-03-19  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c (md_assemble <REGISTER_WARNINGS>): Correct
	used register name.

2001-03-18  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/tc-m68hc11.c (md_pseudo_table): Recognize xrefb to comply
	with 'Motorola specification for assembly language input standard'.

2001-03-17  Richard Henderson  <rth@redhat.com>

	* dwarf2dbg.c (user_filenum, user_filenum_allocated): Remove.
	(dwarf2_directive_loc): Don't use them.
	(dwarf2_directive_file): Reject duplicate file definitions.
	(get_filenum): Zero allocated memory.
	(out_file_list): Complain about missing file definitions.

2001-03-17  Alan Modra  <alan@linuxcare.com.au>

	* read.c (do_org): Handle complex expressions.
	* cgen.c (gas_cgen_finish_insn): Likewise.

2001-03-15  David Mosberger  <davidm@hpl.hp.com>

	* config/tc-ia64.c (md): New member keep_pending_output.
	(ia64_flush_pending_output): Flush only if md.keep_pending_output
	is not set.
	(dot_xdata): Turn on md.keep_pending_output for the duration of
	this function.
	(dot_xfloat_cons): Ditto.
	(dot_xstringer): Ditto.
	(dot_xdata_ua): Ditto.
	(dot_xfloat_cons_ua): Ditto.

2001-03-15  Jim Wilson  <wilson@redhat.com>

	* config/tc-ia64.c (ia64_unrecognized_line, case '['): Add local
	label support.

2001-03-15  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-sh.c (parse_reg): Match capital MACH and MACL.

2001-03-15  DJ Delorie  <dj@redhat.com>

	* stabs.c (s_stab_generic): Don't corrupt the notes obstack by
	blindly freeing string if it isn't at the top of the obstack.

2001-03-13  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c (RELOC_ENUM): Define.  Use throughout file.
	(NUM_FLAG_CODE): Define.
	(lex_got): New function.
	(got_reloc): New global var.
	(x86_cons_fix_new): New function.
	(x86_cons): New function.
	(i386_immediate): Use lex_got here, replacing inline code.  Change
	"ignoring junk.." error message to "junk.."
	(i386_displacement): Likewise.
	* config/tc-i386.h (TC_PARSE_CONS_EXPRESSION): Define.
	(x86_cons): Declare.
	(TC_CONS_FIX_NEW): Define.
	(x86_cons_fix_new): Declare.

2001-03-12  Nick Clifton  <nickc@redhat.com>

	* config/tc-arm.c (md_begin): Always set machine type based on
	cpu_variant.

2001-03-07  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c (struct _i386_insn): Rename disp_reloc to reloc.
	(md_assemble) <smallest displacement>: Use correct field of i.op[]
	union.
	<JumpInterSegment output>: Use correct i.disp_reloc[].
	<immediate output>: Likewise.

2001-03-06  Nick Clifton  <nickc@redhat.com>

	* config/tc-arm.c (md_apply_fix3): Clear bit zero of offset in
	BLX(1) instruction.

2001-03-06  Igor Shevlyakov  <igor@windriver.com>

	* config/tc-m68k.c : Add 5407 to archs[] table.
	(HAVE_LONG_BRANCH): Add mcf5407.
	(select_control_regs): Recognize 5407.

2001-03-02  Dave Brolley  <brolley@redhat.com>

	* config/tc-m32r.c (expand_debug_syms): Call frag_align_code rather
	than m32r_do_align.

2001-03-02  Richard Sandiford  <rsandifo@redhat.com>

	* config/atof-ieee.c (TC_LARGEST_EXPONENT_IS_NORMAL): New macro.
	(gen_to_words): Print warnings if NaNs are found and the target CPU
	does not support them.  Allow largest exponent to be used in normal
	numbers if TC_LARGEST_EXPONENT_IS_NORMAL evaluates to true.

2001-02-28  Andreas Jaeger  <aj@suse.de>, Bo Thorsen  <bo@suse.de>

	* config/tc-i386.c (tc_gen_reloc): Remove ugly hack which is not needed
	anymore since we use bfd_elf_generic_reloc now.
	(md_apply_fix3): Only apply hack for partial_inplace if not using RELA.

2001-02-27  Alan Modra  <alan@linuxcare.com.au>

	* configure.in (BFD_VERSION): New.
	(AM_INIT_AUTOMAKE): Use $BFD_VERSION.
	* configure: Regenerate.
	* Makefile.am: Run "make dep-am"
	* Makefile.in: Regenerate.
	* doc/Makefile.in: Regenerate.

2001-02-26  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/obj-coff.c [BFD_ASSEMBLER] (obj_coff_section): Set
	SEC_NEVER_LOAD when the 'n' flag is used.
	Add SEC_NEVER_LOAD to matchflags.

2001-02-24  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* symbols.c (decode_local_label_name): Initialize message_format
	only when an error is reported (perf pb due to I18N).

2001-02-23  H.J. Lu  <hjl@gnu.org>

	* dwarf2dbg.c (dwarf2_directive_file): Call s_app_file (0) if
	BFD_ASSEMBLER is not defined.

2001-02-23  Richard Sandiford  <rsandifo@redhat.com>

	* config/tc-mn10300.c (md_apply_fix3): Don't mark a fixup as
	done if it's against a symbol.

2001-02-22  Timothy Wall  <twall@cygnus.com>

	* config/tc-ia64.c (ia64_target_format): Return ia64-aix-specific
	target formats if applicable.
	* config/te-ia64aix.h: New.  Configuration for AIX5 on IA-64.
	* Makefile.am (TARG_ENV_HFILES): Added config/te-ia64aix.h.
	* Makefile.in: Regenerated.
	* configure.in: Added configuration for ia64-*-aix*.
	* configure: Regenerated.

2001-02-21  David Mosberger  <davidm@hpl.hp.com>

	* config/tc-ia64.c (enum operand_match_result): New type.
	(operand_match): Change return type to operand_match_result.
	Fix all returns appropriately, adding support for returning the
	out-of-range result.
	(parse_operands): New locals result, error_pos, out_of_range_pos,
	curr_out_of_range_pos.  Rewrite operand matching loop to give better
	error messages.

2001-02-21  David Mosberger  <davidm@hpl.hp.com>

	* config/tc-ia64.c (struct unwind): Add member "prologue_count".
	(dot_proc): Clear unwind.prologue_count to zero.
	(dot_prologue): Increment unwind.prologue_count.
	(dot_restore): If second operand is omitted, use
	unwind.prologue_count -1 for "ecount" (# of additional regions to
	pop).  Decrement unwind.prologue_count by number of regions
	popped.

2001-02-21  Nick Clifton  <nickc@redhat.com>

	* doc/as.texinfo (Section): Note that some flags to the COFF
	version of .section remove attributes rather than setting them.

2001-02-20  Kazu Hirata  <kazu@hxi.com>

	* config/tc-pdp11.c: Fix formatting.
	* config/tc-pdp11.h: Likewise.

2001-02-20  Bo Thorsen  <bo@suse.de>

	* config/tc-i386.c (tc_i386_fix_adjustable): Fix GOTPCREL GOT
	entry.

2001-02-18  David O'Brien  <obrien@FreeBSD.org>

	* configure.in (cpu_type, arch): Add a generic FreeBSD specification as
	all FreeBSD platforms should look the same at this level.
	* configure: Rebuilt.
	* config/tc-i386.c: Add support for old FreeBSD a.out hosts.

2001-02-18  lars brinkhoff  <lars@nocrew.org>

	* Makefile.am: Add PDP-11 target.
	* configure.in: Likewise.
	* config/tc-pdp11.c: New file.
	* config/tc-pdp11.h: New file.
	* doc/Makefile.am: Add PDP-11 documentation.
	* doc/all.texi: Likewise.
	* doc/as.texinfo: Likewise.
	* doc/c-pdp11.texi: New file.

2001-02-16  matthew green  <mrg@redhat.com>

	* cgen.c (gas_cgen_md_apply_fix3): Support BFD_RELOC_64.

2001-02-13  Jim Wilson  <wilson@redhat.com>

	* config/tc-ia64.c (operand_match, case TAG13): Make a BFD_RELOC_UNUSED
	reloc instead of a 0 reloc.
	(md_apply_fix3): Check for BFD_RELOC_UNUSED instead of 0, and mark it
	as done.
	* config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Likewise.

2001-02-13  Ian Lance Taylor  <ian@zembu.com>

	* write.c (is_dnrange): Stop as soon as the address becomes
	larger.
	(relax_frag): Add segment parameter.  Only call symbol_get_frag
	once.  Only call is_dnrange if the symbol is in the same segment,
	and the symbol address is larger.
	(relax_segment): Pass segment to md_relax_frag and relax_frag.
	* write.h (relax_frag): Update declaration.
	* config/tc-fr30.c (fr30_relax_frag): Add segment parameter.  Pass
	it to relax_frag.
	* config/tc-m32r.c (m32r_relax_frag): Likewise.
	* config/tc-m32r.h (md_relax_frag): Add segment parameter.
	(m32r_relax_frag): Update declaration.
	* config/tc-mips.h (md_relax_frag): Add segment parameter.
	* config/tc-tic54x.h (md_relax_frag): Likewise.
	* doc/internals.texi (CPU backend): Update documentation for
	md_relax_frag.

2001-02-13  Alan Modra  <alan@linuxcare.com.au>

	* doc/c-i386.texi (i386-Arch): Add "jumps"/"nojumps" blurb.
	Mention effect of < 386 architectures on jump promotion.
	(i386-Jumps): xref above.  Don't assume long disp is 32 bits.

	* config/tc-i386.c (no_cond_jump_promotion): New.
	(set_cpu_arch): Parse "jumps" arch modifier.
	(insn_size): Modify usage comment.
	(ENCODE_RELAX_STATE): Reformat and protect macro arg.
	(SIZE_FROM_RELAX_STATE): Rename to DISP_SIZE_FROM_RELAX_STATE.
	(TYPE_FROM_RELAX_STATE): New define.
	(UNCOND_JUMP, COND_JUMP): Renumber.
	(md_relax_table): Reorder to suit.
	(COND_JUMP86): New define.
	(md_relax_table): Handle COND_JUMP86 cases. Add a few comments.
	(md_assemble): Create frag var for jumps of max size, encode relax
	state for COND_JUMP86.
	(md_estimate_size_before_relax): Handle COND_JUMP86 cases, and
	leave conditional jumps small if no_cond_jump_promotion.
	(md_convert_frag): Likewise.

	* expr.c (operator): Don't bump input_line_pointer for two char
	operators.  Instead return operator size via new param num_chars.
	(expr): Use above to parse multi-char operators correctly.

2001-02-12  Jan Hubicka  <jh@suse.cz>

	* config/tc-i386.c (i386_displacement): Fix handling of
	BFD_RELOC_X86_64_GOTPCREL.
	(i386_validate_fix): Likewise.

2001-02-12  Philip Blundell  <pb@futuretv.com>

	* config/tc-arm.c (do_ldst): Improve warnings for unpredictable
	ldrt/strt instructions.

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

	* config/tc-mips.c (macro): For M_LA_AB emit a
	BFD_RELOC_MIPS_CALL16 relocation or a
	BFD_RELOC_MIPS_CALL_HI16/BFD_RELOC_MIPS_CALL_LO16 pair instead of
	BFD_RELOC_MIPS_GOT16 and
	BFD_RELOC_MIPS_GOT_HI16/BFD_RELOC_MIPS_GOT_LO16, respectively for
	loading the jump register when generating SVR4_PIC code.

2001-02-10  Chris Demetriou  <cgd@broadcom.com>

	* configure.in: Make 'mipself' and 'mipsecoff' emulations
	map to MIPS-specific files, as they used to do before the
	change on 2000-05-21.
	* configure: Regerate.

2001-02-10  Chris Demetriou  <cgd@broadcom.com>

	* config/tc-mips.c (md_parse_option): Don't try to compile
	ELF-only option code if not ELF.

2001-02-08  David Mosberger  <davidm@hpl.hp.com>

	* config/tc-ia64.h (md_elf_section_type): New macro.
	(ELF_TC_SPECIAL_SECTIONS): Drop .IA_64.unwind and .IA_64.unwind_info
	(they're now handled via ia64_elf_section_type.

	* config/tc-ia64.c (unwind): New members saved_text_seg,
	saved_text_subseg, and force_unwind_entry.
	(optimize_unw_records): New function to optimize away unnecessary
	unwind directives.
	(ia64_elf_section_type): New function.
	(output_unw_records): Generate unwind info only if the size is
	non-zero or if it's forced for some other reason (e.g.,
	handlerdata or a personality routine).
	(generate_unwind_image): Don't switch back to previous
	section---stay inside the unwind info section instead so that
	handlerdata that may follow goes into the right place.
	(dot_handlerdata): Force generation of unwind entry and save the
	current active text segment before generating unwind image.
	(dot_unwentry): Force generation of unwind entry.
	(dot_personality): Ditto.
	(dot_endp): Generate unwind table entry only if there is
	some unwind info or the unwind entry was forced.

	* config/tc-ia64.c (make_unw_section_name): New macro to form
	unwind section name.
	(generate_unwind_image): Add "text_name" argument.  Use it to
	form unwind section name.
	(dot_handlerdata): Determine current segment (section) name and
	pass it to generate_unwind_image().
	(dot_endp): Determine current segment (section) name and use
	it to determine the appropriate unwind section name.
	(ia64_md_do_align): Add missing ATTRIBUTE_UNUSED declarations to
	n, fill, and max arguments.

2001-02-09  Schwidefsky  <schwidefsky@de.ibm.com>

	* Makefile.am: Add linux target for S/390.
	* configure.in: Likewise.
	* config/tc-s390.c: New file.
	* config/tc-s390.h: New file.

2001-02-09  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-sh.c (md_pseudo_table): Add uaquad.  Use s_uacons for
	2byte, 4byte and 8byte.

2001-02-08  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (pa_build_unwind_subspace): Don't call
	md_number_to_chars with size > sizeof (valueT).

2001-02-06  H.J. Lu  <hjl@gnu.org>

	* config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): Do fixup if
	there is no relocation.

2001-02-06  H.J. Lu  <hjl@gnu.org>

	* config/tc-ia64.h (TC_RELOC_RTSYM_LOC_FIXUP): New. Defined.

	* config/tc-ia64.c (md_parse_option): Only accept the valid
	ia64 options on "-axxx".

2001-02-05  Jim Wilson  <wilson@redhat.com>

	* config/tc-ia64.c (errata_nop_necessary_p): Return 0 instead of
	aborting for invalid operands.

2001-02-06  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (fix_new_hppa): Pass in unwind directly rather
	than via pointer.  Update all callers.
	(UNWIND_LOW32): Define.
	(UNWIND_HIGH32): Define.
	(pa_build_unwind_subspace): Use the above macros instead of dumping
	bitfields directly.  Call frag_more once rather than multiple times.
	(md_assemble): Use UNWIND_LOW32.
	(pa_entry): Likewise
	(pa_procend): Likewise.
	(process_exit): Use UNWIND_HIGH32.

2001-02-04  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/tc-m68hc11.h (LISTING_HEADER): Use m68hc11_listing_header
	function to select the header according to the cpu.
	(md_after_pass_hook, md_do_align): Remove.
	(md_cleanup, m68hc11_cleanup): Remove.
	(md_pcrel_from_section): Declare.
	* config/tc-m68hc11.c (build_dbranch_insn): Remove insn_size.
	(build_jump_insn, build_insn): Likewise.
	(m68hc11_listing_header): New function.
	(m68hc11_cleanup): Remove.

2001-02-02  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/tc-m68hc11.c (relaxable_symbol): Relax externally visible
	symbols because there is no support for shared libraries and these
	symbols can't be overridden (unless they are weak).

2001-02-01  Momchil Velikov  <velco@fadata.bg>

	* dwarf2dbg.c (out_debug_abbrev): Terminate the abbreviations
	for the compilation unit with a zero byte.

2001-01-30  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (pa_ip): Support 12 bit branches to absolute
	destinations.  Correct range check for 17 and 22 bit branches.

2001-01-25  Nick Clifton  <nickc@redhat.com>

	* config/tc-m68k.c (tc_gen_reloc): Do not abort if tcbit is
	still set.  Issue an error message instead.
	(md_estimate_size_before_relax): Delete unused variable
	'buffer_address'.  Fixup parentheses around if statement.

2001-01-23  Kazu Hirata  <kazu@hxi.com>

	* as.c: Fix formatting.
	* ehopt.c: Likewise.
	* messages.c: Likewise.
	* stabs.c: Likewise.
	* symbols.c: Likewise.

2001-01-23  Ben Elliston  <bje@redhat.com>

	* config/tc-m32r.c (m32r_handle_align): Declare type of fragp.

2001-01-22  Kazu Hirata  <kazu@hxi.com>

	* config/tc-alpha.c: Fix formatting.

2001-01-19  Kazu Hirata  <kazu@hxi.com>

	* config/tc-alpha.c: Fix formatting.

2001-01-18  Kazu Hirata  <kazu@hxi.com>

	* config/tc-alpha.c: Fix formatting.

2001-01-18  Nick Clifton  <nickc@redhat.com>

	* config/tc-arm.c (ldm_flags): Remove redundant bit from "fa" and
	"da" flags.
	(stm_flags): Remove redundant bit from "ed" and	"da" flags.

2001-01-18  Alexandre Oliva  <aoliva@redhat.com>

	* configure.in (cpu_type, arch): Match i386 too.
	* configure: Rebuilt.

2001-01-16  Kazu Hirata  <kazu@hxi.com>

	* config/tc-i386.c: Fix formatting.

2001-01-16  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (tc_gen_reloc): Use SEGREL32 instead of DIR32
	relocs for .PARISC.unwind section.

	* config/tc-hppa.c (pa_build_unwind_subspace): Build unwind
	depending on section flags, not just for .text.

2001-01-15  Jim Wilson  <wilson@redhat.com>

	* config/tc-ia64.c (ia64_flush_insns): Handle unwind directives
	not immediately followed by an instruction.

2001-01-15  Kazu Hirata  <kazu@hxi.com>

	* config/tc-m68hc11.c: Fix formatting.

2001-01-15  Nick Clifton  <nickc@redhat.com>

	* symbols.c (colon): Change 'already defined symbol' from a
	fatal error to an ordinary error.  There is no reason why this
	error should be fatal.

	* message.c (as_fatal): Delete output file, if one has been
	created.

2001-01-14  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.h (TARGET_FORMAT): Add hppa-linux variants.

2001-01-14  Kazu Hirata  <kazu@hxi.com>

	* config/tc-alpha.c: Fix formatting.
	* config/tc-arc.c: Likewise.
	* config/tc-arc.h: Likewise.
	* config/tc-d10v.c: Likewise.
	* config/tc-i370.c: Likewise.
	* config/tc-i386.c: Likewise.
	* config/tc-i960.c: Likewise.
	* config/tc-m68k.c: Likewise.
	* config/tc-ppc.c: Likewise.
	* config/tc-sparc.c: Likewise.
	* config/tc-tahoe.c: Likewise.
	* config/tc-vax.c: Likewise.

	* config/tc-arc.c: Fix formatting.

	* config/tc-arc.c: Fix formatting.

2001-01-14  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (pa_build_unwind_subspace): Use SEGREL32 for
	both 32 and 64 bit ELF.

	* config/tc-hppa.c (pa_ip): Store `a' flag in bit zero of operand
	and don't bother storing `m' for "ce" completer.  Tidy handling of
	'J' and 'K' operands to suit.  Handle '<' and '>' operands.

2001-01-14  Jan Hubicka  <jh@suse.cz>

	* config/tc-i386.h (TARGET_MACH): New macro.
	(i386_mach): Declare.
	* config/tc-i386.c (i386_mach): New function.

2001-01-13  Philip Blundell  <philb@gnu.org>

	* doc/as.texinfo: Fix spelling and cross-references.

	* doc/c-arm.texi: Fix typos.  Say that `;' is a line separator
	character for all systems, not just GNU/Linux.  Make it explicit
	that `-k' doesn't affect code generation, just ELF flags.

2001-01-13  Jan Hubicka <jh@suse.cz>

	* config/tc-i386.c (md_assemble): Check cpu_flags even for nullary
	instructions.

2001-01-12  Frank Ch. Eigler  <fche@redhat.com>

	* cgen.c (gas_cgen_finish_insn): Call dwarf2_emit_insn.

2001-01-12  Nick Clifton  <nickc@redhat.com>

	* as.c (print_args): Update copyright date to 2001.

2001-01-12  Peter Targett  <peter.targett@arccores.com>

	* doc/c-arc.texi: New file.
	Some sections to be expanded.

2001-01-12  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c (md_longopts): Recognize "--64" only for ELF.
	(md_parse_option): Always accept "--32".

2001-01-11  Peter Targett  <peter.targett@arccores.com>

	* as.h (TC_ARC): Ensure struc-symbol.h included.
	* as.c (dwarf2dbg.h): Include to remove implicit declaration
	warnings.
	* struc-symbol.h (SYMBOLS_NEED_BACKPOINTERS): Define.
	(TARGET_SYMBOL_FIELDS) added.

	* doc/Makefile.am (CPU_DOCS): Added c-arc.texi.
	* doc/c-arc.texi: New file.
	Some sections to be expanded.
	* doc/as.texinfo: Update command-line options.
	Removed outdated text for ARC dependant features, instead include
	text from above file.

	* config/obj-elf.h (ELF_TARGET_SYMBOL_FIELDS): Define local flag.
	(TARGET_SYMBOL_FIELDS): Alias to previous definition.
	(targ-cpu.h) header.
	* config/tc-arc.h:
	* config/tc-arc.c: New updated configuration for
	ARC, including selection of core variants, and extensibility of
	instructions, registers etc. through directives.

	* config/tc-arc.c (arc_extinst): Minor corrections for
	error messages.
	(arc_common) Likewise. Make alignment argument optional for local
	symbols also, with default of zero.

2001-01-11  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/tc-m68hc11.c (md_estimate_size_before_relax): Fix
	STATE_INDEXED_OFFSET when the symbol is undefined (16-bit offset).
	(build_indexed_byte): Don't relax indexed byte, use 16-bit offset
	and fix_new_exp() instead.
	(md_convert_frag): For indexed post byte use the symbol value
	rather than the displacement.
	(md_relax_table): Fix indexed offset relax.

2001-01-11  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/tc-m68hc11.c (md_estimate_size_before_relax):Don't
	relax weak symbols.
	(relaxable_symbol): New function.

2001-01-11  Andreas Jaeger  <aj@suse.de>

	* config/tc-i386.h (TC_RELOC_GLOBAL_OFFSET_TABLE): Removed, it's
	not used anywhere.

2001-01-10  Nick Clifton  <nickc@redhat.com>

	* config/tc-arm.c (arm_fix_adjustable): Define for OBJ_COFF.
	* config/tc-arm.h (obj_fix_adjustable): Define for OBJ_COFF

2001-01-10  Nick Clifton  <nickc@redhat.com>

	* symbols.c (DOLLAR_LABEL_CHAR): New constant - the magic
	character used to dollar local symbols.
	(LOCAL_LABEL_CHAR): New constant - the magic character used to
	local label symbols.
	(dollar_label_name): Use DOLLAR_LABEL_CHAR.
	(fb_label_name): Prefix local labels with LOCAL_LABEL_PREFIX,
	if defined.
	Use LOCAL_LABEL_CHAR.
	(decode_local_label_name): Skip LOCAL_LABEL_PREFIX.
	Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR.
	(S_IS_LOCAL): Use DOLLAR_LABEL_CHAR and LOCAL_LABEL_CHAR.

2001-01-08  Bo Thorsen  <bo@suse.de>

	* config/tc-i386.c (i386_immediate, i386_displacement):
	GOTPCREL check fix.

2001-01-07  Ian Lance Taylor  <ian@zembu.com>

	* doc/c-i386.texi (i386-Arch): Remove spaces incorrectly inserted
	in last change.

2001-01-07  Philip Blundell  <philb@gnu.org>

	* doc/as.texinfo (Bug Reporting): Update email address for
	reports.
	* README: Likewise.

2001-01-06  Jan Hubicka  <jh@suse.cz>

	* configure.in: Define DEFAULT_ARCH for i386.
	* config/tc-i386.c (md_assemble): Return after the error message;
	move testing for 64bit operands to proper place.

2001-01-06  Jan Hubicka <jh@suse.cz>, Andreas Jaeger  <aj@suse.de>

	* doc/as.texinfo: Document '#' as comment character for i386 and
	x86_64. Add AMD x86-64 into menu of machine dependent information.

	* doc/c-i386.texi: Document x86_64 extensions.

2001-01-05  Jan Hubicka  <jh@suse.cz>

	* config/tc-i386.c (md_assemble): Handle third byte of the opcode as prefix.

2001-01-04  Jan Hubicka  <jh@suse.cz>

	* config/tc-i386.c (cpu_arch): Add Pentium4 and modify sledgehammer entry.
	* NEWS: Add note about Pentium4 support.

2001-01-04  Jan Hubicka  <jh@suse.cz>

	* config/tc-i387.c (pi, pte, pt): Update.
	(type_names): Add new types.

2001-01-03  Jan Hubicka  <jh@suse.cz>

	* config/tc-i386.h (CpuK6, CpuAthlon, CpuSledgehammer, CpuMMX, Cpu3dnow,
	CpuUnknown): Renumber
	(CpuP4, CpuSSE2): New.
	(CpuUnknownFlags): Add CpuP4 and CpuSSE2

2001-01-03  Philip Blundell  <pb@futuretv.com>

	* config/tc-alpha.c (alpha_force_relocation): Handle vtable
	relocs.
	(alpha_fix_adjustable): Likewise.
	(md_apply_fix): Likewise.

2000-12-31  H.J. Lu  <hjl@gnu.org>

	* listing.c (listing_message): Allocate string only if it is
	used.

	* configure: Rebuild.

2000-12-31  Hans-Peter Nilsson  <hp@bitrange.com>

	* doc/internals.texi (Relaxing with a table) <after relaxation>:
	Point out caveats with generating fixups for the opcode in a frag.

2000-12-30  Jan Hubicka  <jh@suse.cz>

	* configure.in: Add support for x86_64 and x86_64-*-linux-gnu*
	* NEWS: Add x86_64.

2000-12-29  H.J. Lu  <hjl@gnu.org>

	* listing.c (calc_hex): Print the variable part only if the
	fragment type is rs_fill.

2000-12-29  Hans-Peter Nilsson  <hp@bitrange.com>

	* doc/internals.texi (tc_conditional_pseudoop,
	TC_LINKRELAX_FIXUP): Fix typos.

2000-12-28  Richard Henderson  <rth@redhat.com>

	* write.c (subsegs_finish): Fix thinko last change -- don't
	"optimize" the alignment == 0 case.

2000-12-28  Richard Henderson  <rth@redhat.com>

	* as.h (rs_align_test): New.
	* frags.c (NOP_OPCODE): Move default from read.c.
	(MAX_MEM_FOR_RS_ALIGN_CODE): New default.
	(frag_align_code): New.
	* frags.h (frag_align_code): Declare.
	* read.c (NOP_OPCODE): Remove.
	(do_align): Use frag_align_code.
	* write.c (NOP_OPCODE): Remove.
	(get_recorded_alignment): New.
	(cvt_frag_to_fill): Handle rs_align_test.
	(relax_segment): Likewise.
	(subsegs_finish): Align last subseg in section to the
	section alignment.  Use frag_align_code.
	* write.h (get_recorded_alignment): Declare.
	* config/obj-coff.c (size_section): Handle rs_align_test.
	(fill_section, fixup_mdeps): Likewise.
	(write_object_file): Use frag_align_code.

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

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

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

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

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

	* config/tc-sparc.c (sparc_cons_align): Use rs_align_test.
	(sparc_handle_align): Likewise.  Handle rs_align_code.
	* config/tc-sparc.h (md_do_align): Remove.
	(MAX_MEM_FOR_RS_ALIGN_CODE): New.

2000-12-22  DJ Delorie  <dj@redhat.com>

	* config/tc-d10v.c (md_assemble): set prev_seg and prev_subseg
	when we assemble the first half of a pair.

2000-12-22  H.J. Lu  <hjl@gnu.org>

	* config/tc-i386.c (reloc): Update the macro for non-bfd
	assembler.
	(BFD_RELOC_X86_64_GOTPCREL): Set to 0 for non-bfd assembler.

2000-12-22  H.J. Lu  <hjl@gnu.org>

	* dwarf2dbg.c (dwarf2_finish): Remove #if BFD_ASSEMBLER.

2000-12-20  Jan Hubicka  <jh@suse.cz>

	* config/tc-i386.h (i386_target_format): Define even for ELFs.
	(QWORD_MNEM_SUFFIX): New macro.
	(CpuK6,CpuAthlon,CpuSledgehammer, Cpu64, CpuNo64, CpuUnknownFlags):
	New macros
	(CpuMMX,CpuSSE,Cpu3dnow, CpuUnknown): Renumber.
	(IgnoreSize, DefaultSize, No_?Suf, FWait, IsString, regKludge, IsPrefix,
	ImmExt): Renumber.
	(Size64, No_qSuf, NoRex64, Rex64): New macros.
	(Reg64, Imm32S, Imm64, Disp32S, Disp64): New macros.
	(Imm8, Imm8S, Imm16, Imm32, Imm1, BaseIndex, Disp8, Disp16, Disp32,
	InOutPortReg,ShiftCount, Control, Debug, Test, FloatReg, FloatAcc,
	SReg2, SReg3, Acc, JumpAbsolute, RegMMX, RegXMM, EsSeg, InvMem):
	Renumber.
	(Reg, WordReg): Add Reg64.
	(Imm): Add Imm32S and Imm64.
	(EncImm): New.
	(Disp): Add Disp64 and Disp32S.
	(AnyMem): Add Disp32S.
	(RegRex, RegRex64): New macros.
	(rex_byte): New type.
	* config/tc-i386.c (set_16bit_code_flag): Kill.
	(fits_in_unsigned_long, fits_in_signed_long): New functions.
	(reloc): New parameter "signed"; support x86_64.
	(set_code_flag): New.
	(DEFAULT_ARCH): New macro; default to "i386".
	(default_arch): New static variable.
	(struct _i386_insn): New fields Operand_PCrel; rex.
	(flag_16bit_code): Kill; All tests replaced to "flag_code == CODE_64BIT"
	(flag_code): New enum and static variable.
	(use_rela_relocations): New static variable.
	(flag_code_names): New static variable.
	(cpu_arch_flags): Default to CpuUnknownFlags|CpuNo64.
	(cpu_arch): Add "sledgehammer"; Add CPUAthlon to Athlon and CpuK6 to
	K6 and Athlon.
	(i386_align_code): Return plain "nop" for x86_64.
	(mode_from_disp_size): Support Disp32S.
	(smallest_imm_type): Support Imm32S and Imm64.
	(offset_in_range): Support size of 8.
	(set_cpu_arch): Do not clobber to Cpu64/CpuNo64.
	(md_pseudo_table): Add "code64"; use set_code_flat.
	(md_begin): Emit sane error message on hash failure.
	(tc_i386_fix_adjustable): Support x86_64 relocations.
	(md_assemble): Support QWORD_MNEM_SUFFIX, REX registers,
	instructions supported on particular arch just partially,
	output of 64bit immediates, handling of Imm32S and Disp32S type.
	(i386_immedaite): Support x86_64 relocations; support 64bit constants.
	(i386_displacement): Likewise.
	(i386_index_check): Cleanup; support 64bit addresses.
	(md_apply_fix3): Support x86_64 relocation and rela.
	(md_longopts): Add "32" and "64".
	(md_parse_option): Add OPTION_32 and OPTION_64.
	(i386_target_format): Call even for ELFs; choose between
	elf64-x86-64 and elf32-i386.
	(i386_validate_fix): Refuse GOTOFF in 64bit mode.
	(tc_gen_reloc): Support rela relocations and x86_64.
	(intel_e09_1): Support QWORD.

2000-12-15  Diego Novillo  <dnovillo@redhat.com>

	* config/tc-i386.c (intel_e09_1): Only flag as a memory operand if
	it's not an offset expression.
	(intel_e10_1): Ditto. Also, if the operand is an offset expression,
	keep the braces '[' and ']' in the output string.
	(intel_e11): Ditto. Also remove comparison intel_parser.op_modifier
	!= FLAT. There is no such op_modifier.

2000-12-14  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* dwarf2dbg.c: If we don't have <limits.h>, try including <sys/param.h>
	if we have it.

2000-12-13  Kazu Hirata  <kazu@hxi.com>

	* as.h: Fix formatting.
	* cgen.h: Likewise.
	* dwarf2dbg.c: Likewise.
	* input-scrub.c: Likewise.
	* read.h: Likewise.

2000-12-13  Mark Elbrecht  <snowball3@bigfoot.com>

	* configure.in (i386-*-msdosdjgpp): Set bfd_gas to yes.
	configure: Regenerate.

2000-12-13  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* dwarf2dbg.c: #include <limits.h> only if it exists.

2000-12-13  Rodney Brown  <RodneyBrown@mynd.com>

	* config/tc-hppa.c (pa_ip): Correct CHECK_FIELD typo.
	(md_apply_fix): Here too.

2000-12-12  Jim Wilson  <wilson@redhat.com>

	* config/tc-ia64.h (ia64_init): Add prototype.

2000-12-12  H.J. Lu  <hjl@gnu.org>

	* dwarf2dbg.c: Enabled only if BFD_ASSEMBLER is defined.

	* read.h (outputting_stabs_line_debug): Change it to int.
	* stabs.c (outputting_stabs_line_debug): Likewise.

2000-12-12  Geoffrey Keating  <geoffk@redhat.com>

	* config/obj-bout.c (obj_crawl_symbol_chain): Don't take
	the address of a function result.

2000-12-12  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* config/tc-ppc.c (md_pseudo_table): Add .file and .loc.
	(md_assemble): Call dwarf2_emit_insn.
	(shlib): Fix typo SHILB -> SHLIB.
	(md_parse_option): Likewise.
	(ppc_elf_validate_fix): Likewise:
	* config/tc-ppc.h (DWARF2_LINE_MIN_INSN_LENGTH): New.

2000-12-12  Nick Clifton  <nickc@redhat.com>

	* cgen.h: Fix formatting.
	* input-scrub.c: Fix formatting.
	* macro.c: Fix formatting.
	* config/tc-mips.c: Fix formatting.
	* doc/c-mips.texi: Fix formatting.

2000-12-11  Jan hubicka  <jh@suse.cz>

	* config/tc-i386.c (md_assemble): Refuse 's' and 'l' suffixes in the intel
	mode; convert 'd' suffix to 's' or 'l'; remove all DWORD_MNEM_SUFFIX
	references.
	(intel_e09_1): Convert QWORD to 'l' suffix for FP operations; refuse
	otherwise.
	* config/tc-i386.h (DWORD_MNEM_SUFFIX): Kill.
	(No_dSuf): Kill.

	* i386.h (*_Suf): Remove No_dSuf.
	(d_suf, wld_Suf,sld_Suf, sldx_Suf, bwld_Suf, d_FP, sld_FP, sldx_FP)
	Remove.
	(i386_optab): Remove 'd' in the suffixes.

2000-12-06  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/tc-i386.c (T_SHORT): Undefine before defining.

2000-12-05  Kazu Hirata  <kazu@hxi.com>

	* config/tc-mips.c: Fix formatting.

2000-12-04  Matthew Hiller  <hiller@redhat.com>

	* config/tc-d10v.c (flag_allow_gstabs_packing): New variable.
	(md_longopts): New options --gstabs-packing, --no-gstabs-packing.
	(md_show_usage): Ditto.
	(md_parse_option): Ditto.
	(d10v_cleanup): Writes pending instruction only if
	! outputting_stabs_line_debug || ! flag_allow_gstabs_packing.
	Fix compile time warning messages.

	* doc/c-d10v.texi: Documents new options.

2000-12-04  Matthew Hiller  <hiller@redhat.com>

	* stabs.c (outputting_stabs_line_debug): New variable.
	(stabs_generate_asm_lineno): Set outputting_stabs_line_debug at
	function entry and unset at function exit.

	* read.h (outputting_stabs_line_debug): New extern declaration.

	* as.c: Include dwarf2dbg.h for definition of dwarf2_finish.

	* dwarf2dbg.c: Fix compile time warning messages.

2000-12-03  Kazu Hirata  <kazu@hxi.com>

	* config/tc-a29k.c: Fix formatting.
	* config/tc-alpha.c: Likewise.
	* config/tc-arm.c: Likewise.
	* config/tc-cris.c: Likewise.
	* config/tc-hppa.c: Likewise.
	* config/tc-i370.c: Likewise.
	* config/tc-i386.c: Likewise.
	* config/tc-i860.c: Likewise.
	* config/tc-i960.c: Likewise.
	* config/tc-ia64.c: Likewise.
	* config/tc-m68hc11.c: Likewise.
	* config/tc-m68k.c: Likewise.
	* config/tc-m88k.c: Likewise.
	* config/tc-pj.c: Likewise.
	* config/tc-ppc.c: Likewise.
	* config/tc-sh.c: Likewise.
	* config/tc-sparc.c: Likewise.
	* config/tc-tahoe.c: Likewise.
	* config/tc-vax.c: Likewise.

2000-12-01  Chris Demetriou  <cgd@sibyte.com>

	* config/tc-mips.c (mips_ip): When calculating offsets,
	don't accept as constant the difference between the
	addresses of symbols in two different sections.

	* config/tc-mips.c (macro_build): Add new 'U' and 'J' operand
	specifiers.
	(validate_mips_insn): Likewise.  Also, update 'B' operand
	specifier to use OP_*_CODE20 constants and delete 'm' operand
	specifier.
	(mips_ip): Remove 'm' operand specifier, add 'U' and 'J'
	operand specifiers.  Change warning generated by 'B' operand
	specifier to reflect its new multi-purpose usage.

	* config/tc-mips.c (mips_set_options): Use ISA_UNKNOWN rather than
	-1, and update comment.
	(file_mips_isa): Likewise.
	(mips_cpu): Use CPU_UNKNOWN rather than -1, and update comment.
	(ISA_HAS_COPROC_DELAYS, ISA_HAS_64BIT_REGS, gpr_interlocks): Use
	ISA_* constants rather than hard-coded numbers.
	(mips_cpu_info): New structure.
	(mips_cpu_info_table): New table describing CPU and ISA names
	and numbers.
	(mips_cpu_info_from_name, mips_cpu_info_from_isa,
	mips_cpu_info_from_cpu): New functions.
	(mips_isa_to_str): New function to get string for ISA name.
	(mips_cpu_to_str): Convert to use mips_cpu_info_from_cpu, and
	return const char *.
	(md_begin): Redo CPU and ISA selection logic, using
	mips_cpu_info_from_*.  Convert to use ISA_* constants rather
	than hard-coded numbers.
	(append_insn, mips_emit_delays, macro, macro2): Convert to use
	ISA_* constants rather than hard-coded numbers.
	(mips_ip): Convert to use mips_isa_to_str to get ISA name.
	(md_longopts): Delete OPTION_NO_MIPS32.
	(md_parse_option): Convert to use ISA_* constants rather than
	hard-coded numbers.  Make OPTIONS_MIPS32 case treat MIPS32
	as an ISA.  Delete OPTION_NO_MIPS32 case.  Convert OPTION_MCPU
	to use strcasecmp to recognize "default" and to use
	mips_cpu_info_from_name to get CPU numbers from argument.
	(md_show_usage): Move -mips32 so it's with the rest of the ISA
	flags.  Change 4Kc, 4Kp and 4Km CPU entries to just be
	mips32-4k.
	(s_mipsset): Accept ISA value 32.
	* doc/as.texinfo: Clean up MIPS options summary slightly,
	remove -no-mips32.  Add note about -mips4 and -mips32
	specifying those ISA levels.  Delete -mips32 and -no-mips32
	cpu flag descriptions.
	* doc/c-mips.texi: Add -mips32 to list of ISA switches.  Clean
	up the supported CPU switch list, and replace 4Kc, 4Km, and
	4Kp entries with a single mips32-4k entry.  Note that you can
	use ".set mips32".

	* config/tc-mips.c (ISA_HAS_64BIT_REGS): Add checks for ISA_MIPS5 and
	ISA_MIPS64.
	(md_longopts, OPTION_MIPS5, OPTION_MIPS64): Add options for
	-mips5 and -mips64.
	(md_parse_option): Add cases for OPTION_MIPS5 and
	OPTION_MIPS64.
	(md_show_usage): Mention -mips5 and -mips64 arguments.
	(s_mipsset): Add cases for MIPS5 and MIPS64.
	(mips_cpu_info_table): Add entries for MIPS5 and MIPS64 ISAs
	and pseudo-CPUs.
	* doc/as.texinfo: Mention -mips5 and -mips64 options
	and their meanings.
	* doc/c-mips.texi: Likewise.  Also update introduction
	and ".set" usage information.

	* config/tc-mips.c (md_show_usage): Add "sb1" to the
	CPU list.
	(mips_cpu_info_table): Add SB-1 entries.
	* doc/c-mips.texi: Add "sb1" to the list of CPUs
	known to the -mcpu option.

	* doc/as.texinfo: Correct description of MIPS -mcpu
	option, by copying some of the text from doc/c-mips.texi.

2000-12-01  Joel Sherrill  <joel@OARcorp.com>

	* configure.in (arm-*-rtems*, a29k-*rtems*, h8300-*-rtems*):
	New targets.
	(sparc*-*-rtemself*, sparc*-*-rtemsaout*): New targets.
	(sparc*-*-rtems*): Switched from a.out to ELF.
	* configure: Regenerate.
	* config.in: Regenerate.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* po/gas.pot: Regenerate.

2000-11-30  Philip Blundell  <pb@futuretv.com>

	* config/obj-coff.c (obj_coff_weak): Use S_SET_WEAK if it exists,
	even in non BFD_ASSEMBLER case.

2000-11-30  Diego Novillo  <dnovillo@redhat.com>

	* config/tc-i386.c (md_assemble): Swap i.disp_relocs when using intel
	syntax.

2000-11-29  Richard Henderson  <rth@redhat.com>

	* dwarf2dbg.c: Rewrite from scratch.  Queue all debugging output
	until dwarf2_finish; use relaxation to get cross-fragment offsets;
	thread multiple subsegments properly; handle multiple code
	sections properly; emit proper compilation unit info for assembler
	generated debugging.

	* as.h (enum _relax_state): Add rs_dwarf2dbg.
	* dwarf2dbg.h (struct dwarf2_line_info): Remove filename.
	(dwarf2dbg_estimate_size_before_relax): Declare.
	(dwarf2dbg_relax_frag, dwarf2dbg_convert_frag): Declare.
	* write.c: Include dwarf2dbg.h.
	(cvt_frag_to_fill): Handle rs_dwarf2dbg.
	(relax_segment): Likewise.

2000-11-28  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/tc-sh.c (md_convert_frag) <undefined symbol, conditional
	jump>: Use as_bad_where	instead of as_bad.  Tweak error message
	accordingly.  Stabilize frag by updating fix part and resetting
	variant part.
	<undefined symbol, unconditional jump>: Ditto.
	(sh_elf_cons): Cast *input_line_pointer to unsigned char when
	indexing is_end_of_line[].
	(md_assemble): Initialize size to 0.
	(md_section_align): Mark parameter seg as unused.
	(parse_reg): Parse names case-insensitively.

2000-11-28  Kazu Hirata  <kazu@hxi.com>

	* config/obj-aout.h: Fix formatting.
	* config/obj-bout.h: Likewise.
	* config/obj-coff.c: Likewise.
	* config/obj-coff.h: Likewise.
	* config/obj-elf.h: Likewise.
	* config/obj-som.h: Likewise.
	* config/obj-vms.c: Likewise.
	* config/obj-vms.h: Likewise.
	* config/tc-h8300.h: Likewise.
	* config/tc-ns32k.h: Likewise.
	* config/tc-sparc.h: Likewise.
	* config/tc-tic54x.h: Likewise.
	* config/tc-z8k.h: Likewise.

2000-11-28  Nick Clifton  <nickc@redhat.com>

	* doc/as.1 (COPYING): Mention that the GNU Free Documentation
	License is present in the sources, but not the output, and
	also available from the GNU website.
	(GNU Free Documentation License): Comment out this section.

2000-11-28  Hans-Peter Nilsson  <hp@axis.com>

	* Makefile.am (CPU_OBJ_VALID): Add case to filter out invalid coff
	targets.  Remove i860 from valid a.out targets.
	* Makefile.in: Regenerate.

	* config/tc-cris.c: Include dwarf2dbg.h.
	(md_pseudo_table): Add .file and .loc.
	(md_assemble): Call dwarf2_emit_insn if generating ELF.
	(s_cris_file, s_cris_loc): New.
	* config/tc-cris.h (DWARF2_LINE_MIN_INSN_LENGTH): Define.
	* Makefile.am: Regenerate dependencies.
	* Makefile.in: Regenerate.

2000-11-28  Alan Modra  <alan@linuxcare.com.au>

	* expr.c (STANDARD_MUL_PRECEDENCE): Correct value.
	(MRI_MUL_PRECEDENCE): Likewise.
	(op_rank): Fix a comment typo.

2000-11-26  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/tc-m68hc11.c (build_indexed_byte): Print the offset in
	the error message.
	(get_operand): Fix analysis for movw/movb instructions.

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

	* configure.in (xscale-elf): Add target.
	(xscale-coff): Add target.
	* configure: Regenerate.

	* config/tc-arm.c (ARM_EXT_V5E): New ARM architecture
	extenstion.
	(ARM_EXT_XSCALE): New ARM architecture extension.
	(ARM_LONGMUL): Rename to ARM_EXT_LONGMUL.
	(ARM_HALFWORD): Rename to ARM_EXT_HALFWORD.
	(ARM_THUMB): Rename to ARM_EXT_THUMB.
	(ARM_ARCH_V4): Remove processor from architecture.
	(ARM_ARCH_3M): New architecutre definition.
	(ARM_ARCH_V5TE): New architecutre definition.
	(ARM_ARCH_XSCALE): New architecutre definition.
	(CPU_DEFAULT): Allow to be defaulted to XScale.
	(atpcs): New boolean variable.
	(ldr_flags): Support 'd' flag for double word loads.
	(str_flags): Support 'd' flag for double word stored.
	(do_mia): New function.
	(do_mar): New function.
	(do_mra): New function.
	(do_pld): New function.
	(do_ldrd): New function.
	(do_blx): New function.
	(do_bkpt): New function.
	(do_clz): New function.
	(do_lstc2): New function.
	(do_cdp2): New function.
	(do_t_blx): New function.
	(do_t_bkpt): New function.
	(do_smla): New function.
	(do_smlal): New function.
	(do_smul): New function.
	(do_qadd): New function.
	(do_co_reg2c): New function.
	(LONGEST_INSN): Redefine to 7.

	* doc/c-arm.texi: Document -mxscale, -mmarmv5te and -matpcs
	command line switches.

2000-11-22  Jim Wilson  <wilson@redhat.com>

	* config/tc-ia64.c (pseudo_func): Add missing initializers.
	(struct rsrc): Make line unsigned.
	(gr_values): Add missing initializer.
	(SLOT_NUM_NOT_SET): Add unsigned cast.
	(ia64_elf_section_flags, output_vbyte_mem, count_output, dot_radix,
	dot_fframe, dot_vframe, dot_vframesp, dot_vframepsp, dot_save,
	dot_restore, dot_restorereg, dot_restorereg_p, dot_handlerdata,
	dot_unwentry, dot_altrp, dot_saveg, dot_savef, dot_saveb, dot_savegf,
	dot_spill, dot_spillreg, dot_spillreg_p, dot_label_state,
	dot_copy_state, dot_unwabi, dot_personality, dot_proc, dot_body,
	dot_prologue, dot_endp, dot_regstk, dot_psr, dot_alias, dot_ln,
	dot_reg_val, dot_entry, dot_mem_offset, ia64_init, mark_resource,
	md_undefined_symbol, md_apply_fix3, tc_gen_reloc, ia64_md_do_align):
	Add ATTRIBUTE_UNUSED to unused parameters.
	(convert_expr_to_ab_reg): Add parens.
	(convert_expr_to_xy_reg): Add parens.  Comment out >= REG_GR test.
	(dot_prologue): Initialize grsave when declared.
	(md_pseudo_table): Add missing initializers.
	(operand_match): Add casts to bfd_vma.
	(emit_one_bundle): Delete unused local prev.  Make required_template
	unsigned.
	(specify_resource): Cast i to unsigned.
	(note_register_values): Use fprintf_vma.
	(print_dependency): Likewise.

2000-11-21  Jim Wilson  <wilson@redhat.com>

	* config/tc-ia64.c (generate_unwind_image): Call record_alignment
	for unwind info section.
	(dot_endp): Likewise for unwind section.

	* config/tc-ia64.c (emit_one_bundle): Pass size of 8 not 4 to
	fix_new_exp.

2000-11-21  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-sparc.c (md_pseudo_table): Add .file and .loc.
	(output_insn): Call dwarf2_emit_insn.
	* config/tc-sparc.h (DWARF2_LINE_MIN_INSN_LENGTH): New.

2000-11-17  Richard Henderson  <rth@redhat.com>

	* ehopt.c (eh_frame_code_alignment): New arg `in_seg', update all
	callers.  Don't switch segments.  Expect CIE == -1 in .debug_frame.
	(check_eh_frame): Handle .eh_frame and .debug_frame concurrently.

2000-11-17  Nick Clifton  <nickc@redhat.com>

	* config/tc-arm.c (md_pseudo_table): Add support for .line and
	.file pseudo ops.

2000-11-17  Richard Henderson  <rth@redhat.com>

	* config/tc-i386.c (md_pseudo_table): Add .file and .loc.

2000-11-17  Richard Henderson  <rth@redhat.com>

	* dwarf2dbg.c (dwarf2_gen_line_info): Early out for no line number.
	* config/obj-elf.h (ECOFF_DEBUGGING) [TC_ALPHA]: Adjust for
	tri-state definition of alpha_flag_mdebug.
	* config/tc-alpha.c (alpha_flag_mdebug): Init to -1.
	(s_alpha_file): Store first .file directive.
	(s_alpha_stab): New.
	(md_pseudo_table): Add stabs and stabn.

2000-11-17  Richard Henderson  <rth@redhat.com>

	* config/tc-i386.c (md_assemble): Call dwarf2_emit_insn.

2000-11-17  Richard Henderson  <rth@redhat.com>

	* as.c (debug_type): Init to DEBUG_UNSPECIFIED.
	(main): Call dwarf2_finish.
	* as.h (debug_type): Clarify documentation of the meaning
	of this variable.
	* dwarf2dbg.c (DWARF2_LINE_MIN_INSN_LENGTH): Default to 1.
	(print_stats): Fix parenthesis problem.
	(now_subseg_size): New.
	(dwarf2_finish): Use it.  If DEBUG_DWARF2, emit bits for .debug_info.
	(dwarf2_directive_file): Don't set debug_type.
	(dwarf2_where): Honor DEBUG_DWARF2 first.
	(dwarf2_emit_insn): Renamed from dwarf2_generate_asm_lineno;
	do nothing if not emitting dwarf2 debug info, or no work.
	* dwarf2dbg.h (dwarf2_emit_insn): Update.
	* ecoff.c (add_file): Turn on DEBUG_ECOFF only if DEBUG_UNSPECIFIED.
	(ecoff_new_file): Likewise.
	* read.c (generate_lineno_debug): Kill ecoff hackery.  Update
	commentary wrt dwarf2.

	* config/tc-alpha.c (alpha_adjust_symtab_relocs): Add
	ATTRIBUTE_UNUSED as needed.
	(emit_insn): Call dwarf2_emit_insn.
	(s_alpha_file): New.
	(s_alpha_loc): New.
	(s_alpha_coff_wrapper): Don't handle them.
	(md_pseudo_table): Update for .file and .loc.
	* config/tc-alpha.h (DWARF2_LINE_MIN_INSN_LENGTH): New.

	* config/tc-arm.c (output_inst): Update for dwarf2_emit_insn;
	don't protect with debug_type.
	* config/tc-hppa.c (md_assemble): Likewise.
	* config/tc-m68hc11.c (m68hc11_new_insn): Likewise.
	* config/tc-mn10300.c (md_assemble): Likewise.
	* config/tc-sh.c (md_assemble): Likewise.
	* config/tc-v850.c (md_assemble): Likewise.

	* config/tc-arm.c (arm_end_of_source): Remove.
	* config/tc-hppa.c (pa_end_of_source): Remove.
	* config/tc-m68hc11.c (m68hc11_end_of_source): Remove.
	* config/tc-mn10300.c (mn10300_finalize): Remove.
	* config/tc-sh.c (sh_finalize): Remove.
	* config/tc-v850.c (sh_finalize): Remove.

	* config/tc-arm.h (md_end): Remove.
	* config/tc-hppa.h (md_end): Remove.
	(DWARF2_LINE_MIN_INSN_LENGTH): New.
	* config/tc-m68hc11.h (md_end): Remove.
	* config/tc-mn10300.h (md_end): Remove.
	* config/tc-sh.h (md_end): Remove.
	* config/tc-v850.h (md_end): Remove.

	* config/tc-ia64.c (emit_one_bundle): Don't protect
	dwarf2 bits with debug_type.
	(md_assemble): Likewise.
	(ia64_end_of_source): Don't call dwarf2_finish.

2000-11-16  Jim Wilson  <wilson@redhat.com>

	* config/tc-ia64.c (errata_nop_necessary_p): Abort if general regno
	>= 128 instead of > 128.  Abort if predicate regno is >= 64 instead of
	> 16.

2000-11-16  H.J. Lu  <hjl@gnu.org>

	* config/obj-elf.c (obj_elf_symver): Don't check the missing
	version name.

2000-11-15  Kazu Hirata  <kazu@hxi.com>

	* config/tc-tic30.c: Fix formatting.
	* config/tc-tic80.c: Likewise.
	* config/tc-v850.c: Likewise.
	* config/tc-vax.c: Likewise.
	* config/tc-w65.c: Likewise.
	* config/tc-z8k.c: Likewise.

2000-11-14  DJ Delorie  <dj@redhat.com>

	* config/tc-v850.c: Support dwarf2.
	* config/tc-v850.h: Ditto.

	* config/tc-v850.c (cons_fix_new_v850): Don't rely on
	parse_cons_expression_v850 to initialize hold_cons_reloc.

2000-11-15  Bernd Schmidt  <bernds@redhat.com>

	* config/tc-ia64.c (struct md): New entries LAST_GROUPS, GROUP_IDX.
	(errata_nops_necessary_p): New function.
	(emit_one_bundle): Call it.  Update the GROUP_IDX field in struct
	md.

2000-11-14  Jim Wilson  <wilson@redhat.com>

	* config/tc-ia64.c (ia64_target_format): If EF_IA_64_BE not set, then
	return little endian bfd formats.

2000-11-14  Kazu Hirata  <kazu@hxi.com>

	* config/aout_gnu.h: Fix formatting.
	* config/atof-vax.c: Likewise.
	* config/m68k-parse.h: Likewise.
	* config/m88k-opcode.h: Likewise.
	* config/obj-elf.c: Likewise.
	* config/tc-arm.c: Likewise.
	* config/tc-cris.c: Likewise.
	* config/tc-i386.c: Likewise.
	* config/tc-ia64.c: Likewise.
	* config/tc-mn10300.c: Likewise.
	* config/te-386bsd.h: Likewise.
	* config/te-hppa.h: Likewise.
	* config/te-nbsd.h: Likewise.
	* config/te-ppcnw.h: Likewise.
	* config/te-sparcaout.h: Likewise.
	* config/te-tmips.h: Likewise.
	* config/vax-inst.h: Likewise.
	* config/vms-conf.h: Likewise.

2000-11-14  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-alpha.c (s_alpha_prologue): Preserve visibility bits.

2000-11-13  H.J. Lu  <hjl@gnu.org>

	* config/obj-elf.c (elf_frob_symbol): Support
	".symver name,name2@@@nodename".
	(elf_frob_file_before_adjust): Likewise.

	* doc/as.texinfo: Updated for ".symver name,name2@@@nodename"
	and ".symver name,name2@@@nodename".
	Fix a typo.

2000-11-12  H.J. Lu  (hjl@gnu.org)

	* config/obj-elf.c (obj_elf_symver): Check missing version
	name.

2000-11-12  H.J. Lu  (hjl@gnu.org)

	* dwarf2dbg.c (dwarf2_generate_asm_lineno): Use addressT
	instead of bfd_vma for non-bfd assemblers.

2000-11-09  Kazu Hirata  <kazu@hxi.com>

	* itbl-ops.c: Fix comment typos.

2000-11-08  Jim Wilson  <wilson@redhat.com>

	* config/tc-ia64.c (struct unw_rec_list): Add slot_frag field.
	(struct unwind): Add next_slot_frag field.
	(slot_index): New parameters slot_frag and first_frag.  Add code
	to add in frag sizes when different.  Add comments.
	(fixup_unw_records): New locals first_frag and last_frag.  Pass new
	arguments to slot_index.
	(emit_one_bundle): Set slot_frag field.  Set next_slot_number after
	loop end.  Set next_slot_frag field.

2000-11-07  H.J. Lu  <hjl@gnu.org>

	* doc/as.texinfo (.symver): Updated for versioned symbol
	reference.

	* obj.h (format_ops): Add the frob_file_before_adjust field.

	* config/obj-aout.c (aout_format_ops): Set the
	frob_file_before_adjust field to 0.
	* config/obj-coff.c (coff_format_ops): Likewise.
	* config/obj-ecoff.c (ecoff_format_ops): Likewise.

	* config/obj-elf.c (obj_elf_symver): Allow duplicated version
	name.
	(elf_frob_file_before_adjust): New function to remove unneeded
	versioned symbols from the symbol table.
	(elf_format_ops): Set the frob_file_before_adjust field to
	elf_frob_file_before_adjust.

	* config/obj-elf.h (obj_frob_file_before_adjust): Defined if
	not defined.

	* config/obj-multi.h (obj_frob_file_before_adjust): Defined.

2000-11-07  Peter Targett  <peter.targett@arccores.com>

	* config/tc-arc.h: Avoid warnings for LITTLE_ENDIAN and
	BIG_ENDIAN macros.
	* config/tc-arc.c: Use S_IS_LOCAL to test local symbols.
	Fix compile time warning messages.

2000-11-07  Nick Clifton  <nickc@redhat.com>

	* stabs.c (generate_asm_file): Increase length of xmalloc'ed
	buffer in order to avoid buffer overflows.

2000-11-06  Steve Ellcey <sje@cup.hp.com>

	* config/tc-ia64.c (md_shortopts, md_parse_option, md_show_usage):
	Change M to m for -milp32 or -mlp64 to match gcc.
	(dot_endp): Use bytes_per_address instead of 8.
	(emit_one_bundle): Use number_to_chars_littleendian instead of
	md_number_to_chars.
	(fix_insn): Likewise.
	(ia64_init): New function.
	(ia64_target_format): New function.
	(md_begin): Set endianness, arch, and machine as appropriate.
	* config/tc-ia64.h: (TARGET_BYTES_BIG_ENDIAN, md_number_to_chars):
	Make these macros depend on TE_HPUX macro.
	(TARGET_FORMAT): Define.
	(HOST_SPECIAL_INIT): Define.
	* config/te-hpux.h: New file.
	* configure.in: Add "ia64-*-hpux*" target to configure.
	* configure: Regenerate.

2000-11-06  Kazu Hirata  <kazu@hxi.com>

	* as.c: Fix formatting.
	* dwarf2dbg.c: Likewise.
	* input-file.c: Likewise.
	* input-file.h: Likewise.
	* input-scrub.c: Likewise.
	* itbl-ops.c: Likewise.
	* listing.c: Likewise.
	* macro.h: Likewise.
	* messages.c: Likewise.
	* read.c: Likewise.
	* subsegs.c: Likewise.
	* subsegs.h: Likewise.
	* write.c: Likewise.

2000-11-06  Nick Clifton  <nickc@redhat.com>

	* doc/as.texinfo: Add GNU Free Documentation License.
	* doc/gasp.texi:  Add GNU Free Documentation License.
	* doc/as.1:  Add GNU Free Documentation License.

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

	* config/tc-arm.c: Add include of "dwarf2dbg.h"

2000-11-02  Per Lundberg  <plundis@chaosdev.org>

	* configure.in: Recognise i[3456]86-chaosdev-storm-chaos.
	* configure: Regenerate.

2000-11-01  Nick Clifton  <nickc@redhat.com>

	* read.c (original_case_string): New global variable.
	(read_a_source_file): Copy opcode string into
	original_case_string if clobbering the case of the opcode.
	* read.h: Export the definition of original_case_string.
	* config/tc-arm.c (md_assembler): When parsing a .req
	directive use the original opcode string, not the case
	clobbered version.

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

	* config/tc-mn10300.c (debug_line): Remove this static
	variable.
	(md_assemble): Call dwarf2_generate_asm_lineno instead of
	dwarf2_where and dwarf2_gen_line_info.

2000-11-02  Theo Honohan  <th@futuretv.com>

	* config/tc-arm.c (do_msr): Improve error message.

2000-10-31  Eric Christopher  <echristo@redhat.com>

	* config/tc-mn10300.c (md_apply_fix3): Use valuep if fully resolved
	or pc-relative, else use fx_offset.

2000-10-31  Jim Wilson  <wilson@redhat.com>

	* config/tc-ia64.c (struct md): New field tag_fixups.
	(ia64_flush_insns): Handle tag_fixups.  Error if dangling
	qualifying predicate.
	(emit_one_bundle): Delete spurious multiplication by one.  Handle
	tag_fixups.
	(ia64_start_line): Error if dangling qualifying predicate.
	(defining_tag): New static variable.
	(ia64_unrecognized_line, case '['): Parse tags.
	(ia64_frob_label): Create tag_fixups.
	(md_assemble): Reset md.qp.X_op after using it.

2000-10-31  Kaz Kojima <kkojima@rr.iij4u.or.jp>

	* config/tc-sh.c (md_apply_fix [BFD_RELOC_SH_PCDISP12BY2]): Allow 4094.

2000-10-31  Bernd Schmidt  <bernds@redhat.co.uk>

	* config/tc-ia64.c (extra_goodness): Only prefer F in slot 1 and B in slot 2.

2000-10-30  Kazu Hirata  <kazu@hxi.com>

	* expr.c: Fix formatting.
	* flonum-copy.c: Likewise.
	* flonum.h: Likewise.
	* gasp.c: Likewise.
	* hash.c: Likewise.

2000-10-30  Hans-Peter Nilsson  <hp@bitrange.com>

	* as.h (OPTION_MD_BASE): Bump to 190.
	* as.c (parse_args) <std_longopts>: Add comment about the need to
	check OPTION_MD_BASE in as.h.

	* config/tc-sh.c (md_apply_fix): For ELF, do not "adjust back" VAL
	for weak symbols.

2000-10-27  Nick Clifton  <nickc@redhat.com>

	* configure.in (emulations): Add m68hc12.
	* configure: Regenerate.
	* po/gas.pot: Regenerate.

2000-10-27  Aldy Hernandez  <aldyh@redhat.com>

	* config/tc-arm.c (psrs): Remove lowercase versions of spsr* and
	cpsr*.
	(arm_psr_parse): Handle lowercase CPSR and SPSR.

2000-10-25  Nick Clifton  <nickc@redhat.com>

	* dwarf2out.c (dwarf2_generate_asm_lineno): New function: Generate
	a DWARF2 line number information sequence.

	*dwarf2out.h: Add prototype for dwarf2_generate_asm_lineno.

	* read.c (generate_lineno_debug): Update comment describing why
	DWARF2 line number debug information is not generated
	automatically by this function.

	* doc/as.texinfo: Note that --gdwarf2 only works on some targets,
	not all.

	* config/tc-arm.h (md_end): Define.
	(DWARF2_LINE_MIN_INSN_LENGTH): Define.

	* config/tc-arm.c (output_inst): Call dwarf2_generate_asm_lineno
	if generating DWARF2 line numbers.
	(arm_end_of_source): New function.  Call dwarf2_finish if
	necessary.

	* config/tc-hppa.c (md_assemble): Use dwarf2_generate_asm_lineno.
	* config/tc-m68hc11.c (m68hc11_new_insn): Use dwarf2_generate_asm_lineno.
	* config/tc-sh.c (md_assemble): Use dwarf2_generate_asm_lineno.

2000-10-25  Diego Novillo  <dnovillo@cygnus.com>

	* config/tc-i386.c: Fix prototype declarations for functions taking no
	arguments.

2000-10-24  Diego Novillo  <dnovillo@cygnus.com>

	* config/tc-i386.c (i386_operand_modifier): Remove.
	(build_displacement_string): Remove.
	(i386_parse_seg): Remove.
	(i386_intel_memory_operand): Remove.
	(i386_intel_operand): Re-write using recursive descent parser based
	on MASM documentation.
	(struct intel_parser_s): New structure.
	(intel_parser): New static variable.
	(struct intel_token): New structure.
	(cur_token, prev_token): New static variables.
	(T_NIL): Define.
	(T_CONST): Define.
	(T_REG): Define.
	(T_BYTE): Define.
	(T_WORD): Define.
	(T_DWORD): Define.
	(T_QWORD): Define.
	(T_XWORD): Define.
	(T_SHORT): Define.
	(T_OFFSET): Define.
	(T_PTR): Define.
	(T_ID): Define.
	(intel_match_token): New function.
	(intel_get_token): New function.
	(intel_putback_token): New function.
	(intel_expr): New function.
	(intel_e05): New function.
	(intel_e05_1): New function.
	(intel_e06): New function.
	(intel_e06_1): New function.
	(intel_e09): New function.
	(intel_e09_1): New function.
	(intel_e10): New function.
	(intel_e10_1): New function.
	(intel_e11): New function.

2000-10-20  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-sparc.c (sparc_ip): Fix a bug which caused v9_arg_p
	instructions to loose any special insn->architecture mask.

	* config/tc-sparc.c (v9a_asr_table): Add v9b ASRs.
	(sparc_md_end, sparc_arch_types, sparc_arch,
	sparc_elf_final_processing): Handle v8plusb and v9b architectures.
	(sparc_ip): Handle siam mode operands. Support v9b ASRs (and
	request v9b architecture if they are used).

2000-10-18  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* config/tc-m68k.c: Fix the previous misapplied patch.

2000-10-18  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* config/tc-m68k.h (RELAX_RELOC_*): New definitions for both
	BFD_ASSEMBLER and !BFD_ASSEMBLER.
	* config/tc-m68k.c (md_convert_frag_1): Use them instead of
	BFD_RELOC_*.

2000-10-17  Kazu Hirata  <kazu@hxi.com>

	* debug.c: Fix formatting.
	* depend.c: Likewise.
	* dwarf2dbg.c: Likewise.
	* dwarf2dbg.h: Likewise.
	* ecoff.c: Likewise.
	* expr.c: Likewise.
	* expr.h: Likewise.
	* flonum-konst.c: Likewise.
	* frags.h: Likewise.

2000-10-17  Chandrakala Chavva  <cchavva@redhat.com>

	* as.c: New option OPTION_TARGET_HELP. Prints all target specific
	options.
	* doc/as.texinfo: Added notes about this new option.

2000-10-16  Hans-Peter Nilsson  <hp@bitrange.com>

	* config/tc-sh.c (JREG): Remove.
	(md_convert_frag): Remove #if 0:d code using JREG.

2000-10-15  Diego Novillo  <dnovillo@cygnus.com>

	* config/tc-i386.c (i386_operand_modifier): Only match
	modifiers SHORT and FLAT if they are followed by a space.
	(parse_register): When `allow_naked_reg' is set, do not confuse
	identifiers that start with a register name with a register.

2000-10-12  Kazu Hirata  <kazu@hxi.com>

	* app.c: Fix formatting.
	* as.c: Likewise.
	* as.h: Likewise.
	* bit_fix.h: Likewise.
	* cgen.c: Likewise.
	* cgen.h: Likewise.
	* cond.c: Likewise.

2000-10-11  Alan Modra  <alan@linuxcare.com.au>

	* config/obj-elf.c (elf_frob_symbol): Revert 2000-10-07 change.

2000-10-07  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (md_apply_fix): Remove plainly wrong assert.
	Re-arrange function a little and improve error message.

	* write.c (write_relocs): Fix a comment.

	* config/obj-elf.c (elf_frob_symbol): Make section syms global on
	link-once sections.

2000-10-05  Jim Wilson  <wilson@cygnus.com>

	* config/tc-ia64.c (resources_match): Handle IA64_RS_PRr.

2000-10-05  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c: Delete some useless comments, reformat others.

	* config/tc-i386.h (TC_FIX_ADJUSTABLE): Add check to cover
	non-global syms in linkonce sections.

2000-10-04  Ralf Baechle  <ralf@gnu.org>

	* config/tc-ia64.c (operand_match): Don't use // style comments.
	* config/tc-i370.c: Likewise.

2000-09-29  Hans-Peter Nilsson  <hp@axis.com>

	Changes to handle varying register prefix and user symbol prefix.
	* config/tc-cris.c (SYNTAX_RELAX_REG_PREFIX,
	SYNTAX_ENFORCE_REG_PREFIX, SYNTAX_USER_SYM_LEADING_UNDERSCORE,
	SYNTAX_USER_SYM_NO_LEADING_UNDERSCORE, REGISTER_PREFIX_CHAR): New.
	(s_syntax, cris_force_reg_prefix, cris_relax_reg_prefix,
	cris_sym_leading_underscore, cris_sym_no_leading_underscore): New.
	(demand_register_prefix): New variable.
	(md_pseudo_table): New pseudo ".syntax".
	(md_longopts): New options --no-underscore and --underscore.
	(cris_target_format): Return elf32-us-cris or elf32-cris depending
	on symbols_have_leading_underscore.
	(get_gen_reg): Accept or require REGISTER_PREFIX_CHAR.
	(get_spec_reg): Ditto.
	(cris_number_to_imm) <case BFD_RELOC_VTABLE_ENTRY>: Remove FIXME.
	Fix formatting.
	(md_parse_option) <case 'h' 'H'>: Deprecate; add reference to
	--help.
	<case OPTION_NO_US, case OPTION_US>: New.
	(md_show_usage): Be brief and reformat to match continuation of
	--help.
	* po/gas.pot: Regenerate.

2000-09-28  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (hppa_force_relocation): If OBJ_SOM, don't
	force relocs for 12 bit branches.
	(md_apply_fix): Similarly, adjust logic here.

2000-09-28  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (md_apply_fix): Add fmt assertion.  Don't
	adjust for external and weak syms as we will use a reloc.  Allow
	for +8 offset when calculating limits of branches.
	(hppa_fix_adjustable): Undo 2000-09-23 change.
	(hppa_force_relocation): Likewise.  Add fx_addsy assertion.
	Correct distance calculation.
	(tc_gen_reloc): Print the file name and line number if we can't
	handle a fixup.

	From John David Anglin <dave@hiauly1.hia.nrc.ca>
	* config/tc-hppa.c (nonzero_dibits): Define.
	(arg_reloc_stub_needed): Check each arg and return value
	separately for zero case.
	(pa_align): Declare argument `bytes'.

2000-09-25  Kazu Hirata  <kazu@hxi.com>

	* config/tc-cris.c: Fix formatting.
	* config/tc-d10v.h: Likewise.
	* config/tc-d30v.c: Likewise.
	* config/tc-d30v.h: Likewise.
	* config/tc-fr30.c: Likewise.
	* config/tc-fr30.h: Likewise.
	* config/tc-m68k.c: Likewise.
	* config/tc-m68k.h: Likewise.
	* config/tc-pj.h: Likewise.
	* config/tc-ppc.c: Likewise.
	* config/tc-ppc.h: Likewise.
	* config/tc-sh.c: Likewise.
	* config/tc-sh.h: Likewise.
	* config/tc-sparc.c: Likewise.
	* config/tc-v850.h: Likewise.
	* config/tc-vax.h: Likewise.
	* config/tc-w65.h: Likewise.
	* config/tc-z8k.h: Likewise.

2000-09-23  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (hppa_fix_adjustable): Do the external and weak
	checks only for ELF.
	(hppa_force_relocation): Likewise.

2000-09-22  Jim Wilson  <wilson@cygnus.com>

	* config/tc-ia64.c (dv_sem): Add "stop".
	(specify_resource, case IA64_RS_PR): Only handles regs 1 to 15 now.
	(specify_resource, case IA64_RS_PRr): New for regs 16 to 62.
	(specify_resource, case IA64_RS_PR63): Reorder (note == 7) test to
	match above.
	(mark_resources): Check IA64_RS_PRr.

2000-09-22  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* config/tc-m68k.c (md_relax_table, m68k_ip, md_convert_frag_1,
	md_estimate_size_before_relax): Redesign and clean up the
	relaxation mechanism.

2000-09-21  Kazu Hirata  <kazu@hxi.com>

	* config/tc-ns32k.c: Fix formatting.
	* config/tc-ns32k.h: Likewise.

2000-09-20  Kazu Hirata  <kazu@hxi.com>

	* config/tc-m32r.c: Fix formatting.
	* config/tc-m32r.h: Likewise.
	* config/tc-m68851.h: Likewise.
	* config/tc-m68hc11.c: Likewise.
	* config/tc-m68hc11.h: Likewise.
	* config/tc-m88k.c: Likewise.
	* config/tc-mcore.c: Likewise.
	* config/tc-mcore.h: Likewise.
	* config/tc-mips.c: Likewise.
	* config/tc-mips.h: Likewise.
	* config/tc-mn10200.h: Likewise.
	* config/tc-mn10300.h: Likewise.
	* config/tc-tahoe.c: Likewise.
	* config/tc-tahoe.h: Likewise.

2000-09-19  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* config/tc-vax.c (synthetic_votstrs): Remove jbssi and jbcci.
	Likewise in relaxation description comments.

2000-09-18  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.h (TC_FORCE_RELOCATION_SECTION): Allow
	subtraction of two syms without emitting a relocation.

	From  David Huggins-Daines  <dhd@linuxcare.com>
	* config/tc-hppa.c (hppa_force_relocation): Force relocations for
	global or weak symbols.

2000-09-15  Kazu Hirata  <kazu@hxi.com>

	* config/tc-h8300.h: Fix formatting.
	* config/tc-h8500.c: Likewise.
	* config/tc-h8500.h: Likewise.
	* config/tc-hppa.h: Likewise.
	* config/tc-i370.h: Likewise.
	* config/tc-i386.h: Likewise.
	* config/tc-i860.c: Likewise.
	* config/tc-i860.h: Likewise.
	* config/tc-i960.h: Likewise.
	* config/tc-ia64.c: Likewise.
	* config/tc-ia64.h: Likewise.

2000-09-14  Kazu Hirata  <kazu@hxi.com>

	* config/tc-a29k.c: Fix formatting.
	* config/tc-alpha.c: Likewise.
	* config/tc-arc.c: Likewise.
	* config/tc-arc.h: Likewise.
	* config/tc-arm.c: Likewise.
	* config/tc-arm.h: Likewise.
	* config/tc-avr.c: Likewise.
	* config/tc-avr.h: Likewise.
	* config/tc-tic30.c: Likewise.
	* config/tc-tic30.h: Likewise.
	* config/tc-tic54x.c: Likewise.
	* config/tc-tic54x.h: Likewise.
	* config/tc-tic80.c: Likewise.
	* config/tc-tic80.h: Likewise.

2000-09-14  Timothy Wall  <twall@cygnus.com>

	* config/tc-ia64.c (specify_resource): For PR%/PR63, note types of
	parallel comparisons for later use.
	(struct rsrc): Add parallel comparison type.
	(resources_match): Skip special cases of PR usage (non-conflicting
	parallel compares).

2000-09-13  Kazu Hirata  <kazu@hxi.com>

	* config/obj-ecoff.c: Fix formatting.
	* config/obj-elf.c: Likewise.
	* config/obj-elf.h: Likewise.
	* config/obj-evax.h: Likewise.
	* config/obj-generic.h: Likewise.
	* config/obj-hp300.c: Likewise.
	* config/obj-hp300.h: Likewise.
	* config/obj-ieee.h: Likewise.
	* config/obj-vms.c: Likewise.
	* config/obj-vms.h: Likewise.

2000-09-13  Anders Norlander  <anorland@acc.umu.se>

	* config/tc-mips.c (md_begin): Recognize 4Kc, 4Km and 4Kp processors.
	(md_parse_option): Ditto.
	(md_longopts): Add -mips32 option.
	(md_show_usage): Document new options.
	(mips_ip): Assemble sdbbp 20 bit 'm' args for MIPS32.
	(mips_ip): Assemble mfc0 with a sub-selection code.
	(validate_mips_insn): Handle 'H' (OP_*_SEL) and 'm' (OP_*_CODE20).
	(mips_cpu_to_str): New function.
	(mips_ip): Use mips_cpu_to_str instead of printing numeric cpu value.
	Use CPU_* defines instead of hardcoded numbers.

	* doc/as.texinfo: Document new options.
	* doc/c-mips.texi: Ditto.

2000-09-12  Kazu Hirata  <kazu@hxi.com>

	* as.h: Fix formatting.
	* asintl.h: Likewise.
	* bit_fix.h: Likewise.
	* config/obj-aout.c: Likewise.
	* config/obj-aout.h: Likewise.
	* config/obj-bout.c: Likewise.
	* config/obj-bout.h: Likewise.
	* config/obj-coff.c: Likewise.
	* config/obj-coff.h: Likewise.
	* dwarf2dbg.h: Likewise.
	* expr.h: Likewise.
	* flonum.h: Likewise.
	* frags.h: Likewise.
	* itbl-ops.h: Likewise.
	* macro.h: Likewise.
	* read.h: Likewise.
	* sb.h: Likewise.
	* struc-symbol.h: Likewise.
	* subsegs.h: Likewise.
	* symbols.h: Likewise.
	* tc.h: Likewise.
	* write.h: Likewise.

2000-09-11  Kazu Hirata  <kazu@hxi.com>

	* bignum-copy.c: Fix formatting.
	* config/tc-i370.c: Likewise.
	* config/tc-i960.c: Likewise.
	* config/tc-m68k.c: Likewise.
	* ehopt.c: Likewise.
	* flonum-copy.c: Likewise.
	* flonum-konst.c: Likewise.
	* flonum-mult.c: Likewise.
	* literal.c: Likewise.
	* read.c: Likewise.
	* sb.c: Likewise.
	* stabs.c: Likewise.
	* subsegs.c: Likewise.

2000-09-09  Philip Blundell  <philb@gnu.org>

	* configure.in (arm*-*-uclinux*): New target.
	* configure: Regenerate.

2000-09-09  Kazu Hirata  <kazu@hxi.com>

	* input-file.c: Fix formatting.
	* itbl-ops.c: Likewise.
	* messages.c: Likewise.

2000-09-08  Philip Blundell  <philb@gnu.org>

	* config/tc-arm.c (md_apply_fix3): Correct handling of ADRL when
	offset is negative.

2000-09-07  H.J. Lu  <hjl@gnu.org>

	* configure.in (AC_ISC_POSIX): Put after AC_CANONICAL_SYSTEM.
	* configure: Rebuild.

2000-09-07  Kazu Hirata  <kazu@hxi.com>

	* atof-generic.c: Fix formatting.
	* config/tc-mips.c: Likewise.
	* config/tc-vax.c: Likewise.
	* input-scrub.c: Likewise.

2000-09-07  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-sh.h (TARGET_FORMAT): Use sh-linux targets.
	* configure.in (sh-*-linux*): Added.
	* configure: Rebuilt.

2000-09-06  Kazu Hirata  <kazu@hxi.com>

	* config/tc-hppa.c: Fix formatting.

	* ecoff.c: Fix formatting.

2000-09-06  Alexandre Oliva  <aoliva@redhat.com>

	* configure: Rebuilt with new libtool.m4.

2000-09-05  Kazu Hirata  <kazu@hxi.com>

	* cgen.c: Fix formatting.
	* config/tc-ia64.c: Likewise.

2000-09-05  Nick Clifton  <nickc@redhat.com>

	* aclocal.m4: Regenerate.
	* config.in: Regenerate.
	* configure: Regenerate.
	* po/gas.pot: Regenerate.

2000-09-05  Hans-Peter Nilsson  <hp@axis.com>

	* config/tc-cris.c: Correct comment typos.

2000-09-05  Eric Christopher  <echristo@cygnus.com>

	* config/tc-mn10300.c: Cleanup.
	(md_pcrel_from): Enable.

2000-09-05  Alan Modra  <alan@linuxcare.com.au>

	* expr.c (operand): Fix a comment typo.
	* write.c (write_relocs): Fix a signed/unsigned warning.

	* config/tc-hppa.c (fudge_reg_expressions): New
	(hppa_force_reg_syms_absolute): New.
	(pa_equ): Allow reg_section expressions.
	* config/tc-hppa.c (md_optimize_expr): Define.
	(hppa_force_reg_syms_absolute): Prototype.

	* config/tc-hppa.c (pa_11_fp_reg_struct): Delete.
	(pa_parse_number): Pass in arg to select fp reg parsing.
	Return 1 to indicate format checks pass.  If strict, then only
	accept a register or register symbol.  Return value in...
	(pa_number): New static for pa_parse_number.
	(FP_REG_BASE): Define.
	(FP_REG_RSEL): Define.
	(pre_defined_registers): Apply FP_REG_BASE and FP_REG_RSEL as
	appropriate.  White space changes.
	(need_pa11_opcode): Don't bother passing any params, get them from
	globals instead.
	(pa_ip): Modify all calls to pa_parse_number and need_pa11_opcode.
	Remove extraneous check in case 'Q'.
	(pa_equ): Modify call to pa_parse_number to do strict parsing. If
	reg, set section of resulting symbol to reg_section.
	(pa_parse_space_stmt): Modify call to pa_parse_number.
	(pa_space): Likewise.

	* config/tc-hppa.c: (md_apply_fix): Handle vtable relocs.
	(hppa_force_relocation): Handle vtable relocs.
	(pa_vtable_entry): New.
	(pa_vtable_inherit): New.
	(md_pseudo_table): Add entries for vtable pseudos.
	(hppa_fix_adjustable): Reject reduction of R_PARISC_GNU_VTINHERIT
	and R_PARISC_GNU_VTENTRY relocs.  Reject reduction of relocs
	against weak syms.
	(tc_gen_reloc): Remove ELF_ARG_RELOC_INSN code.
	(pa_type_args): Don't call symbol_get_bfdsym multiple times.
	Set STT_PARISC_MILLICODE for OBJ_ELF when encountering a
	millicode import.
	* config/obj-elf.c (obj_elf_type): Allow md_elf_symbol_type to
	specify a symbol type.

	* config/tc-hppa.h: Reorganize file a little, grouping OBJ_ELF
	dependent things together.
	(md_elf_symbol_type): Define.

	* config/tc-hppa.c (fix_new_hppa): Elide "$PIC_pcrel$0" pseudo
	symbol.
	* config/tc-hppa.h (tc_frob_symbol): Elide "$PIC_pcrel$0" here too.

	* config/obj-elf.h (obj_elf_vtable_inherit): Declare.
	(obj_elf_vtable_entry): Declare.

	* config/obj-elf.c (obj_elf_vtable_inherit): Return struct fix *
	and export function.
	(obj_elf_vtable_entry): Similarly.
	(elf_pseudo_table): Fix the damage with a cast.

2000-09-03  Richard Henderson  <rth@cygnus.com>

	* config/tc-ia64.c (emit_one_bundle): Stop collecting insns
	for template selection when a label is needed.

2000-09-02  Kazu Hirata  <kazu@hxi.com>

	* config/tc-ia64.c: Fix formatting.

2000-09-02  Nick Clifton  <nickc@redhat.com>

	* configure.in: Increase version number to 2.10.91.
	* configure: Regenerate.
	* aclocal.m4: Regenerate.
	* config.in: Regenerate.
	* po/gas.pot: Regenerate.
	* Makefile.in: Regenerate.

2000-09-01  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-sh.h [OBJ_ELF] (TC_FIX_ADJUSTABLE): Define.
	* config/tc-sh.c (md_apply_fix): Map 32-bit relocations that
	become PC-relative to BFD_RELOC_32_PCREL.  Reject 16- or 8-bit
	similar relocs.
	(sh_obj_adjustable): Return 1 for PC-relative offsets used in
	branches.

2000-09-01  Niibe Yutaka  <gniibe@m17n.org>, Kaz Kojima  <kkojima@rr.iij4u.or.jp>, Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-sh.h (DIFF_EXPR_OK, GLOBAL_OFFSET_TABLE_NAME,
	TC_RELOC_GLOBAL_OFFSET_TABLE, TC_RELOC_RTSYM_LOC_FIXUP): Define.
	* config/tc-sh.c (sh_elf_cons, sh_elf_suffix): New functions.
	[OBJ_ELF] (md_pseudo_table) <long, int, word, short>: Use them.
	(GOT_symbol): New variable.
	(md_undefined_symbol): Set it.

2000-09-01  Richard Henderson  <rth@cygnus.com>

	* config/tc-ia64.c (match): Don't inline.
	(extra_goodness): New.
	(md_begin): Prefer nop.f and nop.b for best_template.

2000-08-31  Kazu Hirata  <kazu@hxi.com>

	* as.c: Fix formatting.
	* cond.c: Likewise.
	* frags.c: Likewise.
	* macro.c: Likewise.

2000-08-31  Eric Christopher  <echristo@cygnus.com>

	* config/tc-mn10300.c:  Cleanup and fix warnings.
	(md_pseudo_table): Add initializers.
	(md_show_usage): Cleanup.
	(md_parse_option): Fix warnings.
	(md_undefined_symbol): Fix warnings.
	(md_conver_frag): Fix warnings.
	(tc_gen_reloc): Fix warnings.
	(md_apply_fix3): Fix warnings.
	(check_operand): Fix warnings.

2000-08-31  Alexandre Oliva  <aoliva@redhat.com>

	* acinclude.m4: Include libtool and gettext macros from the
	top level.
	* aclocal.m4, configure: Rebuilt.

2000-08-30  Mark Hatle  <mhatle@mvista.com>

	* config/tc-ppc.c (md_parse_option): Recognize -m405.

2000-08-31  Kazu Hirata  <kazu@hxi.com>

	* listing.c: Fix formatting.

2000-08-29  Kazu Hirata  <kazu@hxi.com>

	* app.c: Fix a comment typo.  Fix formatting.

2000-08-25  J. David Anglin  <dave@hiauly1.hia.nrc.ca>

	* config/tc-vax.c (md_convert_frag): Correctly calculate the pc relative
	offset of the target destination for jmp instructions.
	(md_assemble): Change mode to VAX_ABSOLUTE_MODE as per comments.

2000-08-24  Hans-Peter Nilsson  <hp@axis.com>

	* NEWS: Mention support for CRIS.

2000-08-24  Denis Chertykov  <denisc@overta.ru>

	* config/tc-avr.h (TC_IMPLICIT_LCOMM_ALIGNMENT): New macros.
	Sets `.lcomm' alignment to zero.

2000-08-23  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-i386.h (OBJ_MAYBE_ELF, OBJ_MAYBE_COFF,
	TC_FIX_ADJUSTABLE): Define.

2000-08-23  Jim Wilson  <wilson@cygnus.com>

	* config/tc-ia64.c (output_unw_records): Set U & E flags only if
	unwind.personality_routine is set.

2000-08-23  H.J. Lu  <hjl@gnu.org>

	* write.c (TC_FIX_ADJUSTABLE): Remove the duplicate.

2000-08-23  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-i386.h (TC_FIX_ADJUSTABLE): Do *NOT* define if target
	environment is pe.

2000-08-22  H.J. Lu  <hjl@gnu.org>

	* config.in (STRICTCOFF): New for strict COFF.

	* configure.in: Define STRICTCOFF for i386-*-msdosdjgpp*,
	i386-*-go32* and i386-go32-rtems*.
	* configure: Rebuilt.

	* config/obj-coff.c (obj_coff_endef): Follow the historical
	behavior if STRICTCOFF is not defined.

	* doc/internals.texi: Document STRICTCOFF.

2000-08-22  Alexandre Oliva  <aoliva@redhat.com>

	* write.c (TC_FIX_ADJUSTABLE): Define to 1, if not defined.
	(fixup_segment) Use it instead of TC_DONT_FIX_NON_ADJUSTABLE.
	* config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove.
	<OBJ_ELF, OBJ_COFF, TE_PE> (TC_FIX_ADJUSTABLE): Define.
	* config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove.
	<OBJ_ELF> (TC_FIX_ADJUSTABLE): Define.
	* config/tc-i960.h, config/tc-m68k.h, config/tc-v850.h:
	Likewise.

2000-08-22  Eric Christopher  <echristo@cygnus.com>

	* config/tc-mn10300.c: (md_apply_fix): New function.
	(mn10300_force_relocation): New function.
	(mn10300_fix_adjustable): New function.

	* config/tc-mn10300.h: (TC_FORCE_RELOCATION): Define.
	(TC_HANDLES_FX_DONE): Define.
	(obj_fix_adjustable): Define.
	(MD_APPLY_FIX3): Define.
	(TC_LINKRELAX_FIXUP): Define.

	* write.c: (TC_LINKRELAX_FIXUP):  Define if not
	previously defined.
	(fixup_segment): Use TC_LINKRELAX_FIXUP.

	* doc/internals.texi: Document TC_LINKRELAX_FIXUP.

2000-08-21  Jason Eckhardt  <jle@cygnus.com>

	* config/tc-i860.c (md_apply_fix3): Do not insert the immediate
	if the fixup resulted in a relocation.

2000-08-18  Nick Clifton  <nickc@redhat.com>

	* config/tc-arm.c (decode_shift): Replace as_tsktsk with as_warn.
	Make reference to first element of shift_names explicit.

2000-08-18  Alexandre Oliva  <aoliva@redhat.com>

	* write.c (fixup_segment) [TC_DONT_FIX_NON_ADJUSTABLE]: Use
	obj_fix_adjustable() and tc_fix_adjustable() to tell whether to
	add a symbol's address.  Removed all target-specific #ifdefs that
	used to accomplished the same.
	* config/tc-v850.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
	* config/tc-m68k.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
	* config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
	* config/tc-i960.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
	* config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.

2000-08-17  Kazu Hirata  <kazu@hxi.com>

	* dwarf2dbg.c: Fix formatting.

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

	* config/tc-arm.c (decode_shift): Allow illegal shifts by zero
	to be recoded as logical shift lefts by zero.

2000-08-16  Jim Wilson  <wilson@cygnus.com>

	* config/tc-ia64.c (specify_resource, case IA64_RS_GR): Handle
	postincrement modified registers.  Handle IA64_OPND_R3_2 addl
	source registers.
	(note_register_values): Handle IA64_OPND_R3_2 operands.

2000-08-16  Jason Eckhardt  <jle@cygnus.com>

	* config/tc-i860.c (md_operand): Silly typo fixed.

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

	* config/tc-arm.c (struct asm_shift): Delete.
	(shift[]): Delete.
	(enum asm_shift_index): New.
	(struct asm_shift_properties): New.
	(struct asm_shift_name): New.
	(shift_properties[]); New.
	(shift_names[]); New.

	(decode_shift): Use new structures.
	Issue a warning is "ROR #0" is used.
	Issue a warning if "ASR #0" or "LSR #0" is used.

	(md_begin): Initialise arm_shift_hsh table from new
	asm_shift_name array.

2000-08-16  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-sparc.c: Kill all warnings.
	(md_parse_option): Set -32/-64 for -xarch=, allow all -A archs
	in -xarch= as well.
	(md_show_usage): Update usage text.

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

	* config/tc-arm.c (do_bx): Warn about "bx px" not being very
	useful.

2000-08-15  Will Cohen  <wcohen@redhat.com>

	* config/tc-sh.h (DWARF2_LINE_MIN_INSN_LENGTH): Defined.

	* config/tc-sh.c (md_assemble): Changed so debug_type
	test performed for ppi_assemble
	* config/tc-sh.c: Included dwarf2dbg.h.
	(debug_line): Defined.
	(md_assemble): Generates dwarf2 line info.
	(sh_finalize): New function.  Finalize dwarf2 info.
	(assemble_ppi): Returns size of code generated.
	(build_Mytes): Returns size of code generated.
	(md_pseudo_table): Added "file" and "loc" psuedo ops.
	* config/tc-sh.h (md_end): Defined.
	(sh_finalize): Declared.

2000-08-15  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-sh.c (md_apply_fix) [BFD_RELOC_32, BFD_RELOC_16]: Use
	md_number_to_chars.

2000-08-14  Nick Clifton  <nickc@redhat.com>

	* config/tc-arm.c (do_bx): Allow "bx pc".

2000-08-14  Jim Wilson  <wilson@cygnus.com>

	* config/tc-ia64.c (md_longopts): Add -mconstant-gp and -mauto-pic.
	(md_parse_option):  Add OPTION_MCONSTANT_GP and OPTION_MAUTO_PIC.
	(md_begin): Change assignment to md.flag to OR in the new bit.

2000-08-14  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/obj-coff.c (obj_coff_endef) [BFD_ASSEMBLER]: Set the debug
	flag for storage types C_ARG, C_REGPARM, C_FIELD, C_MOS, C_MOE,
	C_MOU, and C_EOS.

2000-08-14  Jason Eckhardt  <jle@cygnus.com>

	* NEWS: Mention i860 support.

2000-08-14  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.h (DWARF2_LINE_MIN_INSN_LENGTH): Define.

2000-08-14  Andreas Schwab  <schwab@suse.de>

	* doc/c-arm.texi (ARM Directives): Fix warnings from makeinfo.

2000-08-11  Andreas Schwab  <schwab@suse.de>

	* doc/c-i860.texi (Opcodes for i860): Remove braces from @item
	argument.

2000-08-11  Kazu Hirata  <kazu@hxi.com>

	* expr.c: Fix formatting.
	* config/obj-bout.c: Likewise.

2000-08-10  Jason Eckhardt  <jle@cygnus.com>

	* doc/c-i860.texi: Flesh out the i860 section more.

2000-08-10  Kazu Hirata  <kazu@hxi.com>

	* symbols.c: Fix formatting.
	* expr.c: Likewise.

2000-08-09  Diego Novillo <dnovillo@cygnus.com>

	* config/tc-i386.c (md_assemble): Skip suffix check if the opcode
	modifier has the IgnoreSize bit set.

2000-08-09  Alan Modra  <alan@linuxcare.com.au>

	From  Rodney Brown  <RodneyBrown@mynd.com>
	* configure.in: Use elf on Unixware 7 (i586-sco-sysv5uw7.1.0)
	* configure: Regenerate.

2000-08-09  Kazu Hirata  <kazu@hxi.com>

	* hash.c: Fix formatting.
	* gasp.c: Likewise.

2000-08-08  Jason Eckhardt  <jle@cygnus.com>

	* config/tc-i860.h: Rework completely for BFD_ASSEMBLER.
	(i860_fix_info): New enum.
	(MD_APPLY_FIX3): Define.
	(WORKING_DOT_WORD): Define.
	(TC_HANDLES_FX_DONE): Define.
	(DIFF_EXPR_OK): Define.
	(LISTING_HEADER): Define.
	(TARGET_FORMAT): Select target format based on endian flag.
	(TARGET_BYTES_BIG_ENDIAN): Default to little endian.
	(target_big_endian): Add external declaration.

	* config/tc-i860.c: All existing code reworked completely. Other
	new code shown below.
	(SYNTAX_SVR4): Define.
	(target_warn_expand): New variable.
	(md_shortopts): Declare and define (-Qy, -Qn, and -V options).
	(md_longopts): Declare and define with new options (-EL, -EB,
	and -mwarn-expand).
	(md_show_usage): New function.
	(md_operand): New function.
	(obtain_reloc_for_imm16): New function.
	(md_apply_fix3): New function.
	(tc_gen_reloc): New function.

2000-08-08  Stephane Carrez  <Stephane.Carrez@worldnet.fr>

	* config/tc-m68hc11.c (build_jump_insn): Make sure the
	2 bytes of the jump address are in the same frag.
	(find): Accept 68hc12 register indirect modes.

	* NEWS: Mention 68HC11 & 68HC12 support.

2000-08-07  Richard Henderson  <rth@cygnus.com>

	* config/tc-ia64.c (unwind): Add prologue_mask member.
	(dot_vframe): Elide psp_gr record if it overlaps prologue_gr.
	(dot_save): Likewise for pfs_gr, rp_gr, and preds_gr.
	(dot_body): Clear unwind.prologue_mask.
	(dot_prologue): Set it.  Accept a register second argument.

2000-08-07  Kazu Hirata  <kazu@hxi.com>

	* config/atof-ieee.c: Fix formatting.
	* config/atof-tahoe.c: Likewise.

2000-08-06  Nick Clifton  <nickc@cygnus.com>

	* config/tc-sparc.c (md_begin): Fix typo in recent formatting
	work.

	* doc/as.texinfo (Pseudo Ops): Update to include descriptions
	of .popsection, .previous, .pushsection, .subsection,
	.version, .vtable_entry, .vtable_inherit and .weak.

2000-08-05  Kazu Hirata  <kazu@hxi.com>

	* config/tc-cris.c: Fix formatting.
	* config/tc-i386.c: Likewise.
	* config/tc-sparc.c (sparc_ip): Simplify the code.

2000-08-04  Kazu Hirata  <kazu@hxi.com>

	* config/tc-cris.c: Rearrange code for readability.
	* config/tc-d10v.c: Fix formatting.
	* config/tc-m32r.c: Likewise.
	* config/tc-sparc.c: Likewise.

2000-08-02  Jim Wilson  <wilson@cygnus.com>

	* config/tc-ia64.c (emit_one_bundle): Call ia64_free_opcode
	before ia64_find_opcode.
	(md_assemble): Likewise.

2000-08-01  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (do_mrs): Fix skip of 'cpsr_all' flag.
	Undo some formatting fixes.

2000-08-01  Kazu Hirata  <kazu@hxi.com>

	* config/obj-som.c: Fix formatting.
	* config/obj-ieee.c: Likewise.
	* config/tc-arm.c: Likewise.
	* config/tc-v850.c: Likewise.

2000-08-01  Nick Clifton  <nickc@redhat.com>

	* doc/c-m68k.texi (section M680x0 Options): Turn into a table
	index by command line option.

2000-08-01  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* doc/c-m68k.texi (@cindex @samp{--pcrel}): Rewrite option description.
	(@node M68K-Branch): Rewrite to match the reality.

2000-07-31  Jason Eckhardt  <jle@cygnus.com>

	* doc/c-i860.texi: New file.
	* doc/Makefile.am (CPU_DOCS): Add c-i860.texi.
	* doc/Makefile.in: Regenerate.
	* doc/all.texi: Add I860 as relevant architecture.
	* doc/as.texinfo: Include i860 dependent file c-i860.texi.

2000-07-31  Kazu Hirata  <kazu@hxi.com>

	* config/tc-d30v.c: Fix formatting.

2000-07-31  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* config/tc-m68k.c (flag_keep_pcrel, OPTION_PCREL): Add --pcrel option.
	(md_convert_frag_1, md_estimate_size_before_relax): When making DBcc
	long emit a long branch if available instead of an absolute jump, never
	emit absolute jumps for anything with --pcrel.

	* doc/c-m68k.texi: Document new command line option.

2000-07-29  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/tc-avr.c: Use PARAMS macro in function declarations.
	Don't declare md_pcrel_from_section (already in tc-avr.h).
	(avr_operands): Use AVR_UNDEF_P and AVR_SKIP_P macros.
	(avr_operand): Don't set (unsigned) op_mask to -1.

2000-07-28  Jason Eckhardt  <jle@cygnus.com>

	* configure.in: Add bits for i860-stardent-{sysv4, elf}*.
	* configure: Regenerated.
	* config/obj-elf.c (obj_elf_type): Recognize a fifth type
	of operand to the .type directive (.e.g, "type").

2000-07-28  Alan Modra  <alan@linuxcare.com.au>

	* as.h (warn_comment, found_comment, found_comment_file): Declare.
	* app.c (do_scrub_chars): Record where first comment found.
	* read.c (read_a_source_file): Init found_comment on entry, and
	notify whether comments found on exit.
	* config/tc-hppa.c (md_shortopts): Add "c".
	(md_longopts): Add warn-comment.
	(md_parse_option): Handle it.
	(md_show_usage): Show available options.
	* config/tc-hppa.h (WARN_COMMENTS): Define if TE_LINUX

2000-07-27  Andrew Cagney  <cagney@b1.cygnus.com>

	* config/tc-mn10300.c (md_convert_frag): Fix printfs.
	(tc_gen_reloc): Add cast when assigning bfd_abs_symbol to
	sym_ptr_ptr
	(md_estimate_size_before_relax): Don't fall off end of function.

2000-07-27  Kazu Hirata  <kazu@hxi.com>

	* config/tc-avr.c: Fix formatting.
	* config/tc-ns32k.c: Likewise.

2000-07-27  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-d10v.c (find_opcode): Remove extraneous `='.

2000-07-27  Kazu Hirata  <kazu@hxi.com>

	* config/tc-d10v.c: Fix formatting.
	* config/tc-z8k.c: Likewise.
	* config/tc-sparc.c: Likewise.

2000-07-26  Dave Brolley  <brolley@redhat.com>

	* cgen.c (queue_fixup): Declare opinfo.
	(gas_cgen_parse_operand): Mark unused parameters with ATTRIBUTE_UNUSED.
	(gas_cgen_md_operand): Ditto.
	(gas_cgen_md_apply_fix3): Ditto.

2000-07-24  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/obj-coff.c (obj_frob_symbol): Don't merge
	labels. Don't merge if the symbol isn't constant. Return
	immediately if a symbol is merged.

2000-07-22  Alan Modra  <alan@linuxcare.com.au>

	* frags.c (frag_align): Correct absolute section alignment.

2000-07-20  DJ Delorie  <dj@redhat.com>

	* config/obj-coff.c (obj_frob_symbol): revert previous change,
	it breaks linking against DLLs.

2000-07-20  Hans-Peter Nilsson  <hp@axis.com>

	* configure.in: Add CRIS support.
	* configure: Regenerate.
	* Makefile.am: (CPU_TYPES): Add cris.
	(CPU_OBJ_VALID) [aout]: Add cris.
	(MULTI_CPU_TYPES): Add cris.
	(MULTI_CPU_OBJ_VALID) [aout]: Add cris.
	[coff]: Only i386 and mips are valid.
	(TARGET_CPU_CFILES): Add config/tc-cris.c.
	(TARGET_CPU_HFILES): Add config/tc-cris.h.
	(MULTI_CFILES): Add config/e-crisaout.c and config/e-criself.c.
	Regenerate dependencies.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* as.c: Declare crisaout, criself.
	* config/tc-cris.h, config/tc-cris.c: New.
	* config/e-criself.c, config/e-crisaout.c: New.
	* po/POTFILES.in, po/gas.pot: Regenerate.

2000-07-20  Kazu Hirata  <kazu@hxi.com>

	* read.c: Fix formatting.
	* write.c: Fix formatting.

2000-07-19  H.J. Lu  <hjl@gnu.org>

	* sb.c: Include <stdlib.h> if exists for abort ().

2000-07-19  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (hppa_fix_adjustable): Correct LR%/RR% comment.
	(arg_reloc_stub_needed): #ifdef OBJ_SOM, not #ifdef SOM.
	(pa_type_args): Same here.

2000-07-17  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/obj-coff.c (obj_frob_symbol): Don't merge labels. Don't
	merge if the symbol isn't constant. Don't call S_SET_EXTERNAL if
	the storage class is already set.

2000-07-17  Kazu Hirata  <kazu@hxi.com>

	* config/tc-m68hc11.c: Fix formatting.
	* config/tc-mn10200.c: Likewise.
	* config/tc-mn10300.c: Likewise.
	* config/tc-pj.c: Likewise.
	* config/tc-tic80.c: Likewise.
	* config/tc-w65.c: Likewise.

2000-07-17  Frank Ch. Eigler  <fche@redhat.com>

	* expr.c (operand): Permit %bin literals if LITERAL_PREFIXPERCENT_BIN
	is defined.

2000-07-15  Ian Lance Taylor  <ian@zembu.com>

	* doc/c-mips.texi (MIPS Opts): Remove erroneous space after
	@code.

2000-07-15  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (hppa_fix_adjustable): Use the same checks for
	ELF as are used for SOM (except the 32-bit reloc one) to decide
	whether a symbol can be reduced to a section symbol.  Expand on
	the comment for symbols involved in LR% and RR% expressions.

2000-07-14  Nick Clifton  <nickc@cygnus.com>

	* config/tc-mips.c (mips_disable_float_construction): New
	static variable.  Set to true if doubles should not be
	constructed by loading two single width fp registers with
	halves of the value.
	(mips_ip): Test mips_disable_float_construction.
	(md_longopts): Add command line switches --construct-floats
	and --no-construct-floats.
	(md_parse_option): Parse new command line options.
	(md_show_usage): Describe new command line options.

	* doc/c-mips.texi: Document new command line options.

2000-07-13  Koundinya K  <kk@ddeorg.soft.net>

	* configure.in: Remove the test /usr/dde for mips-*-sysv4*MP*
	* configure: Regenerate.

2000-07-13  Hans-Peter Nilsson  <hp@axis.com>

	* configure.in (DEFAULT_EMULATION setting): Revert part of
	2000-07-01 change that set te_multi=multi unless set to tmips.
	* configure: Regenerate.

2000-07-12  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/obj-coff.c (coff_frob_section): Add padding to the last
	section when aligning it increases its size.

2000-07-11  Kazu Hirata  <kazu@hxi.com>

	* config/tc-tic54x.c: Fix formatting.

2000-07-10  Kazu Hirata  <kazu@hxi.com>

	* config/tc-h8500.c: Fix formatting.
	* config/tc-tic54x.c: Fix formatting.

2000-07-10  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (md_apply_fix): Check fmt 12 and 22 pc-rel
	displacements correctly.

	* read.h (s_abort): Add ATTRIBUTE_NORETURN.

2000-07-10  Ryan Bradetich  <rbradetich@uswest.net>

	* hash.c (hash_insert): Add cast to obstruct_alloc to fix
	warning.
	(hash_jam): Ditto.

2000-07-09  Alan Modra  <alan@linuxcare.com.au>

	From  David Huggins-Daines  <dhd@linuxcare.com>
	* config/te-hppalinux64.h: Add a new emulation.
	* configure.in (emulations): Add configure bits to support the
	64-bit Linux/parisc target.
	* configure: Regenerate.

	* config/tc-hppa.c (md_parse_option): Support `-V' for ELF.
	(md_shortopts): Add `V' for ELF.

	* config/tc-hppa.c (arg_reloc_stub_needed): Define as zero except
	when SOM or ELF_ARG_RELOC are defined.
	(pa_type_args): Only set symbol_arg_reloc_info when SOM or
	ELF_ARG_RELOC are defined.
	(pa_stringer_aux): Don't pa_check_current_space_and_subspace here..
	(pa_stringer): ..Do it here instead.  Fix comment typos.
	(hppa_force_relocation): Cast enums to int before comparing with
	ints.

	From  Ryan Bradetich  <rbradetich@uswest.net>
	* config/tc-hppa.c: Removed unneeded libbfd.h to fix macro
	redifinition warning.
	(md_apply_fix): Added cast from enum to int for fixP->fx_r_type.
	(hppa_force_relocation): ditto
	(md_apply_fix): Added cast to buf to fix warnings.

	* config/tc-hppa.h (pa_define_label, parse_cons_expression_hppa,
	cons_fix_new_hppa, hppa_force_relocation): Prototype.

	* config/tc-hppa.c (reloc_type): It's an enum for OBJ_ELF.
	(R_N0SEL, R_N1SEL): Define only for OBJ_SOM.
	(tc_gen_reloc): Make `code' a reloc_type and `codes' a
	reloc_type** to avoid warnings in switch.
	(md_apply_fix): Make insn, val signed.  Zap buf_wd and read insn a
	little earlier instead.

	* config/tc-hppa.c (symbol_arg_reloc_info): Define for both som
	and elf.
	(pa_type_args): Use symbol_arg_reloc_info.
	(struct pa_it): Make arg_reloc unsigned int.
	(struct hppa_fix_struct): Likewise for fx_arg_reloc.
	(pa_text, pa_data, pa_comm): Don't compile for TE_LINUX.
	(pa_code): Delete.  pa_text duplicates this function.
	(md_pseudo_table): Call obj_elf_text for ".code" if TE_LINUX.
	(fix_new_hppa): Argument offset is offsetT, arg_reloc is unsigned
	int.
	(cons_fix_new_hppa): Actually change selector to e_fsel when
	warning about assuming so.
	(tc_gen_reloc): More example elf arg reloc code.
	(md_apply_fix): Use arg_reloc_stub_needed for elf too.
	(hppa_force_relocation): Likewise.

	* config/tc-hppa.h: Use TARGET_ARCH_SIZE to select target include
	files.
	(pa_end_of_source): Prototype.
	(hppa_fix_adjustable): Prototype.
	(LABELS_WITHOUT_COLONS): Move it..
	* config/te-hppa.h: To here.

	* config/te-hppa64.h: New file.

	* config/tc-hppa.c: Use TARGET_ARCH_SIZE to select target reloc
	type.
	(md_apply_fix): Pass stdoutput to bfd_hppa_insn2fmt.  Handle
	format -10, -16, 16 relocs.
	(hppa_elf_mark_end_of_function): Test for null
	last_call_info->start_symbol

	* config/tc-hppa.c (pa_ip): In case 'V', pass `strict' to
	CHECK_FIELD, not INSERT_FIELD_AND_CONTINUE.  Don't pass opcode to
	re_assesmble_* functions.  Delete extraneous statements.  Fix
	typos in comments.
	(md_apply_fix): Compare against 1048575 in case 21.  Don't pass
	insn to re_assemble_*.

2000-07-08  Ulf Carlsson  <ulfc@engr.sgi.com>

	* doc/internals.texi (Expressions): Fix typo.

2000-07-08  Kazu Hirata  <kazu@hxi.com>

	* config/tc-sh.c: Fix formatting.
	* config/tc-tic54x.c: Fix formatting.
	* depend.c: Fix formatting.
	* flonum-konst.c: Likewise.
	* flonum-mult.c: Likewise.

2000-07-07  Kazu Hirata <kazu@hxi.com>

	* config/tc-sh.c: Fix comments.
	* config/obj-vms.c: Fix comments.
	* config/tc-a29k.c: Likewise.
	* config/tc-alpha.c: Likewise.
	* config/tc-h8300.c: Likewise.
	* config/tc-h8500.c: Likewise.
	* config/tc-i370.c: Likewise.
	* config/tc-ia64.c: Likewise.
	* config/tc-m68hc11.c: Likewise.
	* config/tc-m68k.c: Likewise.
	* config/tc-mips.c: Likewise.
	* config/tc-ns32k.c: Likewise.
	* config/tc-ppc.c: Likewise.
	* config/tc-z8k.c: Likewise.

2000-07-06  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/obj-coff.c (TC_COFF_SECTION_DEFAULT_ATTRIBUTES): New.
	Default to '(SEC_LOAD | SEC_DATA)'.
	(obj_coff_section) [BFD_ASSEMBLER]: Use it.

	* doc/internals.texi (CPU Backend): Describe
	TC_COFF_SECTION_DEFAULT_ATTRIBUTES.

2000-06-06  Andrew Cagney  <cagney@b1.cygnus.com>

	* as.c (parse_args): NULL terminate the long option list.

2000-06-04  Andrew Cagney  <cagney@b1.cygnus.com>

	* config/tc-d30v.h: Include "write.h" for fixS.
	(d30v_start_line, md_pcrel_from_section): Add function prototypes.

2000-07-05  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (write_2_short): Further changes to warning
	messages produced when combining EITHER_BUT_PREFER_MU attributed
	opcodes.

2000-07-05  DJ Delorie  <dj@redhat.com>

	* MAINTAINERS: new

2000-07-04  Alexandre Oliva  <aoliva@redhat.com>

	* config/tc-arm.c (psrs): Accept combinations of flags.

2000-07-03  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/tc-avr.c: Change _ () to _() around all strings marked
	for translation (exception from the usual coding style).
	(avr_opt): New struct variable, how the new switches are set.
	(OPTION_MMCU): Define as 'm' and actually use.
	(md_longopts): Add -mall-opcodes, -mno-skip-bug, -mno-wrap.
	(show_mcu_list): New function, display the list of known MCUs.
	(md_show_usage): Document the new switches.  Call show_mcu_list.
	(avr_set_arch): Change 'm' to OPTION_MMCU.
	(md_parse_option): Call show_mcu_list if unknown MCU specified.
	Handle the new switches.
	(avr_operands): Disable warnings for undefined combinations of
	operands if -mall-opcodes.  Disable warnings for skipping two-word
	instructions if enhanced core or -mno-skip-bug.
	(avr_operand): Accept all addressing modes on avr1 if -mall-opcodes.
	(md_apply_fix3): Reject 8K wrap if >8K or -mno-wrap.
	(md_assemble): Accept opcodes not supported by MCU if -mall-opcodes.
	(avr_ldi_expression): Warn about implicit lo8().
	* config/tc-avr.h (md_pcrel_from_section): Add prototype.

2000-07-01  Koundinya K  <kk@ddeorg.soft.net>

	* configure.in: Add entry for mips-*-sysv4*MP*
	* configure: Rebuild
	* config/tc-mips.c (mips_target_format): Return elf32-tradbigmips or
	elf32-tradlittlemips for traditional mips targets.
	* config/tc-mips.c (md_estimate_size_before_relax): Duplicate the
	test for Link Once sections as in adjust_reloc_syms.
	* config/te-tmips.h: New file for traditional mips targets. Define
	TE_TMIPS.

2000-06-29 Mark Elbrecht <snowball3@bigfoot.com>

	* config/obj-coff.c (obj_coff_setcion) [BFD_ASSEMBLER]: If the
	flags argument is not present, don't change an existing section's
	section's attributes. If the flags argument is present, warn if the
	attributes don't match the section's current attributes. When
	long section names are supported, set SEC_LINK_ONCE and
	SEC_LINK_DUPLICATES_DISCARD for a new .gnu.linkonce section.

2000-06-29  Hans-Peter Nilsson  <hp@axis.com>

	* config/obj-aout.c (obj_aout_type): Do not ignore for undefined
	symbols; create them.

2000-06-29 Mark Elbrecht <snowball3@bigfoot.com>

	* write.c (set_segment_vma): New: Set vma and lma for a segment.
	(write_object_file) [BFD_ASSEMBLER && OBJ_COFF && TE_GO32]: Use it.

2000-06-27  Aldy Hernandez  <aldyh@redhat.com>

	* config/tc-mips.c (mips_ip): handle "(foo-.-4)" type of
	expressions.  Ignore the problem when handling 16 bit signed
	immediates, because the assembler will take care of the relocation
	later.

2000-06-27  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (write_2_short): Do not allow opcodes with
	the EITHER_BUT_PREFER_MU attribute to be combined into a reverse
	sequential order, and emit warning messages if the input source
	code contains constructs like that, or parallel constructs
	containing such opcodes.

2000-06-26  Marek Michalkiewicz  <marekm@linux.org.pl>

	* config/tc-avr.c (mcu_types): Rename avr4 to avr5, add avr4.
	Add more MCU types for avr4 and avr5.  Replace at94k{10,20,40}
	with just at94k.  Change AVR_ISA_85xx back to AVR_ISA_2xxx.
	(md_show_usage): Update usage message.
	(md_parse_option): Allow redefinition of MCU type within the
	same avr[1-5] bfd machine type.  Show both old and new MCU type
	in the error message.
	(md_apply_fix3): Support 8K wrap if AVR_ISA_MEGA is not set.
	Simplify 8K wrap code.

2000-06-25  Kazu Hirata  <kazu@hxi.com>

	* config/obj-aout.c: Remove all uses of DEFUN.
	* config/obj-ieee.c: Likewise.
	* config/tc-sh.c: Fix comment typos.
	* config/tc-tahoe.c: Likewise.
	* config/tc-vax.c: Likewise.
	* config/tc-w65.c: Likewise.
	* config/tc-z8k.c: Likewise.
	* config/tc-h8300.c (build_bytes): Assemble ldmac correctly.

2000-06-24  DJ Delorie  <dj@cygnus.com>

	* config/tc-i386.c (md_estimate_size_before_relax): Revert
	more changes from Sept 1999
	(tc_i386_fix_adjustable): ditto
	(md_apply_fix3): ditto

2000-06-24  Frank Ch. Eigler  <fche@redhat.com>

	* cgen.c (expr_jmp_buf_p): New validity flag for expr_jmp_buf.
	(gas_cgen_parse_operand): Set it around expression() call.
	(gas_cgen_md_operand): Test for it before longjmp().

2000-06-24  Kazu Hirata  <kazu@hxi.com>

	* config/tc-h8500.c: Remove all uses of DEFUN.
	* config/tc-sh.c: Likewise.
	* config/tc-w65.c: Likewise.
	* config/tc-z8k.c: Likewise.

	* config/tc-h8500.c: Fix typos in comments.

2000-06-23  Frank Ch. Eigler  <fche@redhat.com>

	* expr.c (operand): Permit $hex literals if LITERAL_PREFIXDOLLAR_HEX
	is defined.

2000-06-23  matthew green  <mrg@redhat.com>

	* expr.c (operand): Do not as_bad() if RELAX_PAREN_GROUPING is
	defined.  Fix error message for `[' grouping.

2000-06-22  Kazu Hirata  <kazu@hxi.com>

	* config/tc-h8300.c: Fix formatting and comment typos.

2000-06-22  Timothy Wall  <twall@cygnus.com>

	* config/tc-ia64.c (note_register_values): Move premature QP
	notation clearing into the appropriate place.

2000-06-22  Alan Modra  <alan@linuxcare.com.au>

	* dep-in.sed: Escape literal `.'s on patterns.  Trim off `../'
	first before anything else.  Add bin-bugs.h, emul.h and progress.h
	Sort list of files as for $(OBJS) in Makefile.am.

	* Makefile.am (DEP): grep for leading `/' in DEPA, and fail if we
	find one.  Remake dependencies.
	($(OBJS)): Add bin-bugs.h, emul.h, and progress.h  Sort the list.
	* Makefile.in: Regenerate.
	* doc/Makefile.in: Regenerate.

	* config/tc-i386.c (i386_displacement): Don't assume a constant
	displacement is necessarily 16 bits when in 16 bit code mode.
	(md_assemble): Instead size the displacement here after we know
	for sure that a .code16gcc operand hasn't automatically added
	operand size prefixes.

2000-06-21  H.J. Lu  <hjl@gnu.org>

	* Makefile.am: Rebuild dependency.
	* Makefile.in: Rebuild.

2000-06-21  Kazu Hirata  <kazu@hxi.com>

	* config/tc-h8300.c (parse_reg): Make the function static.
	(parse_exp): Likewise.

2000-06-20  DJ Delorie  <dj@cygnus.com>

	* config/tc-i386.c (tc_i386_fix_adjustable): Revert change from
	Sept 1999; RVA relocs need to be treated more like DIR32 relocs
	for cygwin import libraries to work properly.

2000-06-20  H.J. Lu  <hjl@gnu.org>

	* Makefile.am: Rebuild dependency.
	* Makefile.in: Rebuild.
	* configure: Likewise.
	* doc/Makefile.in: Likewise.

2000-06-20  Timothy Wall  <twall@cygnus.com>

	* doc/internals.texi (CPU backend): Add @itemx for
	TC_START_LABEL_WITHOUT_COLON.
	* doc/c-tic54x.texi: New.
	* doc/as.texinfo: Add tic54x features and include primary tic54x
	documentation file.
	* doc/all.texi: Add C54X.
	* doc/Makefile.am (CPU_DOCS): Add c-tic54x.texi.
	* doc/Makefile.in: Regenerate.
	* configure.in: Add tic54x and define LIBM for tic54x.
	* configure: Regenrate.
	* config/tc-tic54x.[ch]: New.
	* config/obj-coff.h: Add tic54x.
	* Makefile.am: (CPU_TYPES): Add tic54x.
	(TARGET_CPU_CFILES): Add 'tc-tic54x.c'.
	(TARGET_CPU_HFILES): Add 'tc-tic54x.h'.
	(as_new_LDADD): Add $(LIBM).
	* Makefile.in: Regenerate.

2000-06-18  Stephane Carrez  <stcarrez@worldnet.fr>

	* doc/Makefile.am (CPU_DOCS): Added 68hc11 file.
	* doc/c-m68hc11.texi: Document 68HC11 and 68HC12 port.
	* doc/as.texinfo: Likewise.

	* configure, Makefile.in: Regenerate.
	* configure.in (emulations): Recognize m6811 and m6812.
	* Makefile.am (CPU_TYPES, TARGET_CPU_CFILES, TARGET_CPU_HFILES):
	Added files for 68hc11 and 68hc12 assembler.
	* config/tc-m68hc11.c: Assembler for 68hc11 and 68hc12.
	* config/tc-m68hc11.h: Header definition for that assembler.

2000-06-18  Nick Clifton  <nickc@redhat.com>

	* symbols.c (resolve_symbol_value): Use bfd_octets_per_byte
	instead of OCTETS_PER_BYTE.

	* config/tc-v850.c: Fix compile time warnings.
	* config/tc-ppc.c: Fix compile time warnings.

2000-06-18  H.J. Lu <hjl@gnu.org>

	* configure.in: Don't emulate i386-pc-pe-coff with i386coff.
	* configure: Rebuild.

2000-06-17 Mark Elbrecht <snowball3@bigfoot.com>

	* config/obj-coff.c (obj_coff_weak): Typo fix: Change BFD_ASSEMLER
	to BFD_ASSEMBLER.

2000-06-16  Nick Clifton  <nickc@cygnus.com>

	* config/tc-mips.c (md_parse_option): Accept RM5200,RM5230,
	RM5231, RM5261, RM5721 and RM7000 as r5000 cpu variants.

	* doc/c-mips.texi: Document newly accepted cpu variants.

2000-06-15  Ulf Carlsson  <ulfc@engr.sgi.com>

	* config/tc-mips.h: Remove definition of ONLY_STANDARD_ESCAPES.

2000-06-13  Ulf Carlsson  <ulfc@engr.sgi.com>

	* macro.c (getstring): Make it possible to escape the quote
	character.

2000-06-13  Catherine Moore <clm@redhat.com>

	* config/tc-hppa.c (pa_export): Weak symbols can be global.

2000-06-13  H.J. Lu  <hjl@gnu.org>

	* configure: Regenerate.

2000-06-09  Alan Modra  <alan@linuxcare.com.au>

	* app.c (do_scrub_begin): Don't default lex[';'] as a line
	separator.
	* doc/internals.texi (line_separator_chars): Semicolon is no
	longer a default.  Mention null and newline as defaults.

	* read.c (is_end_of_line): Remove ifdef TC_HPPA.

	* config/tc-i386.h (line_separator_chars): Explicitly mention `;'
	* config/tc-i860.h (line_separator_chars): Likewise.
	* config/tc-h8300.c (line_separator_chars): Likewise.
	* config/tc-i960.c (line_separator_chars): Likewise.
	* config/tc-m68k.c (line_separator_chars): Likewise.
	* config/tc-mips.c (line_separator_chars): Likewise.
	* config/tc-ns32k.c (line_separator_chars): Likewise.
	* config/tc-sparc.c (line_separator_chars): Likewise.
	* config/tc-vax.c (line_separator_chars): Likewise.

	* config/tc-h8300.c (comment_chars): Use string initialiser.
	* config/tc-i960.c (line_comment_chars): Likewise.
	* config/tc-z8k.c (comment_chars, line_comment_chars,
	line_separator_chars): Likewise.

	* config/tc-arm.c (line_separator_chars): Always use `;', not just
	for TE_LINUX.

2000-06-08  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (cons_fix_new_arm): Assign correct reloc value
	for size 1 fixes.

2000-06-08  David O'Brien  <obrien@FreeBSD.org>

	* configure.in (VERSION): Update to show this is the CVS mainline.

2000-06-08  Matthew Jacob  <mjacob@feral.com>

	* config/tc-alpha.c (md_undefined_symbol): Properly understand that
	$at is the integer register $r28, vs. both $r28 and the floating
	point register $f28.

2000-06-08  James E. Wilson  <wilson@cygnus.com>

	* config/tc-ia64.c (generate_unwind_image): Call ia64_flush_insns.
	(dot_endp): Don't call ia64_flush_insns.
	(emit_one_bundle): Don't delete prologue/body records from
	unwind_record list in first loop.  Rewrite second loop to account for
	this.

2000-06-07  David Mosberger  <davidm@hpl.hp.com>

	* config/tc-ia64.c: Add missing prototypes.
	(generate_unwind_image): Cast argument to output_unw_records call.

2000-06-07  Denis Chertykov  <denisc@overta.ru>

	* config/tc-avr.c (avr_operand): fix the formatting of the comment.

2000-06-07  Denis Chertykov  <denisc@overta.ru>

	* config/tc-avr.c (AVR_ISA_???): moved to include/opcode/avr.h
	(REGISTER_P): likewise.
	(avr_opcodes): uses include/opcode/avr.h
	(avr_operand): enable ld r,Z or st r,Z for at90s1200.

2000-06-04  Alan Modra  <alan@linuxcare.com.au>

	* read.c (is_end_of_line): No ';' for TC_HPPA.  Add missing
	initializers too.

2000-06-03  H.J. Lu  <hjl@gnu.org>

	* read.c (is_end_of_line): Put back `;'.

2000-06-03  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c (md_shortopts): Remove 'm', add 'q' to non-elf.

2000-06-01  Alan Modra  <alan@linuxcare.com.au>

	* expr.c (operand): Test is_end_of_line outside switch to catch
	line separator chars that are also operators.
	(operator): Return O_illegal for line separator chars.

	* read.c (is_end_of_line): Use 1 instead of 99.  Don't set `;'
	entry (or `!' entry for TC_HPPA).

	* config/tc-arm.c (my_get_float_expression): Cast to unsigned char
	before indexing is_end_of_line.  Remove redundant check for '\0'.
	(fp_op2): Likewise.
	* config/tc-h8500.c (md_assemble): Likewise.
	* config/tc-mcore.c (md_assemble): Likewise.
	* config/tc-tic30.c (tic30_find_parallel_insn): Likewise.
	(md_atof): Likewise

	* config/tc-m88k.c (s_bss): Cast to unsigned char before indexing
	is_end_of_line.
	* config/tc-mcore.c (mcore_cons): Likewise.
	(mcore_float_cons): Likewise.
	(mcore_stringer): Likewise.
	* config/tc-tic30.c (tic30_find_parallel_insn): Likewise.

2000-06-01  Scott Bambrough <scottb@netwinder.org>

	* config/tc-arm.c (do_mrs): Allow SPSR_BIT to be set correctly.

2000-05-29  Nick Clifton  <nickc@cygnus.com>

	* config/tc-sh.c: Fix compile time warning messages.

	* config/tc-mips.c: Fix compile time warning messages.

2000-05-29  Philip Blundell  <philb@gnu.org>

	* doc/as.texinfo: Update copyright dates.
	(Local Labels): Delete misplaced mention of ARM.
	* NEWS: Mention ARM ELF support.

2000-05-27  Alexandre Oliva  <aoliva@cygnus.com>

	* config/tc-mn10300.c (md_assemble): Copy size to real_size before
	it is modified, and use the real_size to compute the frag address
	for dwarf2 line info.

2000-05-27  Alan Modra  <alan@linuxcare.com.au>

	* Makefile.am (DEP, DEP1, dep, dep-in, dep-am): Use a better sed
	line-matching scheme to cope with automake moving variables around.
	($(TARG_CPU_O)): Remove dependency on TARG_CPU_DEP_@target_cpu_type@
	* Makefile.in: Regenerate.

2000-05-26  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-sparc.c (sparc_relax): New.
	(md_longopts): Add -relax and -no-relax options.
	(md_parse_options, md_show_usage): Likewise.
	(md_apply_fix3): Optimize tail call into branch always if possible.

2000-05-04  Donald Lindsay  <dlindsay@cygnus.com>

	* config/tc-d10v.c (write_2_short, parallel_ok, md_assemble,
	d10v_cleanup) implement Mitsubishi's newly explained branch-packing
	rules, with warning when a GAS statement specifies a packing that
	will result in an instruction being squashed.
	Added typdef packing_type and enumerals, changed various integer
	literals to use the enumerals.

2000-05-24  David Mosberger  <davidm@hpl.hp.com>

	* config/tc-ia64.c (dot_restorereg_p): New function.
	(md_pseudo_table): Add restorereg.p.
	(output_X3_format): Fix typo: record type should be UNW_X3, not UNW_X1.
	(output_X4_format): Fix typo: record type should be UNW_X4, not UNW_X2.

	* config/tc-ia64.h (unw_record_type): Add unwabi.
	(unw_r_record): Rename member MASK to GRMASK.  Add sub-structure
	called MASK with members for imask, and the masks produced by
	fr_mem, gr_mem, br_mem, and frgr_mem.
	(unw_p_record): Add members ABI and CONTEXT.
	(unw_x_record): Add member AB.
	* config/tc-ia64.c (enum reg_symbol): Add REG_PSP and REG_PRIUNAT
	as pseudo-register for use during unwind info generation.
	(AR_PFS, AR_LC): New macros.
	(enum pseudo_type): Add PSEUDO_FUNC_REG to permit declaring registers
	whose names start with an at sign (as in "@priunat").
	(pseudo_func): Add "svr4", "hpux", "nt" constants and "priunat"
	register.
	(unwind_list, unwind_tail, current_unwind_entry, proc_start,
	proc_end, unwind_info, personality_routine): Consolidate into
	"unwind" structure to reduce offset-table use.  Add member
	NEXT_SLOT_NUMBER to track the slot number for the next instruction
	to be emitted.
	(output_R1_format, output_R3_format, output_P3_format,
	output_P6_format): Initialize R with zero to reduce compiler warnings.
	(output_P7_format): Ditto.  Add `default' branch to switch
	statement to reduce compiler warnings.
	(output_P8_format, output_B1_format, output_B4_format): Ditto.
	(output_P4_format): Rename 2nd & 3rd arg to IMASK and IMASK_SIZE.
	(format_ab_reg): Rename from format_a_b_reg.  Merge A and B args
	into single argument.
	(output_X1_format, output_X3_format): Initialize R with zero to reduce
	compiler warnings.  Merge A and B args into single argument.
	(output_X2_format, output_X4_format): Remove unused variable R.  Merge
	A and B args into single argument.
	(free_record): Removed (wasn't used).
	(free_list_records): Also free imasks in prologue records.
	(output_prologue, output_prologue_gr): Initialize mask bits to zero.
	(output_spill_mask): Remove.
	(output_unwabi): New function.
	(output_epilogue, output_label_state, output_copy_state): Call
	alloc_record.
	(output_spill_psprel, output_spill_sprel, output_spill_psprel_p,
	output_spill_sprel_p, output_spill_reg, output_spill_reg_p): Add AB
	argument.
	(process_one_record): New locals FR_MASK and GR_MASK.  Ignore
	gr_mem, fr_mem, br_mem, and frgr_mem records and instead emit them
	as part of handling the prologue records.  Emit region's imask if
	we have one.  Handle unwabi, epilogue, label_state, copy_state,
	spill_psprel, spill_sprel, spill_reg, spill_psprel_p,
	spill_sprel_p, and spill_reg_p records.
	(set_imask, count_bits, slot_index): New function.
	(fixup_unw_records): Fix region size computation.  Handle
	epilogue, spill_reg, spill_sprel, spill_psprel, spill_reg_p,
	spill_sprel_p, and spill_psprel_p records.  Merge mask bits of
	frgr_mem, fr_mem, gr_mem, br_mem on a per-region basis and
	set_imask accordingly.  Update imask for gr_gr, and br_gr records.
	(convert_expr_to_ab_reg, convert_expr_to_xy_reg): New function.
	(dot_save): Use manifest constants for applicaton registers.
	Handle REG_PR and REG_PRIUNAT.
	(dot_restore): Don't just ignore it.
	(dot_restorereg): New function..
	(generate_unwind_image): Ensure unwind info is a multiple of eight
	bytes, not just four bytes.
	(dot_handlerdata, dot_unwentry): Demand empty rest of line.
	(dot_altrp): Don't just ignore it.
	(dot_savemem): New function.  Replaces dot_savesp() and
	dot_savepsp().  Use manifest constants for applicaton registers.
	Handle REG_PR and REG_PRIUNAT.
	(dot_savef): Simplify.
	(dot_saveb): Support generation of br_gr.
	(dot_spillreg, dot_spillmem, dot_spillreg_p, dot_spillmem_p,
	 dot_label_state, dot_copy_state): New function.
	(dot_unwabi): Don't just ignore it.
	(md_pseudo_table): Add restorereg, spillreg, spillsp, spillpsp,
	spillreg.p, spillsp.p, spillpsp, label_state, copy_state,
	unwabi, vframesp, and vframepsp.  Fix typo alprp->altrp.
	(emit_one_bundle): Set slot number for prologue/body records
	*before* emitting the first insn.
	(emit_one_bundle): Set UNWIND.NEXT_SLOT_NUMBER.
	(md_begin): Declare "psp" pseudo-register.
	(md_operand): Handle PSEUDO_FUNC_REG.  Fix printing of error message
	so we don't get segfault.
	(output_psp_sprel): Output sp/psp relative offsets as 4-byte word
	counts as required per SW Conventions manual
	(output_rp_psprel, output_rp_sprel, output_pfs_psprel,output_pfs_sprel,
	output_preds_psprel, output_preds_sprel, output_spill_base,
	output_unat_psprel, output_unat_sprel, output_lc_psprel,
	output_lc_sprel, output_fpsr_psprel, output_fpsr_sprel,
	output_priunat_psprel, output_priunat_sprel, output_bsp_psprel,
	output_bsp_sprel, output_bspstore_psprel, output_bspstore_sprel,
	output_rnat_psprel, output_rnat_sprel, output_spill_psprel,
	output_spill_sprel, output_spill_psprel_p, output_spill_sprel_p):Ditto.
	(dot_vframe): Implement.
	(dot_vframesp, dot_vframepsp): New function.

2000-05-23  Hans-Peter Nilsson  <hp@axis.com>

	* configure.in (i386-*-freebsd a.out entry): Quote properly.
	* configure: Regenerate.

2000-05-23  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c (md_assemble): Pass jump reloc in fr_var...
	(md_estimate_size_before_relax): so we can use it here instead of
	old kludges.  Localise vars to blocks.  Comment.

	* frags.c (frag_new): Update fr_var comments.
	* frags.h (struct frag): Ditto.

2000-05-22  Richard Henderson  <rth@cygnus.com>

	* config/tc-ia64.c (FUNC_PC_RELATIVE): New.
	(pseudo_func): Add pcrel.
	(operand_match):  Handle IA64_OPND_TGT64.
	(build_insn): Likewise.
	(md_begin): Initialize pseudo_func[FUNC_PC_RELATIVE].
	(ia64_gen_real_reloc_type): Handle FUNC_PC_RELATIVE.
	(fix_insn): Handle all three 64-bit relocation types.

2000-05-22  Hans-Peter Nilsson  <hp@axis.com>

	* obj.h (struct format_ops): New members begin, app_file,
	s_set_other, s_set_desc, s_get_type, s_set_type,
	separate_stab_sections, init_stab_section.

	* config/obj-multi.h: Update GPL notice to v2.
	(obj_begin): New.
	(obj_app_file): New.
	(S_SET_SIZE): Test s_set_size for NULL before calling.
	(S_SET_ALIGN): Similar for s_set_align.
	(S_SET_OTHER): New.
	(S_SET_DESC): New.
	(S_GET_TYPE): New.
	(S_SET_TYPE): New.
	(SEPARATE_STAB_SECTIONS): New.
	(INIT_STAB_SECTION): New.
	(EMIT_SECTION_SYMBOLS): New.
	(AOUT_STABS) [OBJ_MAYBE_AOUT]: Define.

	* config/obj-elf.h: Update GPL notice to v2.
	Mention that this file is included from obj-multi.h.
	(obj_begin): Wrap definition in ifndef.
	(elf_file_symbol): Constify declaration.
	(obj_app_file): Ditto.
	(SEPARATE_STAB_SECTIONS, INIT_STAB_SECTION, OBJ_PROCESS_STAB):
	Wrap in ifndef SEPARATE_STAB_SECTIONS.

	* config/obj-elf.c (elf_s_set_other): New.
	(elf_file_symbol): Constify argument.
	(elf_separate_stab_sections): New.
	(elf_init_stab_section): New.
	(elf_format_ops): Add new members.  Remove comma at end.

	* config/obj-ecoff.c (ecoff_separate_stab_sections): New.
	(ecoff_format_ops): Add new fields.  Remove comma at end.
	Mention inconsistency for emit_section_symbols.

	* config/obj-coff.h (c_dot_file_symbol): Constify declaration.

	* config/obj-coff.c (c_dot_file_symbol): Constify argument.
	(coff_separate_stab_sections): New.
	(coff_format_ops): Add new members.

	* config/obj-aout.c (obj_aout_sec_sym_ok_for_reloc): New.
	(obj_aout_s_set_other): New.
	(obj_aout_s_set_desc): New.
	(obj_aout_s_get_type): New.
	(obj_aout_s_set_type): New.
	(obj_aout_separate_stab_sections): New.
	(aout_format_ops): New members added.  Use obj_aout_process_stab,
	not 0.  Use obj_aout_sec_sym_ok_for_reloc, not 0.
	(obj_aout_frob_symbol): Add ATTRIBUTE_UNUSED to args as
	appropriate.
	(obj_aout_line, obj_aout_weak, obj_aout_type): Ditto.

2000-05-22  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c (tc_i386_fix_adjustable): Prevent adjustment
	for OBJ_MAYBE_ELF too.  Use S_IS_EXTERNAL instead of S_IS_EXTERN.
	(md_estimate_size_before_relax): Ensure jumps to weak and
	externally visible symbols are relocatable.

2000-05-20  Hans-Peter Nilsson  <hp@axis.com>

	* stabs.c (aout_process_stab): Make global.
	(s_desc): Add ATTRIBUTE_UNUSED to args as appropriate.
	* read.h (aout_process_stab): Declare.

	* configure.in (EMULATIONS) [i386aout, i386coff, i386elf]:
	Generalize to *aout, *coff *elf.
	* configure: Regenerated.

	* doc/internals.texi (Object format backend): Say
	SEPARATE_STAB_SECTIONS needs to be nonzero, not just defined.

	* Makefile.am (TARG_ENV_HFILES): Delete te-multi.h.
	* Makefile.in: Regenerated.

2000-05-19  Catherine Moore  <clm@cygnus.com>

	* cgen.h (GAS_CGEN_MAX_FIXUPS): Check if already defined.

2000-05-18  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-hppa.c (md_apply_fix): Mask out immediate bits of
	instruction to reflect change in re_assemble_*.

2000-05-18  Jeffrey A Law  (law@cygnus.com)

	* configure.in (hppa-*-hpux11*): If the cpu is hppa*64*, then
	build PA64 ELF tools.
	* configure: Rebuilt.

2000-05-17  Alan Modra  <alan@linuxcare.com.au>

	* Makefile.am: Regenerate dependencies.
	* Makefile.in: Regenerate.

2000-05-15  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (struct asm_psr): Add boolean field
	distinguishing between CSPR and SPSR.  Rename 'number' field
	to 'field'.
	(psrs): Rearrange contents to match new asm_psr structure.
	(arm_psr_parse): Move next to psr_required_here.  Make it
	return an asm_psr structure.
	(psr_required_here): Use asm_psr structure returned by
	arm_psr_parse.
	(do_msr): Reorganise to allow psr_required_here to be called
	only once.
	(md_undefined_name): Mark 'name' parameter as unused, since
	the COFF target does not use it.

2000-05-14  David O'Brien  <obrien@FreeBSD.org>

	* config/te-386bsd.h:  Clean up comments to adhere to the GNU coding
	standards.
	* config/te-aux.h:  Likewise.
	* config/te-dpx2.h:  Likewise.
	* config/te-go32.h:  Likewise.
	* config/te-hp300.h:  Likewise.
	* config/te-hppa.h:  Likewise.
	* config/te-i386aix.h:  Likewise.
	* config/te-ic960.h:  Likewise.
	* config/te-interix.h:  Likewise.
	* config/te-nbsd532.h:  Likewise.
	* config/te-pc532mach.h:  Likewise.
	* config/te-ppcnw.h:  Likewise.
	* config/te-psos.h:  Likewise.
	* config/te-sparcaout.h:  Likewise.
	* config/te-sun3.h:  Likewise.
	* config/te-sysv32.h:  Likewise.

2000-05-14  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-h8300.c (do_a_fix_imm): Don't rely on `short' being 16
	bits.  Instead explicitly mask and sign extend.  Do the 8 bit mask
	and sign extend without an if statement.
	(build_bytes): Likewise.

2000-05-14  Kazu Hirata  <kazu@hxi.com>

	* config/tc-h8300.c (do_a_fix_imm): Output a reloc for no
	X_add_symbol L_32 case.

2000-05-14  David O'Brien  <obrien@FreeBSD.org>

	* config/te-freebsd.h: New file.

2000-05-13  Alan Modra  <alan@linuxcare.com.au>

	* asintl.h (gettext, dgettext, dcgettext, textdomain,
	bindtextdomain): Replace defines with those from intl/libgettext.h
	to quieten gcc warnings.

	* NEWS: Mention x86 .arch and -q.

	* config/tc-i386.c (quiet_warnings): New.
	(md_assemble): Use quiet_warnings.
	(md_parse_option): Set quiet_warnings from -q.
	(md_show_usage): Mention -q, delete -m.
	(flag_do_long_jump): Delete.
	(md_parse_option): Remove -m.
	(md_show_usage): Remove -m.
	(md_create_long_jump): Remove useless flag_do_long_jump code.

	* as.c (parse_args): In case OPTION_DEFSYM, use a valueT to hold
	the symbol value, and use bfd_scan_vma if BFD_ASSEMBLER.

2000-05-13  Alan Modra  <alan@linuxcare.com.au>
	    Alexander Sokolov <robocop@netlink.ru>

	* doc/c-i386.texi (i386-Arch): New section.
	(i386-Syntax): Mention .intel_syntax and .att_syntax.

	* config/tc-i386.c (cpu_arch_name, cpu_arch_flags): New.
	(smallest_imm_type): Use smallest opcode for shift by one if cpu
	architecture has been given and is not 486.
	(set_cpu_arch): New.
	(md_pseudo_table): Add .arch.
	(md_assemble): Warn if cpu architecture has been given and an
	unsupported instruction.

	* config/tc-i386.h (SMALLEST_DISP_TYPE): Delete.
	Move operand_types bit defines after relevant template field.
	(template): Add cpu_flags.
	(Cpu*): Define.
	(arch_entry): New.

2000-05-12  Alexandre Oliva  <aoliva@cygnus.com>

	* config/tc-mn10300.h (md_end): Define.
	(mn10300_finalize): Declare.
	* config/tc-mn10300.c: Include dwarf2dbg.h.
	(debug_line): Define.
	(md_assemble): Generate dwarf2 line info.
	(mn10300_finalize): New function.  Finalize dwarf2 info.

2000-05-11  Ulf Carlsson  <ulfc@engr.sgi.com>

	* config/tc-mips.c (md_estimate_size_before_relax): Use the
	external version of the relocation for weak symbols.

2000-05-08  David Mosberger  <davidm@hpl.hp.com>

	* config/tc-ia64.c (output_P7_format, case mem_stack_f): Output fixed
	frame size in units of 16 bytes, as required per SW Conventions manual.
	(output_unw_records): Output info-block header as a dword to get
	byte-order right.

2000-05-08  Alan Modra  <alan@linuxcare.com.au>

	* as.h: #include "file", not <file> on files from ../include.
	(as_abort, as_fatal): Add ATTRIBUTE_NORETURN.
	* config/tc-m68k.c (m68k_ip): Fix signed/unsigned warnings.
	(md_convert_frag): Add ATTRIBUTE_UNUSED.
	(tc_coff_symbol_emit_hook): Ditto.
	(OPTCOUNT): Cast to int to avoid compiler warning.
	(md_begin): Fix signed/unsigned warnings.

2000-05-08  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* config/tc-m68k.c (md_convert_frag_1): Abort if we end up in the
	ABRANCH LONG case for a conditional branch on a 68000.
	(md_estimate_size_before_relax): Likewise.  Also handle
	flag_short_refs correctly for ABRANCH, BCC68000, and DBCC.
	(m68k-ip: case ABSL): Relax absolute references to 16-bit
	PC-relative on all CPUs.
	(md_estimate_size_before_relax): Likewise.

2000-05-04  Alan Modra  <alan@linuxcare.com.au>

	* as.c (parse_args): Just mention current year in printed
	copyright message.

2000-05-03  J.T. Conklin  <jtc@redback.com>

	* config/tc-ppc.c (pre_defined_registers): Add entries for vector
	unit registers.
	(md_parse_option): Recognize -m7400.

2000-05-03  Ian Lance Taylor  <ian@zembu.com>

	* config/atof-ieee.c (gen_to_words): When adding carry back in,
	don't permit lp to become less than the words array.

2000-05-03  Rodney Brown  <RodneyBrown@pmsc.com>

	config/tc-mcore.c (md_apply_fix3): BFD_RELOC_MCORE_PCREL_IMM11BY2
	Fix little-endian case.

2000-05-03  David O'Brien  <obrien@NUXI.com>

	* as.c (parse_args): Update copyright.

2000-05-03  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/tc-i386.h (SUB_SEGMENT_ALIGN): If TE_GO32, return 4
	for the .bss section too.

2000-05-02  Alan Modra  <alan@linuxcare.com.au>

	* configure.in: Set em=linux for hppa-*-linux.
	* configure: Regenerate.
	* doc/Makefile.in: Regenerate with correct automake.

	* frags.c (frag_grow): Sanity check chunk_size.

	* config/obj-elf.h: #include "bfd.h" not <bfd.h>
	* config/obj-som.h: Likewise.
	* config/obj-ieee.h: Likewise.

	* config/tc-hppa.h: Test BFD_ARCH_SIZE, not BFD64.

	* config/tc-hppa.c (log2): Only compile when OBJ_SOM.
	(md_pseudo_table): Fully initialise OBJ_ELF cases.
	(fix_new_hppa): Add ATTRIBUTE_UNUSED to args as appropriate.
	(pa_ip): low_sign_unext now returns via function value.  Use
	re_assemble_* instead of dis_assemble_* and
	INSERT_FIELD_AND_CONTINUE combination.  Don't call sign_unext
	unnecessarily.
	(md_convert_frag): Add ATTRIBUTE_UNUSED to args as appropriate.
	(md_section_align, md_parse_option, md_show_usage,
	md_undefined_symbol, pa_align, pa_block, pa_brtab, pa_try,
	pa_callinfo, pa_code, pa_comm, pa_end, pa_enter, pa_entry,
	pa_exit, pa_export, pa_import, pa_label, pa_leave, pa_level,
	pa_origin, pa_param, pa_proc, pa_procend, pa_space, pa_spnum,
	pa_version, pa_compiler, pa_copyright, pa_data, pa_fill, pa_lsym,
	pa_text): Likewise.
	(md_apply_fix): Change type of new_val to offsetT.  Delete w1, w2,
	w, resulti.  Add insn, val.  Move bfd_get_32 and bfd_put_32
	outside of switch.  Correct mask and shifting errors in case 10
	and case -11.  In case 21, compare against signed range to suit
	hppa_field_adjust changes.  In case 12, use re_assemble_12.  In
	case 17 and case 22, use offsetT variable to properly check range.
	Use re_assemble_* here too.
	(evaluate_absolute): Change type of value to offsetT.  Call
	hppa_field_adjust to do the work for us.
	(pa_parse_cmpb_64_cmpltr): Delete save_s.
	(pa_parse_cmpib_64_cmpltr): Ditto.
	(pa_build_unwind_subspace): Delete unused var subseg.  Change type
	of i to unsigned int.
	(pa_type_args): Conditionally declare symbol if OBJ_SOM.
	(pa_end_of_source): Return type is void.

2000-05-01  Catherine Moore  <clm@cygnus.com>

	* macro.c (macro_expand_body): Don't prepend macro number with zeroes.

2000-05-01  Denis Chertykov  <denisc@overta.ru>

	* config/tc-avr.c: ATTRIBUTE_UNUSED added to the necessary places.
	More comments added.
	(md_begin): Removed "construct symbols for each register name".
	Because register names conflicts with GCC generated function
	names.
	(avr_operand): Now constant numbers can be used as a register
	identifiers (0 as r0, 31 as r31).
	(md_assemble): use skip_space () before parsing instruction
	operands.

2000-05-01  Alan Modra  <alan@linuxcare.com.au>

	* configure.in: Set bfd_gas=yes on i386-*-pe and i386-*-nt* to
	ensure all pe targets use bfd.  Remove unnecessary bfd_gas=yes on
	arm-*-netbsd* and arm-*-wince as this is set for all arm*.
	* configure: Regenerate.

2000-04-29  Andreas Jaeger  <aj@suse.de>

	* as.h: Correctly check GCC version.

2000-04-26  David O'Brien  <obrien@FreeBSD.org>

	* doc/as.1: Fix unbalanced brackets.

	* config/tc-i386.c (comment_chars): Don't use '/' as comment start if
	TE_FreeBSD.
	(line_comment_chars): Set to '/' if TE_FreeBSD.

2000-04-25  Jeffrey A Law  (law@cygnus.com)

	* configure.in: Configury support for PA64 (currently disabled).
	* configure: Rebuilt.

2000-04-25  Machida Hiroyuki  <machida@sm.sony.co.jp>

	* config/tc-mips.c (s_change_sec): Use record_alignment, not
	bfd_set_section_alignment.

2000-04-25  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c (offset_in_range): Ensure shift counts are less
	than 32.

2000-04-24  Nick Clifton  <nickc@cygnus.com>

	* doc/c-arm.texi (ARM Directives): Document behaviour of .align 0.
	* doc/as.texinfo (Align): Include arm and strongarm in list of
	targets that have the second form of the behaviour of the .align
	directive.

2000-04-24  Mark Klein <mklein@dis.com>

	* config/obj-som.c: Terminate obj_pseudo_table.

2000-04-24  Clinton Popetz  <cpopetz@cygnus.com>

	* as.c (parse_args): Allow md_parse_option to override -a listing
	option.
	* config/obj-coff.c (add_lineno): Change type of offset parameter
	from "int" to "bfd_vma."
	* config/tc-ppc.c (md_pseudo_table): Add "llong" and "machine."
	(ppc_mach, ppc_subseg_align, ppc_target_format): New.
	(ppc_change_csect): Align correctly for XCOFF64.
	(ppc_machine): New function, which discards "ppc_machine" line.
	(ppc_tc): Cons for 8 when code is 64 bit.
	(md_apply_fix3): Don't check operand->insert.  Handle 64 bit
	relocations.
	(md_parse_option): Handle -a64 and -a32.
	(ppc_xcoff64): New.
	* config/tc-ppc.h (TARGET_MACH): Define.
	(TARGET_FORMAT): Move to function.
	(SUB_SEGMENT_ALIGN): Use ppc_subseg_align.

2000-04-23  Denis Chertykov  <denisc@overta.ru>

	* config/tc-avr.c: New AVR_ISA_ defined.
	(md_assemble): Handle opcodes with optional operands (lpm,elpm).
	(avr_operand): Handle 'a', 'v' and 'z' constraint letters needed
	for `fmul', `movw' and `lpm R,Z' instructions.
	(avr_operands): Warn if current opcode is a two-word instruction
	and previous opcode was cpse/sbic/sbis/sbrc/sbrs.
	(avr_opcodes): New commands added.
	(REGISTER_P): Check 'a' and 'v' constraint letters.
	(mcu_types): New MCU added.

2000-04-22  Timothy Wall  <twall@cygnus.com>

	* config/tc-ia64.c (pseudo_func[]): Add new "nat" entry equivalent
	to "natval".
	(operand_match): Conditionally insert default bit values for IMMU9.

2000-04-14  Matthew Green  <mrg@cygnus.com>

	* configure.in: Add NetBSD/sparc ELF and NetBSD/sparc64 support.
	* configure: Rebuilt.

2000-04-21  Jeffrey A Law  (law@cygnus.com)
	    Jason Eckhardt  <jle@cygnus.com>

	* config/tc-hppa.c (md_apply_fix): Handle new PA2.0 formats.

	* config/tc-hppa.c (CHECK_ALIGN): New macro.
	Added handling of new operand types l,y,&,fe,fE,fx.

2000-04-21  Richard Henderson  <rth@cygnus.com>
	    David Mosberger  <davidm@hpl.hp.com>
	    Timothy Wall <twall@cygnus.com>
	    Andrew MacLeod  <amacleod@cygnus.com>
	    Jim Wilson  <wilson@cygnus.com>

	* Makefile.am (CPU_TYPES): Add ia64.
	(TARGET_CPU_CFILES): Add config/tc-ia64.c.
	(TARGET_CPU_HFILES): Add config/tc-ia64.h.
	* Makefile.in: Rebuild.
	* app.c (do_scrub_chars): Handle DOUBLESLASH_COMMENTS.
	* configure: Rebuild.
	* configure.in: Recognize ia64 as cpu type.  Set bfd_gas.
	(ia64-*-elf*, ia64-*-linux-gnu*): New targets.
	* expr.c (expr): Handle md_optimize_expr.
	* read.c (LEX_HASH): Add comment.
	* config/tc-ia64.c, config/tc-ia64.h: New files.

2000-04-21  Richard Henderson  <rth@cygnus.com>

	* config/tc-d30v.c (write_2_short): Disregard opcode1->ecc when
	bundling a non-delayed branch type instruction.

2000-04-20  Alexandre Oliva  <aoliva@cygnus.com>

	* config/tc-mn10300.c (HAVE_AM30): Define.
	(md_assemble): Use it.

2000-04-19  Alan Modra  <alan@linuxcare.com.au>

	* config/obj-elf.c (obj_elf_change_section): Check for changed
	section attributes.

	* Makefile.am: (CPU_MULTI_VALID): Remove.
	(MULTI_CPU_TYPES): Define.
	(MULTI_CPU_OBJ_VALID): Define.
	(DEPTC): Use the above.
	(DEPOBJ): Same here.
	(DEP2): And here.
	Regenerate dependencies.
	* Makefile.in: Regenerate.

2000-04-19  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* Makefile.am (YACC, LEX): Get them from configure.

2000-04-18  H.J. Lu  (hjl@gnu.org)

	* config/tc-i386.c (offset_in_range): Use addressT instead of
	bfd_vma for non-bfd assemblers.

2000-04-17  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c (offset_in_range): Sign extend val so BFD64
	doesn't give spurious errors.

2000-04-14  Michael Sokolov  <msokolov@ivan.Harhan.ORG>

	* as.h (SEEK_SET): Define if undefined.

2000-04-13  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-arm.c (md_apply_fix3): Don't use UL suffix on
	constants, and don't assume offsetT is 32 bits.

2000-04-12  Andrew Cagney  <cagney@b1.cygnus.com>

	* config/tc-d10v.h: Include "write.h" to get definition of fixS.
	(md_pcrel_from_section): Add prototype.
	(d10v_fix_adjustable): Add prototype.
	(d10v_force_relocation): Replace 'struct fix' with 'fixS'.

	* config/tc-d10v.c (md_apply_fix3): Add paren around &&.

2000-04-12  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d10v.c (find_opcode): Correctly calculate position of
	symbol in frag chain.

2000-04-10  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c (fits_in_signed_byte): Change arg to offsetT.
	(fits_in_unsigned_byte, fits_in_unsigned_word): Ditto.
	(fits_in_signed_word, smallest_imm_type): Ditto.
	(md_assemble): Use an offsetT var to hold offsetT values, not a
	long.
	(offset_in_range): New.
	(md_assemble): Use it.
	(md_convert_frag): Change type of target_address, opcode_address,
	and displacement_from_opcode_start to offsetT.
	(md_create_short_jump): Change type of offset to offsetT.
	(md_create_long_jump): Ditto.
	(md_apply_fix3): Use -4, not 0xfffffffc for BFD_RELOC_386_PLT32.
	(md_chars_to_number): Remove.
	(output_invalid): Remove duplicate prototype.

2000-04-09  Nick Clifton  <nickc@cygnus.com>

	* Makefile.am (CPU_TYPES): Add 'avr'.
	(TARGET_CPU_CFILES): Add 'tc-avr.c'.
	(TARGET_CPU_HFILES): Add 'tc-avr.h'.

	* Makefile.in: Regenerate.

	* doc/as.texinfo: Add M32R documentation.

2000-04-07  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (WARN_CFLAGS): Set to -W -Wall by default.  Add
	--enable-build-warnings option.
	* Makefile.am (AM_CFLAGS, WARN_CFLAGS): Add definitions.
	* Makefile.in, configure: Re-generate.

2000-04-07  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_apply_fix3): Treat BFD_RELOC_ARM_PCREL_BLX
	in the same way as BFD_RELOC_ARM_PCREL_BRANCH, and
	BFD_RELOC_THUMB_PCREL_BLX lie BFD_RELOC_THUMB_PCREL_BRANCH.
	(tc_gen_reloc): Accept BFD_RELOC_{ARM|THUMB}_PCREL_BLX.
	(arm_force_relocation): Force relocations for
	BFD_RELOC_{ARM|THUMB}_PCREL_BLX as well.

2000-04-05  J"orn Rennecke <amylaar@cygnus.co.uk>

	* config/tc-sh.c (get_operands): There's no third operand if the
	first operand is an immediate.

2000-04-05  J"orn Rennecke <amylaar@cygnus.co.uk>

	* config/tc-sh.c (immediate): Delete.
	(sh_operand_info): Add immediate member.
	(parse_reg): Use A_PC for pc.
	(parse_exp): Add second argument 'op'.  All callers changed.
	(parse_at): Expect pc to be coded as A_PC.
	Use immediate field in *op.
	(insert): Add fourth argument 'op'.  All callers changed.
	(build_relax): Add second argument 'op'.  All callers changed.
	(insert_loop_bounds): New function.
	(build_Mytes): Remove DISP_4.
	Split IMM_[48]{,BY[24]} into IMM[01]_[48]{,BY[24]}.  Add REPEAT.
	(assemble_ppi): Use immediate field in *operand.
	(sh_force_relocation): Handle BFD_RELOC_SH_LOOP_{START,END}.
	(md_apply_fix): Likewise.
	(tc_gen_reloc): Likewise.  Check for a pcrel BFD_RELOC_SH_LABEL.

2000-04-05  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* config/tc-sparc.c (sparc_ip): Avoid string pasting.

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

	* internals.texi (CPU backend): Document
	TC_CHECK_ADJUSTED_BROKEN_DOT_WORD.

2000-04-04  Alan Modra  <alan@linuxcare.com.au>

	* po/gas.pot: Regenerate.

	* as.c (show_usage): Restore translated part of bug string.
	* gasp.c (show_usage): Likewise.

	* Makefile.am (MKDEP): Use gcc -MM rather than ../mkdep.
	(DEP): Quote when passing vars to sub-make.  Use "mv -f" rather
	than move-if-change.
	(DEP1): Modify for "gcc -MM".
	(DEPTC): Likewise.
	(DEPOBJ): Likewise.
	(DEP2): Likewise.
	(CLEANFILES): Add DEPTCA, DEPOBJA, DEP2a, DEPA.
	Update dependencies.
	* Makefile.in: Regenerate.

2000-04-03  Alexandre Oliva  <aoliva@cygnus.com>

	* config/tc-mn10300.c (md_pseudo_table): Use constant names.
	(md_begin): Likewise.
	(HAVE_AM33): New macro.
	(md_assemble): Use it.  Match r_regs and xr_regs only if
	HAVE_AM33.

2000-04-03  Alan Modra  <alan@linuxcare.com.au>

	* as.h: #include "bin-bugs.h"
	* as.c (show_usage): Use REPORT_BUGS_TO.
	* gasp.c: #include "bin-bugs.h"
	(show_usage): Use REPORT_BUGS_TO.

	* config/tc-sparc.c (md_show_usage): Add a trailing newline.

2000-04-03  Hans-Peter Nilsson  <hp@axis.com>

	* write.c (write_object_file) [! WORKING_DOT_WORD]: If defined,
	call TC_CHECK_ADJUSTED_BROKEN_DOT_WORD for each word after
	adjustments.

2000-04-03  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c (i386_immediate): Don't assume a constant
	immediate is necessarily 16 bits when in 16 bit code mode.
	(md_assemble): Instead set guess_suffix here after we have checked
	registers.

2000-04-02  Richard Henderson  <rth@cygnus.com>

	* config/tc-d30v.c (check_range): Allow signed or unsigned 32-bit
	quantities.  Correct right shift sign extension.
	(build_insn): Make `number' unsigned long.  Mask top 6 bits of
	32-bit value when shifting into place.

2000-04-01  Ian Lance Taylor  <ian@zembu.com>

	* app.c: Add ATTRIBUTE_UNUSED as needed.
	* config/tc-ppc.c: Likewise.
	(ppc_size): Make unsigned long.
	(ppc_insert_operand): Add casts to avoid warnings.

2000-03-31  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d10v.h (md_flush_pending_output): Define.

2000-03-29  Nick Clifton  <nickc@cygnus.com>

	* config/tc-sh.h (SEG_NAME): New macro: return the name of a
	segment.  Works for both BFD_ASSEMBLER and others.
	(SUB_SEGMENT_ALIGN): Use SEG_NAME.

2000-03-29  Nick Clifton <nickc@cygnus.com

	* config/tc-arm.c (tinsns): Add "bal" instruction pattern.

2000-03-28  Alan Modra  <alan@linuxcare.com.au>

	* listing.c (LISTING_LHS_WIDTH): Default depends on
	LISTING_WORD_SIZE.
	(LISTING_LHS_WIDTH_SECOND): Default to LISTING_LHS_WIDTH.

2000-03-27  Ian Lance Taylor  <ian@zembu.com>

	* config/tc-sh.c (md_show_usage): Use backslash before newline in
	string literal.

2000-03-27  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-avr.h (TC_HANDLES_FX_DONE): Define.

	* config/tc-avr.c (mcu_types): Add missing initialiser.
	(md_pcrel_from_section): Add prototype.
	(avr_operand): Remove redundant test of unsigned < 0.
	(avr_cons_fix_new): Ensure exp_mod_pm zero on function exit.

2000-03-27  Denis Chertykov  <denisc@overta.ru>

	* config/tc-avr.c: New file for AVR support.
	* config/tc-avr.h: Likewise.
	* configure.in: Add AVR support.
	* configure: Regenerate.

2000-03-26  Timothy Wall <twall@cygnus.com>

	* gasp.c (macro_op): Add new argument to check_macro call.
	Macro structure definitions moved to macro.h
	* sb.h:  Add argument to prototype for input_scrub_include_sb.
	* input-scrub.c (input_scrub_include_sb): Allow disabling of sb
	nesting checks with an additional flag.
	(struct input_save): Add flag to indicate whether current sb
	should be checked for proper macro/conditional nesting.
	(input_scrub_push/pop): Save/restore nest check flag.
	(input_scrub_next_buffer): Ditto.  Also call end of macro hook if
	defined.
	* macro.c (check_macro):  Allow caller to retrieve parsed macro
	information if a pointer is provided.  This information may be
	used by the new macro hooks.
	* macro.h: Update prototype for check_macro.  Macro struct
	definitions moved here from macro.c/gasp.c.
	* read.c (read_a_source_file): Add parameter to check_macro call,
	and pass macro info to the macro hook, if defined.
	(input_scrub_insert_line): New.  Allow insertion of a line of
	characters into the input stream.
	(input_scrub_insert_file): New.  Allow insertion of an arbitrary
	file into the input stream.
	(s_include): Use input_scrub_insert_file.
	* internals.texi: Document new macro hooks.
	* as.h: New prototypes added.

2000-03-26  Alan Modra  <alan@linuxcare.com.au>

	* config/tc-i386.c: Don't start any as_bad or as_warn message with
	an initial capital letter.
	(i386_index_check): Reindent.

2000-03-19  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_apply_fix3): Fix bug detecting overflow of pc
	relative branches.

2000-03-17 Thomas de Lellis <tdel@windriver.com>

	* config/tc-arm.c (do_t_adr): Flag "adr Rd,label"
	instruction operand bad if Rd > 7 when generating
	thumb instructions. Prevents for example,
	"adr r12,label" from silently failing and generating
	the wrong instruction.

2000-03-17  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_apply_fix3): Handle same-section relocations
	that have a destingation >= 0x400000.
	Fix compile time warning messages.

2000-03-16  J"orn Rennecke <amylaar@cygnus.co.uk>

	* config/tc-sh.c (md_begin): When encountering insn that are
	not supported by the current arch, only change the name if
	its contents are the same as prev_name.
	(get_specific): If the the architecture doesn't match, fail.

2000-03-16  J"orn Rennecke <amylaar@cygnus.co.uk>

	* config/tc-sh.c (IDENT_CHAR): Define.
	(parse_reg): Use it instead of isalnum.  Put r[0..7]_bank operand
	matching back where it came from.

2000-03-16  J"orn Rennecke <amylaar@cygnus.co.uk>

	* config/tc-sh.c (md_show_usage): Add description of -dsp.

2000-03-15  Jonathan Larmour  <jlarmour@redhat.co.uk>

	* config/tc-sh.c (parse_reg): Match r[0..7]_bank operands before
	normal operands.

2000-03-15  Kazu Hirata  <kazu@hxi.com>

	* config/tc-h8300.c: Add ATTRIBUTE_UNUSED as appropriate.

2000-03-13  Hans-Peter Nilsson  <hp@axis.se>

	* expr.c (operand) [case 'f']: When testing if '0f' can start a
	floating-point-number, make sure 'f' is in FLT_CHARS.

2000-03-11  Hans-Peter Nilsson  <hp@axis.se>

	* read.c (TC_IMPLICIT_LCOMM_ALIGNMENT): New default-definition.
	(s_lcomm_internal): Use it.
	* doc/internals.texi (CPU backend): Document it.
	* config/obj-evax.h (TC_IMPLICIT_LCOMM_ALIGNMENT): Set to 2**3
	bytes.

2000-03-10  Geoffrey Keating  <geoffk@cygnus.com>

	* config/tc-mips.c (mips_ip): Don't put stuff in .rodata
	when embedded-pic.

	* config/tc-mips.c (SWITCH_TABLE): The ELF embedded-pic
	implementation doesn't have special handling for switch
	statements.
	(macro_build): Allow for code in sections other than .text.
	(macro): Likewise.
	(mips_ip): Likewise.
	(md_apply_fix): Do pc-relative relocation madness for MIPS ELF.
	Don't perform relocs if we will be outputting them.
	(tc_gen_reloc): For ELF, just use fx_addnumber for pc-relative
	relocations.  Allow BFD_RELOC_16_PCREL_S2 relocs when
	embedded-pic.

2000-03-09  Catherine Moore  <clm@cygnus.com>

	* config/tc-m32r.c (m32r_fix_adjustable):  Look up the
	relocation type based on the entry in the fixup structure.
	Put S_IS_EXTERN processing back in.

2000-03-08  H.J. Lu  (hjl@gnu.org)

	* Makefile.am (install-exec-tooldir): Depend on
	install-exec-bindir for parallel make.
	* Makefile.in: Regenerated.

2000-03-06  Nick Clifton  <nickc@cygnus.com>

	* config/tc-m32r.c (struct md_longopts): Add -m32r command line
	switch.
	(md_parse_option): Parse -m32r command line switch - disable m32rx
	compatability.
	(md_show_usage): Document new option.

	* doc/Makefile.am (CPU_DOCS): Add c-m32r.texi.
	* doc/Makefile.in: Regenerate.
	* doc/c-m32r.texi (M32R-Opts): Document new command line switch.

2000-03-02  Michael Meissner  <meissner@redhat.com>

	* config/tc-d30v.c (check_range): Remove code that incorrectly
	sign extended values where bits < 32.

2000-03-02  H.J. Lu  (hjl@gnu.org)

	* configure.in: Support --enable-targets=all on ia32.
	* configure: Regenerated.

2000-03-01  Nick Clifton  <nickc@cygnus.com>

	* gasp.c (do_align): Remove bogus check of alignment value.

2000-02-27  Thomas de Lellis  <tdel@windriver.com>

	* config/obj-elf.c (elf_frob_symbol): Remove code which when
	TC_PPC was defined forced the type of a symbol with no other type
	to be BSF_OBJECT.

2000-02-27  Hans-Peter Nilsson  <hp@axis.com>

	* doc/internals.texi (CPU backend): Mention that
	line_separator_chars do not break up comments.  Fix typos for
	LEX_AT and LEX_NAME descriptions.  Document operands for
	TC_EQUAL_IN_INSN, md_operand and md_section_align.  Correct
	description of md_create_short_jump usage.  Document argument for
	md_undefined_symbol.

2000-02-27  Jakub Jelinek  <jakub@redhat.com>

	* config/tc-sparc.c (OPTION_UNDECLARED_REGS): New option.
	(md_parse_option): Handle it.
	(md_show_usage): Document it.

2000-02-27  Ian Lance Taylor  <ian@zembu.com>

	* config/tc-alpha.c (md_assemble): Accept `1' and `9' in an
	opcode, for the instruction `pal19'.  From Andrea Arcangeli
	<andrea@suse.de>.

2000-02-26  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (i386_immediate): Move constant operand sizing
	from here..
	(md_assemble): To here, before template operands are matched.
	Also ensure a constant immediate is sign extended when we know the
	size is at most 16 bits.  This is to catch cases like "add
	$0xffc0,%ax" where we don't know the size, and thus that the
	immediate can be represented as Imm8S until after parsing the
	register operand.
	(i386_displacement): Similarly sign extend 16 bit constant
	displacements.
	(md_assemble): Relax 16-bit jump constant range check to suit sign
	extended displacements.

2000-02-26  Andreas Jaeger  <aj@suse.de>

	* doc/c-mips.texi (MIPS Opts): Fix typo in last patch.

2000-02-25  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (md_assemble): Don't swap intersegment jmp and
	call operands when intel_syntax.
	(intel_float_operand): Return 2 for "fi...".
	(i386_operand_modifier): Change "DWORD PTR" test to suit above.
	Return SHORT_MNEM_SUFFIX for "WORD PTR" when "fi...".  Revert
	earlier "SHORT" change.
	(md_assemble): When determining suffix from Regs, exclude
	InOutPortReg.

2000-02-24  Nick Clifton  <nickc@cygnus.com>

	* configure: Add arm-wince, mips-pe and sh-pe targets.
	* configure: Regenerate.

	* config/obj-coff.h (COFF_WITH_PE): Define for mips-pe and
	sh-pe targets.
	(TARGET_FORMAT): Set to "pe-shl" for the sh-pe target and to
	"pe-mips" for the mips-pe target.

	* config/tc-arm.c (insns): Change displacement encoded in BL
	and B instructions if the target port is arm-wince.
	(do_ldst): Do not bias the relocation offset if the target
	port is arm-wince.
	(md_pcrel_from): Add in missing relocation offset bias if the
	target os arm-wince.

	* config/tc-mips.c (mips_target_format): Support COFF flavour.
	(md_begin): Disable -G support for mips-pe target.
	(md_apply_fix): Treat BFD_RELOC_RVA reloc as BFD_RELOC_32.
	* config/tc-mips.h (USE_GLOBAL_POINTER_OPT): Add support for
	COFF flavour.

	* config/tc-sh.c (md_begin): sh-pe target is little endian.
	* config/tc-sh.h (SUB_SEGMENT_ALIGN): If using a BFD
	assembler, just set the alignment to 4.

	* config/te-wince-pe.h: New file for WinCE targets.  Define
	TE_WINCE.

2000-02-25  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (md_assemble): Swap segments too for intel mode
	string instructions.
	(i386_operand_modifier): Set i.suffix = WORD_MNEM_SUFFIX for SHORT.
	(i386_intel_memory_operand): After finding a segment override,
	check again for no `[' before looking for a displacement.  Bomb if
	more than one displacement rather than silently discarding the
	second and subsequent ones.  Free strings malloc'd by
	build_displacement_string.

2000-02-24  Catherine Moore  <clm@cygnus.com>

	* config/obj-som.c (obj_pseudo_table): Add "weak".
	(obj_som_weak): New routine.

2000-02-24  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (union i386_op): New.
	(struct _i386_insn): Delete disps[], imms[], regs[].  Add op[].
	Throughout file replace occurences of disps[n], imms[n], regs[n]
	with equivalent op[n].disps, op[n].imms, op[n].regs.  Simplify
	intel mode operand swapping.  Add assert in regKludge and
	fake_zero_displacement code.  Test i.types[n] when outputting
	displacements and immediates.  Combine output of Disp16 with
	Disp32.
	(md_assemble): Don't try to fix broken UNIXWARE_COMPAT opcodes
	when in intel mode by (not) reversing fsub and fdiv operands
	before the template search.  This fails for single operand
	shorthand forms of the instruction, and if UNIXWARE_COMPAT is
	undefined.  Instead fix the base_opcode after we've found the
	template.  Move base_opcode xor with found_reverse_match from
	opcode output code to before this fix so we test for the correct
	opcodes.
	(md_assemble): Don't use strcmp when deciding to ignore the suffix
	check in intel mode.  Instead compare opcodes.

	* config/tc-i386.h (TC_RELOC): Delete.
	* config/tc-i386.c (TC_RELOC): Delete.  Replace usage of TC_RELOC
	with equivalent call to reloc.

	* as.h (flag_m68k_mri): Move declaration after target include, and
	only declare when TC_M68K defined.  Define as zero otherwise.
	(LABELS_WITHOUT_COLONS, NO_PSEUDO_DOT): If undefined, define as 0.
	* app.c (scrub_m68k_mri): Declare only when TC_M68K defined.
	Define as zero otherwise.
	(do_scrub_begin): Use m68k_mri parameter only when TC_M68K defined.
	(struct app_save): Declare scrub_m68k_mri only when TC_M68K.
	(app_push, app_pop): Save scrub_m68k_mri only when TC_M68K.
	(do_scrub_chars): Use LABELS_WITHOUT_COLONS directly rather than
	testing whether defined.
	* cond.c (ignore_input): Use NO_PSEUDO_DOT directly.
	* expr.c (operand): #ifdef unused case labels when TC_M68K undefined.
	* read.c: Use LABELS_WITHOUT_COLONS and NO_PSEUDO_DOT directly
	rather than testing whether defined.
	(s_mri): Set flag_m68k_mri only when TC_M68K defined.
	(parse_mri_cons): Declare and use only when TC_M68K.
	* config/tc-hppa.h (LABELS_WITHOUT_COLONS): Define as 1.
	* config/tc-m68k.h (NO_PSEUDO_DOT): Define as 1.
	* config/tc-m88k.h (NO_PSEUDO_DOT): Define as 1.

	* NEWS: Mention IBM 370 support.

2000-02-23  Richard Henderson  <rth@cygnus.com>

	* config/tc-i386.c (md_assemble): When swapping operands for
	intel_syntax, assume everything that's not Imm or Disp is a
	register.

2000-02-23  Linas Vepstas <linas@linas.org>

	* config/tc-i370.c, config/tc-i370.h: New files.
	* Makefile.am: Add support for Linux/IBM 370.
	* configure.in: Likewise.
	* app.c (do_scrub_begin): Don't lex single quote when TC_I370.
	* config/obj-elf.c: Include elf/i370.h
	(obj_elf_section): Don't do anything special for flag_mri if TC_I370.

	* Makefile.in: Regenerate.
	* configure: Regenerate.

	* doc/c-i370.texi: New file.
	* doc/all.texi: Include it.
	* doc/as.texinfo: And here.
	* doc/Makefile.am(CPU_DOCS): Add c-i370.texi.
	* doc/Makefile.in: Regenerate.

2000-02-19  Michael Meissner  <meissner@redhat.com>

	* config/tc-d30v.c (parallel_ok): Use FLAG_NOT_WITH_ADDSUBppp to
	determine if an instruction can be used in parallel with an ADDppp
	or SUBppp instruction.

2000-02-22  Andrew Haley  <aph@cygnus.com>

	* doc/c-mips.texi (MIPS Opts): Document -mgp32 and -mgp64.

2000-02-22  Andrew Haley  <aph@cygnus.com>

	* config/tc-mips.c (mips_gp32): New variable.
	(macro_build) Use mips_gp32.
	(mips_ip): Ditto.
	(md_longopts): Add "-mgp32" and "-mgp64".
	(md_parse_option): Add OPTION_GP32 and OPTION_GP64.

	(OPTION_M7900): Change offset
	(OPTION_NO_M7900): Ditto.

2000-02-22  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* config/obj-coff.c (add_lineno): Accept non-positive lineno with
	warning, and bump it to 1.

2000-02-22  Ian Lance Taylor  <ian@zembu.com>

	From Brad Lucier <lucier@math.purdue.edu>:
	* dwarf2dbg.c (print_stats): Add cast to force printf argument to
	match format.

2000-02-21  Catherine Moore  <clm@cygnus.com>

	* config/tc-mips.c (MF_HILO_INSN): Define.
	(mips_7000_hilo_fix): Declare.
	(append_insn): Conditionally insert nops after an mfhi/mflo insn.
	(md_parse_option): Check for 7000_HILO_FIX options.
	(OPTION_M7000_HILO_FIX): Define.
	(OPTION_NO_M7000_HILO_FIX): Define.
	* doc/c-mips.texi (-mfix7000): Describe.

2000-02-21  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* listing.c (print_lines): Remove unused variable `end'.

	* config/tc-i386.c (md_assemble): Use `reloc()' to select reloc
	type for JumpInterSegment output. Use enum bfd_reloc_code_real for
	reloc_type when BFD_ASSEMBLER.
	(md_estimate_size_before_relax): Use enum bfd_reloc_code_real for
	reloc_type when BFD_ASSEMBLER. Move common code out of switch
	statement and quell signed vs. unsigned comparison warning.

2000-02-18  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d10v.c (find_opcode): Add a symbol's value to
	the computed frag offset, rather than overwriting it.

2000-02-17  J"orn Rennecke <amylaar@cygnus.co.uk>

	* config/tc-sh.c ("elf/sh.h"): Include.
	(sh_dsp, valid_arch, reg_x, reg_y, reg_efg): New static variables.
	(md.begin): Initialize target_arch.
	Only include opcodes in has table that match selected architecture.
	(parse_reg): Recognize register names for sh-dsp.
	(parse_at): Recognize post-modify addressing.
	(get_operands): The leading space is now optional.
	(get_specific): Remove FDREG_N support.  Add support for sh-dsp
	arguments.  Update valid_arch.
	(build_Mytes): Add support for SDT_REG_N.
	(find_cooked_opcode): New function, broken out of md_assemble.
	(assemble_ppi, sh_elf_final_processing): New functions.
	(md_assemble): Use find_cooked_opcode and assemble_ppi.
	(md_longopts, md_parse_option): New option: -dsp.
	* config/tc-sh.h (elf_tc_final_processing): Define.
	(sh_elf_final_processing): Declare.

2000-02-11  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_build_unwind_subspace): Use subseg_new to create
	the unwinder subspace.  Save the current seg/subseg before creating
	the new seg/subseg.

2000-02-10  Nick Clifton  <nickc@cygnus.com>

	* config/tc-mcore.c (INST_BYTE0): Redefine to handle big and
	little endian targets.
	(INST_BYTE1): Redefine to handle big and little endian
	targets.
	(cpu_type): New type: Select between M340 and M210.
	(parse_psrmod): New function: Parse the PSRCLR and PSRSET
	instructions of the M340.
	(md_assemble): Add support for the MULSH and OPSR classes of
	instructions.
	(md_atof): Add support for little endian targets.
	(md_parse_option): Add support for -EL, -EB and -mcpu command
	line switches.
	(md_convert_frag): Add support for little endian targets.
	(md_apply_fix3): Add support for little endian targets.
	(md_number_to_chars): Add support for little endian targets.

2000-02-10  Timothy Wall  <twall@redhat.com>

	* read.c (read_a_source_file): If TC_START_LABEL_WITHOUT_COLON is
	defined, use it to verify the symbol just read should be a label.

2000-02-10  Timothy Wall  <twall@redhat.com>

	* app.c (do_scrub_chars): Handle "||" for parallel instructions
	when DOUBLEBAR_PARALLEL is defined.  Avoid stripping whitespace
	around colons when KEEP_WHITE_AROUND_COLON is defined.
	* doc/internals.texi (CPU backend): Document DOUBLEBAR_PARALLEL
	and KEEP_WHITE_AROUND_COLON.

2000-02-08  Timothy Wall  <twall@redhat.com>

	* read.c (s_rept): Call do_repeat, which abstracts the repeat
	logic.
	(do_repeat): New.  Abstract repeat logic so that a "break" can be
	implemented.
	(end_repeat): New.  Provide support for a "break" out of the
	repeat loop.
	* read.h: Add prototypes for new functions.

2000-02-08  Timothy Wall  <twall@redhat.com>

	* doc/internals.texi: Document NUMBERS_WITH_SUFFIX macro.
	* as.h: Provide a default NUMBERS_WITH_SUFFIX definition (zero).
	* expr.c: Handle numbers with suffixes if NUMBERS_WITH_SUFFIX is
	non-zero.

2000-02-08  Timothy Wall  <twall@redhat.com>

	* read.c: Added elseif to directives table.
	* read.h: Added prototype for s_elseif.
	* doc/as.texinfo: Added description for elseif.
	* cond.c (s_elseif): New function

2000-02-04  Timothy Wall  <twall@redhat.com>

	* listing.c (print_lines): Remove conditionals causing bug in
	listings.

2000-02-03  Timothy Wall  <twall@cygnus.com>

	* as.h: Define OCTETS_PER_BYTE and OCTETS_PER_BYTE_POWER
	default	values.
	* frags.c (frag_new): Calculate fr_fix in octets
	(frag_now_fix) Return offset as target address offset (bytes).
	(frag_now_fix_octets) New - Return offset in octets (8-bit
	quantities).
	* frags.h: Added prototype for frag_now_fix_octets().
	Distinguish between octets and bytes in field descriptions.
	* listing.c (calc_hex): Account for octets vs bytes when
	printing addresses/offsets.
	(print_lines) Ditto.  Also, if LISTING_WORD_SIZE is not 1, and
	target is little-endian, print the octets in a word in big-endian
	order so that the display looks like a proper hexadecimal number,
	instead of having the octets reversed.
	* read.c (do_align): When recording alignment, alignment power
	should be in terms of target bytes (minimum addressible unit)
	instead of octets.
	(do_org) Convert ORG target address (byte) argument into an
	octet offset when generating a variable fragment.
	* symbols.c (resolve_symbol_value): Symbol final value
	converted to a target address offset (bytes) from its octet offset.
	* config/obj-coff.c (coff_frob_symbol): Symbol target address
	offset (bytes) is adjusted by the frag offset (octets) converted
	to bytes.
	(coff_frob_section) Section alignment power is in terms of bytes;
	convert it to an octet alignment power when calculating size (and
	size mask) in octets.  Don't modify the section size in order to
	"align" it for TI COFF, since that format has a different method
	for storing alignment information.

2000-02-01  Timothy Wall  <twall@cygnus.com>

	* stabs.c (generate_asm_file): Escape backslashes in stabs file
	entries, matching the way GCC generates them.  If not escaped, the
	filename is encoded incorrectly.

2000-01-31  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (reg_table): Add support for ATPCS register
	naming conventions.

2000-01-31  Geoff Keating  <geoffk@cygnus.com>

	* config/obj-coff.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Don't define if
	already defined.
	* config/tc-ppc.h [OBJ_XCOFF] (OBJ_COPY_SYMBOL_ATTRIBUTES):
	New macro.
	* config/tc-ppc.c (ppc_fix_adjustable): Don't look at the frag
	of a symbol when we really care about its value.

2000-01-19  Chandra Chavva  <cchavva@cygnus.com>

	* config/tc-mcore.c (md_assemble): Give warning message if
	operands passes to instruction are more than the spec.

2000-01-27  Thomas de Lellis <tdel@windriver.com>

	* config/tc-arm.c (armadjust_symtab): If the assembler is in
	Thumb mode but the label seen was not declared as '.thumb_func'
	then set the ST_INFO type to STT_ARM_16BIT mode.  This allows
	correct disassembly of Thumb code bounded by non function labels.

2000-01-27  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* Makefile.am (MULTI_CFILES): Add config/e-i386aout.c
	Add dependencies for e-i386aout.o.  Fix 2 comment lines.

	* Makefile.in: Same here.
	Update copyright.

	* configure.in: Set bfd_gas for i386-aout when primary target
	is bfd.  Handle i386aout emulation.  Don't use te_file=multi, as
	we may need the primary te_file.  Remove incorrect comment.

	* configure: Regenerate.

	* config/e-i386aout.c: New file.

	* as.c (USE_EMULATIONS): Move to before print_version_id.
	(struct emulation): Add i386aout.
	(show_usage): Split text strings.  Reformat -a text.  Add --em
	help.
	Update copyright.

	* obj.h (struct format_ops): Add s_get_other and s_get_desc.
	(aout_format_ops): New.
	Update copyright.

	* read.c (s_lcomm_internal): Rewrite OBJ_AOUT,OBJ_BOUT
	preprocessor conditional and add aout USE_EMULATIONS tests.
	(read_a_source_file): Don't pass error strings to printf as
	format arg.
	Update copyright.

	* gasp.c (exp_get_abs): Don't pass error strings to printf as
	format arg.
	(do_data): Same here.
	(process_file): And here.
	Update copyright.

	* symbols.c (colon): Rewrite "already defined" fatal message
	code for aout with USE_EMULATIONS.
	Update copyright.

	* config/obj-aout.c (OBJ_HEADER): Define.
	(obj_pseudo_table): Rename to aout_pseudo_table.  Init all
	fields of sentinel.
	(obj_aout_frob_symbol): Expand S_GET_DESC, S_GET_TYPE,
	S_GET_OTHER, S_SET_TYPE macros since we don't need obj-multi
	forms here.
	(obj_aout_type): Expand S_SET_OTHER here too.
	(obj_read_begin_hook): Remove.
	(aout_pop_insert): New.
	(obj_aout_s_get_other): New.
	(obj_aout_s_get_desc): New.
	(aout_format_ops): New.
	Update copyright.

	* config/obj-aout.h (obj_pop_insert): Define so non-multi usage
	gets aout_pseudo_table.
	(aout_pseudo_table): Declare.
	(obj_read_begin_hook): Define.
	Update copyright.

	* config/obj-coff.c (obj_pseudo_table): Rename to
	coff_pseudo_table.
	(coff_pop_insert): Use coff_pseudo_table.
	(coff_sec_sym_ok_for_reloc): Remove.
	(coff_format_ops): Add 0 entries for s_get_size, s_set_size,
	and comment all zero entries and remove #if 0 code.
	Update copyright.

	* config/obj-coff.h (obj_pop_insert): Define.
	(coff_pseudo_table): Declare.
	Update copyright.

	* config/obj-ecoff.c (ecoff_format_ops): Add 0 entries for
	s_get_size, s_set_size.  Comment all zero entries.
	Update copyright.

	* config/obj-elf.c (elf_s_get_other): New function.
	(obj_read_begin_hook): Rename to elf_obj_read_begin_hook.
	(obj_symbol_new_hook): Rename to elf_obj_symbol_new_hook.
	(elf_format_ops): Add elf_s_get_other, 0 s_get_size entry, and
	comment.
	(obj_elf_parse_section_letters): Don't pass error strings to
	printf as format arg.
	Update copyright.

	* config/obj-elf.h (ECOFF_DEBUGGING): Define when
	OBJ_MAYBE_ECOFF.
	(elf_s_get_other): Declare.
	(S_GET_OTHER) Define as elf_s_get_other if not already
	defined.
	(S_SET_OTHER): Only define when not already defined.
	(elf_obj_read_begin_hook): Declare.
	(obj_read_begin_hook): Define.
	(elf_obj_symbol_new_hook): Declare.
	(obj_symbol_new_hook): Define.
	Update copyright.

	* config/obj-multi.h: Add copyright header and protect against
	multiple inclusion.  Add * to all function pointers.
	(OBJ_HEADER): If defined, include it rather than other defines
	in this file.
	(obj_frob_file_after_relocs): Test for NULL.
	(obj_symbol_new_hook): Here too.
	(obj_sec_sym_ok_for_reloc): And here.
	(S_GET_OTHER): Define.
	(S_GET_DESC): Define.
	(ECOFF_DEBUGGING): Remove as it's done in obj-elf.h
	(OBJ_MAYBE_ELF): Update comment.

	* config/tc-i386.c (i386_immediate): Add OBJ_MAYBE_AOUT to
	OBJ_AOUT preprocessor conditional and handle emulation by
	testing OUTPUT_FLAVOR.
	(i386_displacement): Here too.
	(md_section_align): Similarly here.
	(i386_target_format): Conditionally compile when more than one
	of OBJ_MAYBE_{ELF,COFF,AOUT} defined.  Add aout case.
	(i386_immediate): Fix error message for aout BFD_ASSMBLER.
	(i386_displacement): Here too.
	Update copyright.

	* config/tc-i386.h (AOUT_TARGET_FORMAT): Define for each TE_*.
	Define TARGET_FORMAT for aout only when not multi.
	Update copyright.

	* config/te-multi.h: Delete file as it's identical to te-generic.h

2000-01-15  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.h (DWORD_MNEM_SUFFIX): Delete.
	* config/tc-i386.c (DWORD_MNEM_SUFFIX): Rename all occurrences to
	LONG_MNEM_SUFFIX.

	* config/tc-i386.h (INTEL_DWORD_MNEM_SUFFIX): Rename to
	DWORD_MNEM_SUFFIX.
	* config/tc-i386.c (INTEL_DWORD_MNEM_SUFFIX): Here too.  Fix some
	comments.

2000-01-13  Clinton Popetz  <cpopetz@cygnus.com>

	* config/tc-mips.c (mips_do_align): New function.
	* config/tc-mips.h (md_do_align): Define.

2000-01-10  Philip Blundell  <philb@gnu.org>

	* doc/c-arm.texi (ARM Options): Fix typo.
	(ARM-Chars): Correct description of `#'.  Mention  that `;' is a
	line separator for Linux.
	* doc/as.texinfo (Comments): Mention the ARM.

2000-01-10  Philip Blundell  <pb@futuretv.com>

	* configure.in (arm*-*-conix*): New target.
	(arm*-*-linux-gnu*): Match instead of arm-*-linux* and
	armv*-*-linux-gnu.
	* configure: Regenerate.

2000-01-03  Martin v. Loewis  <loewis@informatik.hu-berlin.de>

	* config/obj-elf.c (elf_pseudo_table): Define visibility pseudos.
	(obj_elf_visibility): New function.

	* doc/as.texinfo (Visibility): New node: document visibility
	pseudo ops.

For older changes see ChangeLog-9899

Copyright (C) 2001 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:
