Tue Nov 30 22:59:00 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (md_pseudo_table): Add ".am33" pseudo-op.
	(r_registers, xr_registers): Define.
	(r_register_name, xr_register_name): New functions.
	(md_assemble): Handle new am33 operand types and instruction
	formats.
	(mn10300_insert_operand, check_operand): Likewise.

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

	* config/tc-arm.c (thumb_mode): Turn into a tristate variable.
	(s_force_thumb): Set thumb_mode to 2.
	(md_assemble): Do not complain about thumb instructions on a
	non-thumb target if thumb_mode is set to 2.

1999-11-28  Michael Meissner  <meissner@cygnus.com>

	* config/tc-alpha.c (toplevel): Include struc-symbol.h.
	(alpha_macro_arg): Add MACRO_{LITERAL,BASE,BYTOFF,JSR} cases.
	(O_...): Add new machine dependent expressions if we are handling
	explicit relocations.
	(alpha_reloc_op): New static table holding the explicit relocation
	information.
	(alpha_literal_hash): New static to hold the hash table for
	explicit relocations.
	(alpha_macros): Add support for explicit relocations.
	(md_begin): If explicit relocations, initialize hash table.
	(md_assemble): Don't print a second error if tokenize_arguments
	already printed an error message.
	(md_apply_fix): Add support for explicit relocations.
	(alpha_force_relocation): Ditto.
	(alpha_fix_adjustable): Ditto.
	(alpha_adjust_symtab): New function to support explicit
	relocations.
	(alpha_adjust_symtab_relocs): Ditto.
	(debug_exp): Debug stub compiled if DEBUG_ALPHA is defined.
	(tokenize_arguments): Add debug code if DEBUG_ALPHA is defined.
	Add support for explicit relocations.  Return -2 if an error
	message was already printed.
	(find_macro_match): Add support for explicit relocations.  Comment
	each of the cases.
	(emit_insn): Add support for explicit relocations.
	(assemble_tokens): Ditto.
	(emit_ldgp): Ditto.
	(load_expression): Ditto.
	(emit_lda): Ditto.
	(emit_ldah): Ditto.
	(emit_ir_load): Ditto.
	(emit_loadstore): Ditto.
	(emit_ldXu): Ditto.
	(emit_ldil): Ditto.
	(emit_sextX): Ditto.
	(emit_division): Ditto.
	(emit_jsrjmp): Ditto.
	(emit_retjcr): Ditto.

	* config/tc-alpha.h (RELOC_OP_P): Enable explicit relocations if
	ELF object format.
	(tc_adjust_symtab): If explicit relocations, call the function
	alpha_adjust_symtab.
	(TC_FIX_TYPE): Add fields to be able to move explicit lituse
	relocations next to the literal relocation they reference.
	(TC_INIT_FIX_DATA): Initialize the new fields.
	(TC_FIX_DATA_PRINT): Print the new fields if DEBUG5 is defined.

Wed Nov 24 20:27:58 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_ip): Handle PA2.0 unit completers.  Handle
	'B' operand for PA2.0 bb instruction.
	
1999-11-18  Nick Clifton  <nickc@cygnus.com>

	* config/tc-mcore.h (TC_FORCE_RELOCATION): Define for Mcore-pe
	target.
	
	* config/tc-mcore.c (tc_gen_reloc): Support generation of RVA
	relocs.
	(mcore_force_relocation): Force relocations to be generated for
	RVA relocs.

1999-11-16  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (i386_immediate): Disallow O_big immediates.
	(i386_displacement): Disallow O_big displacements.

Mon Nov 15 20:12:43 1999  Donald Lindsay  <dlindsay@cygnus.com>

	* config/tc-arm.c (do_mia,do_mar,do_mra,do_pld,do_ldrl,do_co_reg): Small
	improvements in error checking.
	(md_assemble): Support for unconditional ARM instructions.
	(md_parse_option): Support for -m[arm]v5e flag.

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

	* macro.c (buffer_and_nest): Do not check beyond the end of the
	buffer. 

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

	* macro.c (buffer_and_nest): Look for seperator after TO and
	FROM tokens.

1999-11-08  Andrew Haley  <aph@cygnus.com>

	* app.c (do_scrub_chars): When in State 10, treat backslash
	characters in the same way as as symbol characters.

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

	* config/tc-alpha.c (alpha_align): Check, don't assert, that
	the previous label was in the current section before playing
	with auto-alignment.

1999-11-06  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (v850_force_relocation): Force relocation
        for weak symbols.
	(v850_pcrel_from_selection): Do not compute a pcrel offset if
        the symbol is weak.

1999-11-05  Michael Meissner  <meissner@cygnus.com>

	* expr.h (operatorT): Increase machine dependent operators to 16.
	* expr.c (op_rank): Ditto.

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

	* read.c (pseudo_set): Reject attempts to set the value of a
	section symbol.

	* config/obj-elf.c (obj_elf_ident): Call md_flush_pending_output
	if it is defined.

	* config/obj-elf.c (elf_set_index): Add ATTRIBUTE_UNUSED.

	* config/obj-elf.c (elf_frob_file_after_relocs): Don't pass NULL
	to bfd_set_section_contents.

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

	* config/tc-mcore.h (TARGET_BYTES_BIG_ENDIAN): Change to false.

1999-11-01  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/tc-mips.c (macro_build): Use OPCODE_IS_MEMBER.
	(mips_ip): Use OPCODE_IS_MEMBER.

Wed Oct 27 16:50:44 1999  Don Lindsay  <dlindsay@cygnus.com>

	* config/tc-arm.c (reg_required_here): Improve comments.

        * config/tc-arm.c (thumb_opcode): Add "variants" field.
        (tinsns): Initialize variants field.

	* config/tc-arm.c (bad_args, bad_pc): Renamed to BAD_ARGS and
	BAD_PC respectively.

1999-10-27  Scott Bambrough  <scottb@netwinder.org>

	* config/tc-arm.c (reloc_map[]): Fix compiler warning.
	* config/tc-arm.h: Fix compile time warnings.

Mon Oct 18 18:11:10 MDT 1999	Diego Novillo <dnovillo@cygnus.com>

	* tc_d10v.c (find_opcode): Allow ATSIGN to match expressions of the
	form @abs16, @(abs16) and @(abs16 + imm).

1999-10-21  Gavin Romig-Koch  <gavin@cygnus.com>

	* config/tc-mips.c (ISA_HAS_COPROC_DELAYS) : New.
	(ISA_HAS_64_BIT_REGS) New.
	(gpr_interlocks,md_begin,reg_needs_delay,append_insn,
	mips_emit_delays,macro_build,load_register,load_addresss,
	macro,macro2,mips_ip,s_cprestore,s_cpadd): Simplify
	and/or use new ISA_xxx macros in expressions involving
	ISA, particularly mips_opts.isa.

1999-10-18  Michael Meissner  <meissner@cygnus.com>

	* expr.h (operatorT): Add machine dependent operators md1..md8.
	(expressionS): Make X_op 8 bits instead of 7.  Add a X_md field
	for the machine dependent operators to use.

	* expr.c (op_rank): Add machine dependent operators.

	* config/tc-alpha.c (O_pregister): Define as a machine dependent
	operator.
	(O_cpregister): Ditto.
	(md_begin): Change X_op test that field is wide enough to use
	O_max instead of O_alpha_max.
	(cpu_types): Fill in missing initializer.
	(alpha_num_macros): Make unsigned.
	(md_assemble): Make opnamelen be size_t.
	(md_apply_fix): Cast alpha_num_operands to int before testing.
	(alpha_force_relocation): Ditto.
	(alpha_fix_adjustable): Ditto.
	(alpha_fix_adjustable): Mark unused arguments ATTRIBUTE_UNUSED.
	(tc_gen_reloc): Ditto.
	(tc_get_register): Ditto.
	(emit_ldgp): Ditto.
	(emit_lda): Ditto.
	(emit_ldah): Ditto.
	(emit_ldil): Ditto.
	(s_alpha_ent): Ditto.
	(s_alpha_end): Ditto.
	(s_alpha_frame): Ditto.
	(s_alpha_prologue): Ditto.
	(s_alpha_file): Ditto.
	(s_alpha_gprel32): Ditto.
	(s_alpha_proc): Ditto.
	(s_alpha_set): Ditto.
	(s_alpha_base): Ditto.
	(s_alpha_align): Ditto.
	(s_alpha_arch): Ditto.
	(alpha_align): Ditto.
	(assemble_insn): Suppress unused variable warning.
	(emit_insn): Ditto.
	(assemble_insn): Don't assume X_op and X_unsigned are in a given
	order in the structure.
	(s_alpha_coff_wrapper): Avoid int/unsigned comparison.

Sun Oct 17 17:15:58 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (md_apply_fix): Make "fmt" an int.

1999-10-12  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (i386_index_check): Correct #endif location.

Mon Oct 11 14:02:40 1999  Geoffrey Keating  <geoffk@cygnus.com>

	* as.c (show_usage): Document new options.
	(parse_args): Add --no-warn, --warn, --fatal-warnings,
	which become 'W', OPTION_WARN, and OPTION_WARN_FATAL.
	(parse_args): Parse the new options.
	(main): If there were warnings, and --fatal-warnings
	was specified, print an error.
	* as.h: New variable, flag_fatal_warnings, for new option.

Sun Oct 10 01:47:23 1999  Jerry Quinn <jerry.quinn.adv91@alum.dartmouth.org>

	* config/tc-hppa.c (pa_ip):  Add new codes 'cc', 'cd', 'cC', 'co',
	'@'.  Change autoincrement completers to fall through to cache control
	completers.

	* config/tc-hppa.c (pa_ip):  Remove unused args.  Add code to '?W'
	arg. 
	(pa_parse_addb_64_cmpltr):  New function.

	* config/tc-hppa.c (pa_ip):  Change error message.
	(pa_ip,pa_parse_cmpb_64_cmpltr,pa_parse_cmpib_64_cmpltr)  Fix '?N' and
	'?Q' args to allow falling through.

	* configtc-hppa.c (pa_ip):  Implement conditional codes "?N", "?Q".
	Remove unused conditional codes.
	(pa_parse_cmpb_64_cmpltr,pa_parse_cmpib_64_cmpltr):  New.

Thu Oct  7 00:23:53 MDT 1999	Diego Novillo <dnovillo@cygnus.com>

	* config/tc-d30v.c (CHAR_BIT): Define.
	(check_range): Fix bit operations to support integers bigger than
	32 bits.

Thu Oct  7 00:11:50 MDT 1999	Diego Novillo <dnovillo@cygnus.com>

	* config/tc-d10v.c (check_range): Check range for RESTRICTED_NUM3
	operands.

Mon Oct  4 17:24:23 1999  Nick Clifton  <nickc@cygnus.com>
			  Doug Evans  <devans@cygnus.com>

	Add support for m32rx.
	* config/tc-m32r.c (enable_m32rx): New static global.
	(enable_special,warn_explicit_parallel_conflicts,optimize): Ditto.
	(allow_m32rx): New function.
	(M32R_SHORTOPTS): Add `O'.
	(md_longopts): Add --m32rx plus several warning options.
	(md_parse_option): Handle new options.
	(md_show_usage): Print them.
	(md_begin): Enable m32rx.
	(OPERAND_IS_COND_BIT): New macro.
	(first_writes_to_seconds_operands): New function.
	(writes_to_pc,can_make_parallel,make_parallel): New functions.
	(target_make_parallel,assemble_two_insns): New functions.
	(md_assemble): Recognize "insn1 -> insn2" and "insn1 || insn2".
	If optimizing and m32rx, try to make consecutive insns parallel.

Tue Sep 28 14:06:44 1999  Geoffrey Keating  <geoffk@cygnus.com>

	* config/tc-mips.c (nopic_need_relax): Allow for the
	.sdata.foo sections generated by -fdata-sections,
	and for the .gnu.linkonce.s sections generated by C++.

Thu Sep 23 07:13:45 1999  Jerry Quinn <jquinn@nortelnetworks.com>

	* config/tc-hppa.c (pa_ip): Replace 'B', 'M', 'l' and 'g' handling
	with cleaner code using completer prefixes.   Add 'Y'.

	* config/tc-hppa.c (pa_ip):  Add parens to silence compiler.

Wed Sep 22 09:37:19 1999  Jeffrey A Law  (law@cygnus.com)

        * config/tc-hppa.c (pa_ip): Avoid ANSI specific initialization.
	(pa_ip, case 'm'): Failure to get a CBIT specifier just means the
	insn does not match and we should try the next insn in the table.

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

	* config/tc-arm.c (MULTI_SET_PSR): Rename to LDM_TYPE_2_OR_3.

Mon Sep 20 04:01:41 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_ip): Fix thinkos in recent cleanup
	of PA2.0 support.

1999-09-19  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>

	* config/tc-i386.c (md_shortopts): Check OBJ_MAYBE_ELF as well as
	OBJ_ELF.  If ELF, add "sq".
	(md_parse_option): If ELF, ignore -s and -q.
	(md_show_usage): Mention ELF options.

Sun Sep 19 10:43:31 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_ip): Handle 'J', 'K' and 'cc' 
	operands.

	* config/tc-hppa.c (pa_ip); Handle "fe", and 'cJ'.

	* config/tc-hppa.c (pa_ip): Handle 'd', '#' and 'cq'.

	* config/tc-hppa.c (struct pa_it): New field "trunc".
	(pa_ip): Hadnle 'h', 'm', '=', '{', and '_' operands.
	(pa_parse_ftest_gfx_completer): New function
	(pa_parse_fp_cnv_format): New function.

	* config/tc-hppa.c (pa_ip): Handle 'X' operand.
	(md_apply_fix): Handle 22bit pc-rel branches.

	* config/tc-hppa.c (pa_ip): Handle 'B' operand.

	* config/tc-hppa.c (pa_ip): Handle 'L' and 'M' operands.

	* config/tc-hppa.c (pa_ip): Handle 'l' operand.

	* config/tc-hppa.c (pa_ip): Handle 'g' operand.

at Sep 18 12:13:28 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (md_assemble): Fix dwarf2 line handling.
	(pa_ip): Handle 'fX'.

Sat Sep 18 12:13:28 1999  Jeffrey A Law  (law@cygnus.com)

        * config/tc-hppa.c (md_assemble): Fix dwarf2 line handling.
        (pa_ip): Handle 'fX'.

Fri Sep 17 11:57:34 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_build_unwind_subspace): Do not build
	unwinds unless the function is in the text space.
	(pa_type_args): Set BSF_FUNCTION for an exproted data symbol.

Wed Sep 15 05:14:32 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_ip): Move dwarf2 stuff from here.
	(md_assemble): To here.  Tweak address generation.

	* config/tc-hppa.c: Include dwarf2dbg.h if OBJ_ELF.  Declare
	debug_line.
	(md_pseudo_table): Add .file and .line pseudo-ops for OBJ_ELF.
	(md_assemble): Call dwarf2_where for OBJ_ELF.
	(pa_ip): Call dwarf2_gen_line_info for OBJ_ELF.
	(pa_end_of_source): New function.
	* tc-hppa.h (md_end): Define for OBJ_ELF.

1999-09-14  Michael Meissner  <meissner@cygnus.com>

	* configure.in (Canonicalization of target names): Remove adding
	${CONFIG_SHELL} in front of $ac_config_sub, since autoconfig 2.14
	generates $ac_config_sub with a ${CONFIG_SHELL} already.
	* configure: Regenerate.

1999-09-14  Donn Terry  <donn@interix.com>

	* config/te-interix.h (GLOBAL_OFFSET_TABLE_NAME): Define.

1999-09-13  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (md_assemble): Handle "jmp/call constant" as a
	pc-relative jmp/call to an absolute symbol.
	(md_apply_fix3): When OBJ_ELF, don't add the values in twice for
	absolute section symbols.

	* config/tc-i386.c (md_assemble): Correct frag_var size.  Tidy
	jump handling code and comments.

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

	* config/tc-i386.c (md_apply_fix3): Add horrible adjustments to
	the value if TE_PE and a global defined symbol.

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

	* write.c (dump_section_relocs): Call print_symbol_value_1 to
	print the symbol, rather than printing it here.

1999-09-11  Donn Terry  <donn@interix.com>

	* config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust
	BFD_RELOC_RVA relocations.

	* config/tc-i386.c (md_undefined_symbol): Compare the name against
	the macro GLOBAL_OFFSET_TABLE_NAME, rather than assuming that it
	starts with "_G".

	* write.c (write_relocs): Call SET_SECTION_RELOCS if it is
	defined.
	* config/obj-coff.h (SET_SECTION_RELOCS): Define.
	* doc/internals.texi (Object format backend): Document
	SET_SECTION_RELOCS.

	* config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust
	relocations against global symbols if TE_PE.

	* config/obj-coff.c (obj_coff_ident): Add BFD_ASSEMBLER version.
	(obj_pseudo_table): Always handle ".ident" with obj-coff_ident.

	* config/obj-coff.c (coff_frob_symbol): Prohibit weak common
	symbols.

	* config/obj-coff.c (obj_coff_endef): Don't merge labels, or
	symbols which do not have a constant value, or tags with
	non-tags.  Remove the symbol from the list before adding it at the
	end.

	* config/obj-coff.c (obj_coff_endef) [BFD_ASSEMBLER]: Handle .ef
	C_FCN symbol differently if TE_PE.
	(obj_coff_line) [BFD_ASSEMBLER]: Always use the line number which
	appears in the pseudo-op, rather coff_line_base which is only set
	for a .bf symbol.

	* config/obj-coff.c (obj_coff_loc): New static function.
	(obj_pseudo_table): Add "loc".

	* config/obj-coff.c (add_lineno): Check that the line number is
	positive.

	* config/atof-ieee.c (atof_ieee): Change what_kind to int.
	* config/atof-vax.c (flonum_gen2vax): Change format_letter to
	int.
	(md_atof): Return NULL rather than 0.
	* config/tc-i386.c (md_atof): Change type to int.
	* expr.c (expr): Change first parameter to int.
	* config/obj-coff.c: Add declarations for static functions.
	(coff_frob_symbol): Use SYM_AUXENT.
	* config/tc-i386.h (flag_16bit_code): Don't declare.

	* config/obj-coff.c (obj_coff_section): Default to setting
	SEC_LOAD.  Don't set SEC_DATA for 'w' modifier.

	* write.c (adjust_reloc_syms): Print adjusted fixup.

	* expr.c (integer_constant): Correct too_many_digits calculation
	in base 10 case.

1999-09-09  Andreas Schwab  <schwab@suse.de>

	* doc/c-arm.texi: Fix arguments of @var to not contain
	punctuation.

1999-09-08  Philip Blundell  <pb@nexus.co.uk>

	* config/tc-arm.c (s_thumb_set): Only support interworking for ELF 
	and COFF targets.
	(md_parse_option): Only support -k flag for ELF and COFF targets.

Tue Sep  7 13:28:59 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_ip): Put strict register checks before
	call to pa_parse_number.

	* config/tc-hppa.c (pa_ip): Support 'Z' argument.

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

	* config/obj-coff.c: Add ATTRIBUTE_UNUSED as needed for
	BFD_ASSEMBLER code.

1999-09-06  Donn Terry  <donn@interix.com>

	* as.c (perform_an_assembly_pass): Set SEC_DATA for data_section.

Mon Sep  6 04:26:56 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_ip): Get strict/non-strict mode from the
	candidate instruction.  Require registers for register arguments
	when in strict mode.  Require assemble-time constants for
	constants when in strict mode.
	(pa_get_absolute_expression): Require a constant when in strict
	mode.
	
1999-09-06  Nick Clifton  <nickc@cygnus.com>

	* config/tc-m32r.c (md_longopts): Fix value for -Wnuh.

1999-09-04  Steve Chamberlain  <sac@pobox.com>

	* config/tc-pj.c: New file, supports picoJava in ELF.
	* config/tc-pj.h: Ditto.
	* configure.in (pjl*, pj*): New targets.
	* Makefile.am: Rebuild dependencies.
	(CPU_TYPES): Add pj.
	(TARGET_CPU_CFILES): Add config/tc-pj.c.
	(TARGET_CPU_HFILES): Add config/tc-pj.h.
	* doc/c-pj.texi: New file.
	* doc/as.texinfo: Add some PJ specifics.
	* doc/all.texi: Add PJ to the list of all architectures, sort them
	all alphabetically.
	* doc/Makefile.in (CPU_DOCS): Add c-pj.texi.
	* configure, Makefile.in, doc/Makefile.in: Rebuild.

1999-09-02  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/obj-multi.h: Include obj-elf.h if OBJ_MAYBE_ELF. Reformat.
	(obj_frob_file): Test for null pointer.
	(OBJ_COPY_SYMBOL_ATTRIBUTES): Here too.
	(OBJ_PROCESS_STAB): And here.
	(elf_obj_sy): Remove

	* config/obj-elf.h: #ifndef everything defined in obj-multi.h,
	except OBJ_PROCESS_STAB, which we #undef for ecoff.
	(elf_obj_sy): Remove #ifndef OBJ_SYMFIELD_TYPE.

	* config/obj-coff.c (no_func): Remove.
	(coff_format_ops): Change occurrences of no_func to 0, as we test
	for 0 in obj-multi.h.

	* configure.in:  Enable bfd for i386-coff when primary target is
	bfd.  Enable i386 elf,coff emulation support.  Don't set
	USE_EMULATIONS=1 or te_file=multi unless there is more than one
	emulation to support.
	*configure: Regenerate.

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

	* config/tc-mcore.c (mcore_s_section): Do not dump literals if a
	.section .line directive is encountered.

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

	* config/tc-arm.c (md_section_align): Do not align sections in ELF
	format. 

	* as.c (show_usage): Add --gdwarf2 to list of options displayed.
	* as.texinfo: Document --gdwarf2 command line option.
	Add additional documentation of ARM command line switches.

1999-08-30  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (i386_intel_memory_operand): Combine
	i386_is_reg and parse_register calls.  Remove END_STRING_AND_SAVE
	and RESTORE_END_STRING around parse_register calls.
	(i386_operand): Here too.
	(i386_is_reg): Remove.
	(parse_register): Move as_bad calls from within this function to
	callers.

1999-08-29  Alan Modra  <alan@spri.levels.unisa.edu.au>

	Based on a patch from H.J. Lu  <hjl@gnu.org>
	* config/tc-i386.c (parse_register): Handle FP regs specially.
	(md_begin): Remove '(' and ')' from register_chars.

1999-08-29  Doug Evans  <devans@casey.cygnus.com>

	* config/tc-m32r.c (md_parse_option): Delete unrecognized option
	error message (done elsewhere).

Sat Aug 28 01:23:11 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_ip): Do not allow '*' in 32bit completers.

Sat Aug 28 00:26:26 1999  Jerry Quinn <jquinn@nortelnetworks.com>

        * config/tc-hppa.c (pa_ip): Replace 'f' by 'v'.  Prefix float register
	args by 'f'.

	* config/tc-hppa.c (pa_ip): Add args q, %, and |.

	* config/tc-hppa.c (pa_ip):  Absorb white space in instructions
	between args.
	Add new completers.  Fix bug in 64 bit condition handling.

	* config/tc-hppa.c (pa_ip):  Add completer codes 'a', 'ch', 'cH',
	'cS', and 'c*'.

	* config/tc-hppa.c (pa_ip): Place completers behind prefix 'c'.

	* config/tc-hppa.c (pa_ip):  Add cases for '.', '~'. '$'. and '!'

	* config/tc-hppa.c (pa_ip):  Add case for 'I'.  

1999-08-27  Jim Wilson  <wilson@cygnus.com>

	* dwarf2dbg.c (MAX_SPECIAL_ADDR_DELTA): Correct typo in comment.
	(struct ls): Add frag field.  Initialize it to zero.
	(out_end_sequence): New local text_frag.  Set it while in text section.
	Replace address check with frag check.  Set ls.frag to text_frag if
	out_set_addr called.
	(dwarf2_gen_line_info): Add explanatory comment.  New local saved_frag.
	Set it before switching sections.  Replace address check with frag
	check.  Set ls.frag to saved_frag if out_set_addr called.

1999-08-26  David Mosberger  <davidm@hpl.hp.com>

        * dwarf2dbg.c (out_end_sequence): If address changed, directly
	output "advance_pc" opcode instead of calling gen_addr_line().
	The latter has the undesired side-effect of creating a new row
	in the debug line info matrix. 

1999-08-26  Jim Wilson  <wilson@cygnus.com>

	* dwarf2dbg.c (out_end_sequence): Correct comments.  Set last to
	ls.last_filename if last is less than zero.  Set ls.last_filename
	when allocating new entry.
	(dwarf2_gen_line_info): Save seg and subseg info before subseg_new
	call.

1999-08-20  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (i386_index_check): Fix the displacement size
	when INFER_ADDR_PREFIX.

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

	* config/tc-arm.c (md_apply_fix3): If an offset is invalid,
	display its value.

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

	* config/tc-ppc.c (md_assemble): Trim @ha constant to 16 bits, to
	handle 0xffffNNNN constants correctly.

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

	* config/tc-arm.c (do_ldst): Look for register conflicts on stores
	as well as loads.

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

	* config/tc-arm.c (validate_offset_imm): Work on unsigned values.
	(md_apply_fix3): Always pass positive values to
	validate_offset_imm.

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

	* config/tc-arm.c (skip_whitespace): New macro.
	Formatting tidy ups.
	
	(md_apply_fix3): Store relocation offset in addend for ELF based
	relocs.
	(arm_force_relocation): Always generate relocs for Thumb function
	calls. 
	
1999-08-11  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (md_assemble): Remove dead code.  intel_syntax
	LONG_DOUBLE_MNEM_SUFFIX floating point is done in opcode/i386.h

Tue Aug 10 12:58:31 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_build_unwind_subspace): Use sane section
	flags for the unwind subspace.

	* config/tc-hppa.c (UNWIND_SECTION_NAME): Define for ELF.
	(pa_build_unwind_subspace): Remove #if 0 wrapper.  Select a
	suitable relocation based on the size of the target's pointer.
	Always Use subsegment zero for the unwinders.
	(pa_level): Handle "2.0w".

Mon Aug  9 20:02:22 1998  J"orn Rennecke  <amylaar@cygnus.co.uk>

	* config/tc-d30v.c (write_2_short): Don't group repeat instructions
	with the following instruction unless this was specified.

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

	* config/tc-i386.h (SUB_SEGMENT_ALIGN): If TE_GO32, return 4 for
	certain sections, to match BFD changes.

1999-08-08  Mumit Khan  <khan@xraylith.wisc.edu>

	* Makefile.am (noinst_SCRIPTS): Change .gdbinit to $(GDBINIT).
	(EXTRA_SCRIPTS): Define to keep automake happy.
	* Makefile.in: Rebuild.

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

	* Makefile.am: Rename .dep* files to DEP*.
	(MKDEP): Rename from DEP.  Change all uses.  Use $${srcdir} rather
	than $(srcdir).  Rename TCDEP targets to DEPTC.  Rename OBJDEP
	targets to DEPOBJ.
	* Makefile.in: Rebuild.

1999-08-08  Jakub Jelinek  <jj@ultra.linux.cz>

	* config/tc-sparc.c (sparc_ip): Allow assembly of %lo()+%reg.

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

	* Makefile.am: Change all uses of itbl-test-ops to itbl-tops to
	avoid problems on DOS filesystems.
	* Makefile.in: Rebuild.

	* doc/as.texinfo (Section): Document 's' flag for COFF version.

1999-08-08  Mumit Khan  <khan@xraylith.wisc.edu>

	* config/obj-coff.c (obj_coff_section): Handle 's' (shared)
	section flag.

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

	* configure.in: Define and substitute GDBINIT.  Change AC_OUTPUT
	line to create ${GDBINIT} rather than .gdbinit.
	* configure, Makefile.in, doc/Makefile.in: Rebuild.

Fri Aug  6 12:12:44 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_ip, case '?'): Add missing break.

Fri Aug  6 09:46:35 1999  Jerry Quinn <jquinn@nortelnetworks.com>

	* config/tc-hppa.c (pa_ip):  Add 64 bit condition completers.

1999-08-06  Jakub Jelinek  <jj@ultra.linux.cz>

	* config/tc-sparc.h (tc_fix_adjustable): Fix check for PIC local
	non-adjustable symbols.

Thu Aug  5 16:52:51 1999  Jerry Quinn <jquinn@nortelnetworks.com>

	* config/tc-hppa.c (pa_ip): Change condition args to have '?' prefix.

Thu Aug  5 23:05:56 1999  J"orn Rennecke  <amylaar@cygnus.co.uk>

	* config/tc-sh.c (md_assemble):  Call as_bad when there are excess
	operands.

1999-08-05  Donn Terry  <donn@interix.com>

	* config/te-interix.h: New file.
	* configure.in (i386-*-interix*): New target.
	* configure: Rebuild.

Wed Aug  4 13:12:17 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_chk_field_selector): Allow 3 byte
	selectors for ELF too.
	(selector_table): Add "ltp" and "rtp" selectors.

1999-08-04  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (i386_operand): No need to change
	operand_string pointer in segment reg case before goto
	do_memory_reference.  Initialise displacement_string_start and
	displacement_string_end after do_memory_reference label.
	(i386_index_check): Add operand_string param, and print error
	message on failure here.
	(i386_intel_memory_operand): Instead of here.
	(i386_operand): And here.
	(INFER_ADDR_PREFIX): Enable.

	* doc/c-i386.texi (i386-16bit): Document .code16gcc.

	* config/tc-i386.h (DefaultSize): Define.  Renumber following
	opcode_modifier defines.

	From Etienne Lorrain  <etienne.lorrain@ibm.net>
	* config/tc-i386.c (stackop_size): New variable.
	(set_16bit_code_flag): Clear it here.
	(set_16bit_gcc_code_flag): New function.
	(md_pseudo_table): Add "code16gcc" entry.
	(md_assemble): Set i.suffix for insns with DefaultSize modifier.

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

	* config/obj-coff.c (coff_frob_symbol): Always update set_end with
	next_set_end even if the end symbol is being discarded.

	* gasp.c: Add ATTRIBUTE_UNUSED as needed for non-BFD_ASSEMBLER.
	* output-file.c, symbols.c, config/tc-i386.c: Likewise.
	* config/obj-coff.c: Likewise.
	(seg_info_type): Remove.
	(seg_info_off_by_4): Change to array of segT.
	(s_get_segment): Adjust accordingly.
	(obj_pseudo_table): Fully initialize sentinel entry.

	* config/tc-mips.c (append_insn): Correct INSN_SYNC test.  From
	Ralf Baechle <ralf@uni-koblenz.de>.

1999-08-03  Etienne Lorrain  <etienne.lorrain@ibm.net>

	* config/tc-i386.c (f16_3): New. Fixes 16 bit 3 byte nop.

1999-08-03  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c: Indentation and white space changes.
	(i386_index_check): New function.  Add INFER_ADDR_PREFIX code, but
	don't enable it by default.
	(i386_intel_operand): Remove redundant prototype.
	Move check on number of memory operands, and i.mem_operands++
	(i386_intel_memory_operand): To here.
	Remove i386_immediate code from here.  Remove special case code
	for input and output using (%dx).  Remove base/index checks and
	call i386_index_check instead.  Save initial operand_string
	argument for error message.
	(i386_operand): Remove redundant prototype.  Move base/index
	checks to i386_index_check.
	(i386_displacement): Move intel mode check for non-zero
	i.disp_operand
	(i386_intel_memory_operand): To here.

1999-07-30  Jakub Jelinek  <jj@ultra.linux.cz>

	* config/tc-sparc.c (md_longopts): Add --no-undeclared-regs option.
	(sparc_ip): Warn if %g2 or %g3 register is used and not covered
	by .register pseudo-op if -64 and --no-undeclared-regs.
	(s_register, sparc_adjust_symtab): New functions.
	* config/tc-sparc.h (tc_adjust_symtab, sparc_adjust_symtab):
	Declare sparc_adjust_symtab as tc_adjust_symtab.
	* doc/c-sparc.texi: Add description of #ignore special literal
	for .register pseudo-op.

1999-07-30  Catherine Moore  <clm@cygnus.com>

	* config/tc-arm.c (tc_gen_reloc):  Record the vtable entry in
	the relocation's section offset.

1999-07-29  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* write.c (fixup_segment): Fix generic error check overflow test.

	* config/tc-i386.c (pe): Change %d to %ld, %x to %lx, and cast
	X_add_number to long.

Wed Jul 28 02:04:24 1999  "Jerry Quinn" <jquinn@nortelnetworks.com>

	* config/tc-hppa.c (pa_ip):  Add 'J' and 'K' code
	processing. 

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

	* config/tc-sparc.h (tc_fix_adjustable): Don't adjust GOT, PLT, or
	VTABLE relocations.

1999-07-21  Mark Elbrecht  <snowball3@bigfoot.com>

	* config/te-go32.h (COFF_LONG_SECTION_NAMES): Define.

	* configure.bat: Remove; obsolete.
	* config/go32.cfg: Likewise.

1999-07-21  Brad M. Garcia  <bgarcia@fore.com>

	* configure.in (i386-*-vxworks*): New target.
	* configure: Rebuild.

1999-07-16  Jakub Jelinek  <jj@ultra.linux.cz>

	* doc/c-sparc.texi: Document .register and .nword pseudo-ops.

1999-07-16  Jakub Jelinek  <jj@ultra.linux.cz>

	* config/tc-sparc.c (sparc_ip): Allow OLO10 relocations
	on -64 and not pic.
	(output_insn): Put OLO10's secondary addend into tc_fix_data.
	(md_apply_fix3): Handle BFD_RELOC_SPARC_OLO10.
	(tc_gen_reloc): Return two relocs for OLO10, LO10 and SPARC13.
	* config/tc-sparc.h (RELOC_EXPANSION_POSSIBLE,
	MAX_RELOC_EXPANSION): Define.
	(TC_FIX_TYPE, TC_INIT_FIX_DATA, TC_FIX_DATA_PRINT): Likewise.

1999-07-16  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (intel_float_operand): Add prototype, make static.
	(md_assemble): Localize *exp variable to if (fake_zero_displacement)
	block.  Print a warning if an 8-bit or 16-bit constant
	displacement or immediate is truncated on output.
	(i386_immediate): Ensure Imm16 is always legal for a 16-bit mode
	immediate.
	(i386_operand): Disallow immediate jump absolute operand.

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

	* configure.in: Bump version number to 2.9.5.
	* configure: Rebuild.

	* dwarf2dbg.c (dwarf2_gen_line_info): Don't assume that long long
	or %llx work.

Thu Jul 15 02:45:30 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (md_pseudo_table): Add ".dword" pseudo-op.
	(cons_fix_new_hppa): Derive size of fixup from size of the object.

1999-07-14  Philip Blundell  <pb@nexus.co.uk>

	* symbols.c (dollar_label_name): Prepend LOCAL_LABEL_PREFIX if it
	is defined.
	* config/tc-arm.h (LOCAL_LABEL_PREFIX): Define to '.' for ELF.

	* config/tc-arm.c (md_begin): Set F_SOFTFLOAT in the output file
	if -mno-fpu was given.
	(tc_gen_reloc): Fix typo.  Delete bogus code related to GOTPC
	relocs.
	(cons_fix_new_arm): Remove misleading comments.

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

	* write.c (cvt_frag_to_fill): Use frag file and line in rs_org
	error message.
	(relax_segment): Likewise.  After giving a rs_org error, convert
	the frag to rs_align to avoid cascading errors.

1999-07-12  Andreas Schwab  <schwab@suse.de>

	* config/tc-m68k.c: Add some ATTRIBUTE_UNUSED.

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

	* Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSED
	as appropriate.  Fill in structure initializations.  Add variable
	initializations.  Add casts.
	* dwarf2dbg.c (print_stats): Change i to size_t.
	* listing.c (listing_listing): Change list_line to unsigned int.

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

	* config/tc-ppc.h (tc_fix_adjustable) [OBJ_ELF]: Call S_IS_LOCAL
	rather than checking for \001 and \002 in symbol name.
	* config/tc-sparc.h (tc_fix_adjustable) [OBJ_ELF]: Likewise.

Thu Jul  8 12:32:23 1999  John David Anglin <dave@hiauly1.hia.nrc.ca>

	* configure.in (hppa*-linux-gnu*): New target.
	* configure: Rebuilt.

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

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

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

	* config/tc-v850.c (v850_comm): Use symbol_get_obj() rather than
	accessing symbolP directly.

Tue Jul  6 10:41:42 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.h (tc_frob_symbol): Always punt "$global$" symbol
	for ELF.

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

	* config/tc-arm.c (ARM_EXT_V5): Define.
	(ARM_ARCH_V5, ARM_ARCH_V5T): Define.
	(md_begin): Detect ARM v5 architectures.
	(md_parse_option): Accept arm v5 specification.
	(md_show_usage): Documment -marmv5 switch.

	* doc/c-arm.texi: Document -marmv5 command line option.
	
	* config/tc-arm.c (do_adrl): New function.  Implement ADRL pseudo
	op.
	(validate_immediate_twopart): New function.  Determine if a
	constant can be computed by two ADD instructions.
	(output_inst): Remove its command line parameter - it was never
	used.
	(md_apply_fix3): Support BFD_RELOC_ARM_ADRL_IMMEDIATE, used to
	implememt the ADRL pseudo op.
	(tc_gen_reloc): Generate a suitable error message if an ADRL
	instruction tries to generate a real reloc.

	* doc/c-arm.texi: Document NOP, ADR and ADRL pseudo ops.

Thu Jul  1 15:33:10 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_ip): Convert the opcode and all completers
	into lower case.

1999-06-27  H.J. Lu  <hjl@gnu.org>

	* subsegs.c (subseg_text_p): Use 1/0 instead of true/false for
	non BFD_ASSEMBLER case.

1999-06-26  Mumit Khan  <khan@xraylith.wisc.edu>

	* config/obj-coff.c (obj_coff_section): Mark writable sections as
	data.

1999-06-26  David Mosberger  <davidm@hpl.hp.com>

	* dwarf2dbg.c (dwarf2_gen_line_info): Don't call
	out_end_sequence() when the address decreases due to a new frag.
	(gen_dir_list): Set ls.file[i].dir to j + 1 (not j) because file
	numbering starts with 1.

1999-06-23  Nick Clifton  <nickc@cygnus.com>

	* config/tc-mcore.c (md_pseudo_table): Add .comm for ELF and allow
	.section for COFF.
	(mcore_s_text): Call obj_elf_text for ELF target.
	(mcore_s_data): Call obj_elf_data for ELF target.
	(mcore_s_section): No longer ELF specific.  Call obj_coff_section
	for COFF target.
	(mcore_s_bss): New function:  Dump literal table before changing
	sections.
	(mcore_s_comm): New function:  Dump literal table before changing
	sections.
	
	* config/obj-elf.c (obj_elf_common, obj_elf_data, obj_elf_text):
	No longer static functions.
	* config/obj-elf.h (obj_elf_common, obj_elf_data, obj_elf_text):
	Provide prototypes for these functions.

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

	* subsegs.c (subseg_text_p): Rewrite non BFD_ASSEMBLER case to use
	a list of names, to try obj_segment_name, and to try abbreviated
	names when using COFF without long section names.

	* config/tc-alpha.c: More use of symbol accessor functions.
	* config/tc-arc.c: Likewise.
	* config/tc-d30v.c: Likewise.
	* config/tc-fr30.c: Likewise.
	* config/tc-i860.c: Likewise.
	* config/tc-m88k.c: Likewise.
	* config/tc-mcore.c: Likewise.
	* config/tc-ns32k.c: Likewise.
	* config/tc-sparc.c: Likewise.
	* config/tc-v850.c: Likewise.

	* config/tc-arc.c (get_arc_exp_reloc_type): Change uses of
	sy_value with appropriate accessor functions.
	* config/tc-arm.c (md_apply_fix3): Likewise.
	* config/tc-d10v.c (AT_WORD_P): Likewise.
	* config/tc-v850.c (reg_name_search): Likewise.

	* config/obj-ecoff.c (obj_ecoff_set_ext): Change uses of bsym to
	use symbol_get_bfdsym instead.
	* config/tc-ppc.c (md_assemble): Likewise.
	* config/tc-v850.c (v850_comm): Likewise.

1999-06-22  Jonathan Larmour  <jlarmour@cygnus.co.uk>

	* config/tc-arc.c (tc_gen_reloc): Use symbol_get_bfdsym to get at
	the symbol, rather than accessing the bsym member.
	* config/tc-d10v.c (tc_gen_reloc): Likewise.
	* config/tc-d30v.c (tc_gen_reloc): Likewise.
	* config/tc-mcore.c (tc_gen_reloc): Likewise.
	* config/tc-mn10200.c (tc_gen_reloc): Likewise.
	* config/tc-mn10300.c (tc_gen_reloc): Likewise.
	* config/tc-ns32k.c (tc_gen_reloc): Likewise.
	* config/tc-tic30.c (tc_gen_reloc): Likewise.
	* config/tc-v850.c (tc_gen_reloc): Likewise.

Mon Jun 21 16:45:19 1999  Jeffrey A Law  (law@cygnus.com)

	* tc-hppa.c (elf_hppa_reloc_type): Renamed from elf32_hppa_reloc_type.
	(hppa_gen_reloc_type): Conditionalize on BFD64.
	(tc_gen_reloc): Re-enable ELF relocations.
	* tc-hppa.h (TARGET_FORMAT): Handle elf64-hppa format.

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

	* config/tc-arm.c (ldst_extend): Add parentheses to avoid
	warning.
	(do_ldst): Move assignment out of if condition.
	(md_apply_fix3): Add casts to avoid printf format warnings.  Add
	parentheses to avoid warning.

1999-06-21  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (arm_adjust_symtab): Use symbol_get_bfdsym()
	macro to get at the BFD symbol associated with a GAS symbol.

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

	* config/tc-ppc.c: Update for symbol handling changes.
	* config/obj-coff.c: Likewise.

Fri Jun 18 14:34:18 1999  Jeffrey A Law  (law@cygnus.com)

	* tc-hppa.c: General cleanups of ELF support.  No more spaces
	and subspaces for ELF.
	(GDB_DEBUG_SPACE_NAME): Delete definition for ELF.
	(GDB_STRINGS_SUBSPACE_NAME): Likewise.
	(GDB_SYMBOLS_SUBSPACE_NAME): Likewise
	(UNWIND_SECTION_NAME): Likewise.
	(space/subspace related structures): Conditionalize definitions
	on OBJ_SOM.
	(space/subspace directives and support routines): Conditionalize
	definitions and references/uses on OBJ_SOM.
	(label_symbol_struct): For ELF, track the symbol's segment.  For
	SOM track its space.
	(pa_define_label, pa_undefine_label, pa_get_label): Corresponding
	changes.
	(USE_ALIASES): Kill for both SOM & ELF.
	(pa_def_subspaces, pa_def_spaces): Corresponding changes.
	(pa_space, pa_subspace): Corresponding changes.
	(pa_spaces_begin): Corresponding chagnes.
	(md_begin): Do not muck around with space/subspace stuff for
	OBJ_ELF.
	(md_apply_fix): Temporarily disable argument relocation stuff
	for OBJ_ELF.
	(tc_gen_reloc): Temporarily disable relocation generation for
	OBJ_ELF
	(pa_build_unwind_subspace): Similarly.

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

	* config/tc-arm.c (thumb_set): New pseudo op.
	(text, data, section): Override these pseudo ops with ARM
	specific versions.
	(s_thumb_set): New function: Perform the same as a .set pseudo
	op, but also mark the alias'ed symbol as being a Thumb
	function.
	(arm_s_text): New function: Perform the same as the .text
	pseudo op, but dump the literal pool before changing
	sections. 
	(arm_s_data): New function: Perform the same as the .data
	pseudo op, but dump the literal pool before changing
	sections. 
	(arm_s_section): New function: Perform the same as the
	.section pseudo op, but dump the literal pool before changing 
	sections. 
	(arm_cleanup): Do not reset the current section before dumping
	the literal pool.

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

	* config/tc-m32r.c (md_longopts): Fix OPTION_WARN_UNMATCHED and
	OPTION_NO_WARN_UNMATCHED entries.
	(md_parse_option): Generate a warning message if an unrecognised
	option is encountered.

	* config/tc-d10v.c (do_not_ignore_hash): New variable.
	(get_operands): When parsing an expression after an '@' symbol
	has been detected, do not ignore '#' symbols.
	(md_operand): Only ignore '#' symbols if do_not_ignore_hash is
	false. 

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

	From K. Richard Pixley <rich@noir.com>:
	* configure.in (ppc-*-vxworks*): New target.
	* configure: Rebuild.

1999-06-12  Philip Blundell  <philb@gnu.org>

	* config/tc-arm.c (tc_gen_reloc): Fix handling of GOTPC relocs.

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

	* write.c (adjust_reloc_syms): Rather than never reducing reloc
	which refer to symbols in linkonce sections, permit reducing the
	relocs if the symbol is local.

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

	* subsegs.c (subseg_text_p): New function.
	* as.h (subseg_text_p): Declare.
	* read.c (do_align): Use subseg_text_p to set the default fill.
	* write.c (subsegs_finish): Likewise.
	* config/obj-coff.c (write_object_file): Likewise.
	* config/tc-i386.h (md_maybe_text): Don't define.
	(md_do_align): Use subseg_text_p to set the default fill.
	* config/tc-m32r.c (m32r_do_align): Likewise.
	* config/tc-sh.c (sh_do_align): Likewise.
	* config/tc-sparc.h (md_do_align): Likewise.

1999-06-12  David O'Brien  <obrien@freebsd.org>

	* configure.in: (i[3456]86-*-freebsd*): Now defaults to ELF.
	* configure: Rebuild.

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

	* dwarf2dbg.c: Include elf/dwarf2.h with "", not <>.
	* Makefile.am: Rebuild dependencies.
	* Makefile.in: Rebuild.

	* config/tc-i386.c (i386_immediate): Remove unused label
	seg_unimplemented.

	* struc-symbol.h: Put local_symbol code in ifdef BFD_ASSEMBLER.
	* symbols.c: Likewise.
	* config/obj-aout.c (obj_crawl_symbol_chain): Refer directly to
	sy_next field when taking address, rather than symbol_next.

	* dwarf2dbg.c: Change bfd_vma to addressT and bfd_signed_vma to
	offsetT.
	(out_set_addr): Don't use BYTES_PER_ADDRESS.  Instead, get the
	value from the output file architecture.
	(dwarf2_gen_line_info): Ifdef BFD_ASSEMBLER specific code.
	* dwarf2dbg.h: Change bfd_vma to addressT.

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

	* dwarf2dbg.h: Use PARAMS in function declarations.

1999-06-11  Martin Dorey  <mdorey@madge.com>

	* write.c (fixup_segment): Don't add symbol value for i960 ELF.
	* config/tc-i960.c (s_leafproc): Don't call tc_set_bal_of_cal if
	OBJ_ELF.
	(md_apply_fix): Simplify BFD_ASSEMBLER handling.

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

	* config/tc-i386.c (md_apply_fix3): Add default case to switch.

	* config/tc-sparc.c (md_pseudo_table): Remove pushsection and
	popsection.

	* config/tc-sparc.c (sparc_ip): Add default case to reloc switch.

	* read.c (read_a_source_file): Only declare inescape if
	QUOTES_IN_INSN.

	* itbl-ops.c (itbl_disassemble): Change sprintf format strings to
	match parameters.
	(find_entry_byval): Add parens to avoid warning.

	* as.c: If HAVE_ITBL_CPU, include "itbl-ops.h".

	* symbols.c (resolve_symbol_value): Don't permit subtraction of
	undefined symbols.

1999-06-10  Jakub Jelinek  <jj@ultra.linux.cz>

        * config/tc-sparc.c (sparc_ip): Don't use side-effect expression
	with isoctal.

	* config/tc-sparc.c (synthetize_setuw, synthetize_setsw,
	synthetize_setx): New functions.
	(md_assemble): Broken the special cases into the above
	functions. Make compiler happy if sizeof(bfd_vma)==4.
	Fix sethi generated from set/setuw. If instructions have a relloc,
	always clear the fields to be relocated in the opcode.
	(sparc_ip): Remove special_case global variable.

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

	Based on patches from John W. Woznack <jwoznack@concentric.net>:
	* itbl-ops.c (itbl_get_reg_val): Add pval parameter.  Return
	indication of success rather than a value.
	(itbl_get_val): Likewise.
	(itbl_get_field): Use strcspn.  Change delimiters to include
	parens.
	* itbl-ops.h (itbl_get_reg_val): Update declaration.
	(itbl_get_val): Likewise.
	* config/tc-mips.c (mips_ip): Update call to itbl_get_reg_val.

	* symbols.c (copy_symbol_attributes): Convert local symbols to
	regular symbols.

1999-06-10  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_parse_option): Add support for ARM920 and
	ARM920t. 

1999-06-07  Jakub Jelinek  <jj@ultra.linux.cz>

	* config/tc-sparc.c (md_assemble): Fix up setx, support setsw.
	Optimize set if sizeof(bfd_vma) == 64.
	(sparc_ip): Fix sethi - without %hi() it should generate
	R_SPARC_22 reloc, not R_SPARC_HI22.
	(tc_gen_reloc): Handle BFD_RELOC_SPARC22.

1999-06-07  Jakub Jelinek  <jj@ultra.linux.cz>

	* config/tc-sparc.c (md_begin): Handle native wordsize aliases.
	(s_ncons): New function.
	(native_op_table): New table.
	(sparc_ip): Be more strict on %hi() etc.; prepare assembler for
	R_SPARC_OLO10 handling.

Mon Jun  7 10:22:16 1999  Richard Henderson  <rth@cygnus.com>

	* expr.h (struct expressionS): Revert last change; widen X_op.
	* config/tc-alpha.c (md_begin): Check the field is wide enough.

Mon Jun  7 11:25:16 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* Makefile.am (TARGET_CPU_CFILES): Add config/tc-fr30.c.
	(TARGET_CPU_HFILES): Add config/tc-fr30.h.
	(TARG_ENV_HFILES): Add config/te-epoc-pe.h.
	* Makefile.in: Regenerated.

	* config/obj-elf.c (obj_elf_common): In MRI mode if called as
	`common' pass on to s_mri_common.
	(elf_pseudo_table): Pass 1 to obj_elf_common for `common'. 

1999-06-06  Richard Henderson  <rth@cygnus.com>

	* config/obj-elf.c (obj_elf_section): Don't free the return
	value of demand_copy_C_string.

1999-06-05  Richard Henderson  <rth@cygnus.com>

	* dwarf2dbg.c (dwarf2_gen_line_info): Mirror the section symbol
	creation logic from obj_elf_create_section.

	* config/obj-elf.c (elf_pseudo_tab): Add pushsection/popsection.
	(section_stack): New.
	(special_sections): Make const.
	(obj_elf_section): Gut and rewrite parsing.
	(obj_elf_change_section): New function broken out of obj_elf_section.
	(obj_elf_parse_section_letters): Likewise.
	(obj_elf_section_word): Likewise.
	(obj_elf_section_type): Likewise.
	(obj_elf_previous): Treat as a toggle.
	(obj_elf_popsection): New.
	* config/tc-ppc.c (ppc_section_word): Take str+len not ptr_str.
	(ppc_section_type): Likewise.
	* config/tc-ppc.h: Likewise.

	* expr.h (struct expressionS): Don't make X_op a bitfield.
	* config/tc-alpha.c: Update for symbol handling changes.
	(md_apply_fix) [case GPREL]: Use now_seg instead of absolute_section.
	(load_expression, emit_ir_load, emit_loadstore, emit_jsrjmp): Likewise.

1999-06-05  Richard Henderson  <rth@cygnus.com>

	* dwarf2dbg.c (*): Convert to K&R + prototypes.
	(dwarf2_gen_line_info): Kill unused variables.
	(dwarf2_finish): Likewise.
	(dwarf2_where): Likewise.
	(dwarf2_directive_file): If we've only got a string,
	hand off to s_app_file.
	* ecoff.c: Move the include of ecoff.h.
	* symbols.h (S_IS_FUNCTION): Prototype.

	* read.c (LEX_HASH): Supply a default.
	(lex_type): Use it.
	(s_globl): Update `c' after skipping whitespace.
	* read.h (LEX_END_NAME, is_name_ender): New.
	* expr.c (get_symbol_end): Respect it.

1999-06-04  Mark Klein <mklein@dis.com>

	* config/tc-hppa.c (md_begin): Convert local symbol dummy_symbol
	to real if OBJ_SOM
	(tc_gen_reloc): Still need bfd_abs_symbol in some relocs.

	* config/tc-hppa.c: Update for symbol handling changes.

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

	* cgen.c: Update for symbol handling changes.
	* config/tc-m32r.c: Likewise.

	* config/tc-hppa.h: Update for symbol handling changes.
	* config/tc-hppa.c: Likewise.

	* config/tc-arm.h: Update for symbol handling changes.
	* config/tc-arm.c: Likewise.
	(symbol_make_empty): Remove.  Just use symbol_create.

	* symbols.c (symbol_set_tc): Correct name.

	* Makefile.am: Rebuild dependencies.
	($(OBJS)): Don't depend upon struc-symbol.h.
	(.dep1, .tcdep, .objdep): Create itbl-parse.h.
	* dep-in.sed: Don't remove struc-symbol.h.
	* Makefile.in: Rebuild.

	* doc/internals.texi (Symbols): Describe changes in symbol
	handling.

1999-06-03  Richard Henderson  <rth@cygnus.com>

	* dwarf2dbg.c (dwarf2_gen_line_info): Use section_symbol
	instead of doing the work by hand.

1999-06-03  David Mosberger  <davidm@hpl.hp.com>

	* dwarf2dbg.c (INITIAL_STATE): New macro encapsulating initial
	state of line state-machine.
	(struct ls): Collect DWARF2 line state-machine state in new member
	SM.  Add member EMPTY_SEQUENCE to keep track if a code sequence
	resulted in any DWARF2 directives.
	(reset_state_machine): New function.
	(out_end_sequence): Ditto.
	(dwarf2_gen_line_info): When switching sections or switching to a
	lower text address, call out_end_sequence() first to terminate the
	previous code sequence as code sequences MUST have monotonically
	increasing addresses.
	(dwarf2_finish): Call out_end_sequence() instead of open coding it.

1999-06-03  David Mosberger  <davidm@hpl.hp.com>

	* as.c (parse_args): Add option -gdwarf2 to allow requesting
	DWARF2 debug info (line information only, at this point).
	* as.h: Update comment about supported debug formats.
	* dwarf2dbg.c, dwarf2dbg.h: New files.
	* Makefile.am (GAS_CFILES, HFILES, GENERIC_OBJS): Add them.

	* expr.c (operand): Don't use [ for parens if we want an index op.
	(op_encoding): Switch [ into O_index, if desired.
	(op_rank): Renumber with O_index on bottom.
	(expr): If O_index, match closing bracket.
	* expr.h (O_index): New.

	* read.c (read_a_source_file): Conditionally allow matched "
	in lines passed to md_assemble.

	* config/obj-elf.c (elf_pseudo_table): Add `common'.

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

	Add support for storing local symbols in a small structure to save
	memory when assembling large files.
	* as.h: Don't include struc-symbol.h.
	(symbolS): Add typedef.
	* symbols.c: Include struc-symbol.h.
	(local_hash): New static variable.
	(save_symbol_name): New static function, from symbol_create.
	(symbol_create): Call save_symbol_name.
	(local_symbol_count): New static variable.
	(local_symbol_conversion_count): Likewise.
	(LOCAL_SYMBOL_CHECK): Define.
	(local_symbol_make): New static function.
	(local_symbol_convert): New static function.
	(colon): Handle local symbols.  Create local symbol for local
	label name.
	(symbol_table_insert): Handle local symbols.
	(symbol_find_or_make): Create local symbol for local label name.
	(symbol_find_base): Check for local symbol.
	(symbol_append, symbol_insert): Check for local symbols.
	(symbol_clear_list_pointers, symbol_remove): Likewise.
	(verify_symbol_chain): Likewise.
	(copy_symbol_attributes): Likewise.
	(resolve_symbol_value): Handle local symbols.
	(resolve_local_symbol): New static function.
	(resolve_local_symbol_values): New function.
	(S_GET_VALUE, S_SET_VALUE): Handle local symbols.
	(S_IS_FUNCTION, S_IS_EXTERNAL, S_IS_WEAK, S_IS_COMMON): Likewise.
	(S_IS_DEFINED, S_IS_DEBUG, S_IS_LOCAL, S_GET_NAME): Likewise.
	(S_GET_SEGMENT, S_SET_SEGMENT, S_SET_EXTERNAL): Likewise.
	(S_CLEAR_EXTERNAL, S_SET_WEAK, S_SET_NAME): Likewise.
	(symbol_previous, symbol_next): New functions.
	(symbol_get_value_expression): Likewise.
	(symbol_set_value_expression): Likewise.
	(symbol_set_frag, symbol_get_frag): Likewise.
	(symbol_mark_used, symbol_clear_used, symbol_used_p): Likewise.
	(symbol_mark_used_in_reloc): Likewise.
	(symbol_clear_used_in_reloc, symbol_used_in_reloc_p): Likewise.
	(symbol_mark_mri_common, symbol_clear_mri_common): Likewise.
	(symbol_mri_common_p): Likewise.
	(symbol_mark_written, symbol_clear_written): Likewise.
	(symbol_written_p): Likewise.
	(symbol_mark_resolved, symbol_resolved_p): Likewise.
	(symbol_section_p, symbol_equated_p): Likewise.
	(symbol_constant_p): Likewise.
	(symbol_get_bfdsym, symbol_set_bfdsym): Likewise.
	(symbol_get_obj, symbol_set_obj): Likewise.
	(symbol_get_tc, symbol_set_tc): Likewise.
	(symbol_begin): Initialize local_hash.
	(print_symbol_value_1): Handle local symbols.
	(symbol_print_statistics): Print local symbol statistics.
	* symbols.h: Include "struc-symbol.h" if not BFD_ASSEMBLER.
	Declare new symbols.c functions.  Move many declarations here from
	struc-symbol.h.
	(SYMBOLS_NEED_BACKPOINTERS): Define if needed.
	* struc-symbol.h (SYMBOLS_NEED_BACKPOINTERS): Don't set.
	(struct symbol): Move bsym to make it clearly the first field.
	Remove TARGET_SYMBOL_FIELDS.
	(symbolS): Don't typedef.
	(struct broken_word): Remove.
	(N_TYPE_seg, seg_N_TYPE): Move to symbol.h.
	(SEGMENT_TO_SYMBOL_TYPE, N_REGISTER): Likewise.
	(symbol_clear_list_pointers): Likewise.
	(symbol_insert, symbol_remove): Likewise.
	(symbol_previous, symbol_append): Likewise.
	(verify_symbol_chain, verify_symbol_chain_2): Likewise.
	(struct local_symbol): Define.
	(local_symbol_converted_p, local_symbol_mark_converted): Define.
	(local_symbol_resolved_p, local_symbol_mark_resolved): Define.
	(local_symbol_get_frag, local_symbol_set_frag): Define.
	(local_symbol_get_real_symbol): Define.
	(local_symbol_set_real_symbol): Define.
	Define.
	* write.c (write_object_file): Call resolve_local_symbol_values.
	* config/obj-ecoff.h (OBJ_SYMFIELD_TYPE): Define.
	(TARGET_SYMBOL_FIELDS): Don't define.
	* config/obj-elf.h (OBJ_SYMFIELD_TYPE): Add local field.  If
	ECOFF_DEBUGGING, add ECOFF fields.
	(ELF_TARGET_SYMBOL_FIELDS, TARGET_SYMBOL_FIELDS): Don't define.
	* config/obj-multi.h (struct elf_obj_sy): Add local field.  If
	ECOFF_DEBUGGING, add ECOFF fields.
	(ELF_TARGET_SYMBOL_FIELDS, TARGET_SYMBOL_FIELDS): Don't define.
	(ECOFF_DEBUG_TARGET_SYMBOL_FIELDS): Don't define.
	* config/tc-mcore.h: Don't include struc-symbol.h.
	(TARGET_SYMBOL_FIELDS): Don't define.
	(struct mcore_tc_sy): Define.
	(TC_SYMFIELD_TYPE): Define.
	* Many files: Use symbolS instead of struct symbol.  Use new
	accessor functions rather than referring to symbolS fields
	directly.

	* read.c (s_mri_common): Don't add in value of line_label.

	* config/tc-mips.c (md_apply_fix): Correct parenthesization when
	checking for SEC_LINK_ONCE.

	* config/tc-sh.h (sh_fix_adjustable): Declare.

	* app.c (input_buffer): New static variable.
	(app_push): Save saved_input in allocated buffer.
	(app_pop): Restored saved_input.
	(do_scrub_chars): Change get parameter to take char * and int as
	arguments.  Change GET macro to pass input_buffer to get
	function.  Don't save input into allocated buffer.
	* as.h (do_scrub_chars): Update declaration.
	* input-file.c (input_file_get): Change to take char * and int.
	Read data into passed in buffer.  Remove static buffer.
	* read.c (scrub_from_string): Change to take char * and int.  Copy
	data into passed in buffer.

	* hash.h: Neaten.  Declare hash_traverse.
	* hash.c: Complete rewrite based on BFD hashing code.
	* gasp.c (chunksize): New variable.
	* macro.c (macro_expand_body): Call hash_jam with NULL rather than
	hash_delete.

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

	* config/tc-arm.c (md_apply_fix3): Add pipeline offset into reloc
	addend unless the target uses an old ABI.

Mon May 24 13:36:55 1999  Doug Evans  <devans@canuck.cygnus.com>

	-Wchar-subscripts cleanup
	* listing.c (listing_newline): Use unsigned char variable, so
 	calls to isascii,iscntrl are correct.
	* atof-generic.c (atof_generic): Cast arg to isdigit, et. al. with
	(unsigned char).
	* ecoff.c (ecoff_directive_ent,ecoff_stab): Ditto.
	* config/obj-elf.c (obj_elf_vtable_inherit): Ditto.
	* config/tc-mips.c (mips_ip,mips16_ip): Ditto.
	(my_getSmallExpression,get_number,s_mips_ent): Ditto.

1999-05-28  Torbjorn Granlund  <tege@matematik.su.se>

	* config/tc-m68k.c (m68k_ip): Check for disallowed index register
	width for Coldfire.
	(arch_coldfire_p): New #define.
	(m68k_ip, m68k_init_after_args): Use arch_coldfire_p.

1999-05-28  Linus Nordberg  <linus.nordberg@canit.se>

	* config/tc-m68k.c (install_operand): Add places `n', `o'.

	* config/tc-m68k.c (m68k_ip): Add formats `E', `G', `H'.
	(install_operand): Add place `N'.
	(init_table): Add registers ACC, MACSR, MASK.

	* config/m68k-parse.h (m68k_register): Add ACC, MACSR, MASK.

	* config/tc-m68k.c: Change mcf5200 --> mcf.
	(archs): Add mcf5206e, mcf5307.
	(m68k_ip): Add format `u'.
	(install_operand): Add place `m', `M', `h'.
	(init_table): Add upper/lower registers.

	* config/m68k-parse.h (m68k_register): Add upper/lower registers.

1999-05-28  Martin Dorey  <mdorey@madge.com>

	* config/tc-i960.c: Several minor changes to add ELF and
	BFD_ASSEMBLER support.
	* config/tc-i960.h: Likewise.
	* configure.in (i960-*-elf*): New target.
	* aclocal.m4, configure: Rebuild.

1999-05-25  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (md_apply_fix3): Only do 1999-05-17 fx_pcrel
	reloc changes when defined(BFD_ASSEMBLER).

1999-05-17  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (tc_gen_reloc): Remove F and MAP macros.

	* write.c (write_print_statistics): Output to file, not stderr.

	* expr.c (generic_bignum_to_int32,64): Prototype.

	* read.c (s_lcomm_internal, sizeof_sleb128, sizeof_uleb128,
	output_sleb128, output_uleb128, output_big_sleb128,
	output_big_uleb128, output_big_leb128): Prototype.
	(output_big_sleb128, output_big_uleb128): Make inline.
	(output_big_leb128): Remove inline

	From Maciej W. Rozycki <macro@ds2.pg.gda.pl>
	* config/tc-i386.c (md_apply_fix3): Convert BFD_RELOC_16 with
	fx_pcrel set to BFD_RELOC_16_PCREL.  Similarly for BFD_RELOC_8.
	Handle BFD_RELOC_16_PCREL and BFD_RELOC_8_PCREL.  Return changed
	value for correct overflow check in write.c:fixup_segment.
	* write.c (fixup_segment): Move bitfield overflow checks to after
	the md_apply_fix call.
	* config/obj-coff.c (fixup_segment): Likewise.
	* doc/internals.texi (CPU backend): Mention md_apply_fix modifying
	valueT *val argument.

Fri May 14 10:52:13 1999  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* config/atof-ieee.c (gen_to_words): Correctly round a
	denormalized number.  Fix off-by-one in range checking for
	exponent in a denormal. 

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

	* config/tc-mcore.c (parse_reg): Accept 'sp' as a valid register
	name. 

Thu May 13 09:46:59 1999  Joel Sherrill (joel@OARcorp.com)

	* configure.in (i386-*-rtemself*, sh-*-rtemself*): New targets.

1999-05-12  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.h (InvMem): New flag.  Add to AnyMem.
	(ReverseRegRegmem): Remove.
	(ImmExt): New flag.  Renumber some of the opcode_modifier bits.
	* config/tc-i386.c (md_assemble): Test for PIII SIMD and AMD
	3DNow! via ImmExt opcode_modifier.  Remove ReverseRegRegmem
	kludge.

	From  Doug Ledford <dledford@redhat.com>
	* config/tc-i386.h (RegXMM): New for P/III.
	* config/tc-i386.c: Add support for P/III.

Sat May  8 23:28:50 1999  Richard Henderson  <rth@cygnus.com>

	* config/tc-ppc.c (md_parse_option): Recognize -mppc64bridge.
	(md_begin): Allow ppc32 insns in ppc64bridge mode.
	(ppc_insert_operand): Accept SIGNOPT in ppc64 mode.

Thu May  6 23:13:39 1999  Richard Henderson  <rth@cygnus.com>

	* config/tc-i386.c (i386_immediate): Skip whitespace before
	complaining about junk after expression.
	(i386_displacement): Likewise.

Thu May  6 19:50:14 1999  Richard Henderson  <rth@cygnus.com>

	* symbols.c (symbol_find_base): Use memcpy instead of strcpy.
	Don't copy before downcaseing.

1999-05-05  Catherine Moore  <clm@cygnus.com>
 
        * tc-m68k.c: Include elf/m68k.h.
        (m68k_elf_final_processing): New routine.
        * tc-m68k.h (elf_tc_final_processing m68k_elf_final_processing):
        Define.
 
Mon May  3 10:26:03 1999  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (md_apply_fix): Handle 22 bit fmt insn like a
	17 bit fmt insn.

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
