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-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-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-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-19  Andreas Schwab  <schwab@suse.de>

	* config/tc-m68k.c: Include "dwarf2dbg.h".

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-28  Philip Blundell  <philb@gnu.org>

	* configure.in (sh-*-coff*, sh-*-rtems*): Set bfd_gas to yes.
	Patch from Joel Sherril <joel.sherrill@OARcorp.com>
	* configure: Regenerate.

2001-07-21  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-14  matthew green  <mrg@eterna.com.au>

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

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-06-27  Nick Clifton  <nickc@cambridge.redhat.com>

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

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

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

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

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

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.

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

	Merge from mainline:
	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-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-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-03-12  Nick Clifton  <nickc@redhat.com>
	* config/tc-arm.c (md_begin): Always set machine type based on
	cpu_variant.
	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-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  Nick Clifton  <nickc@cambridge.redhat.com>

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

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

	Merge from mainline.
	2001-06-08  Alan Modra  <amodra@bigpond.net.au>
	* 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): 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: Use MIPS_STABS_ELF for Linux/mips.
	* 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  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>
	* gas/config/tc-m68k.c (md_show_usage): Add all supported ColdFire
	options to list (e.g. m5206e, m5307, m5407).

	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-05  Nick Clifton  <nickc@cambridge.redhat.com>
	* symbols.c (S_SET_EXTERNAL): Do not override a section symbol's
	status.

	2001-05-27  Alan Modra  <amodra@one.net.au>
	* config/tc-m68k.c (md_assemble): Ensure variable part of frag is
	allocated in the same chunk as the fixed part.

	2001-05-25  Alan Modra  <amodra@one.net.au>
	* configure.in: Replace linuxoldld with linux*oldld.
	* configure: Regenerate.

	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-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-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.

	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-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-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-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-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-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-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  Sean McNeil <sean@mcneil.com>
	* configure.in: Add arm-vxworks.
	* configure: Regenerate.

	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  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-12  Jason Merrill  <jason_merrill@redhat.com>
	* dwarf2dbg.c (process_entries): Don't optimize redundant line notes.

	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-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-03-30  Alan Modra  <alan@linuxcare.com.au>
	* dwarf2dbg.c (dwarf2_directive_file): Fix warnings.

	2001-03-30  Alan Modra  <alan@linuxcare.com.au>
	* 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-h8500.c (md_estimate_size_before_relax): Likewise.
	* config/tc-w65.c (md_estimate_size_before_relax): Likewise.
	* 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-ns32k.c (md_estimate_size_before_relax): Add cases to
	handle word and dword branches.

	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  Alexandre Oliva  <aoliva@redhat.com>
	* config/tc-sh.c (parse_reg): Match capital MACH and MACL.

	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  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-27  Alan Modra  <alan@linuxcare.com.au>
	* configure.in (BFD_VERSION): New.
	(AM_INIT_AUTOMAKE): Use $BFD_VERSION.
	* configure: 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-16  matthew green  <mrg@redhat.com>
	* cgen.c (gas_cgen_md_apply_fix3): Support BFD_RELOC_64.

	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-06-10  Philip Blundell  <philb@gnu.org>

	* configure.in: Set version to 2.11.1.
	* configure: Regenerate.

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

	* Most files: Update copyright notices.

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

	* config/tc-cris.c (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.

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  Tracy Kuhrt <Tracy.Kuhrt@microchip.com>

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

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-23  Alan Modra  <amodra@one.net.au>

	Merge from mainline.
	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.

	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.  Update copyright.

	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-03-30  Alan Modra  <alan@linuxcare.com.au>
	* 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.

	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-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-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-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.

	2001-05-10  Alan Modra  <amodra@one.net.au>
	* config/tc-v850.c (md_estimate_size_before_relax): Rewrite.
	(md_convert_frag): Don't bother clearing fr_var.
	(md_pseudo_table): Correct initialization.

	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-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-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-09  Alexandre Oliva  <aoliva@redhat.com>
	* config/tc-mn10300.c (md_apply_fix3): Accept PC-relative relocs.

	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-04-14  Alexandre Oliva  <aoliva@redhat.com>
	* config/tc-mn10300.c (md_assemble): Simplify offset adjustment of
	pc-relative relocations not placed at the end of the instruction.

	2001-04-06  Alexandre Oliva  <aoliva@redhat.com>
	* config/tc-mn10300.c (xr_registers): Added `pc'.

	2001-03-30  Alan Modra  <alan@linuxcare.com.au>
	* config/tc-mn10300.c (md_estimate_size_before_relax): Rewrite.

	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-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-27  Nick Papadonis  <nick@coelacanth.com>
	* read.c (equals): (for COFF) default symbols to being local.

	2001-03-23  Richard Sandiford  <rsandifo@redhat.com>
	* write.c (fix_new_exp): Print an error if passed a register.

	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-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-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-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-09  Richard Henderson  <rth@redhat.com>

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

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-16  David O'Brien  <obrien@FreeBSD.org>

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

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-02  Philip Blundell  <philb@gnu.org>

	From 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-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  Richard Henderson  <rth@redhat.com>

	* write.c (relax_seg, size_seg): Split from relax_and_size_seg.
	(write_object_file): Relax code then data, then size sections.

	* config/tc-i386.c (md_convert_frag): Don't die on local symbols
	that have been finalized.

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  Hans-Peter Nilsson  <hp@axis.com>

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

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-18  Dave Brolley  <brolley@redhat.com>

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

2001-03-16  Philip Blundell  <philb@gnu.org>

	* configure: Regenerate.

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-11  Philip Blundell  <philb@gnu.org>

	* configure.in: Set version to 2.11.

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-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-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-14  Philip Blundell  <pb@futuretv.com>

	From 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.

	From 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-13  Alan Modra  <alan@linuxcare.com.au>

	* 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  Philip Blundell  <pb@futuretv.com>

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

Mon Feb 12 17:44:08 CET 2001  Jan Hubicka  <jh@suse.cz>

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

2001-02-09  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  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-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.

Sun Jan 14 00:36:42 MET 2001  Jan Hubicka  <jh@suse.cz>

	* tc-i386.h (TARGET_MACH): New macro.
	(i386_mach): Declare.
	* 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.

Sat Jan 13 01:47:35 MET 2001  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.

Sat Jan  6 13:33:10 MET 2001  Jan Hubicka  <jh@suse.cz>

	* configure.in: Define DEFAULT_ARCH for i386.
	* 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.

Fri Jan  5 13:26:42 MET 2001  Jan Hubicka  <jh@suse.cz>

	* tc-i386.c (md_assemble): Handle third byte of the opcode as prefix.

Thu Jan  4 22:25:26 MET 2001  Jan Hubicka  <jh@suse.cz>

	* tc-i386.c (cpu_arch): Add Pentium4 and modify sledgehammer entry.
	* NEWS: Add note about Pentium4 support.

Wed Jan  3 17:26:32 MET 2001  Jan Hubicka  <jh@suse.cz>

	* tc-i387.c (pi, pte, pt): Update.
	(type_names): Add new types.

Wed Jan  3 16:26:52 MET 2001  Jan Hubicka  <jh@suse.cz>

	* 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.

Sat Dec 30 19:02:48 MET 2000  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.

Wed Dec 20 14:21:22 MET 2000  Jan Hubicka  <jh@suse.cz>

	* 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.
	* 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.

Mon Dec 11 14:35:42 MET 2000  Jan hubicka  <jh@suse.cz>

	* 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.
	* 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".

	* 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>

	* 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>

	* 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>

	* gas/config/tc-arc.h: Avoid warnings for LITTLE_ENDIAN and
	BIG_ENDIAN macros.
	* gas/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>

	* 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>

	* tc-i386.c: Fix prototype declarations for functions taking no
	arguments.

2000-10-24  Diego Novillo  <dnovillo@cygnus.com>

	* 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>

	* 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.

Thu Aug 24 20:41:05 2000  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.

Mon Aug 14 11:49:12 2000  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.

Wed Aug  9 16:28:21 EDT 2000	Diego Novillo <dnovillo@cygnus.com>

	* 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

Thu Jul 27 11:25:01 2000  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.

Thu Jul  6 17:20:58 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* as.c (parse_args): NULL terminate the long option list.

Tue Jul  4 14:08:28 2000  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.

Thu Jun 29 21:30:00 2000  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.

Tue Jun 13 20:58:28 2000  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.

Wed Jun  7 22:44:14 2000  Denis Chertykov  <denisc@overta.ru>

	* config/tc-avr.c (avr_operand): fix the formatting of the comment.

Wed Jun  7 21:26:15 2000  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.

Thu May  4 15:27:07 2000  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.

Tue May 23 00:57:05 2000  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.

Mon May 22 22:43:32 2000  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.

Sat May 20 16:41:55 2000  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_*.

Thu May 18 10:52:14 2000  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>

	* gas/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.

Mon May  1 08:54:23 2000  Catherine Moore  <clm@cygnus.com>

	* macro.c (macro_expand_body): Don't prepend macro number with zeroes.

Mon May  1 14:19:39 2000  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.

Tue Apr 25 11:02:02 2000  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>

	* obj-som.c: Terminate obj_pseudo_table.

Mon Apr 24 15:21:11 2000  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.

Sun Apr 23 16:45:45 2000  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.

Fri Apr 21 14:29:43 2000  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.

Fri Apr 21 13:20:53 2000  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.

Fri Apr  7 15:56:57 2000  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.

Wed Apr  5 22:26:32 2000  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.

Wed Apr  5 22:07:19 2000  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.

Wed Apr  5 06:35:45 2000  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* config/tc-sparc.c (sparc_ip): Avoid string pasting.

Tue Apr  4 19:27:50 2000  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.

Mon Apr  3 13:56:03 2000  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.

Thu Mar 16 23:45:16 2000  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.

Thu Mar 16 21:18:13 2000  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.

Thu Mar 16 20:58:10 2000  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.

Mon Mar 13 22:02:59 2000  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.

Sat Mar 11 00:01:39 2000  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.

Thu Feb 17 00:11:08 2000  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.

Fri Feb 11 14:21:51 2000  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
