1999-04-30  Nick Clifton  <nickc@cygnus.com>

	* config/tc-mcore.c (mcore_s_section): Dump literals before
	changing section.

1999-04-29  Nick Clifton  <nickc@cygnus.com>

	* config/tc-mcore.c (md_apply_fix3): Insert reloc addend into insn
	for COFF/PE port.

Mon Apr 26 12:34:37 1999  Doug Evans  <devans@canuck.cygnus.com>

	* config/tc-fr30.h (TC_FIX_TYPE): Delete, cgen fields moved to write.h.
	(TC_INIT_FIX_DATA): Delete.
	* config/tc-m32r.h (TC_FIX_TYPE): Delete, cgen fields moved to write.h.
	(TC_INIT_FIX_DATA): Delete.
	* write.h (struct fix): New member fx_cgen, ifdef USING_CGEN.
	* write.c (fix_new_internal): Initialize fx_cgen member.
	* cgen.c (gas_cgen_record_fixup,gas_cgen_record_fixup_exp): Update.
	(gas_cgen_md_apply_fix3): Update.
	* config/tc-m32r.c (md_cgen_lookup_reloc): Update.
	(md_cgen_record_fixup_exp): Update.
	(FX_OPINFO_R_TYPE): Update.

	* frags.c (frag_var,frag_variant): Initialize fr_cgen here.
	* config/tc-fr30.h (TC_FRAG_INIT): Delete.
	* config/tc-m32r.h (TC_FRAG_INIT): Delete.
	* frags.h (struct frag): Make opindex, opinfo ints.

	* config/tc-fr30.c (FX_OPINFO_R_TYPE): Delete, unused.

1999-04-26  Tom Tromey  <tromey@cygnus.com>

	* aclocal.m4, configure: Updated for new version of libtool.

1999-04-22  Nick Clifton  <nickc@cygnus.com>

	* config/tc-mcore.c (md_apply_fix3): Renamed function from
	md_apply_fix. 
	(md_apply_fix3): Do not fix up absolute relocations against
	symbolic values.

	* config/tc-mcore.h (MD_APPLY_FIX3): Define.

1999-04-20  Nick Clifton  <nickc@cygnus.com>

	* config/tc-mcore.c (md_pseudo_table): Add intercepts for section
	changes and data-in-text directives.
	(mcore_cons): New function: intercept cons() operations.
	(mcore_float_cons): New function: intercept float_cons()
	operations. 
	(mcore_stringer): New function: intercept stringer() operations.

1999-04-18  Ian Lance Taylor  <ian@zembu.com>

	* obj.h (struct format_ops): Change generate_asm_lineno field to
	take no parameters.
	* config/obj-ecoff.h (OBJ_GENERATE_ASM_LINENO): Don't define.

	* config/tc-alpha.c (find_opcode_match): Add default case to
	switch.
	(find_macro_match): Likewise.
	(load_expression): Parenthesize && within ||.

	* config/tc-alpha.h (TC_RELOC_RTSYM_LOC_FIXUP): Define.

1999-04-17  Nick Clifton  <nickc@cygnus.com>

	* config/tc-mcore.c (md_pseudo_table): Add overrides for .bss
	.text .data .section pseudo ops.
	(mcore_s_section): New function.  Dump lits before changing secs. 
	(mcore_s_text): New function.  Dump lits before changing secs. 
	(mcore_s_data): New function.  Dump lits before changing secs. 

1999-04-16  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/tc-mips.c (mips_32bitmode): New.
	(md_begin): Set mips_32bitmode if needed.
	(mips_elf_final_processing): Don't set EF_MIPS_ARCH.
	Set EF_MIPS_32BITMODE.

Fri Apr 16 12:26:39 1999  Bob Manson  <manson@charmed.cygnus.com>

	* config/obj-coff.c (c_section_symbol): Fix typo in previous
	change.

1999-04-16  Nick Clifton  <nickc@cygnus.com>

	* config/tc-mcore.h (LOCAL_LABELS_FB): Define to 1.

Thu Apr 15 16:52:09 1999  Jeffrey A Law  (law@cygnus.com)

	* tc-hppa.c (pa_get_absolute_exression): Try to handle "5 %r3" 
	expressions correctly.


1999-04-15  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/tc-mips.c (mips_elf_final_processing): Set EF_MIPS_ARCH.

Mon Apr 12 23:45:07 1999  Jeffrey A Law  (law@cygnus.com)

	* tc-hppa.c (pa_ip, case '3'): New case for PA2.0 fmpyfadd
	and fmpynfadd instructions.

1999-04-11  Richard Henderson  <rth@cygnus.com>

	* as.h (environ): Declare it, if needed.
	* as.c (dump_statistics): Don't declare environ.
	* configure.in (environ): Detect declaration.
	* configure, config.in: Rebuild

	* config/tc-i386.c (i386_immediate): Accept @GOT relocations.
	(i386_displacement): Allocate enough space for replacement buffer.
	Clean up replacement buffer initialization.

1999-04-11  Bob Manson <manson@charmed.cygnus.com>:

	* subsegs.c (section_symbol): Don't create a new symbol if one
	already exists; instead, use the existing one, but set its segment
	and frag data if it hasn't already been defined.
	* config/obj-coff.c (c_section_symbol): Likewise.

Sat Apr 10 20:10:02 1999  Richard Henderson  <rth@cygnus.com>

	* tc-alpha.c (load_expression): Call as_bad instead of abort.

1999-04-08  Nick Clifton  <nickc@cygnus.com>

	* config/tc-mcore.c: New File: Support routines for MCore
	assembler.
	* config/tc-mcore.h: New File: Definitions for MCore assembler. 
	* config/obj-coff.c: Add support for mcore-pe target.

	* Makefile.am: Add support for MCore targets.
	* Makefile.in: Regenerate.
	* configure.in: Add support for MCore targets.
	* configure: Regenerate.

	* doc/all.texi: Set MCORE.
	* doc/as.texinfo: Document MCore specific command line options.
	
	* write.h: Prevent multiple inclusion.

1999-04-06  Ian Lance Taylor  <ian@zembu.com>

	* asintl.h (LC_MESSAGES): Never define.
	* as.c (main): Don't pass LC_MESSAGES to setlocale if the system
	does not define it.
	* gasp.c (main): Don't pass LC_MESSAGES to setlocale if the system
	does not define it.

	* Makefile.am (m68k-parse.c): If configuring in the source
	directory, copy m68k-parse.y into the local directory before
	running ylwrap, to remove spurious differences when generating
	snapshots.
	* Makefile.in: Rebuild.

	* config/tc-sparc.h (md_do_align): Just allocate the number of
	bytes necessary, rather than always allocating 1024.

1999-04-04  Ian Lance Taylor  <ian@zembu.com>

	* listing.c (listing_newline): Add cast to avoid warning.
	* read.c (generate_lineno_debug): Add cases to switch.  Reindent.
	* config/tc-i386.c (i386_scale): Add return value.
	(build_displacement_string): Remove unused local temp_disp2.
	(i386_intel_memory_operand): Add parentheses to avoid warning.
	(i386_intel_operand): Remove unused local end_of_operand_string.
	(i386_operand): Remove unused local operand_modifier.
	(i386_operand): Add parens to avoid warning.

1999-04-04  Don Bowman <don@pixsci.com>

	* configure.in: Add mips*-*-vxworks* target; have it define
	MIPS_STABS_ELF.
	* configure, config.in: Rebuild.

1999-03-31  Nick Clifton  <nickc@cygnus.com>

	* configure.in (emulations): Add support for arm-epoc-pe.
	* configure: Regenerate.
	* config/te-epoc-pe.h: New file.  Define macros specific to
	arm-epoc-pe target.
	* config/tc-arm.h: Select epoc-pe-arm target format if configured
	for arm-epoc-pe target.

Mon Mar 29 10:15:40 CST 1999  Catherine Moore  <clm@cygnus.com>

	* tc-mips.c (md_apply_fix):  Adjust value for linkonce sections.

Wed Mar 24 14:11:10 1999  Jeffrey A Law  (law@cygnus.com)

	* tc-hppa.c (pa_parse_nonneg_cmpsub_cmpltr): Clean up code to
	detect ",n" without a condition.
	(pa_parse_neg_cmpsub_cmpltr): Likewise.


Tue Mar 23 11:28:23 1999  Jeffrey A Law  (law@cygnus.com)

	* tc-hppa.c (pa_ip, case '~'): The condition for a branch on bit
	instruction is encoded with one bit.


1999-03-23  Ian Lance Taylor  <ian@zembu.com>

	* doc/internals.texi (CPU backend): Mention that
	line_separator_chars should not include newline.  From thi
	<ttn@mingle.glug.org>.

1999-03-22  Doug Evans  <devans@casey.cygnus.com>

	* config/tc-fr30.c (md_begin): Update call to fr30_cgen_cpu_open.
	* config/tc-m32r.c (md_begin): Update call to m32r_cgen_cpu_open.

Sun Mar 21 18:08:18 1999  Richard Henderson  <rth@cygnus.com>

	* tc-alpha.c (md_assemble): Allow '6' in an opcode.

Thu Mar 18 10:55:30 1999  Jeffrey A Law  (law@cygnus.com)

	* tc-hppa.c (pa_ip, case 'a'): Do not call pa_parse_..._cmpsub_cmpltr.


Thu Mar 18 02:30:07 1999  Jeffrey A Law  (law@cygnus.com)

	* tc-hppa.c (pa_ip, case 'd'): Do not allow ",n".
	
1999-03-15  Martin Hunt  <hunt@cygnus.com>

	* app.c (do_scrub_begin): Change '-' back to a symbol char
	so we can use multiple opcodes on a line again.

	* config/tc-d30v.c: By default, warn if a symbol has
	the same name as a register.  Plus some minor
	updates from the branch.

1999-03-13  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (md_apply_fix3): Handle BFD_RELOC_8,
	BFD_RELOC_16 and BFD_RELOC_64.

1999-03-12  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* expr.c (expr): Add missing else.

1999-03-12  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_apply_fix3): Improve error message.

1999-03-11  Doug Evans  <devans@casey.cygnus.com>

	* Makefile.am (CPU_TYPES): Add fr30.
	(cgen.o): Add $(CGEN_CPU_PREFIX)-desc.h dependency.
	(fr30,m32r dependencies): Update.
	* Makefile.in: Rebuild.

	* cgen.c (gas_cgen_record_fixup): Update use of operand->type.
	(gas_cgen_record_fixup_exp): Ditto.
	(gas_cgen_finish_insn): Call cgen_operand_lookup_by_num.
	(gas_cgen_md_apply_fix3): Ditto.  Update call to set_vma_operand.
	* config/tc-fr30.c (md_begin): Update call to fr30_cgen_cpu_open.
	(md_cgen_lookup_reloc): Update use of operand->type.
	* config/tc-m32r.c (md_begin): Update call to fr30_cgen_cpu_open.
	(md_convert_frag): Call cgen_operand_lookup_by_num.
	(md_cgen_lookup_reloc): Update use of operand->type.
	(m32r_cgen_record_fixup_exp): Ditto.

1999-03-09  Jim Blandy  <jimb@zwingli.cygnus.com>

	* config/tc-mips.c (md_show_usage): Fix message.

1999-03-03  Nick Clifton  <nickc@cygnus.com>

	* doc/c-arm.texi (ARM Syntax): Document new command line switches
	and LDR reg,=<expr> instruction.

	* config/tc-arm.c: Add support for -mcpu=arm810, -mcpu=arm9 and
	-mcpu=arm9tdmi.

Fri Feb 19 09:36:30 1999  Ian Lance Taylor  <ian@cygnus.com>

	* doc/c-arm.texi (ARM-Chars): Fix typo in use of '@'.

1999-02-17  Nick Clifton  <nickc@cygnus.com>

	This patch was created by: Scott Bambrough
	<scottb@corelcomputer.com>
	
	* app.c: 
	  Special cased '@' character.  The '@' character is used as the
	  ARM assembler comment character, as a special character 
	  and in ELF .symver pseudo-op's, and as a special character in
	  .type and .section pseudo-ops.
	(symver_pseudo): New static variable.
	(symver_state): New static variable.
	(struct app_save): Add field 'symver_state'.
	(app_push): Save global symver_state int struct app_save.
	(app_pop): Restore global symver_state from struct app_save.
  	(do_scrub_chars): Special case handling of '@' character in
	.symver pseudo-ops. 

	* configure.in: Modified to recognize armv* uname syntax from ARM
	Linux kernel.
	* configure: Regenerated.
	
	* config/obj-elf.c (obj_elf_section): Allow '%' as well as '@' as
	a prefix to the section's type.
	(obj_elf_type): Allow '%' as well as '@' and '#' as prefixes to
	the type's typename.

	* config/tc-arm.h: Add support for PIC generation:
	(pic_code): New boolean.
	(obj_relocate_extern): Define.
	(TC_RELOC_RTSYM_LOC_FIXUP): Define
	(TC_CONS_FIX_NEW): Define.
	(tc_fix_adjustable): Define.
	(GLOBAL_OFFSET_TABLE_NAME): Define.
	
	* config/tc-arm.c: Add support for PIC generation:
	(line_seperator_chars): Allow ';' as a seperator for Linux.
	(is_immediate_prefix): New macro.
	(arm_parse_reloc): New function.
	(s_arm_elf_cons): New function.
	(do_branch): Special case for BFD_RELOC_ARM_PLT32.
	(md_undefined_symbol): Special case handling for the Global Offset
	  Table's symbol.
	(md_apply_fix3): Handle PIC relocs.
	(tc_gen_reloc): Handle PIC relocs.
	(md_parse_option): Add support for '-k' command line switch to
	  enable PIC generation.
	(cons_fix_new_arm): New function.
	(s_arm_elf_cons): New function.

Tue Feb 16 16:31:53 1999  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Add comments for uses of AC_DEFINE.
	* acinclude.m4: Likewise.
	* acconfig.h: Remove.
	* aclocal.m4: Rebuild.
	* configure: Rebuild.
	* Makefile.in: Rebuild.
	* config.in: Rebuild.

1999-02-15  Jim Lemke  <jlemke@cygnus.com>

	* config/tc-mips.c (mips_ip: case 'o'): Fix assertion failure for
	non-constant offset from a base register.

1999-02-14  Ken Raeburn  <raeburn@raeburn.org>

	* config/tc-alpha.c (md_show_usage): Put \ before newline in
	strings always.

Sat Feb 13 14:10:10 1999  Richard Henderson  <rth@cygnus.com>

	* config/tc-alpha.c (cpu_types): Enable EV6 PALcode with -m21264.
	(emit_insn): Look for pc-relative and no-overflow specifiers on
	internal relocation types.

1999-02-13  Jim Blandy  <jimb@zwingli.cygnus.com>

	* doc/c-mips.texi (MIPS Opts): Updated list of -mNNNN and
	-mcpu=NNNN flags.

	* config/tc-mips.c: Remove all the mips_NNNN variables; just use
	mips_cpu instead.
	(mips_4650, mips_4010, mips_4100): Variables removed.
	(hilo_interlocks, gpr_interlocks, append_insn, macro_build, macro,
	macro2, mips16_macro, mips_ip): Test mips_cpu, not the mips_NNNN
	variables.
	(md_begin): Don't bother initializing the mips_NNNN variables;
	mips_cpu is set, and that's good enough now.
	(md_parse_option): Have the -mNNNN options set mips_cpu instead of
	the mips_NNNN variable.  The -no-mNNNN flags are now no-ops.
	(show): New function, to handle wrapping in the CPU lists.
	(md_show_usage): Update lists of -mcpu and -mNNNN switches.

Sat Feb 13 00:17:26 1999  Richard Henderson  <rth@cygnus.com>

	* config/tc-i386.c (i386_intel_operand): Ignore `SHORT' rather
	than treat as an immediate specifier.

Thu Feb 11 16:18:31 1999  Richard Henderson  <rth@cygnus.com>

	* config/tc-i386.c: Prototype many functions.
	(set_intel_syntax): Accept `prefix'/`noprefix' specifiers.
	(i386_immediate): Remove unused second argument.
	(i386_intel_operand): Fix i386_is_reg typo.
	(i386_operand): Use allow_naked_reg.
	(output_invalid): Make operand int for K&R.

Thu Feb 11 11:21:02 1999  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (EXTRA_as_new_SOURCES): Uncomment--fixed by automake
	patch.
	* Makefile.in: Rebuild.

1999-02-09  Doug Evans  <devans@casey.cygnus.com>

	* Makefile.am (DISTCLEANFILES): Change cgen-opc.h to cgen-desc.h.
	(cgen.o): Ditto.
	(EXTRA_as_new_SOURCES): Comment out.
	(.tcdep): <arch>-opc.h renamed to <arch>-desc.h.
	* Makefile.in: Rebuild.
	* doc/Makefile.in: Rebuild.
	* configure.in: Require autoconf 2.13.  Redo using_cgen handling.
	Delete call to AM_CYGWIN32.  Replace AM_EXEEXT with AC_EXEEXT.
	(AC_OUTPUT): <arch>-opc.h renamed to <arch>-desc.h.
	* configure: Rebuild.
	* aclocal.m4: Rebuild.
	* config.in: Rebuild.
	* cgen.c: Include cgen-desc.h, not cgen-opc.h.
	(*): CGEN_OPCODE_DESC renamed to CGEN_CPU_DESC.
	(gas_cgen_cpu_desc): Renamed from gas_cgen_opcode_desc.
	CGEN_INSN_ATTR renamed to CGEN_INSN_ATTR_VALUE.
	CGEN_OPERAND_ATTR renamed to CGEN_OPERAND_ATTR_VALUE.
	(gas_cgen_record_fixup): Remove unnecessary != 0 test.
	(gas_cgen_record_fixup_exp): Ditto.
	(gas_cgen_finish_insn): Ditto.  Refer to operand table via cpu
	descriptor, not global variable.
	(gas_cgen_md_apply_fix3): Refer to operand_table via cpu
	descriptor, not global variable.  Refer to insert_operand handler
	via cpu descriptor, not global function.
	* cgen.h (*): CGEN_OPCODE_DESC renamed to CGEN_CPU_DESC.
	* config/tc-fr30.c: Include opcodes/fr30-desc.h.
	(*): gas_cgen_opcode_desc renamed to gas_cgen_cpu_desc.
	CGEN_INSN_ATTR renamed to CGEN_INSN_ATTR_VALUE.
	Update call to CGEN_OPERAND_TYPE,CGEN_INSN_OPERANDS.
	* config/tc-m32r.c: Ditto.
	(assemble_two_insns): Update calls to cgen_lookup_get_insn_operands.
	(md_assemble): Ditto.
	(md_convert_frag): Update call to CGEN_OPERAND_ENTRY.

1999-02-09  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_apply_fix3): Fix handling of label1 - label2
	relocations for ELF targets.

1999-02-08  Nick Clifton  <nickc@cygnus.com>

	* configure.in: Add support for StrongARM target.
	* configure: Regenerate.

1999-02-05  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.h: Tidy OBJ_ELF and OBJ_COFF definitions.

	* config/tc-arm.c (md_apply_fix3): Fix BFD_RELOC_ARM_PCREL_BRANCH
	for COFF ports.

Wed Feb  3 11:35:47 1999  Richard Henderson  <rth@cygnus.com>

	* config/tc-alpha.c (md_show_usage): Document pca56 and ev6 options.

Mon Feb  1 20:37:30 1999  Catherine Moore  <clm@cygnus.com>

        * config/tc-i386.h (LONG_DOUBLE_MNEM_SUFFIX):  Define.
        (INTEL_DWORD_MNEM_SUFFIX):  Define.
        (BYTE_PTR):  Define.
        (WORD_PTR):  Define.
        (DWORD_PTR):  Define.
        (XWORD_PTR):  Define.
        (SHORT):  Define.
        (OFFSET_FLAT):  Define.
        (FLAT):  Define.
        (NONE_FOUND):  Define.
        (No_dSuf):  Define.
        (No_xSuf):  Define.
        * config/tc-i386.c  (set_intel_syntax):  New routine.
        (intel_syntax):  Declare.
        (allow_naked_reg):  Declare.
        (md_pseudo_table):  Support .intel_syntax and .att_syntax.
        (intel_float_operand):  New routine.
        (md_assemble):  Handle INTEL_DWORD_MNEM_SUFFIX.
        Handle brackets as well as parens.  Call i386_intel_operand for
        intel syntax.  Reverse operands if appropriate.  Handle new
        suffixes.  Handle movzx and movsx.
        (i386_is_reg):  New routine.
        (i386_immediate):  New routine.
        (i386_scale):  New routine.
        (i386_displacement):  New routine.
        (i386_operand_modifier):  New routine.
        (build_displacement_string):  New routine.
        (i386_parse_seg):  New routine.
        (i386_intel_memory_operand):  New routine.
        (i386_intel_operand):  New routine.
        (i386_operand):  Call i386_displacement, i386_immediate,
        i386_scale, etc.  instead of handling inline.
        (parse_register):  Handle registers without prefix.

Mon Feb  1 12:24:58 1999  Catherine Moore  <clm@cygnus.com>

        * configure:  Regenerate.
        * configure.in (arm-*-oabi):  New.
        (thumb-*-oabi):  New.
        * config/tc-arm.c (target_oabi):  Declare.
        (md_apply_fix3): Support REL relocs.
        (md_parse_option):  Handle -oabi.
        (elf32_arm_target_format):  New routine.
        (md_longopts):  Add OPTION_OABI.
        * config/tc-arm.h:  Redefine TARGET_FORMAT.


1999-01-28  Nick Clifton  <nickc@cygnus.com>

	* write.c (write_relocs): Handle out of range error.

	* config/tc-fr30.c (fr30_fix_adjustable): New function.
	(fr30_force_relocation): Default to 0.

	* config/tc-fr30.h (obj_fix_adjustable): Define.
	(TC_FORCE_RELOCATION): Define.

	* cgen.c (gas_cgen_md_apply_fix3): Do not apply fixes to VTABLE
	relocs. 

1999-01-16  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (write_2_short): Do not generate a sequential
	merge of two instructions if the left instruciton kills the right.

1999-01-11  Doug Evans  <devans@casey.cygnus.com>

	* Makefile.in: Regenerate.
	* configure.in: Redo test for using cgen.
	* configure: Regenerate.

1999-01-09  Nick Clifton  <nickc@cygnus.com>

	* config/obj-coff.h (obj_adjust_symtab): Prevent accidental
	redefinition of this macro.

Tue Jan  5 21:58:03 1999  Doug Evans  <devans@canuck.cygnus.com>

	* config/tc-mips.c (mips_frob_file): Disable "Unmatched %hi reloc"
	warning.

1998-12-29  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/tc-mips.c (append_insn): For mips16, insert a nop between
	a read of HI or LO and an immediatly following branch.

1998-12-29  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/tc-mips.c (md_begin): Another correction to the setting of
	mips_eabi64.

1998-12-23  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/tc-mips.c (md_begin): Correct type-o in setting of mips_eabi64.

1998-12-21  Nick Clifton  <nickc@cygnus.com>

	* config/tc-m32r.c (md_assemble): Emit a NOP after a relaxable 16
	bit insn when optimizing, so that parallelised instructions will
	start on a 32 bit boundary.

1998-12-19  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/tc-mips.c (mips_eabi64): New.
	(md_begin): Set mips_eabi64.
	(mips_elf_final_processing): Use it.

1998-12-18  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/tc-mips.c (mips_elf_final_processing): 
	Correct setting of ABI in e_flags.

Wed Dec 16 16:17:22 1998  Dave Brolley  <brolley@cygnus.com>

	* config/tc-fr30.c (md_assemble): Warn about invalid instructions in delay slots.

1998-12-16  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/tc-mips.c (md_begin,md_parse_option): Handle vr4111.
	
1998-12-15  Doug Evans  <devans@casey.cygnus.com>

	* cgen.c (gas_cgen_md_apply_fix3): Mark as an error, rather than a
	warning, values that don't fit in the field.

1998-12-15  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/tc-mips.c (mips_abi_string): New.
	(md_parse_option,md_longopts): Add mabi.
	(mips_elf_final_processing): Set e_flags based on mabi flag.

1998-12-15  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/tc-mips.c (md_parse_option): Handle vr4111. 

98-12-11  Ken Raeburn  <raeburn@cygnus.com>

	* config/tc-h8300.c (build_bytes): Change message given if the
	instruction requires H8/300H mode and we're not in Hmode, to
	suggest that it may be the operand modes that are the problem, not
	necessarily the opcode.

1998-12-10  Nick Clifton  <nickc@cygnus.com>

	* config/tc-fr30.c: Add line separator character.

Tue Dec  8 19:51:50 1998  Mark Klein  <mklein@dis.com>

	* configure.in (hppa-*-mpeix*): New target.
	* config/obj-som.h (obj_som_compiler): Declare.
	* config/obj-som.c (compiler_seen): New static variable.
	(obj_som_compiler): New function.
	* config/tc-hppa.c: Update tc_data uses for change to bfd/som.h.
 	(md_pseudo_table): Add "compiler" if OBJ_SOM.
	(pa_type_args): Set hppa_priv_level.
	(pa_compiler): New static function if OBJ_SOM.
	* configure: Rebuild.

Tue Dec  8 15:00:50 1998  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (output_leb128): Don't mark as inline.

1998-12-08  Andrew MacLeod  <amacleod@cygnus.com>

	* config/tc-ppc.c (ppc_vbyte): Prototype and new function for 
	AIX .vbyte unaligned data support.
	(md_pseudo_table): Add 'vbyte' to list of valid pseudos.
	(ppc_elf_validate_fix): Add eh_frame to list of ELF relocatable 
	sections.

1998-12-07  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (md_assemble, do_assemble): Improve erroneous
	input handling. 

Mon Dec  7 09:48:34 1998  Catherine Moore  <clm@cygnus.com>

        * config/tc-arm.c (elf32_arm_force_relocation):  Check for
        BFD_RELOC_ARM_PCREL_BRANCH.

Sun Dec  6 12:46:36 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Define TARGET_BYTES_{BIG,LITTLE}_ENDIAN after
	checking the target type.
	(mips-dec-bsd*): Set endian to little.
	* configure: Rebuild.

	COFF weak symbol support, based on patches from Mark Elbrecht
	<snowball3@usa.net>:
	* config/obj-coff.h (S_IS_WEAK): Define if not BFD_ASSEMBLER.
	* config/obj-coff.c (obj_coff_weak): New static function.
	(obj_coff_endef) [both versions]: Handle weak symbols.
	(coff_frob_symbol): Likewise.
	(yank_symbols): Likewise.
	(obj_pseudo_table): Add "weak".

	* configure.in (m68k-*-gnu*): New target.  From Aymeric Vincent
	<aymeric.vincent@emi.u-bordeaux.fr>.
	* aclocal.m4: Rebuild with current tools.
	* configure: Rebuild.

	* config/tc-alpha.c (emit_ldgp): Give an error message rather than
	an assertion failure for a case we can't handle when OBJ_ECOFF.

	* expr.c (operator): And with 0xff to avoid problems with signed
	char.

1998-12-03  Nick Clifton  <nickc@cygnus.com>

	* config/tc-fr30.c (md_cgen_lookup_reloc): Generate
	BFD_RELOC_FR30_48 instead of BFD_RELOC_FR30_32.

1998-12-02  Nick Clifton  <nickc@cygnus.com>

	* config/tc-fr30.c (md_cgen_lookup_reloc): Enable relocs for
	LDI:20 insn.

Thu Nov 26 11:23:48 1998  Dave Brolley  <brolley@cygnus.com>

	* config/tc-fr30.c (md_pcrel_from_section): Restore previous calculation
	of pcrel point.

Tue Nov 24 17:21:52 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-fr30.c (md_pcrel_from_section): Fix calculation of
	pcrel point.

Tue Nov 24 14:54:38 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d10v.c (md_assemble): Make static 'etype' have file
	scope.
	(d10v_cleanup): Only generate previous insn if a multiline insn is
	not pending.

Fri Nov 20 11:41:13 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-fr30.c (md_cgen_lookup_reloc): Add support for
	FR30_OPERAND_I32. 

Thu Nov 19 15:01:29 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_parse_option): Add support for -marm7xxx and
	-marm6xxx command line switches.

1998-11-18  Doug Evans  <devans@casey.cygnus.com>

	* Makefile.am (DEP): Use $(srcdir)/../mkdep.
	(itbl-ops.o): Delete duplicate dependencies.
	Rebuild dependencies.
	Add fr30 dependencies.
	* Makefile.in: Rebuild.

Tue Nov 17 13:42:42 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-fr30.c (md_cgen_lookup_reloc): Updated to match latest
	opcode list.
	* listing.c: Ignore line terminator characters found inside
	strings. 

Thu Nov 12 19:21:24 1998  Dave Brolley  <brolley@cygnus.com>

	* po/gas.pot: Regenerated.

Thu Nov 12 10:54:16 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-fr30.c (fr30_is_colon_insn): New name for
	fr30_is_label_start().  Also checks for delay slot insns.

	* config/tc-fr30.c (fr30_is_label_start): New function: Handle
	FR30 instructions which contain a colon in the mnemonic.

	* config/tc-fr30.h (TC_START_LABEL): Define this macro.

Wed Nov 11 09:58:21 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-fr30.c: Removed currently superflous code.

Tue Nov 10 13:13:05 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-fr30.h: New file.
	* config/tc-fr30.c: Tweaking so that it will compile.

Tue Nov 10 14:41:33 1998  Catherine Moore  <clm@cygnus.com>

        * config/tc-d10v.h (obj_fix_adjustable):  Define.
        (TC_FORCE_RELOCATION):  Define.
        (d10v_force_relocation):  Declare.
        * config/tc-d10v.c (tc_gen_reloc):  Handle Vtable relocs.
        (md_apply_fix3):  Handle Vtable relocs.
        (d10v_fix_adjustable):  New.
        (d10v_force_relocation):  New.

Mon Nov  9 14:25:06 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c: Change default behaviour to ignore potential
	conflicts between register name and symbol names.

Wed Nov  4 18:42:00 1998  Dave Brolley  <brolley@cygnus.com>

	* configure.in: Add fr30-*-*.
	* config/tc-fr30.c: New file.
	* Makefile.in: Regenerated.
	* config.in: Regenerated.
	* configure: Regenerated.
	* doc/Makefile.in: Regenerated.
	* po/gas.pot: Regenerated.

Mon Nov  2 20:54:16 1998  Doug Evans  <devans@canuck.cygnus.com>

	* config/tc-m32r.c (assemble_two_insns): Ensure both insns
	are 16 bit insns.

Mon Nov  2 20:10:18 1998  Martin von Loewis  <loewis@informatik.hu-berlin.de>

	* app.c (do_scrub_begin): Set characters above 127 to be symbol
	characters.
	(do_scrub_chars): Add some casts to unsigned char to avoid
	unwanted sign extension.
	* read.c (lex_type): Set characters about 127 to be symbol
	characters.
	* config/tc-i386.c (md_begin): Set identifier_chars and
	operand_chars for values above 127.

Mon Nov  2 15:05:33 1998  Geoffrey Noer  <noer@cygnus.com>

        * configure.in: detect cygwin* instead of cygwin32*
        * configure: regenerate

Tue Oct 27 13:18:40 1998  Nick Clifton  <nickc@cygnus.com>

	* listing.c: Add support for producing a listing from piped
	input. 

Tue Oct 27 08:56:44 1998  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/tc-mips.c (hilo_interlocks): Remove mips_3900.
	(append_insn): Account for the tx39's multiply behavior.

1998-10-26  Michael Meissner  <meissner@cygnus.com>

	* config/tc-m32r.c (assemble_two_insns): Rename assemble_two_insns
	from assemble_parallel_insns.  Add support for '->' to indicate
	explicitly serializing the instructions.
	(md_assemble): Ditto.

Sat Oct 24 15:12:19 1998  Catherine Moore  <clm@cygnus.com>

        * config/tc-sh.c (sh_fix_adjustable):  Adjust EXTERN and
        WEAK handling.

Thu Oct 22 12:41:33 1998  Catherine Moore  <clm@cygnus.com>

        * cgen.c (gas_cgen_md_apply_fix3):  Revert last change.

Thu Oct 22 10:03:15 1998  Ron Unrau  <runrau@cygnus.com>

	* config/tc-mips.c : support frame and regmask/fregmask when
	  MIPS_STABS_ELF is specified.

Wed Oct 21 11;34:51 1998  Catherine Moore  <clm@cygnus.com>

        * config/tc-sh.c (sh_fix_adjustable):  Only include if OBJ_ELF.
        (md_apply_fix):  Don't return 1 for VTABLE relocs.
        * config/tc-sh.h (obj_fix_adjustable):  Define only if OBJ_ELF.

Tue Oct 20 11:18:28 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* doc/c-i386.texi: Replace occurences of "opcode" with
	"instruction mnemonic", "instruction", or "mnemonic" when
	referring to the name of an instruction.  Use "opcode" when
	referring to the sequence of machine bytes.

	* config/tc-i386.c (opcode_chars): Rename to mnemonic_chars.
	(is_opcode_char): Rename to is_mnemonic_char.
	(md_assemble and i386_operand): Correct error messages from
        "opcode" to "instruction mnemonic"
	Rename throughout opcode[] -> mnemonic[], opp -> mnem_p,
	MAX_OPCODE_SIZE -> MAX_MNEM_SIZE,
	DWORD_OPCODE_SUFFIX -> DWORD_MNEM_SUFFIX,
	WORD_OPCODE_SUFFIX -> WORD_MNEM_SUFFIX,
	BYTE_OPCODE_SUFFIX -> BYTE_MNEM_SUFFIX,
	SHORT_OPCODE_SUFFIX -> SHORT_MNEM_SUFFIX
	LONG_OPCODE_SUFFIX -> LONG_MNEM_SUFFIX

	* config/tc-i386.h (*_MNEM_SUFFIX): Rename from *_OPCODE_SUFFIX.

	* config/tc-i386.c (i386_operand): Check for garbage after
	register name.

Tue Oct 20 10:49:42 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (md_apply_fix3): Change handling of PCREL reloc
 	for BFD_ASSEMBLER to only change value when COFF if TE_PE.

Mon Oct 19 20:20:42 1998  Catherine Moore  <clm@cygnus.com>

        * config/tc-sh.h (obj_fix_adjustable):  Define.
        * config/tc-sh.c (sh_force_relocation):  Handle VT relocs.
        (md_apply_fix):  Likewise.
        (tc_gen_reloc):  Likewise.
        (sh_fix_adjustable):  New.

Mon Oct 19 12:35:43 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen.c (gas_cgen_finish_insn): Update handling of CGEN_INT_INSN_P.
	* cgen.h (gas_cgen_finish_insn): Update prototype.
	* config/tc-m32r.c (m32r_insn): CGEN_INT_INSN -> CGEN_INT_INSN_P.
	cgen_insn_t -> CGEN_INSN_INT.
	(make_parallel): Update handling of CGEN_INT_INSN_P.
	(assemble_parallel_insn): Ditto.
	(target_make_parallel): New function.
	(md_assemble): Use it.

Mon Oct 19 13:16:12 1998  Catherine Moore  <clm@cygnus.com>

        * config/tc-m32r.c (m32r_force_relocation):  Fix typo.

Sun Oct 18 18:48:57 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-sh.c (md_assemble): Make sure the entire opcode is
	converted into lower case.

Fri Oct 16 13:36:34 CDT Catherine Moore  <clm@cygnus.com>

        * cgen.c (gas_cgen_md_apply_fix3):  Handle VTABLE relocs.
        (gas_cgen_tc_gen_reloc):  Likewise.
        * config/tc-m32r.h (obj_fix_adjustable):  Define.
        * config/tc-m32r.c (m32r_fix_adjustable):  New.
        (m32r_force_relocation):  Handle VTABLE relocs.

Wed Oct 14 11:33:38 1998  Nick Clifton  <nickc@cygnus.com>

	* doc/c-arm.texi (ARM Directives): Document .ltorn directive.

Mon Oct 12 11:07:21 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-m32r.c (assemble_parallel_insn): Convert second opcode
	to lower case before parsing.

	* config/tc-d30v.c (parallel_ok): Ignore conflicts when explicitly
	parallel insns modift buts in the PSW as a side effect.

Thu Oct  8 10:18:33 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (find_format): Test for missing flag and
	control registers.
	
	(md_apply_fix3): Fix error messages to avoid
	assumption about presence of a symbol.

	(parallel_ok): Disallow parallel instructions that both modify the
	same flag register.

	(find_format): Generate a warning if an odd numbered register is
	used as the first register in a mutli-register instruction.

Wed Oct  7 14:09:14 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (md_apply_fix3): Do not assume that bad
	relocations are always associated with a symbol.

Tue Oct  6 09:31:15 1998  Catherine Moore  <clm@cygnus.com>

        * tc-sparc.h (TC_FORCE_RELOCATION):  Define.
        (elf32_sparc_force_relocation):  Declare.
        * tc-sparc.c (md_apply_fix3):  Handle vtable relocs.
        (tc_gen_reloc):  Handle vtable relocs.
        (elf32_sparc_force_relocation):  New.

Mon Oct  5 09:25:32 1998  Catherine Moore  <clm@cygnsu.com>

        * symbols.c (S_IS_FUNCTION):  New.
        * config/tc-v850.h (obj_fix_adjustable):  Define.
        (TC_FORCE_RELOCATION):  Define.
        (v850_force_relocation):  Declare.
        * config/tc-v850.c (tc_gen_reloc):  Use offset instead
        of fx_addnumber for VTABLE reloc addends.
        (md_apply_fix3):  Handle VTABLE relocs.
        (v850_fix_adjustable):  New.
        (v850_force_relocation):  New.

Mon Oct  5 00:48:52 1998  Jeffrey A Law  (law@cygnus.com)

	* tc-hppa.c (fp_operand_format): Add some additional formats.
	(pa_ip): Do not automatically promote into pa2.0 mode.
	(pa_level): Handle ".level 2.0".

Sun Oct  4 20:57:43 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (md_assemble): Handle AMD_3DNOW_OPCODE.
	* config/tc-i386.h (template.extension_opcode): Change to
        unsigned int to allow full range of 8-bit opcode suffixes.
	(None): Redefine as 0xffff.

	From Jeff B Epler <jepler@usgs.gov>
	* doc/c-i386.texi (i386-SIMD): New section.

Thu Oct  1 15:37:54 1998  Richard Henderson  <rth@cygnus.com>

	* read.c (discard_rest_of_line): New function.
	* read.h: Declare it.
	* config/tc-alpha.c (s_alpha_mask, s_alpha_frame): Use it.

Thu Oct  1 10:33:53 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d10v.c (find_symbol_matching_register): New function.
	(find_opcode): Cope with the case where a register name matches
	a symbol name.

Wed Sep 30 10:52:32 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_pcrel_from): Rename to
	v850_pcrel_from_section.
	(v850_pcrel_from_section): Do not resolves symbols in other
	sections. 

	* config/tc-v850.h (MD_PCREL_FROM_SECTION): Define.

Mon Sep 28 11:01:20 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d10v.c (find_opcode): Generate an error if a register
	is supplied for an operand that should not be a register.

Fri Sep 25 10:04:21 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (write_2_short): But do allow delayed branch
	instructions to have another instruction in the right bin.

Thu Sep 24 09:28:34 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (write_2_short): Do not allow instructions in
	the right container if the left container holds a branch
	instruction. 

Wed Sep 23 10:54:29 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (reg_name_search): Only warn if a name matches
	both a register name and symbol name.
	(find_format): Allow correct parsing of MVTSYS and MVFSYS insns.

Tue Sep 22 17:49:16 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (write_2_short): Implement EITHER_BUT_PREFER_MU
	execution unit class.

	(reg_name_search): If a name matches a register and a symbol,
	prefer the register.
	(find_format): Disallow flag registers when a general purpose
	register is required.
	If a number is required, but a register has been given, check to
	see if a symbol with the same name as the register exists, and if
	so, use that symbol.

Tue Sep 22 16:40:52 1998  Jim Wilson  <wilson@cygnus.com>

	* config/obj-elf.h (ECOFF_DEBUGGING): Add missing parens.

Tue Sep 22 15:44:21 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (find_format): Do not accept flag registers as
	general purpose registers.
	(find_format): If an immediate value is expected at a given place
	in a format, but a register name has been provided instead, check
	to see if that register name matches the name of a predefined
	symbol and if it does, then use the symbol instead.
	(reg_name_search): If a register name matches a symbol name,
	prefer the register name to the symbol name.

Mon Sep 21 10:42:57 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-m32r.c (m32r_do_align): After inserting NOPs, reset
	the previous insn to empty.

1998-09-20  Michael Meissner  <meissner@cygnus.com>

	* config/tc-ppc.c (md_apply_fix3): Do not break string into two
	pieces, forcing the use of an ANSI compiler.

Sun Sep 20 00:58:12 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/tc-m68k.h (TC_FORCE_RELOCATION): New macro.  Force vtable
	relocs.
	* config/tc-m68k.c (md_apply_fix_2): Do nothing for vtable relocs.

Tue Sep 15 08:51:07 1998  Catherine Moore  <clm@cygnus.com>
 
        * config/obj-elf.c (obj_elf_vtable_inherit):  Handle arm
        assembler syntax.
        (obj_elf_vtable_entry):  Likewise.
        * config/tc-arm.h:  Define TC_FORCE_RELOCATION for OBJ_ELF.
        * config/tc-arm.c (md_apply_fix3): Handle VTABLE relocations.
        (tc_gen_reloc): Likewise.
        (arm_fix_adjustable): Likewise.
        (elf32_arm_force_relocation): New.
        (armelf_frob_symbol):  Remove coff-style symbol support.

Wed Sep  9 11:27:16 1998  Richard Henderson  <rth@cygnus.com>

	* config/tc-i386.c (i386_operand): Fix typo in last patch.

Tue Sep  8 18:10:01 1998  Catherine Moore  <clm@cygnus.com>
 
        * config/tc-arm.c (arm_adjust_symtab):  Move #ifdef
        OBJ_COFF so that routine is defined for a.out format.

Tue Sep  8 15:56:19 1998  Richard Henderson  <rth@cygnus.com>

	* config/tc-i386.c (i386_operand): Detect non-segment registers
	used as segment prefixes.

Sat Sep  5 19:00:38 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ehopt.c (check_eh_frame): Check the size of the FDE, and don't
	optimize across FDE boundaries.

	* config/obj-coff.c (obj_coff_section): Preserve any link once
	flags when setting the section flags.

Fri Sep  4 17:07:14 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.h (obj_adjust_symtab): Fixed typo.
	* config/tc-arm.c (armelf_adjust_symtab): Reformatted.

Fri Sep  4 13:57:43 1998  Jakub Jelinek <jj@sunsite.ms.mff.cuni.cz>

	* config/tc-sparc.c (in_signed_range): Sign extend 32-bit words
	to the host width.

Wed Sep  2 11:31:14 1998  Richard Henderson  <rth@cygnus.com>

	* frags.c (frag_grow): Include the size of the frag struct in the
	obstack chunk size.

	* subsegs.c (subseg_set_rest): Adjust the seginfo frchain start
	if the new subseg comes before the old.

Tue Sep  1 15:01:33 1998  Jakub Jelinek <jj@sunsite.ms.mff.cuni.cz>

	* config/tc-sparc.c (sparc_ip): Allow all digits in an instruction
	to handle edge8 and edge16.

Mon Aug 31 09:51:14 1998  Richard Henderson  <rth@cygnus.com>

	* config/obj-elf.c (obj_elf_vtable_inherit): Print error message
	before we clobber the symbol involved.

Mon Aug 31 10:58:06 1998  Catherine Moore  <clm@cygnus.com>

        * config/tc-arm.c:  Remove OBJ_ELF definitions for 
        S_GET_STORAGE_CLASS and S_SET_STORAGE_CLASS.  Only
        use arm_adjust_symtab for OBJ_COFF.
        (armelf_adjust_symtab):  New Routine.
        * config/tc-arm.h:  Define obj_adjust_symtab to
        armelf_adjust_symtab for OBJ_ELF.
        
Sat Aug 29 22:18:51 1998  Richard Henderson  <rth@cygnus.com>

	* configure.in: Make all i386-elf targets use bfd_gas.
	* config/tc-i386.c (tc_i386_force_relocation): New.
	(tc_i386_fix_adjustable): Don't fix vtable relocs.
	(md_apply_fix3): Likewise.
	(tc_gen_reloc): Handle them.
	* config/tc-i386.h (TC_FORCE_RELOCATION): Always define, calling
	tc_i386_force_relocation.

Mon Aug 24 13:40:21 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_show_usage): Improve formatting of --help output.

Fri Aug 21 18:43:48 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (md_assemble): Copy previous opcode over
	current opcode after writing the first insturction of a reverse
	sequential pair. 
	
Fri Aug 21 07:30:35 1998  Doug Evans  <devans@canuck.cygnus.com>

	* read.h (generate_lineno_debug): Add prototype.
	* read.c (generate_lineno_debug): Make non-static.

Thu Aug 20 23:17:04 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (md_assemble): Only warn for address/data size
	prefixes.

Thu Aug 20 14:45:08 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (arm_fix_adjustable): Do not adjust relocations
	against Thumb function names, as the linker needs this information.

1998-08-20  Vladimir N. Makarov  <vmakarov@cygnus.com>

	* expr.c (operand): Check also that there is no advance in operand
	after atof_generic in order to decide "is it label 0f or floating
	point number?".

Wed Aug 19 09:30:16 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-m32r.c: Replace double dash prefix to M32R specific
	command line options with a single dash.
	* doc/c-m32r.texi: Replace double dash prefix with a single dash.

Tue Aug 18 11:59:43 1998  Catherine Moore  <clm@cygnus.com>

       * tc-arm.h: Define obj_fix_adjustable for OBJ_ELF.
       * tc-arm.c (arm_fix_adjustable): New routine.

1998-08-13  Vladimir N. Makarov  <vmakarov@cygnus.com>

	* read.c (s_align, s_comm, s_mri_common, s_fail, s_globl, s_space,
	s_float_space, s_struct, cons_worker): Move ignore_rest_of_line or
	demand_empty_rest_of_line before mri_comment_end.
	(equals): Check garbage after expression before
	mri_comment_end in MRI mode.

Thu Aug 13 15:08:42 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (macro): Correct M_SGE_I/M_SGEUI_I case for a
	small immediate constant to use the constant itself rather than
	always using 1.

Wed Aug 12 18:47:38 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-hppa.c (pa_enter): Call as_bad rather than abort.
	(pa_leave): Likewise.

Wed Aug 12 13:25:03 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (md_assemble): Emit a warning for stand-alone
	prefixes.
	(i386_operand): Fix an error message.

Tue Aug 11 14:44:32 1998  Nick Clifton  <nickc@cygnus.com>

	* doc/c-arm.texi (ARM Directives): Document .req directive.

	* config/tc-arm.c (reg_required_here): Display erroneous string if
	the register name could not be decoded.
	Do not set inst.instruction if the sift is -1.

Mon Aug 10 15:39:56 1998  Richard Henderson  <rth@cygnus.com>

	* config/tc-alpha.c (tc_gen_reloc): Bias WEAK symbols just as
	we do for EXTERN.

Mon Aug 10 15:06:18 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (d30v_align): Always perform alignment request,
	even if it is belived to be unnecessary.

Mon Aug 10 17:48:09 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	config/tc-i386.c (i386_operand): Size immediate constants by
	suffix (erroneously removed as part of July 7 change).

Sun Aug  9 20:45:32 1998  Catherine Moore  <clm@cygnus.com>

        * config/obj-elf.h:  Check for redefinition of obj_frob_symbol.
        * config/tc-arm.c:  Define S_GET_STORAGE_CLASS and S_SET_STORAGE_CLASS.
        (armelf_frob_symbol):  New Routine.
        * config/tc-arm.h:  Define obj_frob_symbol if OBJ_ELF.

Sat Aug  8 15:21:28 1998  Richard Henderson  <rth@cygnus.com>

	* config/tc-alpha.c (alpha_fix_adjustable): Don't adjust weak syms.

Wed Aug  5 15:54:14 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_begin): Set BFD private flags depending upon
	command line switches passed to assembler.

Mon Aug  3 14:02:52 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen.h (GAS_CGEN_MAX_FIXUPS): GAS_ prepended, all uses updated.
	(gas_cgen_opcode_desc): Declare.
	(gas_cgen_parse_operand): Declare.
	(*): Prepend gas_ to gas specific fns to denote them as such.
	All uses updated.
	* cgen.c (gas_cgen_opcode_desc): New global
	(gas_cgen_init_parse): Renamed from cgen_asm_init_parse.
	(queue_fixup): Renamed from cgen_queue_fixup.
	(*): Prepend gas_ to gas specific fns to denote them as such.
	All uses updated.
	(gas_cgen_md_apply_fix3): Update call to insert_operand.
	(gas_cgen_finish_insn): Renamed from cgen_asm_finish_insn.
	* config/tc-m32r.c (md_begin): Remove use of CGEN_SYM.
	Open opcode table and initialize it.
	(make_parallel): Use gas_cgen_opcode_desc.
	(assemble_parallel_insn): Ditto.  Remove use of CGEN_SYM.
	(md_assemble): Ditto.

Sat Aug  1 19:27:30 1998  Richard Henderson  <rth@cygnus.com>

	* as.h (debug_info_type): Add entries for unspecified and dwarf*.
	* ecoff.c (ecoff_generate_asm_lineno): Take no arguments; call
	as_where ourselves.  Provide a stub for !ECOFF_DEBUGGING.
	* ecoff.h: Move ECOFF_DEBUGGING protection inside GAS_ECOFF_H.
	Move ecoff_generate_asm_lineno outside ECOFF_DEBUGGING protection.
	* read.c (generate_lineno_debug): Tidy ECOFF bits.  Use
	DEBUG_UNSPECIFIED rather than DEBUG_NONE for initial test.
	* config/obj-elf.h (ECOFF_DEBUGGING) [TC_ALPHA]: Define to a variable.
	(SEPARATE_STAB_SECTIONS): Conditionalize on value of ECOFF_DEBUGGING.
	(INIT_STAB_SECTION): Likewise.
	(OBJ_PROCESS_STAB): Likewise.
	
	* config/tc-alpha.c (md_longopts): New options -mdebug/-no-mdebug.
	(md_parse_option): Watch for them.
	(alpha_cur_ent_sym, alpha_flag_mdebug): New variables.
	(md_begin): Kill neverdef code.
	(s_alpha_ent, s_alpha_end, s_alpha_mask, s_alpha_frame): New.
	(s_alpha_prologue): Watch alpha_cur_ent_sym.
	(s_alpha_coff_wrapper): New.
	(md_pseudo_table): Trap all ECOFF pseudos.
	
Fri Jul 31 16:45:54 1998  Ron Unrau <runrau@cygnus.com>

	Start of changes to remove mdebug section from mips*-elf
	Based on MIPS_STAB_ELF definition
	* acconfig.h: undef if not configured
	* config.in: undef if not configured
	* config/mips-elf.h: only set ECOFF debugging if not stabs-in-elf
	* config/tc-mips.c (s_ent): set BSF_FUNCTION
	* stabs.c (s_stab_generic): flush frag

Fri Jul 31 16:14:45 1998  Catherine Moore  <clm@cygnus.com>

        * configure.in: (arm-*-elf):  Handle.
        (thumb-*-elf): Handle.
        * configure:  Regenerate.
        * read.c (stringer): Fix typo in comment.
        * write.c (fixup_segment): Don't add symbol value to addend if
        TC_ARM and OBJ_ELF.
        * config/tc-arm.c (md_section_align):  Don't align dwarf debug
        sections.
        (tc_gen_reloc):  Always set the reloc addend to fixp->fx_offset
        for OBJ_ELF.

Thu Jul 30 21:38:43 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* config/tc-d30v.c ({cur,prev}_left_kills_right_p): New variables.
	(write_2_short): Emit warning if new flag is set.
	(do_assemble): Set flags if left instruction is one of special
	"right-instruction-killer" type.

Tue Jun 28 18:12:28 1998  Stan Cox  <scox@cygnus.com>
	
	* config/tc-sparc.c (md_number_to_chars, cons_fix_new_sparc):
	Always output words in debug_info section as big endian.
	(sparc_target_format): Choose correct bfd target.
	(md_apply_fix3): Rename BFD_RELOC_SPARC_32LE to BFD_RELOC_SPARC_REV32.
	
Tue Jul 28 11:01:21 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (md_assemble): Fix "errmsg" initialization
	to work with internationalization code.  Issue an error when two
	operands match that are not allowed to match.

Mon Jul 27 16:25:58 1998  Doug Evans  <devans@canuck.cygnus.com>

	* configure.in (install_tooldir): Allow target to specify whether
	it wants to be installed in $(tooldir)/bin.
	* configure: Regenerate.
	* Makefile.am (install-exec-local): Set install-exec-tooldir
	dependency via configure.
	* Makefile.in: Regenerate.

Fri Jul 24 19:58:59 1998  Doug Evans  <devans@canuck.cygnus.com>

	* Makefile.am (install-exec-local): Split into two ...
	(install-exec-bindir,install-exec-tooldir): New rules.
	* Makefile.in: Regenerate.

Fri Jul 24 16:31:49 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (install-exec-local): Don't remove the file before
	checking whether $(bindir) == $(tooldir)/bin.  From Maciej
	W. Rozycki <macro@ds2.pg.gda.pl>.
	* Makefile.in: Rebuild.

Fri Jul 24 09:13:46 1998  Doug Evans  <devans@canuck.cygnus.com>

	* cgen.c: Include libiberty.h.
	(cgen_md_apply_fix3): Update call to md_cgen_lookup_reloc.
	(cgen_tc_gen_reloc): Use xmalloc, not bfd_alloc.
	* cgen.h (cgen_md_apply_fix3,cgen_tc_gen_reloc): Declare.
	(md_cgen_lookup_reloc)): Declare.
	(md_cgen_record_fixup_exp): Declare.
	* config/tc-m32r.h (md_pcrel_from_section): Declare.
	(m32r_relax_frag): Declare.
	(cgen_md_apply_fix3): Decls moved to cgen.h.
	(cgen_record_fixup_exp,cgen_tc_gen_reloc): Ditto.
	(m32r_cgen_record_fixup_exp): Delete decl.
	* config/tc-m32r.c (m32r_cpu_desc): #if 0 out.
	(assemble_nop): Delete.
	(expand_debug_syms): Delete unused `exp'.
	(md_cgen_lookup_reloc): Renamed from CGEN_SYM (lookup_reloc).
	Add default case for -Wall.
	(m32r_cgen_record_fixup_exp): Add default case for -Wall.
	(md_atof): Delete unused wordP.

Thu Jul 23 13:19:50 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (md_assemble): Make sure "errmsg" has a non-NULL
	value.

Wed Jul 22 14:36:56 1998  Ian Lance Taylor  <ian@cygnus.com>

	* doc/as.texinfo: Add documentation for .end, .exitm, .fail,
	.ifc, .ifeqs, .ifge, .ifgt, .ifle, .iflt, .ifnc, .ifne, .ifnes,
	.print, .purgem, and .struct.  Remove documentation for
	.app-file.

Tue Jul 21 16:50:52 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen.c (cgen_md_apply_fix3): set_operand renamed to set_vma_operand.
	Update call to insert_operand.

Fri Jul 17 11:42:20 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-m32r.c (ms_show_usage): Formatting changes.

Wed Jul 15 15:38:28 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (md_assemble): Don't get confused by trailing
	whitespace after a prefix operator.

Tue Jul 14 15:32:56 1998  Richard Henderson  <rth@cygnus.com>

	* configure.in (i386-*-beos{pe,elf,}*): Recognize.

Tue Jul 14 12:33:44 1998  Chris Torek  <torek@bsdi.com>

	* config/tc-sparc.c (log2): New static function.
	(s_reserve): Use log2 to convert alignment before calling
	record_alignment.
	(s_common): Use log2 to convert alignment before calling
	record_alignment and frag_align.
	(sparc_cons_align): Use log2.

Tue Jul 14 11:58:40 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sparc.c (s_reserve): Set symbol size if OBJ_ELF.
	(s_common): Likewise.

	* config/tc-sparc.c (sparc_handle_align): Reindent a bit.  Correct
	initialization of waddr.
	(sparc_elf_final_processing): Add default case to switch.

Tue Jul 14 11:00:16 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* doc/c-i386.texi: Fix a typo.  Use the term 80-bit real rather
	than temporary real.

Mon Jul 13 13:55:42 1998  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (subsegs_finish): Don't align the segments if there were
	any errors.

	* config/obj-coff.c (c_symbol_merge): Correct number of bytes when
	copying aux information.

	* expr.c (make_expr_symbol): Catch attempts to turn an O_big
	expression into a symbol.

Mon Jul 13 13:29:04 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (mode_from_disp_size): Change arg and return
	type to unsigned int.
	(md_assemble): Change type used to store offsets from unsigned
	long to long.
	(i386_operand): Switch error check to only call RESTORE_END_STRING
	once after parse_register.

Fri Jul 10 16:00:04 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_show_usage): Changed format to match that
	of gcc, ld, etc.

	* as.c (show_usage): Changed format to match that of gcc, ld, etc.

Thu Jul  9 12:09:57 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/tc-m68k.c (tc_m68k_fix_adjustable): Don't adjust vtable
	relocs.
	(md_apply_fix_2): Force the symbol of the vtable reloc to be
	weak.

Thu Jul  9 11:31:54 1998  Ian Lance Taylor  <ian@cygnus.com>

	* doc/Makefile.am (MAINTAINERCLEANFILES): Define.
	* doc/Makefile.in: Rebuild.

Wed Jul  8 12:18:56 1998  Jeffrey A Law  (law@cygnus.com)

        * config/tc-mips.c (mips_ip, case 'i' and 'j'): Mask off high bits
        for %lo expressions.
        (mips_ip, case 'u'): Move range check after code to mask
        off bits in %hi/%lo expressions.  Mask off high bits for
        %lo expressions.

Tue Jul  7 17:57:38 1998  Ian Lance Taylor  <ian@cygnus.com>

	* doc/Makefile.am (gasver.texi): New target.
	(as.info, as.dvi): Depends upon gasver.texi.
	* doc/as.texinfo: Include gasver.texi.  Mention version number on
	title page and in top node.
	* doc/Makefile.in: Rebuild.

Tue Jul  7 11:42:16 1998  Richard Henderson  <rth@cygnus.com>

	* listing.c (listing_listing): For EDICT_LIST, skip all lines up to
	but not including the line containing the edict.
	* listing.h (LISTING_EOF): New.
	* input-scrub.c (input_scrub_next_buffer): Call it.

Tue Jul  7 13:00:37 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (i386_operand): Don't set the size of an
 	immediate address based solely on the suffix and the mode.

	* config/tc-i386.c (md_assemble): Add assertion to make sure
	overlap2 does not set Imm.

	* config/tc-i386.c (space_chars): Remove. The scrubber converts
	sequences of whitespace to a single space.
	(is_space_chars): Just compare with space.
	(md_begin): Don't initialize space_chars.
	(md_assemble): Just skip a single whitespace character.
	(i386_operand): Rewrite base-index parsing to use new
	parse_register, and to skip white space.  Skip white space in a
	number of other places too.  Don't give error message if
	parse_register fails.
	(parse_register): Change reg_string parameter to be non-const.
	Add end_op parameter.  Skip white space after the `%', and return
	end of register string.  Give error message here rather than
	caller.

Fri Jul  3 15:34:34 1998  Ian Lance Taylor  <ian@cygnus.com>

	Based on patch from Matt Semersky <matts@scd.hp.com>:
	* expr.c (op_encoding): Make const.
	(expr_set_precedence): New function.
	(expr_begin): Don't set operator rankings, just call
	expr_set_precedence.
	* expr.h (expr_set_precedence): Declare.
	* read.c (s_mri): Call expr_set_precedence.

Thu Jul  2 16:24:58 1998  Ian Lance Taylor  <ian@cygnus.com>

	* doc/as.texinfo (Statements): Remove paragraph discussing
	continuing lines with a backslash.  This hasn't worked for years,
	if it ever did.

Thu Jul  2 14:06:22 1998  Klaus Kaempf  <kkaempf@rmi.de>

        * obj-vms.c: Add C++ support with ctors/dtors sections.  Add weak
	symbol definitions.
	(Ctors_Symbols, Dtors_Symbols): New symbol chains.
	(ps_CTORS, ps_DTORS): New section types.
	(vms_fixup_xtors_section): New function
	(Ctors_Psect, Dtors_Psect): Define.
	(IS_GXX_XTOR): Define
	(global_symbol_directory): Change check of gxx_bug_fixed to 0.
	Filter static constructors/destructors and add to
	Ctors_Symbols/Dtors_Symbols chain.
	(vms_write_object_file): Write Ctors_Symbols/Dtors_Symbols to
	appropriate section.

        * tc-alpha.h (TARGET_FORMAT): Rename "evax-alpha" to "vms-alpha".
	* makefile.vms: Merge vax/vms support.

Wed Jul  1 20:06:20 1998  Richard Henderson  <rth@cygnus.com>

	* config/obj-elf.c (obj_elf_vtable_inherit, obj_elf_vtable_entry): New.
	(elf_pseudo_table): Add them.
	* config/tc-mips.c (mips_force_relocation): Force vtable relocs.
	(md_apply_fix): Accept them.
	(mips_fix_adjustable): Don't adjust them.
	(tc_gen_reloc): Mung BFD_RELOC_VTABLE_ENTRY for Rel.
	* config/tc-ppc.c (md_apply_fix3): Accept vtable relocs.
	* config/tc-ppc.h (TC_FORCE_RELOCATION_SECTION): Force vtable relocs.
	(tc_fix_adjustable): Don't adjust them.

Wed Jul  1 16:35:32 1998  Doug Evans  <devans@seba.cygnus.com>

	* Makefile.am (CGEN_CPU_PREFIX): New variable.
	(cgen.o): Use it.
	* Makefile.in: Regenerate.
	* configure.in: AC_SUBST cgen_cpu_prefix.
	* configure: Regenerate.

Wed Jul  1 21:38:56 1998  J"orn Rennecke  <amylaar@cygnus.co.uk>

	* config/tc-sh (COND_JUMP_DELAY, COND12_DELAY_LENGTH): Define.
	Changed all users of COND12_DELAY.

Fri Jun 26 11:21:11 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (set_arch_mach): New function.
	(md_pseudo_table): Add pseudo-ops to set the current machine type.
	(md_begin): Default to mn10300 mode.
	(md_assemble): Only accept instructions for the core mn10300
	chip and the active machine type.

Wed Jun 24 19:06:04 1998  Ian Lance Taylor  <ian@cygnus.com>

	* subsegs.h (segment_info_type): Give the struct a name.
	* config/tc-h8300.h (tc_reloc_mangle): Add prototype.
	* config/tc-h8500.h (tc_reloc_mangle): Declare.
	* config/tc-sh.h (sh_coff_reloc_mangle): Add prototype.
	* config/tc-w65.h (tc_reloc_mangle): Declare.
	* config/tc-z8k.h (tc_reloc_mangle): Declare.

Wed Jun 24 13:45:00 1998  Catherine Moore  <clm@cygnus.com>

        * config/tc-v850.c (v850_comm):  Restore old section
        after common processing.

Wed Jun 24 11:50:54 1998  Klaus Kaempf  <kkaempf@progis.de>

	* config/obj-vms.c (Create_VMS_Object_File): Force binary file.

Tue Jun 23 17:47:31 1998  Jim Wilson  <wilson@cygnus.com>

	* config/tc-h8300.c (do_a_fix_imm, build_bytes): Replace cast to
	char with code that explicitly sign-extends.

Tue Jun 23 13:54:57 1998  Nick Clifton  <nickc@cygnus.com>
	
	* config/tc-v850.c (md_begin): Restore text section as the current
	section after creating call table sections.
	* config/obj-coff.h (SYM_AUXINFO): New macro to conceal ugly
	code. 

	* config/obj-coff.c (c_symbol_merge): Replace complex expresion
	with call to macro SYM_AUXINFO.

Tue Jun 23 15:09:27 1998  Mike Stump  <mrs@wrs.com>

	* Makefile.am (install-exec-local): Don't let EXEEXT interfere
	with the program transform name.
	* Makefile.in: Rebuild.

Mon Jun 22 19:52:42 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (c_symbol_merge): Fix copying of auxiliary
	information.

Mon Jun 22 15:18:58 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (i386_operand): Be prepared for a space between
	the open parenthesis and the start of the register operand,
	because of the June 16 change.

Sun Jun 21 21:27:03 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sh.c (md_apply_fix): Handle weak symbols correctly if
	BFD_ASSEMBLER.

Sun Jun 21 12:26:36 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (d30v_align): Always perform alignment request,
	even if it is belived to be unnecessary.

Fri Jun 19 13:57:06 1998  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (adjust_reloc_syms): Never adjust relocs against weak
	symbols.
	* config/tc-mips.c (md_apply_fix): Adjust accordingly.

Fri Jun 19 09:50:17 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (mn10300_insert_operand): Do not hardcode the
	shift amount for a repeated operand.  The shift amount for the
	repeated copy comes from the size of the operand.

Fri Jun 19 00:44:19 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-h8300.c (get_operand): Fix typos in ldm/stm support.

Wed Jun 17 13:07:05 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (md_show_usage): Fix -mipsN usage.

Tue Jun 16 13:06:21 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* app.c (do_scrub_begin): If tc_symbol_chars is defined, treat all
	characters in it as LEX_IS_SYMBOL_COMPONENT.
	* config/tc-i386.h (tc_symbol_chars): Define.
	(extra_symbol_chars): Declare.
	* config/tc-i386.c (extra_symbol_chars): Define.
	(comment_chars): Don't use '/' as comment start if TE_LINUX.
	(line_comment_chars): Set to '/' if TE_LINUX.
	* doc/c-i386.texi (i386-prefixes): Update.
	* doc/internals.texi (CPU backend): Document tc_symbol_chars.

Fri Jun 12 13:36:54 1998  Tom Tromey  <tromey@cygnus.com>

	* po/Make-in (all-yes): If maintainer mode, depend on .pot file.
	($(PACKAGE).pot): Unconditionally depend on POTFILES.

1998-06-12  Vladimir N. Makarov  <vmakarov@cygnus.com>

	* config/tc-d10v.c (md_apply_fix3): Checking displacement
	constraint in instructions REP & REPI.

Thu Jun 11 08:56:46 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (md_apply_fix3): Catch BFD_RELOC_8,
	BFD_RELOC_16, BFD_RELOC_64 and issue appropriate error messages.  

	(check_range): If the operand is shifted, then shift the number
	before checking its range.

	* write.c (adjust_reloc_syms): Add more checks for NULL pointers. 

	* config/tc-v850.c (v850_comm): Set SEC_COMMON bit on special
	common sections.

Wed Jun 10 17:26:35 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (v850_comm): Create special sections as needed.

1998-06-10  Vladimir N. Makarov  <vmakarov@cygnus.com>

	* config/tc-d10v.c (write_2_short): Addition of swapping
	instructions for sequential and reverse sequential order when
	given order is not possible.

Tue Jun  9 13:52:53 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: Rebuild dependencies.
 	(DEP_INCLUDES): Fix reference to intl build directory.
	* Makefile.in: Rebuild.

Tue Jun  9 12:20:05 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* doc/c-i386.texi: Update 16 bit documentation.

	* config/tc-i386.h: Change Data16 to Size16, Data32 to Size32,
	IgnoreDataSize to IgnoreSize as they are used for address size as
	well as data size.
	* config/tc-i386.c: Likewise.  Add code to reject addr32/data32 in
	32-bit mode, similarly addr16/data16 and variants.

Mon Jun  8 18:32:01 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (md_assemble): Fix handling of reverse
	sequential word multiply instructions.
	
	(do_assemble): Add extra command line argument, to allow mul32
	attribute to be preserved across parallel insns.
	(md_assemble): Insert NOPs between explicitly parallel insns which
	contain an 32 bit multiply and a 16 multiply.

Mon Jun  8 12:20:30 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c: REPNE renamed to REPNE_PREFIX_OPCODE, and
	likewise for REPE.

	* config/tc-i386.c (reloc): Add braces.

	* config/tc-i386.c (struct _i386_insn): Rename bi to sib to be
	consistent with Intel naming.
	* config/tc-i386.h (base_index_byte): Rename to sib_byte.  Don't
	use bitfields in sib_byte.
	(modrm_byte): Don't use bitfields here either.

	* config/tc-i386.c (current_templates): Add const.
	(parse_register): Add const to return, param, and char *s.
	(i386_operand): Add const to reg_entry *r.
	* config/tc-i386.h (templates): Add const to start, end.

	Inspired by code for 16 bit gas support from Martynas Kunigelis
	<martynas@nm3.ktu.lt>:
	* config/tc-i386.c (md_assemble): Add full support for 16 bit
	modrm, and Jump, JumpByte, JumpDword, JumpInterSegment insns.
	(uses_mem_addrmode): Remove.
	(md_estimate_size_before_relax): Add support here too.
	(md_relax_table): Rewrite interface to md_relax for 16 bit
	support.
	(BYTE, WORD, DWORD, UNKNOWN_SIZE): Remove.
	(opcode_suffix_to_type): Remove.
	(CODE16, SMALL, SMALL16, BIG, BIG16): Define.
	(SIZE_FROM_RELAX_STATE): Modify to suit above.
	(md_convert_frag): Likewise.
	(i386_operand): Add support for 16 bit base/index regs,
	immediates, and displacements.  Remove some unnecessary casts, and
	localise end_of_operand_string, displacement_string_start,
	displacement_string_end variables.  Add GCC_ASM_O_HACK.
	* config/tc-i386.h (NO_BASE_REGISTER_16): Define.

	* config/tc-i386.c (prefix_hash): Remove.
	(md_begin): Rewrite without obstacks.  Remove prefix hash table
	handling.  Rewrite lexical table handling.
	(i386_print_statistics): Don't print prefix statistics.
	(md_assemble): Rewrite instruction parser so that line is not
	converted to lower case.  Don't do a hash_find for prefixes,
	instead recognise them via opcode modifier.
	(expecting_operand, paren_not_balanced): Localise variables.
	* config/tc-i386.h (IsPrefix): Define.
	(prefix_entry): Remove.

	* config/tc-i386.h (PREFIX_SEPERATOR): Don't define.
	* config/tc-i386.c (PREFIX_SEPARATOR): Define here instead, using
	'\\' in case where comment_chars contains '/'.

	* config/tc-i386.c (MATCH): Ensure given operand and template
	match for JumpAbsolute.  Makes e.g. `ljmp table(%ebx)' invalid;
	you must write `ljmp *table(%ebx)'.

	From H.J. Lu <hjl@gnu.org>:
	* config/tc-i386.c (BFD_RELOC_16, BFD_RELOC_16_PCREL): Define
	as 0 ifndef BFD_ASSEMBLER.
	(md_assemble): Allow immediate operands without suffix or
	other reg operand to default in size to the current code size.

Mon Jun  8 09:45:00 1998  Catherine Moore  <clm@cygnus.com>
 
        * config/tc-v850.c (md_begin):  Restore creation of
        .call_table_text and .call_table_data sections.

Sat Jun  6 00:02:41 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (md_assemble): Set execution type to unknown
	after emitting a word of noops.

Fri Jun  5 23:27:04 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (mode_from_disp_size): Disp16 is mode 2.
	(i386_operand): Simplify checks for valid base/index combinations.
	Disallow `in 4(%dx),%al'.

	* config/tc-i386.c (struct _i386_insn): Make regs, base_reg, and
	index_reg const.
	(add_prefix): Change parameter from char to int.

	* config/tc-i386.h (Ugh): Define opcode modifier.
	* config/tc-i386.c (md_assemble): Print warnings for Ugh insns.

	* config/tc-i386.c (md_assemble): Rewrite MATCH and
	CONSISTENT_REGISTER_MATCH macros to check register types more
	thoroughly.  Check for illegal suffix/operand combinations
	when matching insns with operands.  Handle new `s' suffix, and
	associated FloatMF opcode modifier for float insns with memory
	operands.
	* config/tc-i386.h (FloatMF): Define new opcode modifier.
	(No_sSuf, No_bSuf, No_wSuf, No_lSuf): Likewise.
	(SHORT_OPCODE_SUFFIX, LONG_OPCODE_SUFFIX): Define.
	* config/tc-i386.c: Rename WORD_PREFIX_OPCODE to
	DATA_PREFIX_OPCODE throughout.

	* config/tc-i386.c (REGISTER_WARNINGS): Define.
	(md_assemble): Rewrite suffix/register operand checking code to be
	more thorough.  Remove Abs8,16,32.  Change occurrences of Mem to
	AnyMem, the better to grep.
	(pi): Remove Abs.
	(i386_operand): Don't set Mem bits in i.types[this_operand] when
	given a memory operand.  Don't set Abs bits either.
	(type_names): Remove Mem*, Abs*.
	* config/tc-i386.h (Mem8, Mem16, Mem32, Abs8, Abs16, Abs32): Don't
	define opcode_modifiers as these cases are handled by Disp8,
	Disp16, Disp32 and suffix checks.
	(COMES_IN_BOTH_DIRECTIONS): Remove.
	(FloatR): Define. It's OK to share the bit with ReverseRegRegmem.

	* config/tc-i386.c (md_assemble): Don't emit operand size prefix
	if IgnoreDataSize modifier given.  Remove ShortformW modifier
	test.  Add test for ShortForm in W base_opcode modification.
	Merge Seg2ShortForm and Seg3ShortForm code.
	* config/tc-i386.h (ShortFormW): Remove.
	(IgnoreDataSize): Define.

Fri Jun  5 10:50:53 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (md_assemble): Store previous segment state
	with previous instruction.

Wed Jun	 3 18:21:56 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (SCALE1_WHEN_NO_INDEX): Define.
	(ebp, esp): Remove static variables.
	(MATCH): Remove test for InOutPortReg.
	(i386_operand): Properly handle InOutPortReg here instead.
	Disallows `inb (%dx,2)', `inb %es:(%dx)' and `mov (%dx),%ax'
	(md_assemble): Simplify and correct modrm and sib generation.
	(i386_operand): Add warning for scale without index.
	Rewrite checks for valid base/index combinations.

	* config/tc-i386.c (END_STRING_AND_SAVE): Protect arguments of
	macros and enclose in do while(0).
	(RESTORE_END_STRING): Likewise.
	(md_assemble): Add one to printed operand number so we start
	from 1 not 0.  Add some more gettext invocations.
	(i386_operand): Fix `%%s' -> `%%%s'. Inc printed operand
	number here too.

	* config/tc-i386.h (WAIT_PREFIX, LOCKREP_PREFIX, ADDR_PREFIX,
	DATA_PREFIX, SEG_PREFIX): Define.
	* config/tc-i386.c (struct _i386_insn): Remove wait_prefix field.
	(check_prefix): Remove function.
	(add_prefix): New function.  Add prefix to i.prefix as well as
	doing checks.
	(md_assemble): Changes for add_prefix.	Remove hack for wait
	prefix, instead always output prefixes in fixed order.	Test
	for jcxz/loop when selecting between word & dword operations,
	and add address size prefix rather than operand size prefix.
	Remove operand -> address size hack when emitting jcxz/loop.
	(i386_operand): Remove O_Absent check as it's done in expr.

Wed Jun  3 15:09:10 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Recognize m5200 as a cpu_type of m68k.
	* aclocal.m4: Rebuild with current libtool.
	* configure: Rebuild.

Wed Jun  3 14:11:59 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/tc-m68k.c (md_estimate_size_before_relax): Add more calls
	to relaxable_symbol to prevent references to external symbol from
	being relaxed.

Wed Jun  3 14:10:36 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (relaxable_symbol): If TARGET_OS is "elf", all
	symbols are relaxable.

Wed Jun  3 09:16:00 1998  Catherine Moore  <clm@cygnus.com>
 
        * config/tc-v850.c (md_begin):  Don't create special
        sections by default.
 
Tue Jun  2 14:52:56 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mips.c (macro): For div and udiv, close the
	reorder block as soon as possible.

Tue Jun  2 15:36:13 1998  Ian Lance Taylor  <ian@cygnus.com>

	From Matt Semersky <matts@scd.hp.com>:
	* macro.c (macro_mri_mode): New function.
	* macro.h (macro_mri_mode): Declare.
	* read.c (s_mri): Call macro_mri_mode when switching in and out of
	MRI mode.

Tue Jun  2 13:32:22 1998  Klaus Kaempf  <kkaempf@progis.de>

	* config/tc-alpha.c (s_alpha_comm): Allow alignment parameter in
	OBJ_EVAX case.

	* config/tc-alpha.c (s_alpha_comm): Defer restoring character
	until after xstrdup in OBJ_EVAX case.

Tue Jun  2 13:11:13 1998  Pat Rankin  <rankin@eql.caltech.edu>

	* config/tc-vax.c (md_create_short_jump): Fix off by two bug in
	offset calculation.  Also, use VAX_BRW from vax-inst.h instead
	of hardcoded magic number.
	(md_create_long_jump): Use VAX_JMP and VAX_ABSOLUTE_MODE macros.

Tue Jun  2 09:25:34 1998  Doug Evans  <devans@canuck.cygnus.com>

	* read.c (do_s_func): New function.
	(s_func): Call it.
	* read.h (do_s_func): Add prototype.

Mon Jun  1 12:47:30 1998  Doug Evans  <devans@canuck.cygnus.com>

	* config/tc-m32r.c (m32r_do_align): Only fill code sections with
	nops if fill pattern not specified.

Mon Jun  1 14:08:35 1998  Ian Lance Taylor  <ian@cygnus.com>

	From Andrew Crabtree <andrewc@typhoon.rose.hp.com>:
	* config/te-go32.h (TE_GO32): Define.
	* config/tc-i386.h (LOCAL_LABEL): Don't define if TE_GO32.

Sun May 31 15:43:06 1998  Doug Evans  <devans@canuck.cygnus.com>

	Implement .func/.endfunc pseudo-ops.
	* read.h (stabs_generate_asm_func,stabs_generate_asm_endfunc): Declare.
	(s_func): Declare.
	* read.c (potable): Add .func,.endfunc.
	(s_func): New function.
	* stabs.c (stabs_generate_asm_func,stabs_generate_asm_endfunc): New
	functions.
	(in_doc_func_p,current_function_label): New static globals.
	(stabs_generate_asm_lineno): Emit function relative stabs if in .func.

Fri May 29 18:13:12 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-a29k.h (WORKING_DOT_WORD): Define.
	* config/tc-alpha.h (WORKING_DOT_WORD): Define.
	* config/tc-arm.h (WORKING_DOT_WORD): Define.
	* config/tc-h8300.h (WORKING_DOT_WORD): Define.
	* config/tc-h8500.h (WORKING_DOT_WORD): Define.
	* config/tc-hppa.h (WORKING_DOT_WORD): Define.
	* config/tc-i860.h (WORKING_DOT_WORD): Define.
	* config/tc-i960.h (WORKING_DOT_WORD): Define.
	* config/tc-tic30.h (WORKING_DOT_WORD): Define.
	* config/tc-w65.h (WORKING_DOT_WORD): Define.
	* config/tc-z8k.h (WORKING_DOT_WORD): Define.
	* config/tc-a29k.c: Don't define md_short_jump_size,
 	md_long_jump_size, md_create_short_jump or md_create_long_jump.
	* config/tc-alpha.c: Likewise.
	* config/tc-alpha.h: Likewise.
	* config/tc-arm.c: Likewise.
	* config/tc-h8300.c: Likewise.
	* config/tc-h8500.c: Likewise.
	* config/tc-hppa.c: Likewise.
	* config/tc-i860.c: Likewise.
	* config/tc-i960.c: Likewise.
	* config/tc-ppc.c: Likewise.
	* config/tc-sh.c: Likewise.
	* config/tc-sparc.h: Likewise.
	* config/tc-tic30.c: Likewise.
	* config/tc-w65.c: Likewise.
	* config/tc-z8k.c: Likewise.

Fri May 29 16:03:26 1998  Pat Rankin  <rankin@eql.caltech.edu>

	* config/tc-vax.c (_): Delete this macro used for placeholder
	values in vax_operand_width_size; it conflicts with the _() macro
	used for internationalization.

Fri May 29 13:46:07 1998  Ian Lance Taylor  <ian@cygnus.com>

	* symbols.c (symbol_find_base): Fix case insensitive symbol name
	code.  From Chris Moller <moller@bops.com>.

	Based on patch from Klaus Kaempf <kkaempf@progis.de>:
	* struc-symbol.h (struct broken_word): Add seg and subseg fields.
	* read.c (emit_expr): Initialize seg and subseg fields of a new
	broken word.
	* write.c (write_object_file): Switch to the appropriate segment
	and subsegment when processing a broken word.

	* config/tc-m68k.c (mri_assemble): New static function.
	(build_mri_control_operand): Call mri_assemble rather than
	md_assemble.
	(s_mri_else, s_mri_break, s_mri_next, s_mri_for): Likewise.
	(s_mri_endf, s_mri_endw): Likewise.

Wed May 27 11:16:25 1998  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (s_org): Call md_flush_pending_output if it is defined.

	* config/tc-sparc.c (md_show_usage): Add \n\ to new string.

Tue May 26 19:27:52 1998  Stan Cox  <scox@equinox.cygnus.com>

	* config/tc-sparc.c (OPTION_LITTLE_ENDIAN_DATA): New.
	(md_parse_option): Add for same.
	(sparc_md_end): Set bfd_mach_sparc_sparclite_le.
	(md_apply_fix3, tc_gen_reloc): Allow BFD_RELOC_SPARC_32LE.
	(cons_fix_new_sparc): Added to create BFD_RELOC_SPARC_32LE.

	* config/tc-sparc.h (cons_fix_new_sparc): Added.
	
Thu May 21 15:02:41 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (find_real_start): Relax definition of local
	labels.

Tue May 19 16:59:44 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (d30v_align): Apply address adjustment to all
	symbols at the given address, not just the last one specified.

Tue May 19 08:25:19 1998  Catherine Moore <clm@cygnus.com>

        * config/tc-sparc.c (sparc_handle_align): Use number_to_chars_bigendian
        or number_to_chars_littleendian to write data.

Mon May 18 17:09:30 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_assemble): Remove artificially created
	register name symbols.

Mon May 18 13:47:06 1998  Doug Evans  <devans@canuck.cygnus.com>

	* write.c (fixup_segment): Change "segment" to "section" in
	error message.

Mon May 18 16:55:40 1998  Michael Meissner  <meissner@cygnus.com>

	* write.c (fixup_segment): Change sym1-sym2 message again.

Mon May 18 09:31:43 1998  Michael Meissner  <meissner@cygnus.com>

	* write.c (fixup_segment): Improve error message for sym1-sym2
	errors when sym1 is in a different segment from sym2.

Wed May 13 10:16:37 1998  Doug Evans  <devans@canuck.cygnus.com>

	* config/tc-m32r.c (warn_unmatched_high): New static local.
	(OPTION_WARN_PARALLEL): Rename from OPTION_WARN.
	(OPTION_NO_WARN_PARALLEL): Rename from OPTION_NO_WARN.
	(md_longopts): Recognize --{no-,}warn-unmatched-high.
	(md_parse_option): Likewise.
	(md_show_usage): Likewise.
	(m32r_frob_file): Likewise.

	* read.c (generate_file_debug,generate_lineno_debug): New functions.
	(read_a_source_file): Call them.
	* read.h (stabs_generate_asm_file): Declare.
	* stabs.c (stabs_generate_asm_file): New function.
	(generate_asm_file): New function.
	(stabs_generate_asm_lineno): Move file name handling into
	generate_asm_file.

Tue May 12 12:03:44 1998  Richard Henderson  <rth@cygnus.com>

	* config/tc-d30v.c (cur_mul32_p, prev_mul32_p): Make static.
        (d30v_current_align, d30v_current_align_seg): New variables.
        (d30v_last_label): New variable.
        (d30v_align, s_d30v_align, s_d30v_text): New functions.
        (s_d30v_data, s_d30v_section): Likewise.
        (md_pseudo_table): Call them.
        (md_begin): Initialize d30v_current_align_seg.
        (md_assemble): Call d30v_align when needed by known current alignment.
        (d30v_frob_label, d30v_cons_align): New functions.
        * config/tc-d30v.h (md_do_align): Remove.
        (tc_frob_label): Call d30v_frob_label.
        (md_cons_align): New.

	* config/tc-d30v.c (find_format): Convert complex expressions to 
	expression symbols before processing.  Clean up code formatting.

Sun May 10 22:35:02 1998  Jeffrey A Law  (law@cygnus.com)

	* po/Make-in (install-info): New target.

Thu May  7 15:49:07 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (md_assemble): Handle "bra" just like "jmp"
	instructions.
	* config/tc-mn10300.c (md_assemble): Likewise.

Thu May  7 11:47:22 1998  Doug Evans  <devans@canuck.cygnus.com>

	* Makefile.am: Update with `make dep-am'.
	(HFILES): Add cgen.h.
	(cgen.o): Depend on cgen.h.
	* Makefile.in: Regenerate.

	* cgen.c (cgen_md_apply_fix3): Don't pass newline to as_warn_where.

Thu May  7 13:20:56 1998  Anders Blomdell  <anders.blomdell@control.lth.se>

	* gasp.c (grab_label): Permit a label to be a preprocessor
	variable by permitting a label to start with a backslash.

Thu May  7 12:50:33 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* config/tc-mips.c (validate_mips_insn): Removed hack
	for previously inaccessible bitfields in some INSN_TRAP
	instructions.

Thu May  7 11:13:00 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* config/tc-d30v.c (do_assemble): Abort with error message
	if opcode operands do not match.
	
Thu May  7 09:36:06 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* config/tc-mips.c (macro_build, validate_mips_insn): Implement
	'q' operand format for 20-bit "break"/"sdbbp" instructions.
	(mips_ip): Truncate overflowed "break" 'c' operand.  Implement
	similar new 'q' operand.

Thu May  7 07:47:14 1998  Michael Meissner  <meissner@cygnus.com>

	* cgen.c (cgen_asm_finish_insn): Fix typo.

Thu May  7 02:19:14 1998  Doug Evans  <devans@charmed.cygnus.com>

	* cgen.h: New file.
	* cgen.c: Include it.
	(MAX_FIXUPS): Renamed to CGEN_MAX_FIXUPS.
	(cgen_asm_finish_insn): Result is now void.  New arg `result'.
	All callers updated.
	* config/tc-m32r.c: Include cgen.h.
	(m23r_insn): New members num_fixups,fixups.

Wed May  6 16:29:19 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (md_apply_fix): Slightly rework some code
	to avoid compiler warning.

Wed May  6 15:26:34 1998  Klaus Kaempf  <kkaempf@progis.de>

	* makefile.vms: Run dec c with /nodebug.  Pass CC value when
	calling make.

        * makefile.vms (OBJS): Add ehopt.obj

Wed May  6 15:11:12 1998  Klaus Kaempf  <kkaempf@progis.de>

	* doc/c-vax.texi: Correct and extend vax/vms documentation.

Wed May  6 11:51:51 1998  Richard Henderson  <rth@cygnus.com>

	* config/tc-d30v.c (do_assemble): Accept a new parameter requesting
	a short format insn.
	(md_assemble): Set it for explicitly packed insns.
	
Tue May  5 13:23:13 1998  Nick Clifton  <nickc@cygnus.com>

	* config/obj-coff.c (c_symbol_merge): Do not take address of
	native fields when performing the memcpy.

Tue May  5 13:10:41 1998  Gavin Koch  <gavin@cygnus.com>

	* config/tc-mips.c (macro,macro2): Implement 
	M_DMULO_I, M_MULO_I, M_DMULOU_I, and M_MULOU_I.

Mon May  4 17:49:14 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/tc-m68k.h (TC_RELOC_RTSYM_LOC_FIXUP): Changed to keep
	relocations against globally visible symbols.
	* config/tc-m68k.c (relaxable_symbol): New macro.
	(m68k_ip, md_estimate_size_before_relax): Use it.
	(tc_m68k_fix_adjustable): Also handle weak symbols.

Mon May  4 16:12:23 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.h (TC_RELOC_RTSYM_LOC_FIXUP): Keep relocs for all
	references to externally visible symbols.
	* config/tc-i386.c (md_apply_fix3): When OBJ_ELF, don't add the
 	values in twice for a PC relative reloc if the symbol is
 	externally defined.

	* config/tc-sparc.h (tc_fix_adjustable) [OBJ_AOUT]: When PIC,
	don't adjust a PC relative reloc against an externally visible
	symbol.
	* config/tc-sparc.c (md_apply_fix3): When generating a.out PIC,
	for a PC relative fixup against an externally visible defined
	symbol, arrange to store object file and addend values as though
	the symbol were not defined.
	(tc_gen_reloc): Likewise.

Thu Apr 30 13:09:39 1998  Fred Fish  <fnf@ninemoons.com>

	* read.c (sizeof_leb128): Referenced externally by write.c so
	don't inline.

Wed Apr 29 15:45:57 1998  Michael Meissner  <meissner@cygnus.com>

	* config/tc-m32r.c ({,expand_}debug_sym): New functions to record
	and expand a 'debug' symbol associated with the next instruction
	that does not cause a short instruction to be filled with a NOP.
	(md_pseudo_table): Add support for .debugsym.
	(assemble_parallel_insn): Add calls to expand_debug_sym as
	appropriate.
	(md_assemble): Ditto.

Tue Apr 28 19:16:26 1998  Tom Tromey  <tromey@cygnus.com>

	* as.c (main): Conditionally call setlocale.
	* gasp.c (main): Likewise.
	* asintl.h: Include <locale.h> if HAVE_LOCALE_H.
	(LC_MESSAGES): Now can be defined even when ENABLE_NLS.

Tue Apr 28 18:33:23 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* config/tc-d30v.c (md_show_usage): Correct gettext typo.
	
Tue Apr 28 12:16:30 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-hppa.c: Change all calls to bzero to use memset.
	(pa_ip): Add cast to avoid warning.
	(tc_gen_reloc, md_apply_fix): Likewise.
	(pa_find_space_by_number): Likewise.
	(hppa_force_relocation): Likewise.
	(pa_block): Change i to unsigned int.
	* config/obj-som.h (obj_som_copyright): Declare.

Tue Apr 28 11:35:56 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* ecoff.c (ecoff_build_lineno): Do not use dummy first_lineno
	for line numbers for assembly source.

Mon Apr 27 15:58:46 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change version number to 2.9.4
	* configure: Rebuild.

Mon Apr 27 12:07:33 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen.c (cgen_asm_finish_insn): New arg relax_p.  All callers updated.

Mon Apr 27 15:16:12 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ecoff.h: Change symbolS in function declaration to struct
	symbol.

Sun Apr 26 13:44:22 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sh.c (parse_reg): Add casts to avoid warnings.
	(md_convert_frag): Fix i18n typo.

Sat Apr 25 20:12:02 1998  Richard Henderson  <rth@cygnus.com>

	* ecoff.c (ecoff_get_cur_proc_sym): New function.
	* ecoff.h: Protoype it.
	* config/tc-alpha.c [ELF] (s_alpha_prologue): New function.
	[EVAX] (s_alpha_prologue): Delete.
	(md_pseudo_table): Update.

Sat Apr 25 14:00:52 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i960.c (md_assemble): Change bp_error_msg from static
	array to local pointer.
	(get_args, parse_expr): Add casts to avoid warnings.

Fri Apr 24 12:47:42 1998  Philippe De Muyter  <phdm@macqel.be>

	* read.c (s_set): Cast xmalloc return value to fragS *.
	* config/tc-m68k.c (m68k_ip): Function made static to match
	previous forward declaration.
	(insert_reg, init_regtable, md_convert_frag_1): Likewise.

Fri Apr 24 09:26:46 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c: Add internationalisation macros to error
	strings.  

	* config/tc-m32r.c (can_make_parallel): Add internationalisation
	macros to error strings.

Thu Apr 23 19:23:23 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-ppc.c (ppc_fix_adjustable): Correct test of whether a
	reloc is in the TOC csect.
	(md_apply_fix3): Correct gettext typo.

Thu Apr 23 14:58:31 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (find_real_start): Ignore symbols starting with
	.L - they are local labels and the branches are not really
	function calls but rather far jumps.

Wed Apr 22 15:57:21 1998  Tom Tromey  <tromey@cygnus.com>

	* po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).

Wed Apr 22 14:52:36 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (md_assemble): Print operand number rather than
	using ordinal_names.
	(i386_operand): Likewise.

Tue Apr 21 22:34:25 1998  Tom Tromey  <tromey@scribbles.cygnus.com>

	* Makefile.am (INTLLIBS): Define to work around apparent automake
	bug.
	All Makefiles: Regenerated.

	* Many files: Added gettext invocations around user-visible
	strings.
	* acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY,
	HAVE_LC_MESSAGES): Define.
	* dep-in.sed: Added asintl.h.
	* po/Make-in: New file.
	* gasp.c (main): Call setlocale, bindtextdomain, and textdomain.
	Include "asintl.h".
	* read.c (Z_): Renamed from `_'.
	* Makefile.am (SUBDIRS): Added po.
	(POTFILES): new macro.
	(po/POTFILES.in): New target.
	($(OBJS)): Added asintl.h.
	(HFILES): Likewise.
	(INCLUDES): Added -DLOCALEDIR, -I$(top_srcdir)/../intl.
	(as_new_LDADD): Added $(INTLLIBS).
	(as_new_DEPENDENCIES): Added $(INTLDEPS).
	(gasp_new_LDADD): Added $(INTLLIBS).
	(gasp_new_DEPENDENCIES): New macro.
	* configure, aclocal.m4: Rebuilt.
	* configure.in: Call CY_GNU_GETTEXT.  Generate po/Makefile.in and
	po/Makefile.
	(ALL_LINGUAS): Define.
	* macro.c: Include "asintl.h".
	* as.c (main): Call setlocale, bindtextdomain, and textdomain.
	* as.h: Include "asintl.h".
	* config/tc-i386.c (ordinal_names): Removed.
	(md_assemble): Changed error text to avoid ordinal_names.
	(i386_operand): Likewise.
	(reloc): Added as_bad to avoid i18n problems.
	(tc_gen_reloc): Likewise.
	* config/tc-arm.c (bad_args): Now a #define.
	(bad_pc): Likewise.
	* config/obj-vms.c (VMS_stab_parse): Changed type of
	`long_const_msg'.
	(global_symbol_directory): Unified strings to avoid i18n
	problems.
	* config/tc-m68k.c (get_reloc_code): Added some as_bad calls to
	avoid i18n problems.
	* config/tc-ns32k.c (reloc): Added as_bad to avoid i18n problems.
	* config/tc-ppc.c (md_apply_fix3): Added as_bad_where to avoid
	i18n problems.
	* config/tc-sh.c (md_convert_frag): Added as_bad to avoid i18n
	problems.
	* config/tc-v850.c (md_assemble): Changed C++ comment into C
	comment.
	* config/tc-vax.c (md_assemble): Added as_warn to avoid i18n
	problems.
	* as.c (print_version_id): Added an fprintf to avoid i18n
	problems.
	* cond.c (cond_finish_check): Added as_bad call to avoid i18n
	problems.
	* expr.c (expr): Added as_warn call to avoid i18n problems.
	* messages.c (as_assert): Changed code to avoid i18n problems.
	(as_abort): Likewise.
	* read.c (pseudo_set): Added as_bad call to avoid i18n problems.
	(s_space): Likewise.
	* po/Make-in, po/POTFILES.in, po/gas.pot: New files.

Tue Apr 21 17:01:22 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (check_prefix): New static function, split out
	from md_assemble.
	(struct _i386_insn): Add wait_prefix field.
	(md_assemble): Remove wait_prefix local variable.  Use
	check_prefix when adding a prefix.

	* config/tc-i386.c (current_templates): New static variable.
	(md_assemble): Remove current_templates local variable.
	(md_assemble, i386_operand): Improve error and warning messages in
	many places.  Add RESTORE_END_STRING in many places before error
	return.  Clarify some comments.

	* config/tc-i386.c (struct _i386_insn): Change seg field to a two
	element array.
	(md_assemble): Parse string instruction operands, looking for
	segment override prefixes.  Check for invalid segment prefixes on
	string instruction.
	(i386_operand): i.seg[] and max mem_operand changes for string
	insns.
	* config/tc-i386.h (EsSeg): Define.

	* config/tc-i386.h (regKludge): Define.
	(iclrKludge, imulKludge): Don't define.
	* config/tc-i386.c (md_assemble): Merge imulKludge and iclrKludge
	code.  Move ReverseRegRegmem fudges into Modrm case.  Reorder
	opcode_modifier checks to look for more common cases first.  Add
	default_seg for IsString case.

Tue Apr 21 16:18:12 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Call AM_PROG_LEX rather than AC_PROG_LEX and
	AC_DECL_YYTEXT.
	* configure: Rebuild with new automake and libtool.
	* aclocal.m4, Makefile.in: Likewise.

	* doc/Makefile.am (as.dvi): New target.
	* doc/Makefile.in: Rebuild.

Sat Apr 18 01:21:04 1998  Stan Cox  <scox@cygnus.com>

	* configure.in: Added sparc86x support.
	
	* configure: Rebuild.
	
	* config/tc-sparc.c (lookup_arch): Added arch_type to struct
	sparc_arch.
	(md_parse_option): Warn if -EL is not supported for this architecture.

	* config/tc-sparc.h (SPARC_BIENDIAN) Always define.
	
Sat Apr 18 01:19:01 1998  Jeffrey A Law  (law@cygnus.com)

        * config/tc-mips.c (mips_ip): Note when we use get match on
        the full instruction name.

Wed Apr 15 15:17:27 1998  Richard Henderson  <rth@cygnus.com>

	* symbols.c (resolve_symbol_value) [O_symbol]: Also store the symbol
	back into the expression to handle add/sub simplification correctly.

Wed Apr 15 07:06:04 1998  Catherine Moore  <clm@cygnus.com>

        * config/tc-mips.c (hilo_interlocks): Remove 4300.

Mon Apr 13 16:51:04 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (do_msr): Support undocumented 'msr cpsr_flg,
	#<n>' instruction.

Thu Apr  9 10:29:42 1998  Doug Evans  <devans@canuck.cygnus.com>

	* symbols.c (max_indent_level): New global.
	(print_symbol_value_1): Use it.
	* expr.h (expr_build_dot): Declare.
	* expr.c (expr_build_dot): New function.

Wed Apr  8 16:16:11 1998  Doug Evans  <devans@canuck.cygnus.com>

	* symbols.c (print_binary): New function.
	(print_expr_1): Call it.

Mon Apr  6 12:06:39 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/tc-m68k.c (m68k_ip, case "#B"): Install the offset of the
	operand in the opcode.

Fri Apr  3 11:58:19 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.h: Reorder operand flags and opcode modifier
	flags for clarity.  Remove unused definitions: Unknown,
	ImmUnknown, DispUnknown, NoModrm.
	* config/tc-i386.c (type_names): Add missing Debug type.
	(md_assemble): Better duplicate prefix checking.  Quicker string
	instruction check via new opcode_modifier flag.

Fri Apr  3 11:44:34 1998  Ian Lance Taylor  <ian@cygnus.com>

	* doc/as.texinfo (Invoking): Clarify -Wa example.

Fri Apr  3 09:12:23 1998  Gavin Koch  <gavin@cetus.cygnus.com>

	* config/tc-mips.c (mips_pseudo_table): Add weakext entry. 
	(s_mips_weakext): Define.
	* ecoff.c (ecoff_directive_weakext): Don't define if defined(TC_MIPS).
	* config/obj-ecoff.c (obj_pseudo_table): Don't add weakext if 
	defined(TC_MIPS).	
	
Thu Apr  2 22:42:02 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (tc_gen_reloc): The difference of two symbols
	is an error if the value can not be computed at assembly time.
	* config/tc-mn10300.c (tc_gen-reloc): Likewise.

Thu Apr  2 16:36:47 1998  Ian Lance Taylor  <ian@cygnus.com>

	* gasp.c (main): Set next field of new include_path structure to
	NULL.  From Avery Pennarun <averyp@gdc.ca>.

	* read.c (s_mri_sect): Call as_bad rather than abort for an
	unsupported MRI target.

Wed Apr  1 11:08:27 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (arm_validate_fix): New function.  Determine if
	the destination of a branch instruction should be altered.
	(find_real_start): New function:  Locate the real, Thumb coded
	start of a Thumb function.
	(do_t_branch23): Alter the destination of branches to Thumb
	functions. 

	* config/tc-arm.h: Define TC_VALIDATE_FIX.

Tue Mar 31 13:27:33 1998  Dean M. Deaver  <deaver@amt.tay1.dec.com>

	* config/tc-arm.c (decode_shift): Handle addressing mode 2 w/rrx
	also.

Wed Apr  1 13:13:20 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* doc/as.texinfo: Use @itemx for a secondary item in a table.
	* doc/c-hppa.texi: Likewise.

Tue Mar 31 17:52:40 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: Rebuild dependencies.
	* Makefile.in: Rebuild.

	* Makefile.am (DEP_INCLUDES): New variable.
	(.dep1): Change to work when srcdir is not an absolute path.
	(.tcdep, .objdep, .dep2, dep.sed): Likewise.
	* Makefile.in: Rebuild.

Mon Mar 30 12:46:48 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.h, config/tc-i386.c: Revert March 24
	LinearAddress patch.

	* configure.in: Set version to 2.9.1.
	* configure: Rebuild.

	* Branched binutils 2.9.

Mon Mar 30 11:22:08 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.h (FWait): Define.
	* config/tc-i386.c (md_assemble): Emit fwait prefix before any
	other prefixes.  Check FWait flag in opcode table to see which
	instructions require an fwait prefix.

Mon Mar 30 10:12:00 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* stabs.c (get_stab_string_offset): Always create a stab string
	section.

Sat Mar 28 22:28:02 1998  Ian Lance Taylor  <ian@cygnus.com>

	Fix some gcc -Wall warnings:
	* atof-generic.c (atof_generic): Add casts to avoid warnings.
	* ehopt.c (eh_frame_code_alignment): Likewise.
	* expr.c (integer_constant, operand): Likewise.
	* frags.c (frag_align): Likewise.
	* gasp.c (level_0, change_base, doinstr): Likewise.
	* hash.c (hash_ask): Likewise.
	* listing.c (listing_page, calc_hex, print_lines): Likewise.
	(debugging_pseudo): Likewise.
	* macro.c (define_macro, check_macro): Likewise.
	* read.c (read_a_source_file, s_align, s_float_space): Likewise.
	(ignore_rest_of_line, float_cons): Likewise.
	* symbols.c (decode_local_label_name): Likewise.
	* write.c (record_alignment, cvs_frag_to_fill): Likewise.
	(fixup_segment, number_to_chars_bigendian): Likewise.
	(number_to_chars_littleendian): Likewise.
	* config/atof-ieee.c (gen_to_words): Likewise.
	* config/tc-sparc.c (md_begin, md_assemble): Likewise.
	(sparc_ip, parse_keyword_arg, s_common): Likewise.
	* read.c (output_big_sleb128): Initialize locals to avoid
	warnings.
	(output_big_uleb128, equals): Likewise.
	* atof-generic.c (atof_generic): Change number_of_digits_* locals
	to unsigned int.  Change zeros to unsigned int.
	* cond.c (s_if): Add return to default case.
	* frags.c (frag_now_fix): Change return type to addressT.
	* frags.h (frag_now_fix): Update declaration.
	* listing.c (file_info_struct): Change linenum to unsigned int.
	(struct list_info_struct): Change hll_line to unsigned int.
	(print_source): Update format string.
	* read.c (emit_expr): Change scan to unsigned int, and don't
	bother to initialize it.
	* symbols.c (dollar_label_count): Change to unsigned long.
	* write.c (adjust_reloc_syms): Remove unused label reduce_fixup.
	* config/tc-sparc.c (sparc_memory_model): Only define if OBJ_ELF.
	* config/tc-sparc.c (tc_gen_reloc): Add return to default case.

Fri Mar 27 12:46:47 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (m68k_ip): Check legal addressing modes for
 	mcf5200 just as we do for m68000.
	(m68k_init_after_args): Likewise.
	(md_estimate_size_before_relax): Likewise.

Fri Mar 27 10:30:01 1998  Catherine Moore  <clm@cygnus.com>

	* config/tc-v850.c (md_assemble):  Store relocation addend in
	fixup instead of instruction.

Thu Mar 26 23:07:18 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (md_assemble): Swap template arguments to
	CONSISTENT_REGISTER_MATCH macro in reverse direction test.
	This macro is currently symmetric, so passing them the wrong
	way didn't cause any problem, but may if the macro is changed
	in the future.
	After copying template to i.tm, use i.tm. rather than t-> to
	access fields, and make t a const*
	Move i.tm.operand_types[] swap to immediately after the copy.

Wed Mar 25 13:44:18 1998  Doug Evans  <devans@canuck.cygnus.com>

	* expr.h (expr_build_uconstant): Add prototype.
	(expr_build_unary,expr_build_binary): Add prototypes.
	* expr.c (expr_build_uconstant): New function.
	(expr_build_unary,expr_build_binary): New functions.

Wed Mar 25 13:10:42 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * gasp.c (IS*): Cast argument to unsigned char, not unsigned int.
        * macro.c (macro_expand_body): Increase buffer size.
        * messages.c (as_warn): Likewise.
	(as_warn_where, as_bad, as_bad_where): Likewise.

Wed Mar 25 12:59:07 1998  Ian Lance Taylor  <ian@cygnus.com>

	Based on patch from H.J. Lu  <hjl@gnu.org>:
	* Makefile.am (DISTSTUFF): New variable.
	(diststuff): New target.
	* Makefile.in: Rebuild.

Tue Mar 24 16:51:29 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-m32r.h (md_cleanup, md_elf_section_change_hook): Call
	m32r_elf_section_change_hook.

	* config/tc-m32r.c (m32r_elf_section_change_hook): New function to
	emit a nop if a section ends with a 16 bit instruction.

Tue Mar 24 19:48:09 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (obj_coff_bss): Compile unconditionally.  Call
	s_lcomm rather than obj_coff_lcomm.
	(obj_pseudo_table): Compile .bss pseudo-op unconditionally.

Tue Mar 24 18:30:58 1998  H.J. Lu  <hjl@gnu.org>

	* config/tc-i386.h (LinearAddress): Define.
	* config/tc-i386.c (md_assemble): If LinearAddress is set for the
	instruction, don't use a default segment.

Mon Mar 23 18:53:40 1998  Joel Sherrill  <joel@OARcorp.com>

	* configure.in: (sh*-*-rtems*): Switched from ELF to COFF.
	* configure: Rebuild.

Fri Mar 20 19:15:44 1998  Ian Lance Taylor  <ian@cygnus.com>

	* aclocal.m4, configure: Rebuild with libtool 1.2.

Thu Mar 19 16:03:12 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_apply_fix3): fix code to test the range of
	PC relative branches.  Patch courtesy of Jonathan Walton. 

	
Wed Mar 18 09:29:51 1998  Nick Clifton  <nickc@cygnus.com>

	* configure.in (emulations): Add thumb-pe target.

	* configure (emulations): Add thumb-pe target.

1998-03-17  Ken Raeburn  <raeburn@cygnus.com>

	* itbl-lex.l (yywrap): Don't define if already defined as a
	macro.

Fri Mar 13 16:31:38 1998  Tom Tromey  <tromey@cygnus.com>

	* depend.c (quote_string_for_make): New function.
	(wrap_output): Use it.

Thu Mar 12 18:28:22 1998  Nick Clifton  <nickc@cygnus.com>

	* config/obj-elf.c (obj_elf_section): Set bss flag in seg_info
	structure if type is SHT_NOBITS.  [Bug fix courtesy of rth]

Sat Feb 28 17:28:55 1998  Richard Henderson  <rth@cygnus.com>

	* config/tc-alpha.c (md_shortopts, md_longopts, md_parse_option):
	Recognize -GN and -relax.
	(md_begin): Initialize gp size from -G switch.
	(alpha_force_relocation): Always force if -relax.
	(alpha_align): Take a new argument that will specify when to 
	emit an R_ALPHA_ALIGN relocation (though we don't do that now).
	Change all callers.  Emit nop alignment padding as nop+unop pair.

Sat Feb 28 17:06:22 1998  Richard Henderson  <rth@cygnus.com>

	* config/obj-elf.c [TC_ALPHA]: Include <elf/alpha.h>.
	* config/tc-alpha.h (ELF_TC_SPECIAL_SECTIONS): New.

Thu Feb 26 15:49:04 1998  Michael Meissner  <meissner@cygnus.com>

	* config/tc-d30v.c (write_2_short): Delayed jsr instructions don't
	require padding to the next long word boundary.

Mon Feb 23 11:29:06 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen.c: #include symcat.h.
	* config/tc-m32r.c: Likewise.

Mon Feb 23 10:27:40 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mips.c (mips_ip, case 'P'): Make 'P' arguments be
	absolute expressions instead of '$' prefixed register names.

Sat Feb 21 22:36:52 1998  Richard Henderson  <rth@cygnus.com>

	* read.c (s_set): Record file and line info for symbols when -as.
	(pseudo_set): Don't overwrite that dummy fragment.

Fri Feb 20 15:03:13 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-ppc.c (md_pseudo_table): Add "section".
	(ppc_named_section): New static function.

Thu Feb 19 22:25:42 1998  Richard Henderson  <rth@cygnus.com>

	* tc-ppc.c (ppc_biei): Cache the last symbol we inserted
	so we don't have to scan the entire list.

Tue Feb 17 17:02:15 1998  Fred Fish  <fnf@cygnus.com>

	* config/tc-d30v.c (parallel_ok): For the explicitly parallel
 	case, allow the parallel instructions to modify the same flag
 	bits.

Thu Feb 19 16:08:15 1998  Richard Henderson  <rth@cygnus.com>

	* listing.c (list_symbol_table): Categorize symbols by
	undefined_section rather than sy_frag->line == NULL.

Wed Feb 18 23:39:46 1998  Richard Henderson  <rth@cygnus.com>

	* Makefile.am (install-exec-local): Install properly when ln
	fails or tooldir == prefix.

Tue Feb 17 18:58:51 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen.c (cgen_md_apply_fix3): Delete call to validate_operand.
	Test result of insert_operand for error.

Fri Feb 13 16:41:42 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (AUTOMAKE_OPTIONS): Add cygnus.
	* configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.
	* doc/Makefile.am (AUTOMAKE_OPTIONS): Define.
	* doc/Makefile.in: Rebuild.

Fri Feb 13 00:47:44 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (macro_build): Handle operand type 'C'.
	(macro): Fix handling of M_COP[0-3].

Thu Feb 12 14:06:59 1998  Ian Lance Taylor  <ian@cygnus.com>

	Based on patches from Ross Harvey <ross@teraflop.com>:
	* macro.c (ISSEP): Only treat '<' and '>' as separator characters
	if macro_alternate or macro_mri.
	(getstring): Remove support for byte constants between < and >.
	(get_any_string): '<' only starts a string if macro_alternate or
	macro_mri.
	(macro_expand_body): Permit keyword parameters following
	positional parameters.

	NetBSD patches from Gordon W. Ross <gwr@mc.com>:
	* configure.in (alpha*-*-netbsd*): New target.
	* config/te-nbsd.h (LOCAL_LABELS_FB): Define.
	* configure: Rebuild.

	* as.h (flag_warn_suppress_instructionswap): Move from here...
	* config/tc-d10v.c (flag_warn_suppress_instructionswap): ...to
	here, and make static.

	* ehopt.c (eh_frame_code_alignment): Only use seg_info if
	BFD_ASSEMBLER or MANY_SEGMENTS.

	* as.c (show_usage): Update bug-gnu-utils address.
	* gasp.c (show_usage): Likewise.
	* doc/as.texinfo (Bug Reporting): Likewise.

Wed Feb 11 23:26:28 1998  Jeffrey A Law  (law@cygnus.com)

        * config/tc-mips.c (load_address): Don't use mips III or mips IV
	insns regardless of the size of a pointer if we're in mips I or
	MIPS II mode.
        (macro, macro2, s_cprestore, s_cpadd): Likewise.

Thu Feb 12 03:41:00 1998  J"orn Rennecke  <amylaar@cygnus.co.uk>

Fix rac to accept only a0:
	* tc-d10v.c (parallel_ok, find_opcode):
	Split OPERAND_ACC into OPERAND_ACC0 and OPERAND_ACC1.
	Introduce OPERAND_GPR.

Wed Feb 11 16:28:13 1998  Richard Henderson  <rth@cygnus.com>

	* read.c (s_fill): Handle non-constant repeat counts by creating
	an rs_space fragment.

Tue Feb 10 18:31:31 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (i386_operand): Change error added Jan 2 1998
	from as_bad to as_warn.

Tue Feb 10 18:04:00 1998  Jim Lemke  <jlemke@cygnus.com>

	* as.c: (perform_an_assembly_pass): Use [TEXT|DATA|BSS]_SECTION_NAME
	* as.h: Define default values of [TEXT|DATA|BSS]_SECTION_NAME
	* config/obj-elf.c (elf_begin): Use [TEXT|DATA|BSS]_SECTION_NAME

Tue Feb 10 17:58:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ehopt.c (eh_frame_code_alignment): If not BFD_ASSEMBLER, use
	seg_fix_rotP rather than fix_root from seg_info.

Tue Feb 10 15:32:22 1998  Ian Carmichael  <iancarm@cygnus.com>

	* expr.c: Add support for 0x1_2_3_4 bignums.

Tue Feb 10 14:43:40 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change -linux* to -linux-gnu*.
	* configure: Rebuild.

	* app.c (do_scrub_begin): Treat \r as whitespace.

Mon Feb  9 14:16:11 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: Update dependencies.
	* Makefile.in: Rebuild.

Sat Feb  7 15:33:51 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure, aclocal.m4: Rebuild with new libtool.

Fri Feb  6 16:08:30 1998  Jeffrey A Law  (law@cygnus.com)

        * config/tc-mips.c (md_begin): If mips_cpu is set, then use it as
        the argument to bfd_set_arch_mach.
        (load_address): Use bfd_arch_bits_per_address to determine the
        bit size of an address instead of looking at the isa level.
        (macro, macro2, s_cprestore, s_cpadd): Likewise.

Fri Feb  6 14:44:34 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_parse_option): Add -mv850any command line option.

Thu Feb  5 12:39:08 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ehopt.c: New file.
	* as.h (enum _relax_state): Add rs_cfa.
	(check_eh_frame, eh_frame_estimate_size_before_relax): Declare.
	(eh_frame_relax_frag, eh_frame_convert_frag): Declare.
	* read.c (emit_expr): Call check_eh_frame.
	* write.c (cvt_frag_to_fill): Handle rs_cfa.
	(relax_segment): Likewise.
	* Makefile.am: Rebuild dependencies.
 	(GAS_CFILES): Add ehopt.c.
	(GENERIC_OBJS): Add ehopt.o.
	* doc/internals.texi (Frags): Document rs_cfa.

	* as.c (show_usage): Mention --traditional-format.
	(parse_args): Accept --traditional-format.
	* as.h (flag_traditional_format): Declare.
	* output-file.c (output_file_create): If flag_traditional_format,
	set BFD_TRADITIONAL_FORMAT on stdoutput.
	* doc/as.texinfo, doc/as.1: Document --traditional-format.

	* config/tc-mips.c (append_insn): Make sure that if we have a
	fixup for an unmatched %hi reloc, it does not associated with a
	variant frag.

	* configure, Makefile.in, aclocal.m4: Rebuild with new libtool.
	* doc/Makefile.in: Likewise.

Wed Feb  4 15:41:54 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-m32r.c (check_for_side_effects): New function.
	(can_make_parallel): Add checks for instruction side effects
	clashing with the other instruction.
	(assemble_parallel_insn): Improve warning messages.  Return error
	message from non-swapped instruction order.

Wed Feb  4 20:00:26 1998  James G. Smith  <jsmith@teknema.demon.co.uk>

	* config/tc-arm.c: Rename arm_after_pass_hook() to arm_cleanup().

	* config/tc-arm.h: Replace md_after_pass_hook definition with a
 	md_cleanup definition.  This moves the forced literal output to
 	the end of the source pass, and avoids macro's inserting literals
 	into the code immediately after the macro expansion.

Wed Feb  4 13:17:19 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sparc.h (tc_fix_adjustable) [OBJ_ELF]: A reloc against
	a gas internal symbol is adjustable.
	* config/tc-ppc.h (tc_fix_adjustable): Likewise.

	* as.h: If gcc version greater than 2.6, use `__format__' and
	`__printf__' in function attributes, rather than `format' and
	`printf'.

Mon Feb  2 18:38:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sparc.c: Only include elf/sparc.h if OBJ_ELF.

Mon Feb  2 18:30:34 1998  Steve Haworth  <steve@pm.cse.rmit.EDU.AU>

	Add tms320c30 support:
	* config/tc-tic30.h: New file.
	* config/tc-tic30.c: New file.
	* config/obj-coff.h: If TC_TIC30, include coff/tic30.h and define
	TARGET_FORMAT as "coff-tic30".
	* configure.in (tic30-*-*aout*, tic30-*-*coff*): New targets.
	* Makefile.am: Rebuild dependencies.
	(CPU_TYPES): Add tic30.
	(CPU_OBJ_VALID): tic30-aout is valid.
	(TARGET_CPU_CFILES): Add config/tc-tic30.c.
	(TARGET_CPU_HFILES): Add config/tc-tic30.h.
	* configure, Makefile.in: Rebuild.

Mon Feb  2 10:20:37 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_assemble): Improvements to error messages.

Mon Feb  2 12:39:05 1998  Geoff Keating  <geoffk@ozemail.com.au>

	* config/tc-ppc.c (md_apply_fix3): Change BFD_RELOC_HI16 and
 	BFD_RELOC_HI16_S to store the high bits of any value.

	* config/tc-ppc.h (tc_fix_adjustable): Undo change of Fri Jun 27.
	(TC_RELOC_RTSYM_LOC_FIXUP): Don't let the
	assembler calculate relocations to any external symbol at all.
	* config/tc-ppc.c (md_apply_fix3) [OBJ_ELF]: Correct bugs
	involving generation of pc-relative relocs.
	(md_pcrel_from_section) [OBJ_ELF]: The job this code used to do
	has been moved to md_apply_fix3.

	* config/tc-ppc.c (md_apply_fix3): Fix test for too-far branch.
	(ppc_elf_suffix): Warn about 'identifier+constant@got' syntax,
	which actually means (the address of identifier's GOT entry) +
	constant, which is not particularly useful.

Fri Jan 30 11:02:35 1998  Doug Evans  <devans@canuck.cygnus.com>

	* read.h (include_dirs): Declare.
	(include_dir_count,include_dir_maxlen): Declare.

Fri Jan 30 11:47:02 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Correct check for shared opcodes library.
	* configure: Rebuild.

	* listing.c (buffer_line): If we can't open the file, set at_end.
	(listing_print): Remove unused local variable fi.

	* config/m68k-parse.y (reglistpair): Handle register list in
	either order.

	* config/vms-conf.h: Don't undef VERSION.

Thu Jan 29 14:42:44 1998  Pat Rankin  <rankin@eql.caltech.edu>

	* Makefile.am (CONFIG_OBJS): New variable, containing part of old
	OBJS variable.
	(GENERIC_OBJS): New variable, with the rest of the old OBJS
	variable.
	(OBJS): Now just $(CONFIG_OBJS) and $(GENERIC_OBJS).
	($(srcdir)/make-gas.com): Rename from make-gas.com.
	(stamp-mk.com): Replace $(OBJS) with $(GENERIC_OBJS).
	(EXTRA_DIST): Define.
	* vmsconf.sh: Handle {targ-cpu, obj-format, atof-targ} modules
	explicitly rather than via the list of object files.
	(gcc-as.opt): New file created when make-gas.com is run.
	* config-gas.com: Create {targ-cpu.h, obj-format.h, targ-env.h,
	itbl-cpu.h} to #include appropriate file rather than copying that
	file.
	* config/vms-conf.h: Synchronize with current config.in.
	* Makefile.in: Rebuild.

Thu Jan 29 18:48:19 1998  Bill Moyer  <billm@cygnus.com>

	* config/tc-d30v.c (do_assemble): Added flag_explicitly_parallel.
	(parallel_ok): Relaxed parallel subinstruction dependency check.

Wed Jan 28 14:35:00 1998  Bill Moyer <billm@cygnus.com>

	* as.h (flag_warn_suppress_instructionswap): added new flag.
	* tc-d10v.c (md_parse_option,md_longopts): added "--nowarnswap" 
	command line argument.
	* tc-d10v.c (write_2_short): emit "Swapping instructions"
	warning only if flag_warn_suppress_instructionswap is false.

Wed Jan 28 16:41:19 1998  J.J. van der Heijden  <J.J.vanderHeijden@student.utwente.nl>

	* configure.in (i386-*-mingw32*): New target.
	* configure: Rebuild.

Wed Jan 28 14:51:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* symbols.c (resolve_symbol_value): Don't set the segment if it
	hasn't changed, and this is OBJ_AOUT without BFD_ASSEMBLER.

	* config/obj-aout.h (S_IS_LOCAL): Correct typo--pass argument to
	S_GET_SEGMENT.

Wed Jan 28 13:54:50 1998  Pat Rankin  <rankin@eql.caltech.edu>

	as.h (unlink): Reverse 13-Feb-97 change; use of unlink vs remove
	depends upon HAVE_{UNLINK,REMOVE} values rather than host
	compiler.

Wed Jan 28 13:48:08 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.h (RESOLVE_SYMBOL_REDEFINITION): Define.

Wed Jan 28 09:52:00 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (v850_insert_operand): Display instruction when
	an error is encountered.

Tue Jan 27 13:32:01 1998  Robert Lipe  <robertl@dgii.com>

	* configure.in (i386-*-sco3.2v5*): Defaults to ELF now.
	(i386-*-sco3.2v5*coff): New target.
	(i386-*-sco3.2*): New target.
	* configure: Rebuild.

Tue Jan 27 11:06:52 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c: Tidy error message production.

Tue Jan 27 12:24:32 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-arm.c (md_apply_fix3): Add new variable newimm to hold
	validate_immediate return value in the right type for comparisons
	to FAIL.

Tue Jan 27 06:51:59 1998  Richard Henderson  <rth@cygnus.com>

	* listing.c (MAX_BYTES): Use listing variables not constants.
	(data_buffer): No longer an array, but a pointer.
	(calc_hex): sizeof(data_buffer) -> MAX_BYTES.
	(listing_listing): Allocate data_buffer.

Tue Jan 27 06:38:35 1998  Richard Henderson  <rth@cygnus.com>

	* as.c (parse_args): Add --listing-lhs-width, --listing-lhs-width2,
	--listing-rhs-width, --listing-cont-lines.
	(show_usage): Update.
	* listing.c (listing_lhs_width, listing_lhs_width_second): New vars.
	(listing_lhs_cont_lines, listing_rhs_width): New vars.
	(print_lines): Use the variables instead of the constants.
	(listing_listing): Likewise.	
	* listing.h: Declare the new vars.
	
Tue Jan 27 05:32:05 1998  Richard Henderson  <rth@cygnus.com>

	* as.c (parse_args): Add --keep-locals alias for -L.
	Add --strip-local-absolute.
	(show_usage): Update.
	* as.h (flag_strip_local_absolute): New flag.
	* symbols.c (S_IS_LOCAL): Use it.
	* config/obj-aout.h (S_IS_LOCAL): Likewise.
	* config/obj-bout.h (S_IS_LOCAL): Likewise.
	* config/obj-coff.h (S_IS_LOCAL): Likewise.

Mon Jan 26 13:07:41 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-m32r.c: Detect if explicitly parallel instructions
	might have an io conflict and issue a warning message. 

Thu Jan 22 17:51:44 1998  Nick Clifton  <nickc@cygnus.com>

	* cgen.c (cgen_save_fixups, cgen_restore_fixups,
	cgen_swap_fixups): Functions to save, restore and swap the fixup
	chain with a backup copy.
	(cgen_asm_finish_insn): Returns address of constructed insn.

Wed Jan 21 16:49:10 1998  Richard Henderson  <rth@cygnus.com>

	* listing.c (file_info_struct): Remove FILE, add POS.
	(last_open_file_info, last_open_file): New; a one entry FILE* cache.
	(file_info): Don't open the file.
	(buffer_line): Check for the file in the last_open cache, updating
	as necessary.
	(print_source): Don't reference file_info->file.
	(listing_listing): Likewise.
	(listing_print): Close the file in the cache, if any.

Fri Jan 16 14:51:48 1998  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (dwarf_file_string): New file static variable.
	(emit_expr): Look for constant sequence that leads up to a file
	name in DWARF debugging output.
	(stringer): Use dwarf_file_string to decide whether to accept a
	string as a file name.

Fri Jan 16 11:30:37 1998  Richard Henderson  <rth@cygnus.com>

	* tc-m68k.c (m68k_ip): Remove absl->reglst MRI hack.
	(crack_operand): Add reg->reglst MRI hack.
	(r_seg): Put reglst symbols in reg_section.
	(m68k_frob_symbol): Frob reglst symbols into absolute_section.

Thu Jan 15 14:19:01 1998  Richard Henderson  <rth@cygnus.com>

	* tc-sh.c (get_specific): Handle SGR & DBR.

Thu Jan 15 13:46:48 1998  Richard Henderson  <rth@cygnus.com>

	* tc-h8300.c (parse_reg): Take the length of the symbol into
	account when attempting to match a register name.
	* tc-h8500.c (parse_reg): Likewise.

Wed Jan 14 17:52:33 1998  Nick Clifton  <nickc@cygnus.com>

	* cgen.c: Formatting changes to improve readability.

Wed Jan 14 15:41:41 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mips.c (macro): Rework division code to avoid unfilled
	delay slot.

Wed Jan 14 18:04:20 1998  Michael Meissner  <meissner@cygnus.com>

	Based on a patch from Jim Wilson
	* config/tc-d30v.c (do_assemble): Remove non-ansi default case.
	(tc_gen_reloc): Handle cross section PC relative relocs
	correctly.

Wed Jan 14 15:02:19 1998  Doug Evans  <devans@seba.cygnus.com>

	* config/tc-mips.c (mips_ip): Don't test pinfo flags if INSN_MACRO.

Mon Jan 12 13:04:57 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen.c: #include setjmp.h.  Clean up pass over `struct foo' usage.
	(expr_jmp_buf): New static local.
	(cgen_parse_operand): Allow use of longjmp in parsing to handle errors.
	(cgen_md_operand): New function.
	* tc-m32r.c: Clean up pass over `struct foo' usage.
	(md_estimate_size_before_relax): Use CGEN_INSN_MNEMONIC.

Tue Jan  6 15:36:02 1998  Richard Henderson  <rth@cygnus.com>

	* symbols.c (S_SET_SEGMENT): Don't set the segment for section syms.
	(S_IS_EXTERNAL, S_IS_LOCAL): Correct parenthetication.

Fri Jan  2 16:08:54 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (i386_operand): Give an error if there are
	unrecognized characters after an expression.

For older changes see ChangeLog-9697
