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.
	* testsuite/gas/sparc/pcrel.s: New test.
	* testsuite/gas/sparc/pcrel.d: Expected output.
	* testsuite/gas/sparc/pcrel64.s: New test.
	* testsuite/gas/sparc/pcrel64.d: Expected output.
	* testsuite/gas/sparc/plt.s: New test.
	* testsuite/gas/sparc/plt.d: Expected output.
	* testsuite/gas/sparc/plt64.s: New test.
	* testsuite/gas/sparc/plt64.d: Expected output.
	* testsuite/gas/sparc/sparc.exp: Add pcrel, pcrel64, plt and plt64
	tests.

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
