Wed Dec 31 12:29:47 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (md_relax_table): Correct branch ranges.

Mon Dec 22 13:06:05 1997  Joel Sherrill  <joel@oarcorp.com>

        * configure.in (i386*-go32-rtems*): Fix to be the same as
	i[3456]86-go32.
	* configure: Rebuild.

Mon Dec 22 12:54:07 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (macro): The 4650 doesn't permit M_LDC1_AB,
	M_SDC1_AB, M_L_DOB, M_L_DAB, M_S_DAB, or M_S_DOB.
	(mips_ip): Always check for FP_D, not just for instructions that
	are not part of the regular ISA.

Thu Dec 18 16:49:28 1997  Richard Henderson  <rth@cygnus.com>

	* config/tc-d10v.c (build_insn): Make `number' a long for 64-bit hosts.

Thu Dec 18 16:42:57 1997  Richard Henderson  <rth@cygnus.com>

	* config/tc-alpha.c (cpu_types): 21164pc/pca56 does not have CIX.

Wed Dec 17 21:23:07 1997  Jeffrey A Law  (law@cygnus.com)

	* expr.c (integer_constant 32bit bignum): Mask off bits outside
	the range we care about.

Wed Dec 17 15:29:03 1997  Michael Meissner  <meissner@cygnus.com>

	* config/tc-d30v.c (md_shortopts): Add 'n' and 'N' options.
	(exec_type_enum): Enumeration giving all of the exec types.
	(warn_nops): New static variable to give nop warning level.
	({cur,prev}_mul32_p): New static variable to keep track of whether
	the current/previous instruction is a 32-bit multiply.
	(Optimizing): Make static.
	(NOP{2,_LEFT,_RIGHT}): Macros for word of nops and left/right
	nops.
	(d30v_insert_operand): Delete declaration of unused function.
	(write_2_short): Make exec_type argument enum, not int.
	(parallel_ok): Ditto.
	(check_range): Delete unused variable(s).
	(build_insn): Ditto.
	(find_format): Ditto.
	(md_apply_fix3): Ditto.
	(md_show_usage): Document -n and -N.
	(md_parse_option): Parse -n and -N.
	(write_1_short): If -n, warn about adding a nop.  Use
	NOP_{LEFT,RIGHT}.
	(write_2_short): Use enumeration values instead of hard coded
	integers.  Reset exec_type for default operations.  For explicit
	parallel operations, call parallel_ok to make sure everything is
	ok.  If writing out a parallel operation, and the previous
	instruction was a 32-bit multiply, indicate current instruction
	is.
	(parallel_ok): Allow add/tx ... to be done in parallel with
	another add/tx ... assuming the gpr registers don't overlap.
	(md_assemble): Use exec type enumeration values, not hard coded
	ints.  Check for loads or 16-bit multiplies following in the next
	cycle after a 32-bit multiply.  Add nops if that is the case.
	(do_assemble): Copy prev_mul32_p to cur_mul32_p, and set
	cur_mul32_p if current instruction is a 32-bit multiply.
	(find_format): Change spacing and layout.

Tue Dec 16 16:55:45 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-tic80.c (tic80_relax): New static variable.
	(md_longopts): Add new OPTION_RELAX and OPTION_NO_RELAX options.
	(md_parse_option): Handle new relax options.
	(md_show_usage): Document new relax options.
	(find_opcode): Don't use short forms of PC relative branches if
	tic80_relax is set.

Tue Dec 16 15:26:03 1997  Michael Meissner  <meissner@cygnus.com>

	* config/tc-d30v.c (parallel_ok): Remove non-register bits from
	used/set flag fields.  Make flag vars unsigned long.  Use
	FLAG_A{0,1} for accumulators.  Allow any 2 insns to be done in
	parallel if they use the same conditional flag with reversed
	meaning.  Allow 2 add/sub insns that set the carry or overflow
	flags but do not query them to be done in parallel.  Don't allow 2
	word store operations to be done in parallel with ADDppp or
	SUBppp.  Don't allow loads to be done in parallel with 16 bit
	multiplies.

Tue Dec 16 09:20:43 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c: Prevent use of interworking support for
	non-COFF targets.

Mon Dec 15 15:20:32 1997  Nick Clifton  <nickc@cygnus.com>

	* doc/all.texi: Add M32R cpu.

	* doc/as.texinfo: Add documentation of m32r processor.

	* doc/c-m32r.texi: New file, documenting m32r specific features.  


Mon Dec 15 10:32:28 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mips.c (mips_ip): Correctly insert 'P' operands into
	the instruction.

Fri Dec 12 11:44:20 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-tic80.c (build_insn): Handle instructions that have
	long (32 bit) PC relative offsets.  Fix places that previously
	misused R_MPPCR for 15 bit offsets to use the new R_MPPCR15W type.
	(md_apply_fix): Add case to handle long PC relative offsets.

Fri Dec 12 10:35:01 1997  Nick Clifton  <nickc@cygnus.com>

	* doc/c-arm.texi (ARM Options): Document support for new ARM
	processor names.

	* config/tc-arm.c (md_parse_option): Add support for new ARM
	processor names.

Thu Dec 11 17:46:50 1997  Richard Henderson  <rth@cygnus.com>

	* config/tc-m68k.c (m68k_ip): Don't overwrite opcode table data.
	(insop, m68k_ip): Make `opcode' const so it doesn't happen again.

Fri Dec  5 11:23:59 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_assemble): Fix BFD_RELOC_32 against a
	symbol + offset.

	* config/tc-v850.h (ELF_TC_SPECIAL_SECTIONS): Use
	SHT_V850_{S|T|Z}COMMON to mark special common sections.

Tue Dec  2 17:05:13 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c: Brought up to date with the branch.

Mon Dec  1 20:24:18 1997  J"orn Rennecke <amylaar@cygnus.co.uk>

	* config/tc-sh.c (SWITCH_TABLE_CONS): Handle (fix)->fx_size == 1.
	(SWITCH_TABLE): Handle BFD_RELOC_8.
	(md_apply_fix): #ifndef BFD_ASSEMBLER code: Handle fixP->fx_size == 1.
	(coff_reloc_map): Add BFD_RELOC_8_PCREL entry.
	(sh_coff_reloc_mangle): SWITCH_TABLE case: Handle BFD_RELOC_8.

Sat Nov 22 16:19:22 1997  Richard Henderson  <rth@cygnus.com>

	* tc-alpha.c (range_signed_16, range_signed_32): Work around an
	apparent bug in gcc's long long support crossing from x86.

Sat Nov 22 14:26:09 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c: Brought up to date with latest changes on arm
	branch. 

Sat Nov 22 15:50:09 1997  Klaus Kaempf  <kkaempf@progis.de>

	* config-gas.com: Get version info from configure.in.

	* makefile.vms: include depend.obj in OBJS.

	* config/tc-alpha.c (s_alpha_section): Remove ".lcomm" handling.

	* config/tc-alpha.c (alpha_basereg_clobbered): Remove variable and
	all corresponding code.

Thu Nov 20 15:06:08 1997  Richard Earnshaw <rearnsha@arm.com>

	* config/tc-arm.h (TARGET_FORMAT for generic a.out targets): Allow
	run-time endian selection.

Wed Nov 19 17:44:42 1997  Richard Henderson  <rth@cygnus.com>

        * tc-sh.c (parse_reg): Properly quote for fv4.

Wed Nov 19 23:46:18 1997  Ian Lance Taylor  <ian@cygnus.com>

	* symbols.c (resolve_symbol_value): Add missing breaks in case on
	symbol value operator.

Tue Nov 18 18:45:14 1997  J"orn Rennecke  <amylaar@cygnus.co.uk>

	* config/tc-d10v.c (parallel_ok, find_opcode): 
	Split OPERAND_FLAG into OPERAND_FFLAG and OPERAND_CFLAG.

Sun Nov 16 10:05:07 1997  Fred Fish  <fnf@cygnus.com>

	* config/obj-coff.c (fixup_segment): Cast second arg of
	md_apply_fix3 call to type "valueT *".

Thu Nov 13 13:53:10 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in (emulations): Make FreeBSD an aout / i386bsd
 	variant.
	* configure: Re-generate.
	
Thu Nov 13 11:07:14 1997  Gavin Koch  <gavin@cygnus.com>

	* config/tc-mips.c (macro_build): Use the membership field
	for INSN_MACRO's.
	(mips_ip): Same.

Thu Nov 13 02:04:55 1997  J"orn Rennecke  <amylaar@cygnus.co.uk>

	* config/tc-d10v.c (find_opcode): For OPCODE_FAKE, add check for
	first argument if it's supposed to be a register.

Tue Nov 11 19:25:05 1997  J"orn Rennecke  <amylaar@cygnus.co.uk>

	* app.c (do_scrub_chars):  If d10v, re-insert a space before
	a '#' when in state 10.

Tue Nov 11 13:33:15 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-h8300.c: Include "subsegs.h".
	(tc_reloc_mangle): Handle references to symbols which are not
	being output, so that references to `.' work.

Mon Nov 10 13:43:33 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (m68k_ip): Call add_fix when needed for '_'
	case.

	* macro.c (sub_actual): If we don't find a parameter for an &,
	just substitute &.

Fri Nov  7 21:29:32 1997  Ken Raeburn  <raeburn@cygnus.com>

	* config/tc-mips.c (mips_ip): In default case, call as_bad
	instead of fprintf, to get "assembler messages:" message output
	before instead of after.

Fri Nov  7 10:36:22 1997  Doug Evans  <devans@canuck.cygnus.com>

	* frags.h: Handle multiple inclusion.

Wed Nov  5 10:51:49 1997  Doug Evans  <devans@canuck.cygnus.com>

	Based on a patch from Ian.Dall@dsto.defence.gov.au.
	* as.h (struct frag, frag support): Moved from here.
	* frags.h: To here.
	(struct frag, member tc_frag_data): New member if TC_FRAG_TYPE
	is defined.
	(struct frag, member fr_cgen): Renamed from fr_targ.cgen.
	* cgen.c (cgen_asm_finish_insn): Update.
	* config/tc-m32r.c (md_estimate_size_before_relax): Update.
	* config/tc-m32r.h (TC_FRAG_INIT): Renamed from md_init_frag.
	(md_convert_frag): Ditto.
	* config/tc-ns32k.h (TC_FRAG_TYPE): Define.
	(frag_opcode_frag,frag_opcode_offset,frag_bsr): Update.
	(TC_FRAG_INIT): Update.

Tue Nov  4 16:35:57 1997  Ian Dall  <Ian.Dall@dsto.defence.gov.au>

	* write.c (print_fixup): Use TC_FIX_DATA_PRINT (if defined) to
	print out MD fields of fix.
	* frags.c (frag_var, frag_variant): Use TC_FRAG_INIT macro (if
 	defined) to initialize MD fields in frag.
	* as.h (struct frag, ns32k support): Rename ns32k to fr_ns32k.
	Delete pcrel_adjust.  Add fr_opcode_fragP, fr_opcode_offset.
	* config/tc-ns32k.h: Add comments. Remove obsolete
 	BFD_FAST_SECTION_FILL definition, change prototypes for
 	fix_new_ns32k and fix_new_ns32k_exp to add new arguments
 	opcode_frag and opcode_offset and remove pcrel_adjust.
	(TC_FIX_TYPE): add opcode_fragP and opcode_offset fields.
	(TC_FIX_DATA_PRINT): new macro to print out TC_FIX_TYPE.
	(TC_FRAG_INIT): new macro to initialize machine dependent field in
 	frags.
	(frag_opcode_frag, frag_opcode_offset, frag_bsr): macros to access
 	MD fields in frag structure.
	(fix_im_disp, fix_bit_fixP, fix_opcode_frag, fix_opcode_offset,
 	fix_bsr): macros to access MD fields in fix structure.
	* config/tc-ns32k.c: Avoid overlength lines. Align comments.  Don't
 	use struct opcode_location as these fields are now in the frag
	structure.
	(convert_iif): Call frag_more as it is needed instead
 	of trying to allocate for the whole insn. Avoid call of frag_more
 	with negative argument.
	(md_pcrel_adjust, md_fix_pcrel_adjust, md_apply_fix,
	md_estimate_size_before_relax, md_pcrel_from,
	tc_aout_fix_to_chars): use accessor macros to get md fields in fix
 	and frag structures.
	(fix_new_ns32k, fix_new_ns32k_exp): add new arguments opcode_frag and
	opcode_offset and remove pcrel_adjust.
	(convert_iif, cons_fix_new_ns32k): call fix_new_ns32k,
 	fix_new_ns32k_exp with changed arguments.

Mon Nov  3 13:30:17 1997  Gavin Koch  <gavin@cygnus.com>

	* tc-mips.c (md_begin): Reorganize setting of default values so
	that mips_cpu depends on TARGET_CPU, and mips_opts.isa depends on
	mips_cpu.
	(md_parse_option): Remove all code that sets defaults; md_begin
	handles all of this now.

Sun Nov  2 14:46:09 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (STAGESTUFF): Change bin_PROGRAMS to
	noinst_PROGRAMS.
	(bootstrap, bootstrap2, bootstrap3): Likewise.
	* Makefile.in: Rebuild.

	* config/tc-ppc.c (ppc_fix_adjustable): Don't adjust relocs in the
	TOC section to be against the csect.

Fri Oct 31 18:19:55 1997  Ken Raeburn  <raeburn@cygnus.com>

	* config/tc-mips.c (validate_mips_insn): New function, checks
	match versus mask bits, and also verifies that all bits to be
	output are actually specified somewhere.
	(md_begin): Call it for 32-bit instructions, instead of doing
	match/mask check here.  In case of failure, print a message, but
	check the rest of the opcode table before exiting.

Thu Oct 30 13:46:20 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_apply_fix3): Fix thumb ADR pseudo op.  Patch
	from Tony Thompson at ARM: athompso@arm.com

Thu Oct 30 11:11:26 1997  Michael Meissner  <meissner@cygnus.com>

	* config/tc-d30v.c (build_insn): Allow odd registers for ld2w and
	friends.

Fri Oct 24 15:56:47 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-ppc.c (md_assemble): When handling @l, always sign
	extend if the operand expects a signed value.

	* config/tc-mips.h (LOCAL_LABELS_DOLLAR): Don't define; use
	default which is to permit dollar labels.

Fri Oct 24 11:19:22 1997  Jakub Jelinek  <jj@sunsite.mff.cuni.cz>

	* config/tc-sparc.c (sparc_memory_model): New variable.
	(md_longopts): Add -TSO/-PSO/-RMO options.
	(md_parse_options): Handle them.
	(sparc_elf_final_processing): For 64 ELF, set required
	memory ordering in e_flags. Default to RMO and let the user
	override it through command line.

	* config/tc-sparc.h (elf_tc_final_processing): Add.

Wed Oct 22 17:42:12 1997  Richard Henderson  <rth@cygnus.com>

	* config/tc-sparc.c (v9a_asr_table): New variable.
	(sparc_ip): Handle v9a asr's.
	Patch from David Miller <davem@vger.rutgers.edu>.

Wed Oct 22 17:22:59 1997  Richard Henderson  <rth@cygnus.com>

	* config/tc-sparc.h (md_do_align): New macro.
	* config/tc-sparc.c (sparc_handle_align): Handle rs_align_code.
	Patch from Jakub Jelinek <jj@sunsite.mff.cuni.cz>.

Wed Oct 22 12:51:18 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sh.c (sh_small): New variable.
	(OPTION_SMALL): Define.
	(md_longopts): Add "small".
	(md_parse_option): Handle OPTION_SMALL.
	(md_show_usage): Mention -small.
	* config/tc-sh.h (sh_small): Declare.
	(SUB_SEGMENT_ALIGN): Handle sh_small.
	* config/obj-coff.h (TARGET_FORMAT): Check sh_small in TC_SH
	case.

	* config/tc-mips.c (macro): Correct handling of constant in M_LI_D
	case in little endian mode.

Tue Oct 21 10:20:11 1997  Doug Evans  <devans@canuck.cygnus.com>

	* config/tc-sparc.c (md_apply_fix3, cases ..._H44, ..._HIX22): Leave
	overflow signalling to linker.

Mon Oct 20 14:54:06 1997  Klaus K"ampf  <kkaempf@progis.de>

	* makefile.vms: Fix for dec c.

	* config-gas.com: Give explanation for dec c setup in error
	message.

	* config/tc-alpha.c (s_alpha_comm): Make .comm symbols separate
	sections on openvms/alpha.

	* config/obj-evax.c: support .weak pseudo-op

Mon Oct 20 10:13:32 1997  Doug Evans  <devans@canuck.cygnus.com>

	* config/tc-sparc.c (default_arch_size): New static local.
	(struct sparc_arch): Rename arch_size to default_arch_size.
	New member user_option_p.
	(sparc_arch_table): Always include v9, v9a.  New entry v9-64.
	(init_default_arch): Check whether default arch is valid.
	Set default_arch_size in addition to sparc_arch_size.
	(OPTION_32,OPTION_64): Define.
	(md_longopts): New entries for -32, -64.
	(md_parse_option): Handle them.
	(md_show_usage): Print them.  Ensure init_default_arch called.
	* configure.in (sparc64): Set arch to v9-64.
	* configure: Regenerated.

Sun Oct 19 13:50:50 1997  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (subsegs_finish): New function, broken out of
	write_object_file.
	(write_object_file): Some code moves into subsegs_finish.
	* write.c (subsegs_finish): Declare.
	* as.c (main): Call subsegs_finish.

	* read.c (s_include): Check for error return from
	demand_copy_string.

Tue Oct 14 20:50:58 1997  Richard Henderson  <rth@cygnus.com>

	* read.c (get_line_sb): Accept any eol marker while scanning macros.

Tue Oct 14 19:12:45 1997  Richard Henderson  <rth@cygnus.com>

	* config/tc-alpha.h (DIFF_EXPR_OK): Define.
	* config/tc-i386.h (DIFF_EXPR_OK): Define.
	* config/tc-alpha.c (md_apply_fix): Notice fx_pcrel and substitute
	the correct relocation when it exists.
	* config/tc-i386.c (md_apply_fix3): Likewise.

	* config/tc-ppc.h: Correct typo in comment.
	* config/tc-v850.h: Likewise.

Fri Oct 10 16:09:35 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* config/tc-d10v.c (parallel_ok): Allow parallel instruction issue
 	when second instruction is writing to first instructions inputs.
	
Mon Oct 13 15:27:17 1997  Richard Henderson  <rth@cygnus.com>

	* ecoff.c (PAGE_SIZE): Double to 8k as a hack to allow some C++
	templated programs to build with -g.

Fri Oct 10 17:48:29 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_relax_table): Add support for relaxing
	unconditional branches.  This patch is courtesy of Jim Wilson. 
	(md_convert_frag): Fix relaxing of branches.  This patch is
	courtesy of Jim Wilson.
	(md_assemble): Create different fixups for conditional and
	unconditional branches.  This patch is courtesy of Jim Wilson.
	(md_estimate_size_before_relax): Estimate size of variable part of
	fixup based on whether it is for a conditional or an unconditional
	branch.  This patch is courtesy of Jim Wilson.
	(v850_sdata, v850_tdata, v850_zdata, v850_sbss, v850_tbss,
	v850_zbss, v850_rosdata, v850_rozdata, v850_bss): Add call to
	obj_elf_section_change_hook(). 
	(v850_comm): New function.
	(md_pseudo_table): Add new pseudo ops .zcomm, .scomm and .tcomm.
	(md_begin): Add bss flag to seg_info of bss sections.

	Add support for .scommon, .tcommon and .zcommon sections.

	* config/tc-v850.h (ELF_TC_SPECIAL_SECTIONS): Add .scommon,
	.zcommon, .tbss, .call_table_data and .call_table_text.

Fri Oct 10 15:01:14 1997  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in (sparc): Set DEFAULT_ARCH from correct target.
	* configure: Regenerated.

Fri Oct 10 11:22:45 1997  Martin M. Hunt  <hunt@cygnus.com>

	* config/tc-d10v.c: Fixes to make sure the AT_WORD
	expression is not confused with -1.

Fri Oct 10 11:54:50 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* config/tc-d10v.c (parallel_ok): Flag SP as modified for @-sp
 	operand - OPERAND_ATMINUS.

Fri Oct 10 00:47:44 1997  Michael Meissner  <meissner@cygnus.com>

	* config/tc-d10v.c (parallel_ok): Note that auto increment and
	decrement modify the index register.

Thu Oct  9 15:17:50 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Robin Kirkham <Robin.Kirkham@mlb.dmt.csiro.au>:
	* config/tc-m68k.c (archs): Add 68306, 68307, 68322, 68356, 68334,
	68336, 68341, 68349.
	* doc/c-m68k.texi (M68K-Opts): Add -m68ec000 -m68hc000 -m68hc001
	-m68306, -m68307, -m68322, -m68356, -m68ec020, -m68ec030,
	-m68ec040, -m68ec060, -m68330, -m68334, -m68336, -m68341,
	-m68349.

	* doc/Makefile.am (CPU_DOCS): Define.
	(as.info): Depend upon $(CPU_DOCS).
	* doc/Makefile.in: Rebuild.

	* configure.in: Remove AM_PROG_INSTALL; it's called by
	AM_INIT_AUTOMAKE.
	* configure: Rebuild.

Thu Oct  9 01:44:36 1997  J"orn Rennecke  <amylaar@cygnus.co.uk>

	* tc-d10v.h (TC_START_LABEL): Don't define.
	(tc_frob_label): Define.

Thu Oct  9 00:07:23 1997  J"orn Rennecke  <amylaar@cygnus.co.uk>

	* config/tc-d10v.c (write_2_short): Fix bug that wouldn't allow
	to pair a branch and link with anything but an exe instruction.

Wed Oct  8 16:28:53 1997  Richard Henderson  <rth@cygnus.com>

	* config/tc-alpha.c (load_expression): Disable the sym+const .got
	optimization to reduce the alignment surprises for gcc.

Wed Oct  8 16:11:15 1997  Doug Evans  <dje@canuck.cygnus.com>

	* config/obj-coff.h (TC_SPARC): Don't define TARGET_FORMAT.
	* config/tc-sparc.c (sparc_target_format): Handle coff here.
	(sparc_ip): Add %hix,%lox.
	(md_apply_fix3): Call as_bad_where, not as_bad.
	Add support for BFD_RELOC_SPARC_{HIX22,LOX10}.
	(tc_gen_reloc): Add support for BFD_RELOC_SPARC_{HIX22,LOX10}.

Wed Oct  8 12:33:32 1997  Richard Henderson  <rth@cygnus.com>

	* configure.in: Change alpha-*-* to alpha*-*-*; config.guess now
	recognizes alphaev5 etc.
	* configure: Rebuild.

Wed Oct  8 00:04:05 1997  Gavin Koch  <gavin@cygnus.com>

	* config/tc-mips.c (md_begin): Replace the TARGET_CPU value
	of mipsr3900 with mipstx39.

	* config/tc-mips.c (mips_ip): Don't print the 'opcode requires 
	-mipsXX message' if the insn isn't an ISA insn.

Tue Oct  7 12:48:30 1997  Doug Evans  <dje@canuck.cygnus.com>

	* config/tc-sparc.h (TARGET_FORMAT support): Moved to tc-sparc.c.
	Redefine TARGET_FORMAT to call sparc_target_format.
	* config/tc-sparc.c (in_unsigned_range): New function.
	(sparc_arch_size): Make static.
	(sparc_target_format): New function.
	(sparc_ip): Delete variable immediate_max.  Rewrite %hi/etc reloc
	handling.  Add support for %hh,%hm,%lm,%h44,%m44,%l44.
	(output_insn): Set `fx_no_overflow'.
	(md_apply_fix3): Handle BFD_RELOC_SPARC_{7,H44,M44,L44}.
	(tc_gen_reloc): Likewise.

Mon Oct  6 14:04:50 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (v850_section): Remove.

	* config/obj-elf.c (obj_elf_section): Enhance error message.

Fri Oct  3 15:40:38 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c: Undef OBJ_COPY_SYMBOL_ATTRIBUTES before
	including obj-elf.h in OBJ_MAYBE_ELF case.
	(mips_target_format): Return NULL after abort to avoid warning.

	* ecoff.c (generate_ecoff_stab): Remove unused static function.

	* expr.c (operator): Accept ==.  From Anders Blomdell
	<anders.blomdell@control.lth.se>.

	* config/atof-ieee.c (gen_to_words): When generating a denormal
	number, handle an overflow into the smallest normalized number.

Mon Sep 29 15:24:52 1997  J"orn Rennecke <amylaar@cygnus.co.uk>

	* as.h, input-scrub.c (new_logical_line): New return value.
	* read.c (s_app_file): Don't note the same file several times
	in a row.

Thu Sep 25 13:08:02 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (m68k_ip): Remove ` operand specifier.

Wed Sep 24 16:54:40 1997  Joel Sherrill  <joel@oarcorp.com>

        * configure.in (sh*-*-rtems*): New target, like sh-*-elf*.
	* configure: Rebuild.

Wed Sep 24 11:30:25 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (m68k_ip): Handle q and v operand specifiers.

	* doc/c-i386.texi (i386-Float): Remove incorrect assertion that
	fn* instructions do not insert implicit fwait.  This was changed
	Jan 29, 1996.

	* config/m68k-parse.y (yylex): Permit an expression to be used for
	the scale factor.

	* Makefile.am (EXTRA_as_new_SOURCES): Set to config/m68k-parse.y,
	not m68k-parse.y.
	* Makefile.in: Rebuild.

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

Tue Sep 23 17:48:09 1997  Ian Lance Taylor  <ian@cygnus.com>

	* app.c (do_scrub_chars): Clear mri_state at end of .mri
	pseudo-op.

	* config/tc-mips.c (hilo_interlocks): Change from a static
	variable to a macro, so that it varies with the variables upon
	which it depends.
	(gpr_interlocks, cop_interlocks): Likewise.
	(md_begin): Don't initialize them.

Fri Sep 19 17:08:41 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (md_assemble): Use strcasecomp instead
	of strcmp where appropriate.

Thu Sep 18 14:11:56 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_assemble): Cope with a zero data area
	relocation with a constant offset.
	(md_assemble): Produce error message when special data area
	relocations are used on instructions which do not support them.
	(md_assemble): Reset processor mask if defined by command line
	switch. 

Thu Sep 18 11:24:01 1997  Doug Evans  <dje@canuck.cygnus.com>

	* config/tc-sparc.c: Reorganize file.
	(parse_keyword_arg): Allow numbers in reg names.
	(SPECIAL_CASE_NONE): New macro.
	(md_assemble): Use it.
	(lookup_arch,init_default_arch): New functions.
	(default_arch,default_init_p,sparc_arch_table): New static locals.
	(sparc_arch_size): New static local.
	(max_architecture): Initialize in init_default_arch.
	(md_parse_options): Call init_default_arch if necessary.
	Rewrite -xarch/-A processing.
	(md_show_usage): Print -A values from sparc_arch_table.
	(md_begin): Call init_default_arch if necessary.
	(sparc_md_end): Handle both 32 and 64 bit environments.
	* config/tc-sparc.h (TARGET_FORMAT): Likewise.
	* acconfig.h (SPARC_V9,SPARC_ARCH64): Delete.
	(DEFAULT_ARCH): Add.
	* config.in: Regenerate.
	* configure.in (sparc): Default DEFAULT_ARCH based on target cpu.
	(SPARC_V9,SPARC_ARCH64): Delete.
	* configure: Regenerate.
	* config/vms-conf.h (SPARC_V9,SPARC_ARCH64): Delete.

Wed Sep 17 16:54:20 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (v850_reloc_prefix): Recoded to use CHECK_ ()
	macro. 
	(handle_tdaoff, handle_zdaoff, handle_sdaoff): New functions.

	* config/tc-v850.c (md_assemble): Corrected typo.
	* config/tc-v850.c Add new sections: call_table_data and
	call_table_text.
	(v850_reloc_prefix): Add support for ctoff() relocation prefix. 
	(handle_ctoff): New Function.

	* doc/c-v850.texi (V850 Opcodes): Document call table relocations.

Tue Sep 16 14:18:22 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (v850_reloc_prefix): Add support for a 16 bit
	displacement from the tiny data area pointer.

Mon Sep 15 21:28:09 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (fix_new_hppa): Make declaration match
	definition.

Mon Sep 15 18:33:06 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (processor_mask): New variable.
	(set_machine, md_parse_option): Set processor_mask.
	(md_assemble): Check that instruction is available to target
	processor. 

	* config/tc-v850.h (TARGET_PROCESSOR): New constant.

Mon Sep 15 11:28:04 1997  Ken Raeburn  <raeburn@cygnus.com>

	Merge in work from Martin Hunt:

	* config/tc-d30v.c (build_insn): For mvfsys and mvtsys,
	CR is 0 for PSWL and PSWH.

	* config/tc-d30v.c (do_assemble): Don't accept
	illegal condition codes for cmpu instruction.

	* config/tc-d30v.c: Add support for BFD_RELOC_D30V_9_PCREL
	used in d*i instructions.

	* config/tc-d30v.c (check_size): New function.  Check
	relocations for overflows.
	(md_pcrel_from_section): Fix relocations between sections.
	(md_apply_fix3): Use new relocation types for 15 and 21
	bit relocations in the right container. Needed because
	the address of the instruction is not eight-byte aligned
	but the relocations must be.

	* config/tc-d30v.c (md_apply_fix3): Check for overflow.
	(find_format): If ".s" or ".l" are used, don't try
	to compute branch sizes.

	* config/tc-d30v.c (do_assemble): Check for ".s" or
	".l" extensions to opcode names.
	(find_format): Generate the correct instructions when
	".s" or ".l" are used.

	* config/tc-d30v.c (build_insn): Check for odd registers
	on instructions that require even registers.

	* config/tc-d30v.h (md_start_line_hook): Define.
	* config/tc-d30v.c (md_start_line_hook): New hook.
	Checks the beginning of each line for a ".".  If it
	finds one, assume a pseudo-op and flush any unwritten
	instructions.

	* config/tc-d30v.c (md_apply_fix3): Fix problem
	with determining when fixups were done.

	* config/tc-d30v.c (build_insn): Fix bug where the numeric
	part of a symbol (for example, "foo+8") was being written
	into the instruction.
	(md_pseudo_table): Change .word to be 32 bits and add
	.hword as 16 bits.

	* config/tc-d30v.c (parallel_ok): Check to see if first
	instruction is a jump.

	* config/tc-d30v.c (parallel_ok): Major code reorganization.

Wed Sep 10 10:07:08 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_assemble): Corrected spelling mistake.
	* configure.in (emulations): Add v850 emulation.

Tue Sep  9 17:14:33 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.am (CPU_TYPES): Add arc.
	(TARGET_CPU_CFILES): Add tc-arc.c.
	(TARGET_CPU_HFILES): Add tc-arc.h.
	(dependencies): Rebuild.
	* Makefile.in: Rebuild.
	* configure.in: Recognize arc-*-elf*.
	* configure: Regenerated.
	* config/tc-arc.[ch]: New files.

Tue Sep  9 10:19:37 1997  Nick Clifton  <nickc@cygnus.com>

	* doc/c-v850.texi (V850 Opcodes): Document hi0() reloc prefix.
	Correct description of hi() reloc prefix.

	* doc/c-v850.texi (V850 Opcodes): Document new reloc prefix.
	* config/tc-v850.c (v850_reloc_prefix): Add hilo() reloc prefix.
	* config/tc-v850.c (md_assemble): Add support for BFD_RELOC_32.

	* doc/c-v850.texi: Document new pseudo ops and command line
	options.

	* config/tc-v850.c (set_machine): New function.
	* config/tc-v850.c (.v850): New pseudo op.
	* config/tc-v850.c (.v850e): New pseudo op.
	* config/tc-v850.c (.v850ea): New pseudo op.
	

Mon Sep  8 23:08:04 1997  Ian Lance Taylor  <ian@cygnus.com>

	Support -alh and -ald for DWARF 1:
	* listing.c (struct list_info_struct): Add debugging field.
	(listing_newline): Initialize the debugging field.  If ELF, if the
	section starts with .debug or .line, set the debugging field in
	the listing structure.
	(debugging_pseudo): Add list parameter.  Change all callers.  If
	the debugging field is set, consider it to be a debugging pseudo.
	If ELF, skip blank lines between debugging lines.
	* read.c (emit_expr): If ELF, look for line numbers.
	(stringer): If ELF, look for file names.

Mon Sep  8 12:33:40 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (v850_insert_operand): Only test for overflow
	if there is no insert function.

	* config/tc-v850.h (TARGET_MACHINE): New constant.

	* config/tc-v850.c (v850_insert_operand): Add
	-mwarn_unsigned_overflow. 
	(md_begin): Set BFD machine number based on machine variable.
	(md_parse_option): Add -mv850, -mv850e and -mv850ea options.

Mon Sep  8 11:20:46 1997  Ian Lance Taylor  <ian@cygnus.com>

	* as.h: Don't declare alloca if it is a macro.
	* macro.c: Likewise.

Sun Sep  7 00:30:19 1997  Richard Henderson  <rth@cygnus.com>

        * config/tc-alpha.c (md_parse_option): Move m[] out to top level and
        rename to cpu_types[].
        (s_alpha_arch): New function.
        (md_pseudo_table): Add "arch".

        * config/tc-alpha.c (md_begin): Merge the two loops through the
        opcode table.
        (s_alpha_proc): Add initial SKIP_WHITESPACE.
        (s_alpha_set): Likewise.  Use get_symbol_end instead local while loop.

Sat Sep  6 19:38:12 1997  Fred Fish  <fnf@cygnus.com>

	* read.h (s_lcomm_bytes): Add prototype (for real this time).

Thu Sep  4 12:10:01 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-elf.c (elf_frob_symbol): Only set BSF_OBJECT for
	symbols on Irix.

Wed Sep  3 11:21:33 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c: Remove BFD_RELOC_V850_16_PCREL.

Tue Sep  2 18:32:30 1997  Jeffrey A Law  (law@cygnus.com)

        * config/tc-mn10200.c (md_convert_frag): PC relative instructions arex
	relative to the next instruction, not the current instruction.
	(md_assemble): Similarly.

Tue Sep  2 15:58:52 1997  Nick Clifton  <nickc@cygnus.com>

	* doc/c-v850.texi: Explanations of offsets in SDA/ZDA areas
	correcetd. 

	* config/tc-v850.c: Add support for SDA/TDA/ZDA sections.
	(v850_reloc_prefix): Duplicate code eliminated.  Add code to
	recognise special instructions.
	(md_assemble): Calculation of the size of a fixups corrected.

	* config/tc-v850.h (ELF_TC_SPECIAL_SECTIONS): Add SDA/TDA/ZDA
	sections. 	

Tue Sep  2 15:40:56 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* config/tc-v850.c (md_assemble): Use opcode->name instead of
 	opcode->opcode as the sentinal. Zero is a valid opcode.

Tue Aug 26 16:51:14 1997  Ian Lance Taylor  <ian@cygnus.com>

	* doc/as.texinfo (Machine Dependencies): Add v850 to menu.
	* doc/c-v850.texi: Change node name to match other chapter nodes.

Tue Aug 26 09:46:22 1997  Nick Clifton  <nickc@cygnus.com>

	* doc/c-v850.texi (V850 Opcodes): Correct name for tiny data area
	pointer. 

Tue Aug 26 12:23:25 1997  Ian Lance Taylor  <ian@cygnus.com>

	* expr.c (integer_constant): If BFD64, don't make a bignum if the
	number will fit in 64 bits.

	* config/tc-alpha.c (load_expression): Check explicitly for O_big,
	rather than calling abort.

	* as.h: Don't define alloca if __GNUC__.  Just declare it.
	* macro.c: Copy alloca handling from as.h.

	* config/tc-i386.c (i386_align_code): Correct 16 bit noops.  From
	Gabriel Paubert <paubert@iram.es>.

	* config/tc-i386.c (md_assemble): In JumpByte case, when looking
	for a WORD_PREFIX_OPCODE, change it to ADDR_PREFIX_OPCODE if this
	is jcxz or a loop instruction.

Mon Aug 25 16:04:14 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (pre_defined_registers): Add 'hp' as alias for
	r2.
	(md_begin): Set up machine architecture and type.

Mon Aug 25 14:25:48 1997  Ian Lance Taylor  <ian@cygnus.com>

	* symbols.c (resolve_symbol_value): Store the value back into the
	symbol expression, to handle add or subtract simplification
	correctly.  Handle O_symbol_rva.  Add default case.

	* config/tc-ppc.c (ppc_change_csect): Temporarily lower the
	chunksize while creating the new subsection.
	* as.c (chunksize): Initialize to zero.
	* subsegs.c (subseg_set_rest): Change 5000 to chunksize when
	calling obstack_begin.

Mon Aug 25 11:21:48 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_assemble): Restore input_line_pointer upon
	exit. 
	
	* config/tc-v850.c (parse_register_list): Support constant
	expressions as register lists.

Mon Aug 25 10:19:34 1997  Nick Clifton  <nickc@cygnus.com>

	* doc/c-v850.texi: Change the major node to v850 Machine
	Dependencies. 

Fri Aug 22 11:16:14 1997  Nick Clifton  <nickc@cygnus.com>

	* doc/as.texinfo: Add inclusion of c-v850.texi

	* doc/c-v850.texi: New file.

	* read.c (is_end_of_line): Make NUL character be considered to be
	a line terminator.

Fri Aug 22 10:45:33 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (parse_register_list): Add support for curly
	brace syntax.
	(cc_names): Add "e" and "ne" conditions.

Thu Aug 21 11:00:36 1997  Nick Clifton  <nickc@cygnus.com>

	* app.c (do_scrub_chars): Support a double dash as starting a
	comment that extends to end of line.

Thu Aug 21 10:54:27 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (v850_section, v850_bss, v850_offset): New
	functions.
	(md_pseudo_table): New pseudo ops: .bss, .offset, .section

Thu Aug 21 00:59:53 1997  Doug Evans  <dje@canuck.cygnus.com>

	* config/tc-m32r.c (md_estimate_size_before_relax): Update recorded
	insn when changing to a different instruction.

Wed Aug 20 00:45:20 1997  J"orn Rennecke <amylaar@cygnus.co.uk>

	* tc-sh.c (parse_reg, get_specific, build_Mytes): Add SH4
	floating point extensions.
	(parse_reg): parse sgr and dbr.

Tue Aug 19 17:07:34 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (system_register_name): Support numbers for
	system register IDs.

Tue Aug 19 08:59:12 1997  Fred Fish  <fnf@cygnus.com>

	* read.c (s_lcomm_internal): Renamed from s_lcomm, added arg to
	flag when alignment is in bytes instead of power of 2, and code to
	use that flag to convert alignment to bytes.
	(s_lcomm, s_lcomm_bytes):  New helpers that call s_lcomm_internal.
	* read.h (s_lcomm_bytes): Add prototype.
	* config/obj-coff.c (write_object_file): If ALIGNMENT_IN_S_FLAGS is
	defined, write alignment to alignment bits in section header s_flags
	rather than the s_align field.
	* config/obj-coff.h (ALIGNMENT_IN_S_FLAGS): Define for TC_TIC80.
	* config/tc-tic80.c (md_pseudo_table): Use s_lcomm_bytes for bss
	pseudo, instead of s_lcomm which wants a power of two for alignment.

Mon Aug 18 20:42:23 1997  Richard Henderson  <rth@cygnus.com>

	* macro.c (check_macro): use alloca instead of xmalloc to plug leak.

Mon Aug 18 20:33:06 1997  Richard Henderson  <rth@cygnus.com>

	* as.c (show_usage): Add -am.
	* input-scrub.c (input_scrub_include_sb): Don't add leading \n
	if we've already got one.
	* listing.c (struct list_info_struct): Add line_contents.
	(listing_newline): Put unused argument to work: if non-null, save it...
	(listing_listing): ... and regurgitate during listing instead of line
	from file.
	* listing.h (LISTING_MACEXP): New define.
	(LISTING_NEWLINE): Argument is NULL.
	* read.c (read_a_source_file): If expanding macros, break up input
	lines and pass them to listing_newline.
	* doc/as.texinfo: Document -ac and -am.

	* cond.c (s_ifc): Add missing demand_empty_rest_of_line.

Mon Aug 18 11:26:36 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_apply_fix3): Add support for new 16 bit PC
	relative reloc.

Mon Aug 18 11:24:21 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c: Remove support_v850e flag and command line
	option. 
	
	* configure.in (emulations): Add support for v850e target

	* configure (emulations): Add support for v850e target

Mon Aug 18 11:24:21 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c: Remove support_v850ea flag and command line
	option. 
	
	* configure.in (emulations): Add support for v850ea target

	* configure (emulations): Add support for v850ea target

Fri Aug 15 14:00:13 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (check-DEJAGNU): Don't cd into testsuite until after
	setting EXPECT and TCL_LIBRARY.
	* Makefile.in: Rebuild.

	* as.h (enum debug_info_type): Define.
	(debug_type): Declare.
	* as.c (debug_type): New global variable.
	(show_usage): Add --gstabs.
	(parse_args): Handle --gstabs.
	* read.c (generate_asm_lineno): Remove.
	(read_a_source_file): Output stabs debugging if appropriate.
	Change checks of generate_asm_lineno to check debug_type.  Only
	generate ECOFF debugging if ECOFF_DEBUGGING is defined.
	* read.h (generate_asm_lineno): Don't declare.
	(stabs_generate_asm_lineno): Declare.
	* stabs.c (stabs_generate_asm_lineno): New function.
	* ecoff.c (add_file): Use debug_type, not generate_asm_lineno.
	Don't turn off debugging.
	(add_file): Remove old #if 0 code.
	(ecoff_new_file): Set debug_type, not generate_asm_lineno.
	(ecoff_directive_end): Don't generate stabs line symbols.
	(ecoff_generate_asm_lineno): Don't check stabs_seen.  Don't set
	generate_asm_lineno.
	(line_label_cnt): Remove.
	(ecoff_generate_asm_line_stab): Remove.
	* ecoff.h (ecoff_generate_asm_line_stab): Don't declare.
	* doc/as.texinfo, doc/as.1: Document --gstabs.

Wed Aug 13 18:58:56 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_assemble, md_show_usage, md_parse_option):
	Add support for v850ea instructions.

	* config/tc-v850.c (md_assemble, md_show_usage, md_parse_option):
	Add support for v850e instructions.
	
	* config/tc-v850.c (md_assemble): Fix error recovery to reload
	text of entire opcode. 

Tue Aug 12 10:27:34 1997  Richard Henderson  <rth@cygnus.com>

	* doc/internals.texi: Document rs_leb128.

Tue Aug 12 12:17:03 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (m68k_ip): Give an error message for SIZE_BYTE
	in ABSL case, rather than calling abort.

Mon Aug 11 21:48:00 1997  Richard Henderson  <rth@cygnus.com>

	* as.h (enum _relax_state): Add rs_leb128.
	* read.c (potable): Add sleb128 and uleb128.
	(sizeof_*leb128, output_*leb128, emit_leb128_expr, s_leb128): New
	functions.
	* read.h: Update prototypes.
	* symbols.c (resolve_symbol_value): Streamline quite a bit.  Return
	the symbol value, add a second FINALIZE argument that prevents 
	changes from being comitted.  Update all callers.
	* write.c (cvt_frag_to_fill, relax_segment): Handle rs_leb128.
	* doc/as.texinfo: Document the new pseudos.

Sun Aug 10 14:51:49 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (MOSTLYCLEANFILES): Add site.bak, site.exp, stage,
	stage1, and stage2.
	(DISTCLEANFILES): Define.
	* doc/Makefile.am (DISTCLEANFILES): Define.
	* Makefile.in, doc/Makefile.in: Rebuild.

Wed Aug  6 00:30:30 1997  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Define TARGET_BYTES_BIG_ENDIAN if endian is set.
	Don't set targ or gas_target.  Define SCO_ELF and
	TARGET_SOLARIS_COMMENT when appropriate.  Don't substitute for
	target_frag.
	* Makefile.am: Remove @target_frag@.
	(INCLUDES): Remove $(INTERNAL_CFLAGS), $(CROSS), $(HDEFINES), and
	$(TDEFINES).
	(dep-am): Mark as phony.
	* acconfig.h: Add TARGET_BYTES_BIG_ENDIAN, TARGET_SOLARIS_COMMENT,
	and SCO_ELF.
	* config/arm-big.mt, config/arm-lit.mt: Remove.
	* config/mips-big.mt, config/mips-lit.mt: Remove.
	* config/ppc-big.mt, config/ppc-lit.mt: Remove.
	* config/ppc-sol.mt: Remove.
	* config/i386coff.mt, config/m68kcoff.mt: Remove.
	* config/m88kcoff.mt: Remove.
	* config/sco5.mt: Remove.
	* configure, config.in, Makefile.in: Rebuild.

	* Makefile.am ($(srcdir)/config/m68k-parse.h): New target, to
	further try to circumvent the .y.h rule.
	* Makefile.in: Rebuild.

Tue Aug  5 12:32:07 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: New file, based on old Makefile.in.
	* acinclude.m4: New file, from old aclocal.m4.
	* configure.in: Call AM_INIT_AUTOMAKE and AM_PROG_LIBTOOL.  Remove
	shared library handling; now handled by libtool.  Replace
	AC_CONFIG_HEADER with AM_CONFIG_HEADER.  Call AC_PROG_YACC,
	AC_PROG_LEX, and AC_DECL_YYTEXT.  Call AM_MAINTAINER_MODE,
	AM_CYGWIN32, and AM_EXEEXT.  Don't call CY_CYGWIN32 or CY_EXEEXT.
	* config.in: New file, created by autoheader.
	* conf.in: Remove.
	* acconfig.h: Mention PACKAGE, VERSION, and USING_CGEN.
	* stamp-h.in: New file.
	* as.c (print_version_id): Change GAS_VERSION to VERSION.
	(parse_args): Likewise.
	* config/obj-vms.c: (Write_VMS_MHD_Records): Likewise.
	* doc/Makefile.am: New file, based on old doc/Makefile.in.
	* Makefile.in, doc/Makefile.in: Now built with automake.
	* aclocal.m4: Now built with aclocal.
	* configure: Rebuild.

	* cond.c (s_else): If not listing false conditionals, turn listing
	off in the false branch of the else.

Mon Aug  4 11:28:35 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (macro): Fix handling of a double load from a
	symbol plus an offset.

	* ecoff.c (ecoff_build_symbols): Set fMerge to 0 for an FDR which
	has an associated external symbol.

Sun Aug  3 23:23:59 1997  Richard Henderson  <rth@cygnus.com>
 
        * config/tc-alpha.c (s_alpha_ucons): New function.
        (md_pseudo_table): Add unaligned data pseudos for DWARF.

Thu Jul 31 15:13:43 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c (md_assemble): Ignore the rest of the current
	line if we encounter an error.

	* config/tc-v850.c (md_assemble): Sign extend constants value
	for hi and hi0 expressions.
	(v850_insert_operand): Enable range checking for generic 16bit
	operands.

Tue Jul 29 14:20:43 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c (md_assemble): Turn on fx_no_overflow for
	LO16, HI16 and HI16_S relocs.

Mon Jul 28 18:41:41 1997  Rob Savoye  <rob@chinadoll.cygnus.com>

        * configure.in: Use CYGWIN and EXEEXT autoconf macro to look for
        win32 dependencies.
        * configure: Regenerated with autoconf 2.12.
        * Makefile.in: Add $(EXEEXT) to all executables.

Fri Jul 25 10:54:43 1997  Jeffrey A Law  (law@cygnus.com)

	* tc-hppa.c (md_apply_fix): Improve warnings for out of range
	unconditional branches.
	(hppa_fix_adjustable): Don't adjust anything with a RR% or LR%
	field selector.

Thu Jul 24 15:21:49 1997  Doug Evans  <dje@canuck.cygnus.com>

	* tc-sparc.c (md_begin): Cast sparc_opcodes to PTR for hash_insert.

Thu Jul 24 17:51:29 1997  Ian Lance Taylor  <ian@cygnus.com>

	* macro.c (define_macro): Make sure the index is in range before
	checking for '('.

Thu Jul 24 12:13:19 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-tic80.c (build_insn): Remove "extended" and replace with
 	"fx" and "fxfrag".  Add "ffrag".  Change code to initialize and use
	the right f/ffrag and fx/fxfrag pairs since instruction may be split
 	across frags.

Tue Jul 22 18:38:56 1997  Robert Hoehne <robert.hoehne@Mathematik.TU-Chemnitz.DE>

	* config/te-go32.h (USE_ALIGN_PTWO): Define.
	* config/tc-i386.c (md_pseudo_table): If USE_ALIGN_PTWO is
	defined, use s_align_ptwo for .align.
	* configure.in (i386-*-msdosdjgpp*): New target.
	(i386-*-go32*): Set em to go32 and targ to coffgo32.
	* configure: Rebuild.

Tue Jul 22 12:41:40 1997  Doug Evans  <dje@canuck.cygnus.com>

	* config/tc-sparc.c (last_opcode): New static local.
	(md_assemble): Don't issue "FP branch in delay slot" warning if
	the delay slot has been annulled.

Tue Jul 22 13:25:13 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (md_apply_fix_2): Check for PC relative reloc
	code if BFD_ASSEMBLER.

Mon Jul 21 08:57:17 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c (system_registers): Fix ordering of registers.

Tue Jul 15 16:29:54 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-tic80.c (build_insn): Initialize extended word to zero
	when it will be filled in later by relocation information.

Mon Jul 14 23:10:58 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (macro_build): Restore check of fmt argument.
	(mips_ip): Fix ISA checks.

Mon Jul 14 19:30:55 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-tic80.c (build_insn): Fix endianness problem with
	O_big operands.

Sun Jul 13 20:43:46 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (check_absolute_expr): Change warning to
	error.

Fri Jul 11 10:18:47 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mips.c (macro_build): Refine code to check if an
	instruction is available on a particular cpu variant.
	(mips_ip): Likewise.

Mon Jul  7 22:53:08 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (tc_i386_fix_adjustable): Change ifndef
	OBJ_AOUT to ifdef OBJ_ELF.
	(md_apply_fix3): When mangling 32 bit PC relative reloc for
	BFD_ASSEMBLER, handle one ELF case for COFF as well, and add a PE
	case.
	* write.c (fixup_segment): Change special case for i386-coff to
 	not apply for i386-pe.
	* config/obj-coff.c (coff_adjust_section_syms): Only count fixups
	which were not done.
	(coff_frob_file_after_relocs): Rename from coff_frob_file.
	(coff_format_ops): Initialize frob_file_after_relocs field rather
	than frob_file field.
	* config/obj-coff.h (coff_frob_file): Don't declare.
	(coff_frob_file_after_relocs): Declare.
	(obj_frob_file): Don't define.
	(obj_frob_file_after_relocs): Define.
	* configure.in: Set bfd_gas to yes for i386-*-cygwin32.
	* configure: Rebuild.

Wed Jul  2 12:05:00 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (fixup_segment): Never subtract section
	address from PC relative reloc which will be fully resolved.

Tue Jul  1 15:23:07 1997  Jeffrey A Law  (law@cygnus.com)

	* ecoff.c (page_type): Renamed from page_t to avoid conflict
	with hpux10 header files.

Mon Jun 30 12:27:28 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Jason Merrill <jason@cygnus.com>:
	* read.c (do_align): If BFD_ASSEMBLER, only use NOP_OPCODE if
	SEC_CODE is set.
	* config/tc-i386.h (md_maybe_text): Define.
	(md_do_align): Use md_maybe_text.

Fri Jun 27 19:15:27 1997  Michael Meissner  <meissner@cygnus.com>

	* config/tc-ppc.h (tc_fix_adjustable): Only check for GOT type
	relocations, don't check for symbol being external, weak, etc.

Mon Jun 16 19:12:51 1997  Geoff Keating  <geoffk@ozemail.com.au>

	* config/tc-ppc.h (tc_fix_adjustable): Don't let the assembler
	calculate relocations to any external symbol, because we might be
	linking a shared object and the symbol might be overriden or moved
	(for instance, moved into a static executable's .bss section).
	(GLOBAL_OFFSET_TABLE_NAME): Delete. This is an i386 wierdness.

	* config/tc-ppc.h (tc_fix_adjustable): GOT-based relocations can't
	be calculated by the assembler.

	* config/tc-ppc.c (md_apply_fix3): Handle @plt or @local branch
	whose destination lies in the same file, by ignoring the @plt or
	@local and aiming the branch at its destination.

Mon Jun 16 13:59:18 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* symbols.c (copy_symbol_attributes): Copy BSF_OBJECT flag.
	* config/obj-elf.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Copy size
	expression.

	* config/obj-multi.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Define instead
	of obj_copy_symbol_attributes.

Mon Jun 16 12:45:56 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-ppc.c (ppc_insert_operand): In 32 bit mode, with a
	signed operand, sign extend a 32 bit value to the host size.

	* Makefile.in (CFLAGS): Subsitute from configure script.  From
	Jeff Makey <jeff@cts.com>.

	* config/tc-i386.c (i386_operand): Use alloca rather than a fixed
	buffer size to make a copy of the symbol.

	* Makefile.in (OBJS): Put @extra_objects@ on the same line as
	macro.o.

Thu Jun 12 12:16:20 1997  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (write_object_file): In non BFD_ASSEMBLER code, as we
	step through the frags calling cvt_frag_to_fill, switch to
	SEG_DATA when we reach data_frag_root.

Tue Jun 10 17:08:34 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (md_assemble): Allow an empty register
	list for instructions which use register lists.

Tue Jun 10 11:18:09 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* config/tc-arm.c (md_apply_fix3): Make temp unsigned long.

	* config/tc-arm.c (arm_adjust_symtab): Only set storage classes if
	OBJ_COFF.

	* config/tc-arm.c: Add prototypes for many static functions.
	(struct asm_opcode ): Add prototypes for parms field.
	(struct thumb_opcode ): Likewise.
	(fp_op2): Remove unused flags parameter.
	(output_inst): Make static.
	(arm_after_pass_hook): Remove unused ignore parameter.
	* config/tc-arm.h (arm_after_pass_hook): Declare.
	(arm_start_line_hook): Declare.
	(arm_frob_label): Declare.

Mon Jun  9 12:55:45 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* depend.c (wrap_output): new prototype.

Mon Jun  9 12:52:44 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sh.c (md_apply_fix): Check for overflow.

	* config/tc-m68k.c (md_section_align): If a.out and BFD, force
	section size to be aligned.

Fri Jun  6 17:15:55 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sh.h (md_cons_align): Define.
	(sh_cons_align): Declare.
	* config/tc-sh.c (md_pseudo_table): Add .uaword and .ualong.
	(sh_no_align_cons): New static variable.
	(s_uacons): New static function.
	(sh_cons_align): New function.
	(sh_handle_align): Warn about misaligned data.
	* doc/c-sh.texi: Document .uaword and .ualong.

Thu Jun  5 15:38:17 1997  Ian Lance Taylor  <ian@cygnus.com>

	* macro.c (macro_expand): In MRI mode, treat single quote as a
	separator character when checking for a positional argument.

Tue Jun  3 16:15:13 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_parse_option): Merge in changes from
	armT-970328-branch.

	* config/tc-arm.h: Merge in changes from armT-970328-branch.

	* configure.in (emulations): Add Thumb architecture support from
	armT-9703-28-branch.

Mon Jun  2 16:25:07 1997  Nick Clifton  <nickc@cygnus.com>

	* doc/all.texi: Add enabling of ARM documentation.

	* doc/as.texinfo: Add ARM documentation from armT-970328-branch.

Mon Jun  2 11:55:12 1997  Gavin Koch  <gavin@cygnus.com>

	* config/tc-mips.c: Added r3900 support.

Thu May 29 12:58:26 1997  Ben Pfaff  <pfaffben@pilot.msu.edu>

	* as.c: (parse_args) `-t' option requires an argument.

Wed May 28 15:45:07 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_begin): Change call to
	coff_arm_bfd_set_private_flags() to a call to
	bfd_set_private_flags(). 

Wed May 28 16:17:34 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in: Rebuild dependencies.

	* config/tc-i386.c (tc_gen_reloc): Don't try to convert the type
 	of a BFD_RELOC_RVA reloc.

Wed May 28 10:48:14 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (tc_fix_adjustable): Reject absolute calls/jumps.
	(hppa_force_relocation): Force a relocation for an absolute
	call/jump.

Mon May 26 13:24:25 1997  Ian Lance Taylor  <ian@cygnus.com>

	* doc/as.texinfo: Don't use @value in section names or index
	entries; it confuses texinfo.tex.

Fri May 23 00:09:35 1997  Tom Tromey  <tromey@cygnus.com>

	* doc/as.texinfo: Updated for -MD option.
	* Makefile.in (CFILES): Added depend.c.
	(OBJS): Added depend.o.
	* as.h (start_dependencies, register_dependency,
	print_dependencies): New declarations.
	* depend.c: New file.
	* as.c (parse_args): Added -MD option.
	(main): Call print_dependencies.
	(show_usage): Added help for -MD.
	* read.c (s_app_file): Call register_dependency.
	(s_include): Call register_dependency when file is found.
	(read_a_source_file): Call register_dependency.

Wed May 21 17:39:28 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (symbol_to_chars): If TE_PE, don't add the
	section address to the symbol value.

Tue May 20 11:23:31 1997  Gavin Koch  <gavin@cygnus.com>

	* config/tc-mips.c (macro_build,mips_ip): Move the INSN_ISA field
	into the new membership field.

Thu May 15 10:00:53 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_begin): If no cpu type is specified on the
	command line then the ARM7 is now chosen by default when setting
	the BFD machine and architecture.

Wed May 14 09:54:53 1997  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (global variables): Added 'uses_apcs_26' flag to
	hold APCS selection.
  	(md_begin): Added code to generate flags to be set into the COFF
	header and the calls to the BFD functions to do this.
  	(md_parse_option, md_show_usage): Added new command line
	options -mapcs-32, -mapcs-26, -marmv2, -marmv2a, -marmv3,
	-marmv3m, -marmv4, -marmv4t. 

	* tc-arm.h (LOCAL_LABEL): Removed the definition of this macro
	as it is never used.

Tue May 13 22:26:14 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (md_convert_frag): Prefix temporary
	label name with ".".
	* config/tc-mn10300.c (md_convert_frag): Likewise.

Tue May 13 14:44:39 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (set_at): Check for bignum.
	(check_absolute_expr, macro, mips16_macro): Likewise.

Tue May 13 10:45:56 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-tic80.c (md_apply_fix): Check PC relative relocations
	for overflow/underflow, only insert lower 15 bits into instruction.

Mon May 12 13:33:08 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* config/tc-i386.c (pi): Check for RegMMX.

Thu May  8 11:10:15 1997  Ian Lance Taylor  <ian@cygnus.com>

	* expr.c (expr): When subtracting values in the same frag,
	subtract X_add_number rather than adding it.

Wed May  7 15:39:48 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (write_object_file): Just pass NULL to
 	md_do_align, not the address of a char holding NOP_OPCODE.

	* config/tc-mips.c (macro): Handle constants for M_LI_D and
	M_LI_DD.
	(mips_ip): For 'F', 'L', 'f', and 'l', generate a constant rather
	than an address if the floating point value looks sufficiently
	simple.

Tue May  6 12:18:09 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (md_section_align): If a.out and BFD, force
	section size to be aligned.

Mon May  5 17:16:55 1997  Ian Lance Taylor  <ian@cygnus.com>

	* cond.c: Include "macro.h".
	(struct conditional_frame): Add macro_nest field.
	(initialize_cframe): Initialize macro_nest.
	(cond_finish_check): Add nest parameter.  Change all callers.
	(cond_exit_macro): New function.
	* as.h (cond_finish_check): Update declaration.
	(cond_exit_macro): Declare.
	* input-scrub.c (macro_nest): Make globally visible.
	(input_scrub_next_buffer): Call cond_finish_check.
	* macro.h (macro_nest): Declare.
	* read.c (s_mexit): Call cond_exit_macro.

	* config/tc-i386.h (RegMMX): Define.
	* config/tc-i386.c (pi): Check for all register types.
	(type_names): Add RegMMX.
	(md_assemble): Handle RegMMX.

Wed Apr 30 12:47:00 1997  Manfred Hollstein  <manfred@s-direktnet.de>

	* config/obj-coff.c (c_section_symbol): Clear the LOCAL bit #ifdef
	TE_DELTA.

Tue Apr 29 20:23:10 1997  Jim Wilson  <wilson@cygnus.com>

	* config/tc-mips.c (nopic_need_relax): Add new parameter
	before_relaxing.  Use it when testing ecoff_extern_size.
	(load_address, macro, md_estimate_size_before_relax): Fix all
	callers.

Tue Apr 29 19:54:36 1997  Richard Henderson  <rth@tamu.edu>

	* config/obj-elf.c (elf_pseudo_table): Add "subsection".
 	(obj_elf_subsection): New static function.

Tue Apr 29 19:52:47 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (coff_header_append): Don't reset string_size
	each time through the loop.

Fri Apr 25 14:17:46 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* Makefile.in (DISTSTUFF): Add itbl-parse.h.

Fri Apr 25 12:03:15 1997  Ian Lance Taylor  <ian@cygnus.com>

	* doc/internals.texi (Porting GAS): Correct documentation for
	current configure handling of targ-cpu.h, et. al.
	(CPU backend): Document listing macros.

	* listing.c (data_buffer): Set size based on other listing macros,
	rather than always using 100.
	(data_buffer_size): Remove static variable.
	(calc_hex): Make data_buffer_size a local variable.  Don't leave
	any slop when filling data_buffer.

Mon Apr 21 15:33:19 1997  Ian Lance Taylor  <ian@cygnus.com>

	* doc/c-mips.texi: Document .set autoextend.

Sat Apr 19 23:09:25 1997  Niklas Hallqvist  <niklas@petra.appli.se>

	* configure.in (i386-*-openbsd*, m68k-*-openbsd*,
	mips-dec-openbsd*, ppc-*-*bsd*, ns32k-pc532-openbsd*,
	sparc-*-openbsd*): New targets.
	* configure: Rebuild.

Sat Apr 19 22:52:03 1997  Jim Wilson  <wilson@cygnus.com>

	* config/obj-elf.c (elf_frob_symbol): If TC_MIPS, set BSF_OBJECT
	for all undefined symbols.

Fri Apr 18 13:37:35 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-ppc.c (ppc_fix_adjustable): Handle zero length csects
	correctly.

Fri Apr 18 11:51:35 1997  Niklas Hallqvist  <niklas@appli.se>

	* configure.in (alpha*-*-openbsd*): New target.
	* configure: Rebuild.

Thu Apr 17 13:59:47 1997  Per Fogelstrom  <pefo@openbsd.org>

	* configure.in (mips-*-openbsd*): New target.
	* configure: Rebuild.

Wed Apr 16 12:31:24 1997  Martin Hunt <hunt@cygnus.com>

	* config/tc-d30v.c (parallel_ok): Fix parallel checking
	for instructions using conditional execution.

Tue Apr 15 18:11:44 1997  Gavin Koch  <gavin@cygnus.com>

	* config/tc-mips.c (insn_uses_reg): Correct test for fpr pairs.

Tue Apr 15 13:04:47 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (srcroot): Remove.
 	(INSTALL): Set to @INSTALL@.
	(INSTALL_XFORM, INSTALL_XFORM1): Remove.
	(all, dvi): Don't set srcroot.
	(install): Depend upon as.new, gasp.new, and installdirs.  Use
	$(program_transform_name) directly, rather than using
	$(INSTALL_XFORM) and $(INSTALL_XFORM1).
	(installdirs): New target.
	* doc/Makefile.in (INSTALL_XFORM1): Remove.
	(install): Depend upon installdirs.  Use $(program_transform_name)
	directly, rather than using $(INSTALL_XFORM) and
	$(INSTALL_XFORM1).
	(installdirs): New target.
	(install-info-as): Run mkinstalldirs.
	(install-info-gasp): Likewise.

Mon Apr 14 11:59:08 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL): Change install.sh to install-sh.

	* symbols.c (resolve_symbol_value): Check for division by zero.

	From Thomas Graichen <graichen@rzpd.de>:
	* Makefile.in: Always use $(SHELL) when running move-if-change.
	* configure.in: Use ${CONFIG_SHELL} when running $ac_config_sub.
	* configure: Rebuild.

Thu Apr 10 14:40:00 1997  Doug Evans  <dje@canuck.cygnus.com>

	* cgen.c (cgen_parse_operand): Renamed from cgen_asm_parse_operand.
	New argument `want'.  Update enum cgen_parse_operand_result values.
	Initialize if CGEN_PARSE_OPERAND_INIT.
	* config/tc-m32r.c (md_begin): Set cgen_parse_operand_fn.
	(md_assemble): Call cgen_asm_init_parse.
	Update call to m32r_cgen_assemble_insn, call as_bad if assembly failed.

Wed Apr  9 11:49:41 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (m68k_ip): Handle #j.

Tue Apr  8 16:37:57 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (md_convert_frag): Create fixup at the
	right address for call label:32,regs,imm.

Mon Apr  7 14:58:22 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (pa_subspace_start): If OBJ_ELF, then always return
	zero.
	* config/tc-hppa.h (tc_frob_symbol): Don't reset the value of the
	symbol for OBJ_ELF anymore.

Mon Apr  7 10:54:59 1997  Doug Evans  <dje@canuck.cygnus.com>

	* Makefile.in: Regenerate dependencies.
 	(TARG_CPU): New variable.
	(cgen.o): Depend on cgen.h, $(TARG_CPU)-opc.h.
	(.dep1): Delete creating of cgen-opc.h.
	(.tcdep): Put proper contents in cgen-opc.h.
	* configure.in (m32r): Delete setting of extra_files, extra_links.
	(AC_OUTPUT): Create cgen-opc.h.
	* configure: Regenerated.

Sat Apr  5 13:19:12 1997  Klaus Kaempf  <kkaempf@progis.de>

	* makefile.vms: Update to build gasp.exe.

Fri Apr  4 16:10:02 1997  Doug Evans  <dje@canuck.cygnus.com>

	* write.c (relax_frag): Make non-static.
	* write.h (relax_frag): Add prototype for.
	* config/tc-m32r.h (md_do_align): New arg `max'.
	* config/tc-m32r.c (m32r_do_align): Likewise.
	Update calls to frag_align, frag_align_pattern.
	(fill_insn): Update call to m32r_do_align.
	(m32r_scomm): Update call to frag_align.

	* config/tc-m32r.[ch]: New files.
	* cgen.c: New file.
	* Makefile.in (CPU_TYPES): Add m32r.
	(TARGET_CPU_CFILES): Add tc-m32r.c.
	(TARGET_CPU_HFILES): Add tc-m32r.h.
	(DISTCLEAN_HERE): Add cgen-opc.h.
	(.dep1,.tcdep): Create empty cgen-opc.h.
	(cgen.o): Add dependencies.
	(dependencies): Regenerate.
	* as.h (struct frag): New member fr_targ.
	(fr_pcrel_adjust,fr_bsr): Move into union fr_targ.ns32k.
	* conf.in (USING_CGEN): New macro.
	* configure.in (m32r-*-*): Add entry for.
	Add cgen.o to extra_objects.
	* configure: Regenerate.
	* frags.c (frag_var): fr_pcrel_adjust renamed to
	fr_targ.ns32k.pcrel_adjust.  fr_bsr renamed to fr_targ.ns32k.bsr.
	(frag_variant): Likewise.
	* write.c (relax_frag): Likewise.
	* config/tc-ns32k.c (*): Likewise.

Fri Apr  4 13:26:10 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-hppa.h (TC_EOL_IN_INSN): Check explicitly for '!',
	rather than for any end of line character.

	* config/tc-hppa.c (tc_gen_reloc): If hppa_ren_reloc_type fails,
	call abort (i.e., as_abort) rather than crashing.

	* config/tc-mips.c: Protect uses of STO_MIPS16 with an ifdef of
	OBJ_ELF, rather than of S_GET_OTHER.

	* Makefile.in (DISTCLEAN_HERE): Add site.exp and site.bak.

Thu Apr  3 13:16:18 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (VERSION): Set to 2.8.1.

	* Branched binutils 2.8.

Wed Apr  2 12:24:10 1997  Ian Lance Taylor  <ian@cygnus.com>

	* COPYING: Update FSF address.

	* config/tc-mips.c (mips16_macro): Handle M_DMUL and M_MUL.

Tue Apr  1 18:29:47 1997  Jim Wilson  <wilson@cygnus.com>

	* config/tc-mips.c (md_begin): Don't set interlocks for 4100.

Tue Apr  1 16:24:28 1997  Klaus Kaempf  <kkaempf@progis.de>

	* config-gas.com: Update to handle both vax and alpha.
	* makefile.vms: Update to use config-gas.
	* conf-a-gas.com: Remove file.

Tue Apr  1 16:08:21 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in: Remove unnecessary itbl-parse.h, ibtl-parse.c, and
	itbl-lex.c dependencies.  Remove rules for itbl-lex.o,
	itbl-parse.o, and itbl-ops.o; just use the normal .c.o rule.

Tue Apr  1 11:25:56 1997  Michael Meissner  <meissner@cygnus.com>

	* config/tc-tic80.c (line_comment_char): Make '#' start comments
	at the beginning of a line for compatibility with .S files where
	cpp leaves the filename transitions beginning with '#'.

Tue Apr  1 00:07:30 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c: Only compile tc_coff_symbol_emit_hook and
	tc_coff_sizemachdep if OBJ_COFF.

Mon Mar 31 23:53:44 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* config/tc-ppc.c (register_name): Declare.

Mon Mar 31 16:31:04 1997  Joel Sherrill  <joel@oarcorp.com>

        * configure.in (hppa*-*-rtems*): New target, like hppa-*-*elf*.
	* configure: Rebuild.

Mon Mar 31 14:15:19 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips_pseudo_table): Add "stabn".
	(mips16_mark_labels): New static function.
	(append_insn): Call mips16_mark_labels.
	(mips_emit_delays): Likewise.
	(s_insn): Likewise.  Don't call mips_clear_insn_labels.
	(s_mips_stab): New static function.

	* configure.in: Use ELF for mips-*-gnu*.
	* configure: Rebuild.

Mon Mar 31 14:01:40 1997  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* config/tc-m68k.h (TARGET_FORMAT): Set to "coff-m68k-sysv" if
	TE_DELTA.

Fri Mar 28 18:03:19 1997  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* configure.in: Add AC_ARG_ENABLE for commonbfdlib.  If it is set,
	set OPCODES_LIB to empty.
	* configure: Rebuild.

Fri Mar 28 15:25:24 1997  H.J. Lu  <hjl@gnu.ai.mit.edu>

	* configure.in (sparc-*-linux*aout*, sparc-*-linux*): New
	targets.
	* configure: Rebuild.

Fri Mar 28 13:08:33 1997  Ian Lance Taylor  <ian@cygnus.com>

	* itbl-parse.y (yyerror): Make static.  Declare.

	From Ralf Baechle <ralf@gnu.ai.mit.edu>:
	* configure.in: Set emulations for mips-*-linux*-*.
	* configure: Rebuild.

	* config/tc-mips.c (struct mips_set_options): Define.
	(mips_opts): New static variable.
	(mips_isa): Remove.  Now a field in mips_opts.  Change all
	references.
	(mips16, mips16_autoextend, mips_warn_about_macros): Likewise.
	(mips_noreorder, mips_nomove, mips_noat, mips_nobopt): Likewise.
	(struct mips_option_stack): Define.
	(mips_opts_stack): New static variable.
	(s_mipsset): Add support for .set push and .set pop.
	* doc/c-mips.texi: Document .set push and .set pop.

	* config/obj-elf.c (obj_elf_section_change_hook): New function.
	* config/obj-elf.h (obj_elf_section_change_hook): Declare it.
	* config/tc-mips.c (s_change_sec): Call it if OBJ_ELF.

Thu Mar 27 12:23:56 1997  Ian Lance Taylor  <ian@cygnus.com>

	* as.c (parse_args): Update copyright date in version message.

	* Makefile.in (clean-here): Remove dependency files.

	* read.c (s_comm): Check S_IS_COMMON as well as S_IS_DEFINED.
	(s_mri_common): Check S_IS_COMMON unconditionally.
	* symbols.c (colon): Check S_IS_COMMON as well as S_IS_DEFINED.
	* config/tc-alpha.c (s_alpha_comm): Likewise.
	* config/tc-mips.c (nopic_need_relax): Likewise.
	* config/tc-ppc.c (ppc_elf_lcomm): Likewise.
	(ppc_pe_comm): Likewise.
	* config/obj-elf.c (obj_elf_common): Likewise.  Set segment of
	common symbol to bfd_com_section_ptr.
	* config/tc-sparc.c (s_common): Likewise.
	(tc_gen_reloc): Likewise.

Thu Mar 27 00:29:46 1997  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d30v.c (md_apply_fix3): Get the relocs right.

Wed Mar 26 13:35:15 1997  H.J. Lu  <hjl@lucon.org>

	* config/tc-i386.c (tc_i386_fix_adjustable): Only define if
	BFD_ASSEMBLER.

Wed Mar 26 11:32:51 1997  Ian Lance Taylor  <ian@cygnus.com>

	* input-scrub.c (input_scrub_next_buffer): Handle very long input
	lines correctly.

	* listing.c (print_lines): Add lineno parameter.  Change all
	callers.
	(listing_listing): Only call calc_hex for the right line.
	(listing_list): Set the new edict based on the current edict, in
	order to handle listing commands in macros correctly.

	* config/tc-mips.c (insn_uses_reg): Map register numbers in mips16
	instructions.

	* cond.c (cond_finish_check): New function.
	* as.h (cond_finish_check): Declare.
	* as.c (main): Call cond_finish_check.

Tue Mar 25 14:45:54 1997  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d30v.c (md_assemble): If two instructions
	are supposed to be assembled in parallel and the first one is
	long, print an error and stop.
	(md_apply_fix3): Don't calculate absolute relocs.  Just write
	them out.

Mon Mar 24 12:11:18 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.h (iclrKludge): Define.
	* config/tc-i386.c (md_assemble): Handle iclrKludge.

	* config/tc-alpha.h (tc_frob_file_before_adjust): Define if
	OBJ_ECOFF.
	(alpha_frob_file_before_adjust): Declare if OBJ_ECOFF.
	* config/tc-alpha.c (alpha_debug): New static variable.
	(md_parse_option): Set alpha_debug if -g is seen.
 	(alpha_frob_file_before_adjust): New function if OBJ_ECOFF.

Sun Mar 23 18:03:31 1997  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d30v.c (build_insn): Enable range-checking code.
	(postfix): Stop at space or comma.
	(md_assemble): Change error message.

Sat Mar 22 13:44:28 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in: Added automatic dependency building.
	* dep-in.sed: New file.

Fri Mar 21 15:42:37 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-ieee.c (segment_name): Don't define function if this
	is a macro.

	* config/obj-coff.h (DO_STRIP): Don't define.
	* config/tc-h8300.h (DO_STRIP): Don't define.
	* config/tc-h8500.h (DO_STRIP): Don't define.
	* config/tc-w65.h (DO_STRIP): Don't define.
	* config/tc-z8k.h (DO_STRIP): Don't define.

	* symbols.c (colon): Call obj_frob_label if it is defined.
	* config/obj-vms.h (obj_frob_label): Rename from tc_frob_label.

	* configure.in: Don't set files and links.  Don't call
	AC_LINK_FILES.  Substitute te_file.  Create targ-cpu.h,
	obj-format.h, targ-env.h, and itbl-cpu.h in AC_OUTPUT.
	* configure: Rebuild.
	* Makefile.in (TARG_CPU_C): New variable.
	(TARG_CPU_O, TARG_CPU_H): New variables.
	(OBJ_FORMAT_C, OBJ_FORMAT_O, OBJ_FORMAT_H): New variables.
	(TARG_ENV_H, ATOF_TARG_C, ATOF_TARG_O): New variables.
	(SOURCES): Rename from REAL_SOURCES.  Delete old definition.
	(LINKED_SOURCES): Remove.
	(HEADERS): Rename from REAL_HEADERS.  Delete old definition.
	(LINKED_HEADERS): Remove.
	(OBJS): Use $(TARG_CPU_O), etc., rather than targ-cpu.o, etc.
	($(OBJS)): Depend upon $(TARG_ENV_H), etc., rather than
	targ-cpu.h, etc.
	($(TARG_CPU_O), $(OBJ_FORMAT_O) $(ATOF_TARG_O)): New targets.
	(targ-cpu.o, obj-format.o, atof-targ.o): Remove targets.
	(itbl-cpu.h): Remove target.
	(DISTCLEAN_HERE): Remove targ-cpu.c, obj-format.c, atof-targ.c,
	atof-targ.h.

Thu Mar 20 19:18:58 1997  Ian Lance Taylor  <ian@cygnus.com>

	* doc/as.texinfo (Symbol Names): Don't use obsolete @ctrl macro.

Thu Mar 20 16:49:14 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/tc-m68k.c (mri_chip): Replace calls to get_symbol_end by
	open coded loop that does not require the name to start with a
	name beginner.

Thu Mar 20 13:42:01 1997  H.J. Lu  <hjl@lucon.org>

	* frags.c (frag_var): Change offset parameter to offsetT.
	(frag_variant): Likewise.
	* frags.h (frag_variant, frag_var): Update declarations.
	* config/tc-m68k.c (struct m68k_it): Change foff field to
	offsetT.
	(add_frag): Change off parameter to offsetT.
	* Several files: Add casts to calls to frag_var.

	* Makefile.in (m68k-parse.c): Depend upon itbl-parse.c, to
	serialize a parallel make.
	(itbl-parse.h): Split target out from itbl-parse.c.

Thu Mar 20 12:48:45 1997  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* config/m68k-parse.y (motorola_operand): Allow (zdireg,EXPR).

	* config/te-delta.h (COFF_COMMON_ADDEND): Define.
	* config/obj-coff.c (fixup_segment): Check COFF_COMMON_ADDEND when
	storing the value of a common symbol.

Wed Mar 19 11:37:57 1997  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* config/obj-coff.c (glue_symbols): Unused variable symbolP
	removed.
	(crawl_symbols): Do not modify symbol_rootP and symbol_lastP here;
	that is done by symbol_remove and symbol_insert.

	* config/obj-coff.h (S_IS_LOCAL): Return 0 for a debugging
	symbol.

Wed Mar 19 11:06:29 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (load_register): In 32 bit mode, when not
	dealing with a 64 bit number, permit the upper 32 bits to be set
	even if bit 31 is not set.

Tue Mar 18 23:30:14 1997  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (potable): Add "equiv".
	(s_set): Handle .equiv based on argument.
	* doc/as.texinfo (Equiv): New node to document .equiv.
	(Err): New node to document .err.

Tue Mar 18 15:50:13 1997  H.J. Lu  <hjl@lucon.org>

	* Many files: Add function prototypes.
	* as.c (show_usage, parse_args): Make static.
	* frags.h (frag_alloc): Declare.
	* subsegs.c (subseg_set_rest): Don't declare frag_alloc.
	* symbols.c (dollar_label_instance): Change return type to long.
	* symbols.h (print_symbol_value): Declare.
	(print_expr, print_expr_1, print_symbol_value_1): Declare.
	* write.c (fix_new_exp): Don't declare make_expr_symbol.
	(remove_subsegs, relax_frag): Make static.
	* config/atof-vax.c (atof_vax_sizeof): Change letter to int.
	(what_kind_of_float): Likewise.
	(atof_vax): Make static.  Change what_kind to int.
	(md_atof): Change what_statement_type to int.
	* config/obj-ecoff.h (obj_ecoff_set_ext): Declare.
	* config/tc-alpha.c (vax_md_atof): Declare.
	(md_atof): Don't declare atof_ieee and vax_md_atof.
	* config/tc-i386.c (set_16bit_code_flag): Make static.
	* config/tc-i386.h (tc_i386_fix_adjustable): Declare.
	* config/tc-m68k.c (add_fix): Change width to int.
	(insert_reg): Change regname to const.
	(md_atof): Don't declare atof_ieee.
	(demand_empty_rest_of_line): Don't declare.
	* config/tc-m88k.c (md_atof): Don't declare atof_ieee.
	* config/tc-sparc.c (cmp_reg_entry): Change args to const PTR.
	(parse_keyword_arg): Change lookup_fn to take const arg.
	(md_atof): Don't declare atof_ieee.
	* config/tc-sparc.h: Add ifdef for multiple inclusion.
	(tc_aout_pre_write_hook): Don't declare.

Mon Mar 17 11:21:09 1997  Ian Lance Taylor  <ian@cygnus.com>

	* as.h (bfd_alloc_by_size_t): Don't declare.
	* Many files: Use xmalloc rather than bfd_alloc_by_size_t.

Sun Mar 16 13:49:21 1997  Philippe De Muyter <phdm@info.ucl.ac.be>

	* symbols.c (symbol_new): Don't call debug_verify_symchain.
	(symbol_append): Set sy_next and sy_previous when adding a single
	symbol to an empty list.  Call debug_verify_symchain.
	(verify_symbol_chain): Use assert, not know.

Sat Mar 15 20:27:12 1997  Fred Fish  <fnf@cygnus.com>

	* NEWS: Note BeOS support.
	* configure.in: (ppc-*-beos): New target, use coff as object format.
	* configure: Regenerate with autoconf.
	
Sat Mar 15 19:14:02 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (md_apply_fix): Improve error message for out
	of range branch.

	* Makefile.in: Add dependencies on obstack.h where needed.

Fri Mar 14 15:33:38 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (md_estimate_size_before_relax): Handle the
	case of a symbol equated to another symbol when using SVR4_PIC.

	* Makefile.in (TARG_CPU_DEP_sparc): Add opcode/sparc.h.

Thu Mar 13 11:20:51 1997  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (read_a_source_file): Call LISTING_NEWLINE before
	HANDLE_CONDITIONAL_ASSEMBLY when handling an MRI line label.

	* config/obj-elf.c (obj_elf_data): Call md_flush_pending_output
	and md_elf_section_change_hook if they are defined.
	(obj_elf_text, obj_elf_previous): Likewise.

Wed Mar 12 11:40:20 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-multi.h (struct elf_obj_sy): Define if
	OBJ_MAYBE_ELF.
	(OBJ_SYMFIELD_TYPE): Define as struct elf_obj_sy if
	OBJ_MAYBE_ELF.
	* config/obj-elf.h (struct elf_obj_sy): Don't define if
	OBJ_SYMFIELD_TYPE is defined.

	* doc/as.texinfo (bss): Improve description of .bss section.  In
	ELF or COFF, you are permitted to switch into the section.
	(Comm): Rewrite description of common symbols.
	(Lcomm): Mention that some targets permit a third argument.

Tue Mar 11 01:13:31 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-ppc.c (ppc_elf_lcomm): Don't call S_CLEAR_EXTERNAL.

	* symbols.c (colon): Change type of local to int.  From Alan Modra
	<alan@spri.levels.unisa.edu.au>.

	* config/tc-m88k.c (m88k_do_align): Don't use a special nop
	alignment if a zero fill pattern was explicitly specified.
	* config/tc-sh.c (sh_do_align): Likewise.

	* read.c (equals): Always permit register names to be redefined.

	* config/tc-mips.c (mips_fix_adjustable): Permit a reloc against a
	mips16 symbol to be adjusted if a symbol is being subtracted from
	it.

	From Eric Youngdale <eric@andante.jic.com>:
	* config/obj-elf.c (obj_elf_symver): Check for duplicate or
	illegal symbol version names.
	(elf_frob_symbol): Check for external default versions.

Sun Mar  9 23:49:12 1997  Ian Lance Taylor  <ian@cygnus.com>

	From Eric Youngdale <eric@andante.jic.com>:
	* config/obj-elf.h (struct elf_obj_sy): Define.
	(OBJ_SYMFIELD_TYPE): Define to elf_obj_sy struct.  Change all
	users.
	* config/obj-elf.c (obj_elf_symver): Just record the name.
	(obj_symbol_new_hook): Initialized versioned_name field.
	(elf_frob_symbol): If there is a versioned_name, either rename the
	symbol, or add an alias with that name.

Thu Mar  6 13:55:32 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (md_relax_table): Define.
	(md_convert_frag): Implement.
	(md_assemble): Handle relaxable operands/instructions correctly.
	(md_estimate_size_before_relax): Implement.
	* config/tc-mn10300.h (TC_GENERIC_RELAX_TABLE): Define.

	* config/tc-mn10200.c (md_relax_table): Fix typos.

	* config/tc-mn10300.c (md_assemble): Don't use any MN10300 specific
	relocs anymore.  Tweak fx_offset for pc-relative relocs.

Wed Mar  5 15:46:16 1997  Ian Lance Taylor  <ian@cygnus.com>

	* cond.c (s_ifc): Call mri_comment_field and mri_comment_end when
	in MRI mode.

Tue Mar  4 19:34:21 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-tic80.c (md_pseudo_table): Add "sect" and "section"
	pseudo-ops.
	* config/tc-tic80.c (md_begin): Declare external variable
	coff_flags and insert an F_AR32WR bit into it.

Tue Mar  4 10:01:04 1997  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (equals): Add reassign parameter.  Change all callers.
	* read.h (equals): Update declaration.

Sat Mar  1 01:04:04 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips16_extended_frag): Don't assume that we
	can rely on the frag address to determine whether a frag is
	earlier or later.

Fri Feb 28 14:40:00 1997  Ian Lance Taylor  <ian@cygnus.com>

	* write.h (LOCAL_LABEL): Only define if not BFD_ASSEMBLER.
	(S_LOCAL_NAME): Likewise.
	(FAKE_LABEL_NAME): Define unconditionally.
	* symbols.c (colon): Call bfd_is_local_label, not LOCAL_LABEL, if
	BFD_ASSEMBLER.
	(S_IS_LOCAL): Call bfd_is_local_label_name, not LOCAL_LABEL.
	* config/tc-*.h: Only define LOCAL_LABEL if not BFD_ASSEMBLER.
	Don't define FAKE_LABEL_NAME.
	* config/te-ic960.h: Likewise.
	* config/tc-mips.h (tc_frob_file_before_adjust): Define.
	(mips_frob_file_before_adjust): Declare.
	* config/tc-mips.c (mips_frob_file_before_adjust): New function.
	(mips_local_label): Remove.

	* config/te-sco386.h: Remove; not used.

Thu Feb 27 15:39:16 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-tic80 (md_pseudo_table): Add align pseudo op to do
	byte alignment rather than power-of-two alignment that is the
	GAS default.

Thu Feb 27 13:29:04 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (md_assemble): Handle a reloc width of 'W'.

	* gasp.c (hash_add_to_string_table): Correct misspelling in error
	message, and add newline.
	(process_file): Don't process assignments in the label if this is
	a equ or assign pseudo-op.
	(process_pseudo_op): Swap first argument to do_assign for K_ASSIGN
	and K_EQU, to match documentation.

Thu Feb 27 12:00:03 1997  Michael Meissner  <meissner@cygnus.com>

	* config/obj-coff.c (obj_coff_section): Add 'r' section attribute
	to denote read-only data sections.

Thu Feb 27 00:26:33 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-elf.c (obj_elf_common): Set BSF_OBJECT in flags.
	* config/tc-sparc.c (s_common): Likewise, if BFD_ASSEMBLER.

	* expr.c (operand): Simplify 0b handling.  Don't treat 0b as a
	binary number if the next character is '+' or '-'.

Wed Feb 26 20:47:12 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-tic80.c (FLT_CHARS): Change from "dD" to "fF".
	(find_opcode): Match operands that can be floats.
	(build_insn): Handle O_big (float) expressions and build
	correct opcode.

Wed Feb 26 18:19:00 1997  Stan Shebs  <shebs@andros.cygnus.com>

	* configure.in (mips*-*-lnews*): New target, also make empty
	emulation list for this target.
	* configure: Update.
	* tc-mips.c (ECOFF_LITTLE_FORMAT): Define.
	(mips_target_format): Use.
	* te-lnews.h: New file.

Wed Feb 26 15:33:46 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-tic80.c (find_opcode, build_insn): Changes to match
	operands with :m or :s modifiers and generate the right opcodes
	for them.

Wed Feb 26 11:56:11 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (itbl-parse.c itbl-parse.h): Use $(BISON) and
	$(BISONFLAGS), not $(YACC) and $(YACCFLAGS).

Tue Feb 25 22:02:23 1997  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* config/tc-m68k.c (instring): Useless local declaration of
	crack_operand removed.
	* expr.h (expressionS): Changed type of X_op field to operatorT if
	__GNUC__.

Tue Feb 25 13:17:27 1997  Ian Lance Taylor  <ian@cygnus.com>

	Based on patches from Robert Lipe <robertl@dgii.com>:
	* configure.in: Add i386coff and i386elf to emulation list.
	* configure: Rebuild.
	* as.c (i386coff, i386elf): Declare.
	* obj.h (coff_format_ops): Declare.
	* config/obj-coff.c (OBJ_HEADER): Define.
	(coff_obj_symbol_new_hook): Rename from obj_symbol_new_hook.
	(coff_obj_read_begin_hook): Rename from obj_read_begin_hook.
	(obj_pseudo_table): Add "version".
	(coff_pop_insert): New static function.
	(coff_sec_sym_ok_for_reloc): New static function.
	(no_func): New static function.
	(coff_format_ops): New variable.
	* config/obj-coff.h (coff_obj_symbol_new_hook): Declare.
	(obj_symbol_new_hook): Define.
	(coff_obj_read_begin_hook): Declare.
	(obj_read_begin_hook): Define.
	* config/tc-i386.h (i386_target_format): Declare.
	* config/tc-i386.c: Check OBJ_MAYBE_ELF as well as OBJ_ELF; check
	OUTPUT_FLAVOR when appropriate.
	(i386_target_format): New function.
	* Makefile.in (obj-coff.o): New target.
	(e-i386coff.o, e-i386elf.o): New targets.

	From Stephen Williams <steve@icarus.icarus.com>:
	* config/tc-i960.h (TC_SYMFIELD_TYPE): Define if OBJ_COFF.
	(_tc_get_bal_of_call): Don't declare.
	(tc_get_bal_of_call): Declare as function, don't define as macro.
	* config/tc-i960.c (tc_set_bal_of_call): If OBJ_COFF, store balP
	in sy_tc field, not x_balntry field.
	(tc_get_bal_of_call): Rename from _tc_get_bal_of_call.  Change
	return type to symbolS *.  If OBJ_COFF, retrieve value from sy_tc
	field, not x_balntry field.

	* config/obj-elf.c (obj_elf_section): Permit a .note section to
	have the SHF_ALLOC attribute.

	* Makefile.in ($(OBJS)): Don't depend upon $(IT_HDRS).
	(TARG_CPU_DEP_mips): Depend upon $(srcdir)/itbl-ops.h.
	(itbl-lex.o): Depend upon itbl-parse.h.

	* itbl-parse.y (yyerror): Change return type to int.  Change to
	use old style function declaration.

	* Makefile.in (itbl-lex.o): Remove -Wall.
	(itbl-parse.o): Likewise.

	* cond.c (s_ifdef): If we should omit conditionals from listings,
	call listing_list.
	(s_if, s_ifc, s_endif, s_else, s_ifeqs): Likewise.
	* listing.c (list_info_struct): Add EDICT_NOLIST_NEXT.
	(listing_listing): Handle EDICT_NOLIST_NEXT.
	(listing_list): An argument of 2 means EDICT_NOLIST_NEXT.
	* listing.h (LISTING_NOCOND): Define.
	(LISTING_SKIP_COND): Define.
	* as.c (show_usage): Mention c as a suboption of -a.
	(parse_args): Handle c as a suboption of -a.
	* doc/as.texinfo: Document -alc.

Mon Feb 24 23:34:14 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-tic80.c (md_apply_fix): Handle R_ABS type fixups.

Mon Feb 24 18:27:43 1997  Eric Youngdale  <eric@andante.jic.com>

	* doc/as.texinfo: Document .symver.

Mon Feb 24 15:19:57 1997  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: Change pre_defined_registers to 
	d10v_predefined_registers and reg_name_cnt to d10v_reg_name_cnt.

Mon Feb 24 10:40:45 1997  Fred Fish  <fnf@cygnus.com>

	* config/obj-coff.c: Fix typo in comment section.
	* config/tc-tic80.c (md_pseudo_table): Add entry for bss, which takes
 	an additional alignment argument.
	(find_opcode): Allow O_symbol relocs for any 32 bit field, not just
 	base relative ones.
	(build_insn): Handle O_symbol relocs for any 32 bit field, not just
 	base relative ones.

Mon Feb 24 02:23:00 1997  Dawn Perchik  <dawn@cygnus.com>

	* Makefile.in: Remove dependancies on itbl-cpu.h.
	* as.c: Define stubs for itbl_parse and itbl_init if HAVE_ITBL_CPU 
	is not defined.

Mon Feb 24 02:03:00 1997  Dawn Perchik  <dawn@cygnus.com>

	* itbl-ops.h: Include as.h.

Mon Feb 24 01:04:00 1997  Dawn Perchik  <dawn@cygnus.com>

	* as.c: Remove -t option.
	* configure, configure.in: Move itbl-cpu.h to mips specific configure.
	* itbl-ops.h: Include itbl-cpu.h only if HAVE_ITBL_CPU is defined.
	* config/tc-mips.h: Define HAVE_ITBL_CPU.

Sun Feb 23 18:01:00 1997  Dawn Perchik  <dawn@cygnus.com>

	* itbl-ops.c: Don't define DEBUG.

Sun Feb 23 17:49:00 1997  Dawn Perchik  <dawn@cygnus.com>

	* Makefile.in: Update itbl-test.c to reflect its new location.

Sun Feb 23 15:50:00 1997  Dawn Perchik  <dawn@cygnus.com>

	* itbl-ops.c: Add test for itbl_have_entries.
	* config/tc-mips.c: Remove test for itbl_have_entries.
	* config/tc-mips.h: Define tc_init_after_args to mips_init_after_args.

Sun Feb 23 18:13:19 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (DISTSTUFF): Remove itbl-parse.y, itbl-lex.l, and
	itbl-ops.c.  Add itbl-parse.c and itbl-lex.c.
	(LEX, LEXFLAGS): Define.
	* itbl-ops.c (append_insns_as_macros): Remove bogus ASSERT.

Sat Feb 22 21:25:00 1997  Dawn Perchik  <dawn@cygnus.com>

	* itbl-parse.y: Fix indentation mistakes from indent program.
	* itbl-lex.l: Fix indentation mistakes from indent program.
	* itbl-ops.h: Add include for ansidecl.h.
	Add PARAMS around function arguments.
	Add declaration for itbl_have_entries.
	* itbl-ops.c: Add PARAMS around function arguments.
	* Makefile.in: Add itbl build rules.
	Add dependancies for itbl files to mips target.
	* as.c: Add itbl support.
	Add new option "--insttbl" for dynamically extending instruction set.
	* as.h: Declare insttbl_file_name;
	the name of file defining extensions to the basic instruction set 
	* configure.in, configure: Add itbl-parse.o, itbl-lex.o, and 
	itbl-ops.o to extra_objects for mips configuration.
	Add include file link from itbl-cpu.h to 
	config/itbl-${target_cpu_type}.h.
	* config/tc-mips.c: Allow copz instructions.
	Add notes for future additions to the itbl support.
	Add debug macros.
	(macro): Call itbl_assemble to assemble itbl instructions.
	See if an unknown register is specified in an itbl entry.

Sat Feb 22 20:53:01 1997  Fred Fish  <fnf@cygnus.com>
	* doc/internals.texi (CPU backend): Fix typo in md_section_align
	description.
	* config/tc-tic80.h (NEED_FX_R_TYPE): Define.
	* config/tc-tic80.c (find_opcode): Add code to support O_symbol
	operands.
	(build_insn): Grab a frag early so we can use the address in
 	fixups.  Take one's complement of BITNUM values before insertion
 	in opcode.  Add code to support O_symbol operands.
	(md_apply_fix): Replace unimplemented warning with implementation.
	(md_pcrel_from): Ditto.
	(tc_coff_fix2rtype): Ditto.

Fri Feb 21 14:34:31 1997  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d30v.c (parallel_ok): New function. 
	* config/tc-d30v.h: Define TARGET_BYTES_BIG_ENDIAN.
	* config/tc-d10v.c (md_pcrel_from_section): Return 0 if
        relocation is in different section.

Fri Feb 21 10:08:25 1997  Jim Wilson  <wilson@cygnus.com>

	* tc-mips.c (mips_ip): If configured for an embedded ELF system,
	don't set the section alignment to 2**4.

Fri Feb 21 11:55:03 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (line_comment_chars): Add '*'.

	* app.c (LEX_IS_TWOCHAR_COMMENT_2ND): Don't define.
	(do_scrub_begin): Don't set lex['*'].
	(do_scrub_chars): When handling LEX_IS_TWOCHAR_COMMENT_1ST, don't
 	check for LEX_IS_TWOCHAR_COMMENT_2ND.  Instead, just check for
	a literal '*'.

	* configure.in: Set em=svr4 for m68k-*-sysv4*.
	* configure: Rebuild.
	* config/te-svr4.h: New file.
	* config/tc-m68k.c (m68k_comment_chars): Only include `#' if
	TE_SVR4 or TE_DELTA.

Thu Feb 20 22:24:39 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (md_convert_frag): Create a fixup for the
	short conditional branch around a long unconditional branch.

Thu Feb 20 13:56:00 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (obj_coff_ln [both versions]): Call
	new_logical_line.

	* config/tc-arm.c (fix_new_arm): Use make_expr_symbol to handle a
	complex expression.

	* symbols.c (resolve_symbol_value): If both left and right
	operands are undefined, warn about both of them.

Wed Feb 19 00:53:28 1997  Ian Lance Taylor  <ian@cygnus.com>

	Based on patches from Eric Youngdale <eric@andante.jic.com>:
	* config/obj-elf.c (elf_pseudo_table): Add "symver".
	(obj_elf_symver): New static function.
	* config/obj-elf.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Copy the st_other
	field.

	* write.c (relax_segment): Make type and printf format agree.

	* read.c (get_line_sb): Don't end the line on a semicolon inside a
	string.

Tue Feb 18 18:42:51 1997  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d30v.c, config/tc-d30v.h: New files.

 	* configure: Rebuilt.
	
	* configure.in: Add case for d30v.

Sun Feb 16 17:47:29 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-alpha.h (md_operand): Define with a null expansion,
	like all the other targets.
	* doc/internals.texi (CPU backend): Add missing word in 
	md_flush_pending_output description.  Fix typo in md_convert_frag
	description.
	* config/tc-tic80: Minor comment additions/changes.
	
Fri Feb 14 18:09:59 1997  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* config/tc-m68k.c (LOCAL_LABEL): Macro redefined if TE_DELTA.
	(tc_canonicalize_symbol_name): Macro defined if TE_DELTA.
 	* config/obj-coff.c (obj_coff_def): Use
	tc_canonicalize_symbol_name if defined.
	(obj_coff_tag, obj_coff_val): Likewise.
	* expr.c (operand): Reject '~' as operator if is_name_beginner.

Fri Feb 14 17:24:48 1997  Ian Lance Taylor  <ian@cygnus.com>

	Based on notes from Peter Eriksson <peter@ifm.liu.se>.  The target
	does not actually work, though:
	* configure.in (i386-sequent-bsd*): New target.
	* configure: Rebuild.
	* config/tc-dynix.h: New file.
	* config/tc-i386.h: Define TARGET_FORMAT if TE_DYNIX.

	* read.c (do_align): Add max parameter.  Change all callers.
	Remove useless static variables.
	(s_align): New static function.  Do common portion of
	s_align_bytes and s_align_ptwo.
	(s_align_bytes, s_align_ptwo): Just call s_align.
	* frags.c (frag_align): Add max parameter.  Change all callers.
	(frag_align_pattern): Likewise.
	* frags.h (frag_align, frag_align_pattern): Update declarations.
	* write.c (relax_segment): Limit alignment change to fr_subtype.
	Fix some types to be addressT.
	* config/obj-coff.c (size_section): Likewise.
	* config/obj-ieee.c (size_section): Likewise.
	* config/tc-d10v.h (md_do_align): Add max parameter.
	* config/tc-i386.h (md_do_align): Likewise.
	* config/tc-m88k.h (md_do_align): Likewise.
	* config/tc-m88k.c (m88k_do_align): Likewise.
	* config/tc-sh.h (md_do_align): Likewise.
	* config/tc-sh.c (sh_do_align): Likewise.
	* as.h: Improve comments on rs_align and rs_align_code.
	* doc/as.texinfo: Document new alignment arguments.
	* doc/internals.texi (Frags): Document use of fr_subtype field for
	rs_align and rs_align_code.

Fri Feb 14 15:56:06 1997  Gavin Koch  <gavin@cygnus.com>

	* config/tc-mips.c: Changed opcode parsing.

Thu Feb 13 20:02:16 1997  Fred Fish  <fnf@cygnus.com>

	* config/{tc-alpha.h, tc-d10v.h, tc-generic.h, tc-i960.h,
	tc-mn10200.h, tc-mn10300.h, tc-sh.h, tc-vax.h, tc-w65.h}:
	Add default definition of zero for TARGET_BYTES_BIG_ENDIAN.
	* config/{tc-arm.h, tc-hppa.h, tc-i386.h, tc-mips.h, tc-ns32k.h,
 	tc-ppc.h, tc-sparc.h}: Move definition of TARGET_BYTES_BIG_ENDIAN
	to a location consistent with the rest of the target include files.
	* config/tc-i386.c: Remove misleading comment.
	* doc/internals.texi (CPU backend): Add description of function
	md_undefined_symbol.
	* config/tc-tic80.c: Add code to insert predefined symbols into the
	symbol table so they can be parsed by the standard expression parser.
	Remove custom code that use to parse them.
	* config/tc-tic80.h: Move definition of TARGET_BYTES_BIG_ENDIAN
	to a location consistent with the rest of the target include files.
	
Thu Feb 13 21:44:18 1997  Klaus Kaempf  <kkaempf@progis.de>

	* as.h: GNU c provides unlink() function.

	Unify section handling on openVMS/Alpha:
	* config/tc-alpha.c(s_alpha_link): Remove.
	(s_alpha_section): New function.
	Remove case-hacking of symbols
	Add .code_address pseudo-op.
	(BFD_RELOC_ALPHA_CODEADDR): New relocation.
	(s_alpha_code_address): New function.
	(alpha_ctors_section, alpha_dtors_section): New sections for C++
	static constructors/destructors.
	Add debug code for crash debugs, to be removed when traceback code
	is added to object code.
	(s_alpha_name): New function for .name pseudo-op.
	(alpha_print_token): New function to print token expressions with
	alpha specific extensions.

	* makefile.vms: Allow compilation with current gcc snapshot.

Thu Feb 13 16:29:04 1997  Fred Fish  <fnf@cygnus.com>

	* doc/Makefile.in (TEXI2DVI): Set to just name of program.
	(DVIPS): Set to dvips.
	(ps, as.ps, gasp.ps): New targets.
	(internals.info, gasp.dvi, internals.dvi): Set both TEXINPUTS
 	and MAKEINFO env variables.
	(internals.ps): Use DVIPS macro.
	(clean): Remove core and backup files.
	(distclean): Remove temporary files from building internals.
	(clean-dvi): Ditto.
	* doc/internals.texi (Frags): Fix typo.
	(GAS processing): Ditto.
	(CPU backend): Ditto.
	* ecoff.c (init_file): Use TARGET_BYTES_BIG_ENDIAN value directly.
	* mpw-config.in: Define TARGET_BYTES_BIG_ENDIAN as 1.
	* read.c: Remove ugly hack that dealt with config files not
	correctly defining TARGET_BYTES_BIG_ENDIAN.
	(target_big_endian): Use TARGET_BYTES_BIG_ENDIAN directly.
	* config/arm-big.mt: Define TARGET_BYTES_BIG_ENDIAN to 1.
	* config/arm-lit.mt: Define TARGET_BYTES_BIG_ENDIAN to 0.
	* config/mips-big.mt: Define TARGET_BYTES_BIG_ENDIAN to 1.
	* config/mips-lit.mt: Define TARGET_BYTES_BIG_ENDIAN to 0.
	* config/ppc-lit.mt: Define TARGET_BYTES_BIG_ENDIAN to 1.
	* config/ppc-sol.mt: Replace TARGET_BYTES_LITTLE_ENDIAN
	with TARGET_BYTES_BIG_ENDIAN defined to 0.
	* config/tc-arm.h: Remove use of TARGET_BYTES_LITTLE_ENDIAN
	and simplify.  Test value of TARGET_BYTES_BIG_ENDIAN, not just
	whether it is defined or not.
	* config/tc-mips.h: Remove use of TARGET_BYTES_LITTLE_ENDIAN.
	* config/tc-ppc.h: Remove use of TARGET_BYTES_LITTLE_ENDIAN
	and simplify. Test value of TARGET_BYTES_BIG_ENDIAN, not just
	whether it is defined or not.
	* config/tic80.h (TARGET_FORMAT): Define to coff-tic80.
	(TARGET_BYTES_BIG_ENDIAN): Define to 0.

Thu Feb 13 14:40:16 1997  Doug Evans  <dje@canuck.cygnus.com>

	* write.c (write_relocs): Correct text in as_fatal error message,
	bfd_perform_relocation -> bfd_install_relocation.

Thu Feb 13 14:48:03 1997  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* config/tc-m68k.c (LEX_TILDE): Define if TE_DELTA.
	* read.c (LEX_TILDE): Define if not defined.
	(lex_type): Use LEX_TILDE.
	* expr.c (get_symbol_end): Check first char with is_name_beginner,
	not is_part_of_name.

Thu Feb 13 11:40:58 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sparc.c (md_show_usage): Add missing backslash at end
	of continued line.

	* config/tc-mips.c (mips16_extended_frag): Correct base address
	for an extended PC relative instruction.
	(md_convert_frag): Likewise.

	* config/tc-mips.c (prev_nop_frag): New static variable.
	(prev_nop_frag_holds): New static variable.
	(prev_nop_frag_required): New static variable.
	(prev_nop_frag_since): New static variable.
	(append_insn): If we aren't reordering, and prev_nop_frag is not
	NULL, and we don't need any nops, then decrease the size of
	prev_nop_frag.  Don't insert nops because of instructions in
	noreorder sections.  Remember whether the previous instructions
	where in noreorder sections even when not reordering.
	(mips_no_prev_insn): Add preserver parameter.  Change all
	callers.  Refer prev_nop_frag variables when appropriate.
	(mips_emit_delays): Set up prev_nop_frag.
	(s_mipsset): Clear prev_nop_frag if reordering.

Wed Feb 12 14:36:29 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (append_insn): Remove useless code which
	handled swapping a mips16 jump with a mips16 instruction with a
	reloc.

	* config/tc-mips.c (md_parse_option): When debugging, set
	mips_optimize to 1, not 0.

	* config/tc-mips.c (mips16_ip): Handle an extend operand.

	* config/tc-mips.c (my_getExpression): In mips16 mode, if it looks
	like the expression was based on `.', adjust the value of the
	symbol.

	* config/tc-mips.c (append_insn): Warn about an attempt to put an
 	extended instruction in a delay slot when not reordering.
	(md_convert_frag): Warn if an extended instruction appears in a
	delay slot.

	* config/tc-mips.c (mips_pseudo_table): Add "insn".
	(s_insn): New static function.
	* doc/c-mips.texi: Document .insn.

	* config/tc-mips.c (md_begin): Add the general registers to the
	symbol table.
	(mips16_ip): First parse the expression, and then see whether it
	came up with a register, rather than trying to first see whether
	we are looking at a register.

Tue Feb 11 15:13:39 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-tic80.c: Numerous changes and additions to flesh
	out functions that were previously just stubs, and fix some
	problems found using the new TIc80 testsuite cases.

Tue Feb 11 15:52:22 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips16_ip): Handle %gprel modifier.
	(md_apply_fix): Handle BFD_RELOC_MIPS16_GPREL.

	* config/tc-mips.c (append_insn): Output jump instruction as a
	pair of 2 byte instructions, rather than as a single 4 byte
	instruction.

Mon Feb 10 22:06:00 1997  Dawn Perchik  (dawn@cygnus.com)

	* itbl-ops.c, itbl-lex.l, itbl-parse.y, itbl-ops.h,
	config/itbl-mips.h: Add copyright message and fix indentation.

Mon Feb 10 18:09:00 1997  Dawn Perchik  (dawn@cygnus.com)

	* itbl-ops.c: New file.  Add support for dynamically read 
	instruction registers, opcodes and formats.  Build internal table 
	for new instructions and provide callbacks for assembler and 
	disassembler.
	* itbl-lex.l, itbl-parse.y: Lex and yacc parsers for instruction 
	spec table.
	* itbl-ops.h: New file.  Header file for itbl support.
	* config/itbl-mips.h: New file.  Mips specific definitions for
	itbl support.

Fri Feb  7 09:52:34 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (md_assemble): If a constant operand won't
	fit into the constant field of a relaxable operand, then it does
	not match.

Thu Feb  6 20:08:12 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (md_estimate_size_before_relax): Treat
	a jsr target in a different section just like a jsr to
	an undefined target.

Thu Feb  6 16:52:57 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips_fix_adjustable): Don't adjust relocations
	against any mips16 symbols, not just externally visible ones.
	(md_apply_fix): Corresponding change.

Wed Feb  5 11:11:06 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips16_ip): Accept floating point registers in
	the operand of the exit instruction.

Tue Feb  4 14:12:39 1997  Ian Lance Taylor  <ian@cygnus.com>

	* symbols.c (resolve_symbol_value): If we leave an equated symbol
	as O_symbol, copy over the segment.

Mon Feb  3 12:35:54 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (md_apply_fix): If we aren't adjusting this
	fixup to be against the section symbol, adjust the value
	accordingly.

	* symbols.c (resolve_symbol_value): Don't change X_add_number for
	an equated symbol.
	* write.c (write_relocs): Avoid looping on equated symbols.
	Adjust fx_offset by X_add_number for each symbol.
	* config/obj-coff.c (do_relocs_for): Avoid looping on equated
	symbols.
	(fixup_segment): Add a loop to track down equated symbols and
	adjust fx_offset appropriately.

Fri Jan 31 15:21:02 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (md_relax_table): Add entries to allow
	jmp -> bra relaxing.
	(md_convert_frag): Handle jmp->bra relaxing.
	(md_assemble): Handle jmp->bra relaxing.
	(md_estimate_size_before_relax): Likewise.

Fri Jan 31 13:15:05 1997  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (i386_align_code): Add comments explaining the
	nop instructions.

Fri Jan 31 10:46:14 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sparc.c (enforce_aligned_data): New static variable.
	(sparc_cons_align): Don't do anything unless enforce_aligned_data
	is set.
	(md_longopts): Add "enforce-aligned-data".
	(md_show_usage): Mention --enforce-aligned-data.
	* doc/c-sparc.texi (Sparc-Aligned-Data): New node; document
	enforce-aligned-data.

	* config/tc-ppc.c (md_pseudo_table): If OBJ_XCOFF, add "long",
 	"word", and "short".
	(ppc_xcoff_cons): New static function.

	* write.c (relax_segment): Give an error if a .space symbol is
	common or undefined.

	* read.c (read_a_source_file): Don't handle mri_pending_align if
	the handler is s_globl or s_ignore.

Thu Jan 30 11:46:59 1997  Fred Fish  <fnf@cygnus.com>

	* config/tc-d10v.c (find_opcode): Remove unused variable "numops".
	* config/tc-tic80.c: Many additions to previous placeholder file.
	* config/tc-tic80.h: Ditto.

Thu Jan 30 12:28:18 1997  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (i386_align_code): Improve the nop patterns.

Thu Jan 30 12:08:40 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips_fix_adjustable): New function.
	* config/tc-mips.h (tc_fix_adjustable): Call mips_fix_adjustable.
	(mips_fix_adjustable): Declare.

	Ideas from Srinivas Addagarla <srinivas@cdotd.ernet.in>:
	* read.c (read_a_source_file): After doing an mri_pending_align,
	adjust the line_label if there is one.
	(s_space): Set mri_pending_align if an odd number of bytes were
	output.

Wed Jan 29 15:31:12 1997  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.h (md_do_align): Add this hook to call
	d10v_cleanup() when a ".align" is detected.

	* config/tc-d10v.c (find_opcode): Correctly calculate
	branch displacement when .aligns are present.

Wed Jan 29 09:42:11 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (md_relax_table): Define.
	(md_convert_frag): Implement.
	(md_assemble): Handle relaxable operands/instructions correctly.
	(md_estimate_size_before_relax): Implement.
	* config/tc-mn10200.h (TC_GENERIC_RELAX_TABLE): Define.

Tue Jan 28 15:27:28 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (append_insn): Give an error for jumps to a
	misaligned address.
	(md_apply_fix): Make a branch to an odd address an error rather
	than a warning.

	* config/tc-mips.c (md_convert_frag): If the user explicitly
	requested an extended opcode, pass warn as true to mips16_immed.

	* config/tc-mips.c (mips16_ip): Handle a missing expression like
	an explicit 0, so that explicitly extended instructions work
	correctly.

Mon Jan 27 17:41:20 1997  Ian Lance Taylor  <ian@cygnus.com>

	* ecoff.c (ecoff_build_symbols): Don't generate a local ECOFF
	symbol for a common symbol.

Wed Jan 22 10:39:39 1997  Doug Evans  <dje@canuck.cygnus.com>

	Patch presumed to have been checked in awhile ago but wasn't.
	Mon Nov 25 10:45:14 1996  Doug Evans  <dje@seba.cygnus.com>
	* write.c: Delete "ifndef md_relax_frag" around is_dnrange.
	(relax_segment, case rs_org): Move code inside braces.  Move locals
	target,after inside too.
	(relax_segment, case rs_machine_dependent): Guts moved to ...
	(relax_frag): New function.
	Call md_prepare_relax_scan if defined.

Mon Jan 20 10:56:47 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/tc-m68k.c (m68k_ip): Reject pc-relative addresses for the
 	'p' operand specifier.

Mon Jan 20 10:39:36 1997  J.T. Conklin  <jtc@cygnus.com>

	* config/tc-m68k.c (HAVE_LONG_BRANCH): New macro, returns true for
 	m68k family cpus which support long branch addressing modes.
	(m68k_ip, md_convert_frag_1, md_estimate_size_before_relax,
 	md_create_long_jump): Use it.

Mon Jan 20 12:42:06 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (md_begin): Don't set SEC_ALLOC or SEC_LOAD for
	the .reginfo or .MIPS.options section if configured for an
	embedded target.

	* config/tc-mips.c (md_begin): Don't set interlocks for
	mips_4650.

Wed Jan 15 13:51:50 1997  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (read_a_source_file): Make sure the symbol ends with
	whitespace before checking whether the next character is '='.

Tue Jan 14 15:07:27 1997  Robert Lipe <robertl@dgii.com>

	* config/tc-i386.c (sco_id): Moved from here...
	* config/obj-elf.c (sco_id): ...to here.  Adding the identifier
	really is an SCO ELF specific thing, not just a SCO x86 specific
	thing.

Mon Jan 13 22:43:01 1997  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (tic80-*-*): Don't require 'coff'.
	* configure: Regenerate.

Thu Jan  9 09:08:43 1997  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (emit_expr): Check for overflow of a negative value
	correctly.
	* write.c (fixup_segment): Likewise.
	* config/obj-coff.c (fixup_segment): Likewise.

	* config/tc-m68k.c (struct label_line): Define.
	(labels, current_label): New static variables.
	(md_assemble): Mark current_label as text, and clear it.
	(m68k_frob_label): New function.
	(m68k_flush_pending_output): New function.
	(m68k_frob_symbol): New function.
	* config/tc-m68k.h (tc_frob_label): Define.
	(md_flush_pending_output): Define.
	(tc_frob_symbol): Don't warn, just call m68k_frob_symbol.
	(tc_frob_coff_symbol): Likewise.

	* read.c (read_a_source_file): When defining a macro in MRI mode,
	don't add the symbol to the symbol table.

Tue Jan  7 11:21:42 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (tc_gen_reloc): Handle sym1-sym2 fixups
	here since fixup_segment doesn't (linkrelax is set).
	* config/tc-mn10200.c (tc_gen_reloc): Likewise.

Mon Jan  6 15:19:32 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (md_assemble): Tweak fx_offset for pc-relative
	relocs.

Fri Jan  3 16:47:08 1997  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (struct hppa_fix_struct): Tweak fx_r_field's type
	to avoid warnings with the native HP compiler.
	(fix_new_hppa): Similarly for the r_type argument.
	(pa_build_unwind_subspace, hppa_elf_mark_end_of_function): Enclose
	in an #if OBJ_ELF to keep gcc -Wall quiet.
	(md_apply_fix): Always initialize "result".

	* config/tc-mn10200.c (md_assemble): Generate relocations.

Fri Jan  3 18:17:23 1997  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/tc-m68k.c (s_even): Adjust the alignment of the current
	section.

Fri Jan  3 17:10:33 1997  Richard Henderson  <rth@tamu.edu>

	* config/obj-elf.c (elf_file_symbol): When using ECOFF debugging,
	pass on the new file hook.

	* config/tc-alpha.c (alpha_fix_adjustable): Not quite the same as
	!alpha_force_relocation, as local LITERALs can be adjusted to be
	relative to the section.

Fri Jan  3 12:09:24 1997  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (yank_symbols): If tc_frob_coff_symbol is
	defined, call it.
	* config/tc-m68k.h (tc_frob_symbol): Check whether text label is
	aligned to odd boundary.
	(tc_frob_coff_symbol): Define.

	* doc/as.texinfo (Set): Change parenthesized @xref to @pxref.

	* macro.c (macro_expand_body): In MRI mode, just copy a single &.

	* config/tc-m68k.c (m68k_ip): Call frag_grow before adding a
	PCINDEX frag.  From Ronald F. Guilmette <rfg@monkeys.com>.

	* config/tc-m68k.c (m68k_ip): Accept 'B' as a size for an
	immediate value.
	(md_assemble): If the size is 'B', set fx_signed.
	(md_apply_fix_2): Use fx_signed when checking for overflow.

	* write.h (struct fix): Add fx_signed field.
	* write.c (fix_new_internal): Initialize fx_no_overflow and
	fx_signed fields.
	(fixup_segment): Use fx_signed when checking for overflow.
	* config/obj-coff.c (fixup_segment): Check fx_no_overflow and
	fx_signed when checking for overflow.

Thu Jan  2 13:37:29 1997  Ian Lance Taylor  <ian@cygnus.com>

	* NOTES, NOTES.config: Removed.  These are rarely, if ever,
	updated, and all the useful information is in doc/internals.texi.

	Based on patch from Ronald F. Guilmette <rfg@monkeys.com>:
	* read.c (read_a_source_file): Check for conditional operators
	before doing an MRI pending alignment.
	* config/tc-m68k.h (m68k_conditional_pseudoop): Declare.
	(tc_conditional_pseudop): Define.
	* config/tc-m68k.c (m68k_conditional_pseudop): New function.
	* doc/internals.texi (CPU backend): Describe
	tc_conditional_pseudoop.

	Based on patch from Ronald F. Guilmette <rfg@monkeys.com>:
	* config/tc-m68k.c (m68k_rel32_from_cmdline): New static
	variable.
	(md_begin): Check m68k_rel32_from_cmdline before setting
	m68k_rel32.
	(m68k_mri_mode_change): Likewise.
	(md_longopts): Add --disp-size-default-16 and
	--disp-size-default-32.
	(md_parse_option): Handle new options.
	(md_show_usage): Mention new options.
	* doc/c-m68k.texi (M68K-Opts): Document new options.

	Based on patch from Ronald F. Guilmette <rfg@monkeys.com>:
	* config/tc-m68k.c (m68k_index_width_default): New static
	variable.
	(m68k_ip): Use m68k_index_width_default to set the size of a base
	register whose size was not given.
	(md_longopts): Add --base-size-default-16 and
	--base-size-default-32.
	(md_parse_option): Handle new options.
	(md_show_usage): Mention new options.
	* doc/c-m68k.texi (M68K-Opts): Document new options.

	* doc/c-mips.texi: Mention ISA level 4, and the -mips16 option.

	* configure.in: Recognize mips-*-linux* target.
	* configure: Rebuild.

	* config/tc-mips.c (load_register): Rewrite 64 bit handling to
	work if valueT is only 32 bits.

	* config/tc-mips.c: Throughout, check target_big_endian rather
 	than byte_order.
 	(byte_order): Remove.
	(mips_init_after_args): Remove.
	* config/tc-mips.h (LITTLE_ENDIAN, BIG_ENDIAN): Don't define.
	(mips_init_after_args): Don't declare.
	(tc_init_after_args): Don't define.

	* config/tc-mips.h (tc_frob_after_relocs): Define if
	OBJ_MAYBE_ELF.
	(mips_elf_final_processing): Likewise.
	(ELF_TC_SPECIAL_SECTIONS): Likewise.

Tue Dec 31 15:12:35 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-v850.c (md_assemble): If this is sst.{h,w} or
	sld.{h,w} and the operand is relocatable, adjust the adend by
	shifting it right one bit.

Tue Dec 31 12:56:41 1996  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (read_a_source_file): Check mri_pending_align after
	checking for a macro.  From Ronald F. Guilmette
	<rfg@monkeys.com>.

	* Makefile.in (ALL_CFLAGS): Add -D_GNU_SOURCE.

	* config/tc-sparc.c (md_apply_fix3): Rename from md_apply_fix, and
 	add segment argument.  If OBJ_ELF, treat a relocation against a
 	symbol in a linkonce section like a relocation against an external
 	symbol.
	* config/tc-sparc.h (MD_APPLY_FIX3): Define.

Mon Dec 30 11:35:40 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips16_macro): Add case for M_ABS.

Fri Dec 27 22:51:51 1996  Fred Fish  <fnf@cygnus.com>

	* NOTES.config (Implementation): as.h #define's "GAS" not "gas",
	includes config.h instead of host.h, tc.h instead of tp.h, and
	targ-env.h instead of target-environment.h.
	Also, obj-format.h includes targ-cpu.h instead of
 	target-processor.h.
	* configure.in (case ${generic_target}): Add tic80-*-coff entry.
	* configure: Rebuild with autoconf.
	* config/obj-coff.h (coff/tic80.h): Include if TC_TIC80 defined.
	(TARGET_FORMAT): Define to "coff-tic80".
	* config/tc-tic80.c: New file for TIc80 support.
	* config/tc-tic80.h: New file for TIc80 support.
	
Fri Dec 27 11:42:29 1996  Ian Lance Taylor  <ian@cygnus.com>

	* doc/as.texinfo (M): Mention explicitly that -M changes macro
	handling.

Thu Dec 19 12:06:08 1996  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (adjust_reloc_syms): If the fixup symbol has been
	equated to an undefined symbol, convert the fixup to being against
	the target symbol.  Remove obsolete code handling a special case
	for i386 PIC.

Wed Dec 18 22:54:39 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Use NewFolderRecursive for installation.

Wed Dec 18 16:00:42 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c (do_assemble): Correct previous bug fix.

Wed Dec 18 15:27:40 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c (md_assemble): Fix bug which caused
	second instruction in a line to be case sensitize.

Wed Dec 18 10:08:46 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (mn10200_insert_operand): Don't
	range check operands with MN10200_OPERAND_NOCHECK set.
	(check_operand): Likewise.

Tue Dec 17 10:59:32 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c: Undo part of last Friday's alignment changes.
 	(md_begin): Always align the text section to a four byte
	boundary.
	(append_insn): Remove call to record_align.

	* config/tc-mips.c (insn_label): Remove.
	(struct insn_label_list): Define.
	(insn_labels, free_insn_labels): New static variables.
	(mips_clear_insn_labels): New static function.
	(append_insn): Mark all mips16 text labels, and make them odd.
	Handle all labels after emitting a nop, not just one.  Call
	mips_clear_insn_labels rather than just clearing insn_label.
	(mips_emit_delays): Add insns parameter, and use it to decide
	whether to mark mips16 labels.  Handle all labels, not just one.
	Force mips16 labels to be odd.  Change all callers.
	(mips16_immed): Don't check for an odd branch target.
	(md_apply_fix): Don't check mips16 mode for a branch reloc.
	(mips16_extended_frag): Ignore the low bit in a branch target.
	(md_convert_frag): Likewise.
	(mips_no_prev_insn): Call mips_clear_insn_labels rather than just
	clearing insn_label.
	(mips_align, mips_flush_pending_output, s_cons): Likewise.
	(s_float_cons, s_gpword): Likewise.
	(s_align): Use insn_labels rather than insn_label.
	(s_cons, s_float_cons, s_gpword): Likewise.
	(mips_frob_file_after_relocs): New function.
	(mips_define_label): Rewrite to add to insn_labels list.
	* config/tc-mips.h (tc_frob_file_after_relocs): Define.
	* ecoff.c (ecoff_build_symbols): If the size of a function comes
	out odd, increment it.

	* config/tc-mips.c (append_insn): Only update prev_insn when not
	reordering if place is NULL.

	* config/tc-mips.c (mips16_ip): Check for a missing expression
	when using the register indirect addressing mode.

Mon Dec 16 10:08:46 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (mn10200_insert_operand): Don't
	check 24bit operands for overflow.
	(check_operand): Likewise.

Mon Dec 16 11:50:40 1996  Ian Lance Taylor  <ian@cygnus.com>

	* doc/as.texinfo (Section): Document how to use the .section
	pseudo-op for COFF and ELF.

Sun Dec 15 15:26:37 1996  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (adjust_reloc_syms): Fix linkonce check for ELF.

Sat Dec 14 22:37:27 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (prev_insn_reloc_type): New static variable.
	(RELAX_MIPS16_ENCODE): Add dslot and jal_dslot arguments, and
	store them.  Adjust other RELAX_MIPS16 macros.
	(RELAX_MIPS16_DSLOT): Define.
	(RELAX_MIPS16_JAL_DSLOT): Define.
	(append_insn): Pass new arguments to RELAX_MIPS16_ENCODE.  Correct
	handling of whether previous instruction has a fixup.  Set
	prev_insn_reloc_type.
	(mips_no_prev_insn): Clear prev_insn_reloc_type.
	(mips16_extended_frag): Use the right base address for a PC
	relative add or load.
	(md_convert_frag): Likewise.  If a PC relative add or load is
	used, record the alignment for the section.

Fri Dec 13 13:00:33 1996  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (adjust_reloc_syms): Don't reduce a reloc against a
	linkonce section into a reloc against the section symbol.

	* config/tc-mips.c (mips16_macro): Remove nop instructions after
	branch instructions.

	* config/tc-mips.c (md_begin): If configured for an embedded ELF
	system, don't set the section alignment to 2**4.
	(s_change_sec): Likewise.
	(append_insn): Call record_alignment for the section.
	(md_section_align): Don't align the section size for an embedded
	ELF system.

Thu Dec 12 16:40:47 1996  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (adjust_reloc_syms): Make sure that symbols are
	resolved; expression symbols may have been skipped.
	* config/obj-coff.c (fixup_segment): Likewise.

Thu Dec 12 15:18:21 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.c (ppc_elf_suffix): Move @plt to
	BFD_RELOC_24_PLT_PCREL relocation.
	(md_apply_fix3): Support BFD_RELOC_24_PLT_PCREL.

Tue Dec 10 13:51:55 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c (write_2_short): Remove code that called
	parallel_ok() when the programmer specified parallel instructions.

Tue Dec 10 12:23:19 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (md_assemble): Update to handle endianness
	issues correctly.

	* config/tc-mn10200.c (md_assemble): Opcode 0x0 is valid!
	* config/tc-mn10300.c (md_assemble): Likewise.

Tue Dec 10 11:37:14 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (append_insn): Make sure there is enough room
	in a frag after a mips16 instruction to switch it with a jump
	instruction.

	* config/tc-mips.c (mips16_extended_frag): Give an error for an
	attempt to use a non absolute symbol in an extending frag.

Mon Dec  9 16:48:20 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c: Flesh out assembler support for MN10200.
	* config/tc-mn10200.h: Likewise.

Mon Dec  9 17:09:42 1996  Ian Lance Taylor  <ian@cygnus.com>

	* app.c (do_scrub_chars): At the end of a C comment, pass space to
	UNGET rather than PUT.  Set old_state before setting state to -2.

	* config/tc-mips.c (mips16_extended_frag): Avoid an infinite loop
	when extending because the value is exactly maxtiny + 1.

	* config/tc-mips.c (RELAX_MIPS16_ENCODE): Add small and ext
	arguments, and store them.  Adjust other RELAX_MIPS16 macros.
	(RELAX_MIPS16_USER_SMALL): Define.
	(RELAX_MIPS16_USER_EXT): Define.
	(mips16_small, mips16_ext): New static variables.
	(append_insn): Pass mips16_small and mips16_ext to
	RELAX_MIPS16_ENCODE.
	(mips16_ip): Set mips16_small and mips16_ext.
	(mips16_immed): Don't check mips16_autoextend.
	(mips16_extended_frag): Check USER_SMALL and USER_EXT.

	* write.c (write_relocs): Print an error for an out of range
	fixup, rather than calling abort.

	* as.c (main): Unlink the output file if there are errors while
	generating the fixups.

Fri Dec  6 18:48:13 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips16_extended_frag): Don't call
	S_GET_VALUE.
	(md_convert_frag): Call resolve_symbol_value before calling
	S_GET_VALUE, and don't add in the frag address.

	* config/tc-mips.c (mips16_immed): Add file and line parameters,
	and use them when reporting errors.  Change all callers.

Fri Dec  6 15:36:32 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c: Fix various gcc -Wall warnings.
	Remove '$' prefixing for registers.

Fri Dec  6 00:55:48 1996  Martin  <hunt@cygnus.com>

	* config/tc-d10v.c (md_assemble): Check to see if prev_seg
	is initialized before using it.
	(d10v_cleanup): No longer uses its argument, so make it void.

	* config/tc-d10v.h (d10v_cleanup): Change prototype.
	
Thu Dec  5 11:03:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (fixup_segment): Don't discard the symbol for a PC
	relative fixup to an absolute symbol.

Wed Dec  4 15:42:41 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c (md_assemble, d10v_cleanup): Fix bug
	with multiple sections.

Wed Dec  4 13:00:07 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (md_longopts): Rename mips-16 to mips16, and
	no-mips-16 to no-mips16.
	(s_mipsset): Accept .set mips16 and .set nomips16.

Wed Dec  4 10:35:33 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.c (ppc_elf_suffix): Take expressionS pointer
	argument, and check for +/- constant following the suffix, folding
	it into the expression.
	(ppc_elf_cons): Change ppc_elf_suffix calls.
	(md_assemble): Ditto.
	(shlib): Replace boolean mrelocatable with enumeration shlib.
	(md_parse_option): Discriminate between PIC style shared libraries
	and -mrelocatable.
	(ppc_elf_validate_fix): Don't report warnings for PIC style shared
	libraries.

Tue Dec  3 23:18:29 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.h ({tc,ppc}_comment_chars): Define, so that we can
	change the comment characters.

	* config/tc-ppc.c (comment_chars): Delete in favor of
	tc_comment_chars.
	(ppc_{eabi,solaris}_comment_chars): Eabi and Solaris versions of
	comment chars.
	(ppc_comment_chars): Select appropriate comment chars by default.
	(msolaris): New flag for -m{,no-}solaris.
	(md_parse_option): Recognize -K pic.  Add support for
	-m{,no-}solaris.
	(md_show_usage): Update.
	(md_begin): Do not set ELF flags if Solaris.
	(ppc_elf_suffix): @local sets R_PPC_LOCAL24PC relocation.
	(md_apply_fix3): Add support for R_PPC_LOCAL24PC.

Mon Dec  2 13:48:57 1996  Ian Lance Taylor  <ian@cygnus.com>

	* as.c (main): Correct handling of flag_always_generate_output.

Sun Dec  1 21:46:05 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (tc_gen_reloc): Get the addend from
	fx_offset, not fx_addnumber.

	* config/tc-mn10300.h (tc_fix_adjustable): Don't do any
	reloc adjustments.

Sat Nov 30 17:34:48 1996  Eliot Dresselhaus  <eliot@wally.edc.com>

	* config/tc-i386.c: Correct misspelling: balenced to balanced.

Wed Nov 27 13:25:39 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (md_section_align): Check for an alignment of
	4, not an alignment of 16.  Corrects August 7 patch.

Tue Nov 26 10:33:16 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure, conf.in: Rebuild with autoconf 2.12.

	* config/tc-ppc.c (ppc_elf_lcomm): Don't give an error if no
	alignment is specified.

	Add support for mips16 (16 bit MIPS implementation):
	* config/tc-mips.c: Extensive additions for mips16 support, not
	listed here.
	(RELAX_OLD, RELAX_NEW): Use only 7 bits each.
	(insn_uses_reg): Change last parameter to an enum.
	* config/tc-mips.h (LOCAL_LABELS_DOLLAR): Define as 0.
	(md_relax_frag): Define as mips_relax_frag.
	(mips_relax_frag): Declare.
	(struct mips_cl_insn): Add use_extend and extend fields.
	(tc_fix_adjustable): Define.
	* config/obj-elf.h (S_GET_OTHER): Define.
	(S_SET_OTHER): Define.

Mon Nov 25 18:02:29 1996  J.T. Conklin  <jtc@beauty.cygnus.com>

	* config/tc-m68k.c (m68k_ip): Implement cases for new <, >, m, n,
 	o and p operand specifiers.

Mon Nov 25 10:45:14 1996  Doug Evans  <dje@seba.cygnus.com>

	* write.c: Delete "ifndef md_relax_frag" around is_dnrange.
	(relax_segment, case rs_org): Move code inside braces.  Move locals
	target,after inside too.
	(relax_segment, case rs_machine_dependent): Guts moved to ...
	(relax_frag): New function.
	Call md_prepare_relax_scan if defined.
	* config/tc-m68k.h (md_prepare_relax_scan): Renamed from
	M68K_AIM_KLUDGE.

Mon Nov 25 08:49:36 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (address_registers): Use '$' as register
	prefix instead of '%'.
	(data_registers, other_registers, md_assemble): Likewise.

	* config/tc-mn10300.c (address_registers): Use '%' prefix for regs.
	(data_registers, other_registers, md_assemble): Likewise.

	* config/tc-mn10300.c (md_assemble): Correctly determine the
	correct location and type for each relocation.
	(md_pcrel_from): Simplify.

Fri Nov 22 15:42:26 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sh.c (md_convert_frag): Improve warning when branch is
	converted into branch around branch.

Thu Nov 21 11:56:11 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.h (DIFF_EXPR_OK): Don't define this.
	(tc_fix_adjustable): Don't adjust relocs against weak symbols or 
	pc-relative relocs.
	* config/tc-mn10300.c (md_begin): Set linkrelax.
	(md_assemble): Create fixups as needed.
	(md_apply_fix3): Gut.  It shouldn't ever get called anymore.

Tue Nov 19 17:48:06 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-d10v.c (parallel_ok): When automatically converting
	serial ops to parallel, do not consider a branch as the first
	instruction.

Tue Nov 19 13:35:22 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (md_assemble): Handle MN10300_OPERAND_REG_LIST.

Mon Nov 18 15:26:55 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (mn10300_insert_operand): Provide prototype
	via PARAMS.
	(check_operand): Likewise.

Mon Nov 18 15:22:28 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-d10v.c (parallel_ok): Branch and link instructions
	modify r13.
	(write_2_short): Call parallel_ok to check whether two short
	instructions the user requested execute in parallel, can be
	executed that way.

Thu Nov 14 11:17:49 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c (write_2_short): Fix bug that wouldn't
	allow a branch and link in parallel with an exe instruction.

Fri Nov  8 13:55:03 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* doc/c-d10v.texi: Add info on @word modifier.

Wed Nov  6 13:46:07 1996  Jeffrey A Law  (law@cygnus.com)
	
	* config/tc-mn10300.c (mn10300_insert_operand): MN10300_OPERAND_SPLIT
	operands are assumed to be 32bits.  Use "bits" field to hold the
	number of bits in the main instruction word for MN10300_OPERAND_SPLIT.
	(mn10300_check_operand): MN10300_OPERAND_SPLIT operands are assumed
	to be 32bits.

	* config/tc-mn10300.c (mn10300_insert_operand): Shift low part
	of a MN10300_OPERAND_SPLIT operand by operand->shift.

	* config/tc-mn10300.c (mn10300_insert_operand): Handle
	MN10300_OPERAND_SPLIT.

Tue Nov  5 13:30:40 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (md_assemble): Insert operands into
	the extension part of the instruction if necessary.
	(mn10300_insert_operand): Accept pointer to extension word
	argument.  Make insn a pointer argument too.  Return type
	is now void.  All callers changed.

Mon Nov  4 12:53:40 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (mn10300_insert_operand): Handle
	repeated register operands.

Fri Nov  1 10:42:49 1996  Ian Lance Taylor  <ian@cygnus.com>

	* doc/as.texinfo: Added section on reporting bugs.

	* config/tc-alpha.c: Change uses of void * to PTR.  Change the
	alpha_macro emit field to expect a const argument, and change the
	arg field to be const.  Fix some spacing to follow the GNU
	standard.

Fri Nov  1 10:32:03 1996  Richard Henderson  <rth@tamu.edu>

	* config/tc-alpha.c (md_parse_option): Add knowledge of 21164pc
	(pca56) and 21264 (ev6) cpus.
	(md_apply_fix): Private relocation types are now negative.
	(alpha_force_relocation): Likewise.
	(tc_gen_reloc): Likewise.
	(emit_insn): Likewise.
	(emit_ldXu): Do the right thing when the hardware can do byte insns.
	(emit_stX): Likewise.
	(emit_sextX): Likewise.

Thu Oct 31 16:33:21 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (do_relocs_for): Call resolve_symbol_value on
	a symbol found in a reloc.

	* symbols.c (resolve_symbol_value): Improve the error message if
	an undefined symbol is used in an expression.

Wed Oct 30 20:15:35 1996  Ian Lance Taylor  <ian@cygnus.com>

	* doc/internals.texi: Rewrite, and add a lot of documentation.
	* doc/Makefile.in (internals.info): New target.

Wed Oct 30 14:55:57 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.h (tc_fix_adjustable): Don't adjust relocs
	against weak symbols.

Tue Oct 29 12:28:16 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c (md_assemble): Don't lose for relaxable
	addresses like .+6.

	* config/tc-v850.c (md_convert_frag): Make sure we insert the
	fixup at the right address within the frag.

	* config/tc-v850.c (md_convert_frag): Don't set fragP->fr_fix
	to an absolute value, instead increment it as needed.

	* config/tc-v850.h (TC_GENERIC_RELAX_TABLE): Define.
	* config/tc-v850.c: Fix some indention problems.
	(md_relax_table): Define for D9->D99 branch displacement
	relaxing.
	(md_convert_frag): Do something useful instead of aborting.
	(md_estimate_size_before_relax): Likewise.
	(md_assemble): Note if the matching instruction has a relaxable
	operand.  If it does, allocate frag with frag_var and don't
	do any fixups.

Mon Oct 28 10:48:40 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.h (md_cleanup): New function.  This is needed to
	write out any buffered instructions when a ".end" is found.

Mon Oct 28 10:43:45 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* read.c (read_a_source_file): New hook md_cleanup().

Fri Oct 25 00:01:00 1996  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (fix_new_exp): Use make_expr_symbol to build an
	expression symbol for a complex fixup.

Thu Oct 24 14:31:04 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c (v850_reloc_prefix): Several disgusting
	hacks to improve parsing of complex hi, lo, zda, etc
	expressions.
	(md_assemble): Don't demand and eat a trailing ')' after finding
	a v850 relocation prefix.  Sign extend the constant in a
	BFD_RELOC_LO16 expression.  Do eat a trailing ')' after a complete
	operand.
	(parse_cons_expression_v850): Don't eat a trailing ')' after
	finding a v850 relocation prefix.

	* config/tc-v850.h (TC_PARSE_CONS_EXPRESSION): Define.
	(TC_CONS_FIX_NEW): Likewise.
	* config/tc-v850.c (parse_cons_expression_v850): New function.
	(cons_fix_new_v850): Likewise.

	* config/tc-v850.h (tc_fix_adjustable): Don't adjust TDA relocs.

Wed Oct 23 18:20:29 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-ppc.c (md_apply_fix3): Give a better warning message
	for an unknown relocation type.

Wed Oct 23 16:21:28 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c (md_pseudo_table): Add .word; allocates
	4 bytes of space.

Tue Oct 22 22:01:25 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c (md_assemble): Handle TDAOFF relocs
	differently for movea & sst/sld insns.

Tue Oct 22 17:09:32 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-d10v.c (parallel_ok): Don't allow illegal combinations
	of instructions.

Tue Oct 22 11:28:39 1996  Ian Lance Taylor  <ian@cygnus.com>

	* obj.h (struct format_ops): Add frob_file_after_relocs field.
	* config/obj-multi.h (obj_frob_file_after_relocs): Define.
	* config/obj-ecoff.c (ecoff_format_ops): Initialize new
	frob_file_after_relocs field.
	* config/obj-elf.c (elf_format_ops): Likewise.
	* config/tc-mips.c: Undefine obj_frob_file_after_relocs before
	including obj-elf.h.

Mon Oct 21 11:38:30 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (cons_fix_new_mips): Only treat 8 byte reloc
	specially if not ELF.
	(md_apply_fix): Handle BFD_RELOC_64.
	(tc_gen_reloc): Handle BFD_RELOC_64.

	* config/tc-i386.c (md_apply_fix3): Don't increment value for a PC
 	relative reloc when BFD_ASSEMBLER and OBJ_AOUT (more ugly gas
 	reloc hacking).

	* config/obj-aout.h (S_IS_DEFINE): non BFD_ASSEMBLER version:
	Don't check S_GET_OTHER.

Fri Oct 18 14:06:26 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips_ip): Accept an odd floating point
	register with l.s or s.s.

	* config/obj-aout.c (obj_pseudo_table): Use obj_aout_type for
	.type pseudo-op.
	(obj_aout_type): New static function.

Thu Oct 17 17:55:17 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in ($(OBJS)): Depend upon libiberty.h.

Wed Oct 16 11:28:31 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c (v850_reloc_prefix): Recognize zdaoff, tdaoff
	and sdaoff expressions.

	* write.c (fixup_segment): Don't add symbol value to addend if
	TC_V850 and OBJ_ELF.
	* config/tc-v850.h (tc_fix_adjustable): Don't adjust any
	pc-relative fixups.

	* config/tc-v850.c (md_pcrel_from): Undo yesterday's changes.
	(md_pcrel_from_section): Likewise.
	* config/tc-v850.h (MD_PCREL_FROM_SECTION): Likewise.

Tue Oct 15 23:19:00 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c (md_pcrel_from): Delete unused function.
	(md_pcrel_from_section): New function.
	* config/tc-v850.h (MD_PCREL_FROM_SECTION): Define.

Mon Oct 14 13:59:12 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (load_register): Add cast to offsetT when using
	a constant with &~.

Mon Oct 14 11:24:28 1996  Richard Henderson  <rth@tamu.edu>

	* config/obj-elf.c (elf_frob_file): Move ECOFF debug processing to ...
	(elf_frob_file_after_relocs): ... here.  New function.
	* config/obj-elf.h (obj_from_file_after_relocs): New macro.
	* write.c (write_object_file): Call *frob_after_relocs after the
	call to write_relocs.

	* config/tc-alpha.c: Use new BFD_RELOC_ALPHA_ELF_LITERAL reloc.

	* config/tc-alpha.c (load_expression): Don't SET_VALUE on the section
	symbol, as this messes up linking.  Instead, expand the recursive call
	inline and change up the appropriate bits to get the 0x8000 offset
	in the reloc addend.

Thu Oct 10 17:30:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sparc.h (tc_fix_adjustable): Permit the difference of
	two symbols in the same segment to be adjusted.

	* configure.in: Don't get confused by CPU-VENDOR-linux-gnu.
	* configure: Rebuild.

Thu Oct 10 17:22:18 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.c (ppc_insert_operand): Change most warnings into
	errors.
	(ppc_elf_validate_fix): Ditto.
	(md_assemble): Ditto.
	(ppc_tc): Ditto.
	(ppc_pe_section): Ditto.
	(ppc_frob_symbol): Ditto.

Thu Oct 10 12:05:45 1996  Jeffrey A Law  (law@cygnus.com)

	* config/mn10300.c (md_assemble): Pass an extra shift count
	to mn10300_insert_operand based on the opcode format.
	(mn10300_insert_operand): Accept and use extra shift count
	parameter.

	* config/tc-mn10300.c (md_assemble): Use FMT_* macros for
	formats rather than hard-coded constants.

	* config/tc-mn10300.c (md_assemble): Format D5 instructions
	are 7 bytes long.  Write out instructions in big-endian format.

Tue Oct  8 14:56:15 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (md_assemble): Tweak further so
	that all instructions are parsed correctly.

Tue Oct  8 13:02:21 1996  Ian Lance Taylor  <ian@cygnus.com>

	* as.h: Include libiberty.h.
	(xmalloc, xrealloc): Don't declare.
	* as.c: Don't include libiberty.h.
	* expr.c, read.c, stabs.c, config/obj-coff.c: Likewise.
	* config/tc-mips.c: Likewise.
	* messages.c: Likewise.
	(xstrerror): Don't declare.
	* xmalloc.c: Remove.

Mon Oct  7 16:53:23 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.h (pre_defined_registers) Remove.
	(system_registers, cc_names): Likewise.
	(address_registers, data_registers, other_registers): New register
	arrays.
	(register_name, system_register_name, cc_name): Remove.
	(mn10300_reloc_prefix): Likewise.
	(data_register_name): New function.
	(address_register_name, other_register_name): Likewise.
	(md_assemble): Rough cut at parsing operands.  Remove lots of
	unwanted code.
	(md_apply_fix3): Disable for now.

Mon Oct  7 11:38:34 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/tc-m68k.c (select_control_regs): New function, extracted
	out of m68k_init_after_args.
	(m68k_init_after_args): Use it.
	(mri_chip): Use it here as well to update set of allowed control
	regs for movec.

Mon Oct  7 11:24:29 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-elf.c (elf_begin): New function.
	(obj_elf_section): Add the section symbol to the symbol table.
	* config/obj-elf.h (obj_begin): Define.
	(elf_begin): Declare.
	* as.c (perform_an_assembly_pass): Call obj_begin if it is
	defined.

Fri Oct  4 18:37:32 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (fixup_segment): Subtract the section address
	from a PC relative reloc if TC_M68K.

Thu Oct  3 15:15:30 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sparc.c (md_pseudo_table): Make .uahalf, .uaword, and
	.uaxword available even if not OBJ_ELF.
	(md_atof): Remove unused local variable wordP.

Thu Oct  3 00:16:50 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10x00.c, config/tc-mn10x00.h: New files
	for Matsushita MN10x00 support.
	* configure.in: Recognize mn10x00-*-*
	* configure: Rebuilt.

Wed Oct  2 15:54:03 1996  Klaus Kaempf  <kkaempf@progis.de>

	* obj-evax.h: move openvms definitions from here to tc-alpha.c.
	* tc-alpha.c: add support for vms_case_hack like in vax/vms.
	(load_expression): track clobbering of base reg before jmp/jsr.
	(s_alpha_file): pass case_hack flags and source filename via
	symbol table to bfd.
	* tc-alpha.h (TC_CONS_FIX_NEW): define

Tue Oct  1 16:16:01 1996  Joel Sherrill  <joel@oarcorp.com>

	* configure.in (mips-*-rtems*): New target, like mips-*-elf*.
	* configure: Rebuild.

Tue Oct  1 12:37:48 1996  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (s_macro): Warn if a macro has the same name as a
	pseudo-op.
	(s_space): In m68k MRI mode, align to a word boundary.
	* macro.c (define_macro): Add namep parameter.  Change all
	callers.
	* macro.h (define_macro): Update declaration.

	* as.c (show_usage): Print bug report address.
	(parse_args): Change version printing to match current GNU
	standards.
	* gasp.c (show_usage): Print bug report address.
	(main): Change version printing to match current GNU standards.

	* config/tc-m68k.c (init_table): Correct access control unit
	register numbers.  From Ken Rose <rose@netcom.com>.

	* config/tc-alpha.c: Add some static function prototypes.
 	(alpha_macros): Move to top of file.  Make static.
	(alpha_num_macros): Move to top of file.

Tue Oct  1 09:36:19 1996  Stu Grossman  (grossman@critters.cygnus.com)

	* tc-v850.h:  Define LOCAL_LABEL to recognise _.L_* symbols
	generated by DWARF.

Sat Sep 28 03:38:08 1996  Ian Lance Taylor  <ian@cygnus.com>

	* listing.c (list_symbol_table): Remove bogus code in BFD64 case,
	and just call sprintf_vma.

Thu Sep 26 16:04:11 1996  Ian Lance Taylor  <ian@cygnus.com>

	* expr.c (expr): Change >>= to >> (fix typo).  (From meissner).

Tue Sep 24 19:05:08 1996  Ian Lance Taylor  <ian@cygnus.com>

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

Tue Sep 24 12:22:18 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c (md_operand): Created.  Allows operands to 
	start with '#'.
	* config/tc-d10v.h (md_operand): Undefined.

Mon Sep 23 12:13:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (add_fix): Treat a width of '3' like 'B'.
	(md_assemble): A fixup width of '3' means a 1 byte reloc.

Thu Sep 19 12:21:24 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (fixup_segment): Don't adjust PC relative
	reloc for the i960 for a reloc in the same section.  This undoes
	one of the two changes made Aug 19.

Wed Sep 18 12:11:58 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (obj_coff_endef): Both versions: Move C_STAT
	symbols to the position of the debugging information.

Mon Sep 16 11:41:40 1996  Ian Lance Taylor  <ian@cygnus.com>

	* expr.c (expr): Always use unsigned right shifts for >>.

Thu Sep 12 10:25:45 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* config/tc-arm.c (md_apply_fix3): Update two thumb instruction
 	slots when processing BL fixups.

	* config/tc-arm.c (output_inst): Ensure Thumb BL fixup is marked
 	on the first half of the instruction.

Wed Sep 11 00:09:35 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ecoff.c (ecoff_stab): Create an expression symbol for a complex
	stabs expression, rather than giving an error.

	* ecoff.c (ecoff_new_file): Don't do anything if we are still in
	the same file.

Tue Sep 10 11:45:37 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (append_insn): Fill in the value for a constant
	jump, rather than creating a reloc.

Mon Sep  9 10:57:42 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (append_insn): Don't swap an instruction which
	sets a condition code with an instruction which uses a condition
	code.
	(mips_ip): In cases 'N' and 'M', look for $fccN rather than an
	immediate value.

	* config/tc-mips.c (md_begin): Recognize r5000 for cpu.
	(mips_ip): Give a better error message if the ISA level is wrong.
	(md_parse_option): Recognize -mcpu=[v][r]5000.

Sat Sep  7 13:25:55 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* config/tc-mips.c (COUNT_TOP_ZEROES): Added macro to count
 	leading zeroes.
	(load_register): Ensure hi32 bits are not lost during lo32bit
 	processing. Fix shift offset that was overflowing into the next
 	instruction field. Add code to generate shorter sequences for
 	constants with a single contiguous seqeuence of ones.

Fri Sep  6 17:07:12 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c (d10v_dot_word): New function to support
	"@word" with the word pseudo-op.
	(md_apply_fix3): Cleanup and changes to support correct sizes
	for 16 and 18-bit relocs.

Fri Sep  6 16:00:29 1996  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in (sparc-*-aout): Set `em'.
	* configure: Regenerated.
	* config/te-sparcaout.h: New file.
	* config/tc-sparc.h (TARGET_BYTES_BIG_ENDIAN): Define.
	Ifdef TE_SPARCOUT define TARGET_FORMAT and SPARC_BIENDIAN.
	* config/tc-sparc.c (INSN_BIG_ENDIAN): New macro.
	(SPECIAL_CASE_{SETSW,SETX}): Define.
	({NOP,OR,FMOVS,SETHI,SLLX,SRA}_INSN): Define.
	(md_begin): Delete setting of `target_big_endian'.
	(output_insn): New function.
	(md_assemble): Rewrite.  Add `setx' support.
	(sparc_ip): Handle `0' operand char.  Recognize setuw, setsw, setx
	special cases.
	(md_atof): Add little endian support.
	(md_number_to_chars): Likewise.
	(md_apply_fix): Likewise.
	(md_longopts): Recognize -EL,-EB ifdef SPARC_BIENDIAN.
	(md_parse_option): Likewise.
	(md_show_usage): Print -EL, -EB ifdef SPARC_BIENDIAN.

Thu Sep  5 13:40:29 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ecoff.c (ecoff_new_file): New function.
	* ecoff.h (ecoff_new_file): Declare.
	* config/obj-ecoff.h (obj_app_file): Define.

Thu Sep  5 13:39:25 1996  Richard Henderson  <rth@tamu.edu>

	* config/tc-alpha.c (load_expression): Bias the .lit8 section
	symbol by 32k so that our 16-bit signed offset can address the
	entire chunk.  Reported by <matt@lkg.dec.com>.

Wed Sep  4 10:23:20 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (load_register): Remove unused variable tmp.

Wed Sep  4 11:24:29 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* config/tc-mips.c (load_register): Remove unnecessary code that
 	was causing the high 32bits of 64bit constants to be lost.
	
Tue Sep  3 13:52:56 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: Added changes to support function
	pointers and "@word" syntax.

Tue Sep  3 11:57:18 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c: Remove commented out and #if 0'd code.
	(v850_reloc_prefix): Provide prototype.
	(postfix, get_reloc, build_insn): Remove prototypes for nonexistant
	functions.
	(md_begin, md_assemble, md_apply_fix3): Remove unused variables.
	(md_assemble): Add default to case statement.

Sat Aug 31 16:03:00 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c (md_assemble): Compute size of the instrction
	from the opcode.

	* config/tc-v850.c (md_apply_fix3): Do simple byte, short and
	word fixups too.

Fri Aug 30 23:50:08 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c (md_apply_fix3): Use little endian get/put
	routines to fetch/store the updated instruction from/to memory.
	(v850_insert_operand): If the operand has a specialized insert
	routine, call it.

Fri Aug 30 18:35:26 1996  J.T. Conklin  <jtc@hippo.cygnus.com>

	* config/tc-v850.c (reg_name_search): Align calling convention to
 	be like identical function found in tc-ppc.c.
	(get_reloc): Removed.
	(v850_reloc_prefix): New function, parse lo(), hi() and hi0().
	(md_assemble): emit fixups.
	(md_pcrel_from): renamed from md_pcrel_from_section, emit proper
 	displacement.
	(md_apply_fix3): handle fixups/relocs.
	* config/tc-v850.h (MD_PCREL_FROM_SECTION): Removed definition.
	
Fri Aug 30 18:12:00 1996  Ian Lance Taylor  <ian@cygnus.com>

	Add SH ELF support.
	* configure.in (sh-*-elf*): New target.
	* config/tc-sh.h (TARGET_ARCH): Define.
	(WORKING_DOT_WORD): Define.
 	(TC_COFF_FIX2RTYPE): Only define if OBJ_COFF.
	(BFD_ARCH, COFF_MAGIC, TC_COUNT_RELOC): Likewise.
	(TC_RELOC_MANGLE, tc_coff_symbol_emit_hook): Likewise.
	(DO_NOT_STRIP, NEED_FX_R_TYPE, TC_KEEP_FX_OFFSET): Likewise.
	(TC_COFF_SIZEMACHDEP, tc_frob_file): Likewise.
	(SUB_SEGMENT_ALIGN): Likewise.
	(RELOC_32): Don't define.
	(tc_frob_file_before_adjust): Define if BFD_ASSEMBLER.
	(target_big_endian): Declare if OBJ_ELF.
	(TARGET_FORMAT): Define if OBJ_ELF.
	* config/tc-sh.c: Use BFD reloc codes instead of SH COFF reloc
	numbers throughout.
	(tc_crawl_symbol_chain): Only define if OBJ_COFF.
	(tc_headers_hook, tc_coff_sizemachdep): Likewise.
	(struct sh_count_relocs): Define.
	(sh_count_relocs): New static function, broken out of
	sh_frob_file.  Add BFD_ASSEMBLER code.
	(sh_frob_section): Likewise.
	(sh_frob_file): Call sh_frob_section.
	(md_convert_frag): If BFD_ASSEMBLER, change type of headers, and
	call section_symbol rather than seg_info (seg)->dot.
	(md_section_align): Add OBJ_ELF version.
	(SWITCH_TABLE_CONS): Define.
	(SWITCH_TABLE): Use SWITCH_TABLE_CONS.
	(md_apply_fix): Change parameter types if BFD_ASSEMBLER.  Only
	handle fx_r_type == 0 if not BFD_ASSEMBLER.  Return 0 if
	BFD_ASSEMBLER.
	(struct reloc_map): Define if not BFD_ASSEMBLER.
	(coff_reloc_map): Likewise.
	(sh_coff_reloc_mangle): Use coff_reloc_map to convert fx_r_type.
	(tc_gen_reloc): New function if BFD_ASSEMBLER.
	* write.c (write_relocs): Ifdef out fx_where test which triggers
	inappropriately for SH ELF.
	(write_object_file): Call tc_frob_file_before_adjust and
	obj_frob_file_before_adjust if they are defined.

	* write.c (write_object_file): Use BFD_RELOC_16, not
	BFD_RELOC_NONE, when calling fix_new_exp for a broken word.

	* read.c (emit_expr): Fix conversion of byte count to BFD reloc
	code.

Fri Aug 30 14:47:38 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c (find_opcode): Fix problem with calculating 
	branch sizes in across sections.

Fri Aug 30 00:44:13 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-850.c (md_assemble): Handle hi() correctly.  Handle
	hi0() too.

Wed Aug 28 23:11:08 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c (md_begin): Deal with end of opcode
	table marker.

Wed Aug 28 19:20:04 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c (find_opcode): Fix a bug which could generate
	the wrong opcode for cases like st2w where there are many forms
	of the same instruction.

Tue Aug 27 13:53:22 1996  Ian Lance Taylor  <ian@cygnus.com>

	* expr.c (operand): If md_parse_name is defined, call it before
	calling symbol_find_or_make.
	* config/tc-ppc.h (md_parse_name): Define.
	(ppc_parse_name): Declare.
	* config/tc-ppc.c (reg_name_search): Add regs and regcount
	parameters.
	(register_name): Update call to reg_name_search.
	(cr_operand): New static variable.
	(cr_names): New static const array.
	(ppc_parse_name): New function.
	(md_assemble): If PPC_OPERAND_CR is set in the operand flags, set
	cr_operand before calling expression.

Tue Aug 27 09:05:50 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (tc_gen_reloc): Add new argument to
	hppa_gen_reloc_type call.

Mon Aug 26 18:24:51 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: Fixed ".word".  Fixed problem with range checking
	on addresses.  Improved error messages.
	* doc/c-d10v.texi: Added docs for register pairs.

Mon Aug 26 13:39:27 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c (parallel_ok): Fix bug in parallel 
	checking code.

Mon Aug 26 14:38:22 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ecoff.c (init_file): Initialize fMerge to 1.
	(add_file): Restore old file merging code, but only merge files if
	fMerge is set.
	(ecoff_directive_loc): Clear fMerge field of current file.
	(ecoff_generate_asm_lineno): Likewise.

Fri Aug 23 11:40:47 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* doc/c-d10v.texi: Fix typo. 

Fri Aug 23 10:41:32 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-v850.c (md_assemble): Correct bit masking for
	hi and lo expressions.

	* config/tc-v850.c (md_assemble): Rough cut at demanding
	"ep" or "r30" in sst and sld instructions.
	(md_apply_fix3): Don't abort.  Just warn that we don't
	have relocs yet.

	* config/tc-v850.c (CC_NAME_CNT): Define.
	(cc_name): New function.
	(md_assemble): Handle V850_OPERAND_CC correctly.

	* config/tc-v850.c (md_assemble): Don't forget to initialize
	"insn"!

	* config/tc-v850.c (reg_name_search): Generalize to search
	any given register table.
	(register_name): Pass appropriate table and size to reg_name_search.
	(system_register_name): New function.
	(SYSREG_NAME_CNT): Define.
	(md_assemble): Handle operands which are system registers.
	
	* config/tc-v850.c (md_assemble): If we find a register, but the
	opcode doesn't want a register, then we don't have a match.
	(md_assemble): Get size of the instruction from the opcode table.

Thu Aug 22 10:20:30 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Set and substitute HLDENV.
	* configure: Rebuild.
	* Makefile.in (HLDENV): New variable.
	(as.new): Use $(HLDENV).

	* ecoff.c (ecoff_directive_endef): Avoid a division by zero error
	if an array dimension is not known.

Thu Aug 22 10:50:00 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: Fix a reloc bug caused by my last change. 
	* doc/c-d10v.texi: Cleanup.
	
Tue Aug 20 15:15:16 1996  J.T. Conklin  <jtc@hippo.cygnus.com>

	* config/tc-v850.c: New file.
	* config/tc-v850.h: New file.
	* configure (v850-*-elf): New target.
	* configure.in (v850-*-elf): New target.
	
Wed Aug 21 15:50:54 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* doc/c-d10v.texi: New file.
	* doc/all.texi: Added D10V stuff.
	* doc/as.texinfo: Added D10V stuff.

Tue Aug 20 14:10:02 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: All references to defined symbols should
 	now use the optimal instruction.  .float and .double now work. 

Mon Aug 19 14:41:36 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (fixup_segment): Adjust PC relative reloc by
	section address for the i960 as is done for the i386.

Thu Aug 15 16:37:59 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-config.in: Add wildcards for config matching, add mips-*-*
	case, forward-include bfd/elf-bfd.h.

Thu Aug 15 13:24:30 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: Add additional information to the opcode
        table to help determinine which instructions can be done
        in parallel. 

Thu Aug 15 17:01:31 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* config/tc-arm.c: Major changes to add Thumb support, with lots
 	of change input from <rearnsha@armltd.co.uk>.
	Reverted to INSN_SIZE macro, rather than insn_size variable.
	(insns): Added ARM "bx" instruction support.
	(tinsns): Added Thumb instruction definition structure.
	(arm_tops_hsh): Added hash structure for Thumb opcodes.
	(md_pseudo_table): Added ".arm", ".thumb" and ".code" pseudo-ops.
	(opcode_select,s_arm,s_thumb,s_code): Added.
	(decode_shift): Allow upper-case RRX.
	(do_ldst): Simpler halfword support.
	(do_ldmstm): Improved.
	(reg_list, do_bx, thumb_reg, thumb_add_sub, thumb_shift,
 	thumb_mov_compare, thumb_load_store, do_t_arit, do_t_add,
 	do_t_asr, do_t_branch, do_t_bx, do_t_compare, do_t_ldmstm,
 	do_t_ldrb, do_t_ldrh, do_t_lds, do_t_lsl, do_t_lsr, do_t_mov,
 	do_t_push_pop, do_t_str, do_t_strb, do_t_strh, do_t_sub, do_t_swi,
 	do_t_adr): Added.
	(md_apply_fix3): Add support for BFD_RELOC_ARM_THUMB_* relocations.
	(md_parse_option): Add support for -mthumb.
	(md_show_usage): Updated to reflect new command line option.
	(arm_data_in_code, arm_canonicalize_symbol_name): Added.
	* config/tc-arm.h: Provide TC_FIX_TYPE to allow private ARM
 	fragment information to be held.

Thu Aug 15 16:12:00 1996  Richard Earnshaw (rearnsha@armltd.co.uk)

	* tc-arm.c (md_apply_fix3): Also set fixP->fx_done if fx_addsy is 
	non-null, but is a constant.
	(fix_new_arm): Call make_expr_symbol to make the expression symbol
	so that error reporting will work correctly.

Wed Aug 14 10:37:21 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust relocs
	against weak symbols.

Tue Aug 13 17:39:24 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-ppc.h (TC_FORCE_RELOCTION): Define if OBJ_XCOFF.
	(ppc_force_relocation): Declare if OBJ_XCOFF.
	* config/tc-ppc.c (ppc_force_relocation): New function if
	OBJ_XCOFF.

Mon Aug 12 16:49:43 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.h (BYTE_ORDER): Don't define.  No longer used.

Fri Aug  9 17:48:28 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: Fix problem with relocs. 

Fri Aug  9 14:16:14 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sh.c (sh_do_align): If not BFD_ASSEMBLER, always align
	with nops if not in data_section or bss_section.

Thu Aug  8 12:32:56 1996  Klaus Kaempf  <kkaempf@progis.de>

	Add support for openVMS/Alpha.
	* as.h (PRINTF_LIKE): Don't define if VMS, for now.
	* config/obj-evax.c: New file.
	* config/obj-evax.h: New file.
	* config/tc-alpha.c: Add support for EVAX format if OBJ_EVAX is
	defined.
	* config/tc-alpha.h: Add support for EVAX format if OBJ_EVAX is
	defined.  Add case for bfd_target_evax_flavour.
	* config/vms-a-conf.h: New file.
	* conf-a-gas.com: New file.
	* configure.in: Add target alpha-*-*vms*.
	* configure: Rebuild.
	* makefile.vms: New file.
	* read.c (s_lcomm): Align bss_seg on 8 byte boundary if OBJ_EVAX.
	Don't call ffs on openVMS/Alpha.

Wed Aug  7 14:19:03 1996  Philippe De Muyter  <phdm@info.ucl.ac.be>

	* configure.in: Make GAS_CHECK_DECL_NEEDED include <string.h> or
	<strings.h> if they exist.  Call GAS_CHECK_DECL_NEEDED on strstr
	and sbrk.
	* acconfig.h (NEED_DECLARATION_STRSTR): New macro.
	(NEED_DECLARATION_SBRK): New macro.
	* configure, conf.in: Rebuild.
	* as.h: Only include <strings.h> if HAVE_STRINGS_H.
	(strstr): Declare if NEED_DECLARATION_STRSTR.
	* as.c: If HAVE_SBRK and NEED_DECLARATION_SBRK, declare sbrk.

Wed Aug  7 11:50:26 1996  Ian Lance Taylor  <ian@cygnus.com>

	* symbols.c (resolve_symbol_value): Handle addition or subtraction
	by a constant before entering the main switch.  Reject attempts to
	apply an arithmetic function to non-absolute symbols, except for
	the special case of subtraction of two symbols in the same
	section.

	* config/tc-mips.c (md_section_align): Do align if OBJ_ELF, but
	not to more than a 16 byte boundary.

	* config/tc-i386.c (tc_gen_reloc): Accept all relocs; remove
	#ifndef OBJ_ELF lines.  From Eric Valette <valette@crf.canon.fr>.
	(tc_gen_reloc): If out of memory call as_fatal rather than
	assert.  If no howto found, call as_bad_where rather than
	as_fatal.  Change the error message slightly.  Set howto to a
	non-NULL value in order to keep going.

Tue Aug  6 12:58:03 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: Added code to support 32-bit fixups for stabs.

Tue Aug  6 11:15:26 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-h8300.c (get_specific): New operand "size" derived
	from ".b", ".w" and ".l" extensions.  All callers changed.  If
	the base instruction has no operands, then use the size to
	determine which specific instruction to use.

Mon Aug  5 14:21:10 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i960.c (mem_fmt): Call parse_expr before emit.

Fri Aug  2 11:23:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (md_section_align): Don't change addr if
	OBJ_ELF.

Thu Aug  1 23:51:52 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c: Revert yesterday's changes.
	
Wed Jul 31 14:46:11 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: Disable range checking on 16-bit values.

Wed Jul 31 16:27:19 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (m68k_ip): Set ok_arch for every instruction,
	not just the ones that don't match.

Wed Jul 31 11:45:15 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: Fixed bugs in short relocs and range checking.

Wed Jul 31 15:41:42 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* config/tc-arm.c: Changed INSN_SIZE to variable insn_size, as
 	pre-cursor to adding Thumb support. Also added cpu_variant flag
 	information to each of the asm_flg structures.
	(md_parse_option): Updated ARM7 parsing to allow 't' for
 	thumb/halfword support, aswell as 'm' for long multiply.
	(md_show_usage): Updated help message.
	(md_assemble): Check that instruction flags are applicated to the
 	current cpu variant.
	(md_apply_fix3, tc_gen_reloc): Add BFD_RELOC_ARM_OFFSET_IMM8 and
 	BFD_RELOC_ARM_HWLITERAL relocation support for new halfword and
 	signextension instructions.
	(do_ldst): Generate halfword and signextension variants if
 	mnemonic flags match.
	(ldst_extend): Do not allow shifts in the offset field of halfword
 	or signextension instructions.
	(validate_offset_imm): Provide check on halfword and signextension
 	immediate range.
	(add_to_lit_pool): Merge identical literal pool values.

Tue Jul 30 14:28:23 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (selector_table): Add 'E' selector.
	(cons_fix_new_hppa): Don't coke on e_esel.
	(tc_gen_reloc, SOM version): Handle R_COMP2 when used
	to help generate exception handling tables.
	(md_apply_fix): Don't try to apply fixups with an e_esel
	selector.
	(hppa_fix_adjustable): Fixups with e_esel selectors
	are not adjustable.

Tue Jul 30 15:51:41 1996  Ian Lance Taylor  <ian@cygnus.com>

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

Fri Jul 26 11:43:03 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: Added lots of error checking.  Added hacks
	to support accumulator shifts.
	
Fri Jul 26 11:56:08 1996  Ian Lance Taylor  <ian@cygnus.com>

	* symbols.c (S_SET_EXTERNAL): Let .weak override.
	(S_CLEAR_EXTERNAL): Likewise.
	(S_SET_WEAK): Remove error; just let .weak override.

Thu Jul 25 15:22:51 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c (md_assemble): Now handles multiline
	instructions.

Thu Jul 25 12:03:33 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: Fix packaging bug. Added range checking.
	Added kludge for divs instruction.  Fixed minor problem with
	multiple text sections.
	* config/tc-d10v.h (d10v_cleanup): Change prototype. 
	
Tue Jul 23 10:49:36 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c (md_apply_fix3): Fix all instruction
	addresses to be right-shifted by 2.

Mon Jul 22 11:32:36 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: Many changes to get relocs working.
 	(register_name): No longer creates a symbol for register names.
 	(pre_defined_registers): moved to opcodes/d10v-opc.c.
	(d10v_insert_operand): Now works correctly for either container.
	* config/tc-d10v.h (d10v_cleanup): Declare. 
	
Mon Jul 22 14:01:33 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (tc_gen_reloc): BFD_RELOC_PCREL_HI16_S and
	BFD_RELOC_PCREL_LO16 are expected to be PC relative.

Mon Jul 22 12:46:55 1996  Richard Henderson  <rth@tamu.edu>

	* tc-alpha.c: Patches to track current minimum alignment to reduce
	the number of fragments created with frag_align.
	(alpha_current_align): New static variable.
	(s_alpha_text): Reset alignment to 0.
	(s_alpha_data, s_alpha_rdata, s_alpha_sdata): Likewise.
	(s_alpha_stringer, s_alpha_space): New functions.
	(s_alpha_cons, alpha_flush_pending_output): Remove functions.
	(alpha_cons_align): New function to replace both of them.
	(emit_insn): Only align if alpha_current_align is less than 2;
	reset alpha_current_align to 2.
	(s_alpha_gprel32): Likewise.
	(s_alpha_section): New function.  Basically duplicate the other
	alpha section change hooks.  Only define for ELF.
	(s_alpha_float_cons): Simplify alignment handling.
	(md_pseudo_table): Only define "rdata" and "sdata" if OBJ_ECOFF.
	If OBJ_ELF, define "section", "section.s", "sect", and "sect.s".
	Don't define the s_alpha_cons pseudo-ops.  Do define
	s_alpha_stringer and s_alpha_space pseudo-ops.
	(alpha_align): Skip if less than current default alignment.  Set
	default alignment.
	* tc-alpha.h (md_flush_pending_output): Remove.
	(md_cons_align): Add.

	* tc-alpha.c: Add oodles of function description comments.
	(md_bignum_to_chars): Remove; there are no callers.
	(md_show_usage): Mention some more variants.

Thu Jul 18 15:54:54 1996  Ian Lance Taylor  <ian@cygnus.com>

	From Andrew Gierth <ANDREWG@microlise.co.uk>:
	* configure.in (sparc-*-sysv4*): New target.
	* configure: Rebuild.

	* config/tc-sparc.c (md_pseudo_table): Change uahalf, uaword, and
	uaxword to use s_uacons.
	(sparc_no_align_cons): New static variable.
	(s_uacons): New static function.
	(sparc_cons_align): If sparc_no_align_cons is set, just clear it
	and return.

	* config/tc-sparc.c (s_common): Remove unused label allocate_bss.

	* configure.in: Add mips-*-irix6* target.  Handle Irix 6 like Irix
	5 with regard to shared libraries.
	* configure: Rebuild.

	* config/tc-m68k.c (m68k_ip): Use the correct length when
	allocating space for the unsupported architecture error message.

Thu Jul 18 12:57:10 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* configure.in (d10v-*-*): Allow d10v-*-*, don't require d10v-*-elf*.

Wed Jul 17 14:25:13 1996  Martin M. Hunt  <hunt@pizza.cygnus.com>

	* config/tc-d10v.c: New file.
	* config/tc-d10v.h: New file.
	* configure (d10v-*-elf): New target.
	* configure.in (d10v-*-elf): New target.
	
Fri Jul 12 20:54:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.c (md_parse_option): Recognize -K PIC.

Wed Jul 10 12:39:08 1996  Richard Henderson  <rth@tamu.edu>

	* config/tc-alpha.c (alpha_align): Change fill parameter
	to a pointer.  Take NULL as 0 or nop depending on section.  Change
	all callers.
	(s_alpha_align): Rename local variables.

	* doc/as.texinfo (.align): Document action of omitted
	fill parameter.

Wed Jul 10 00:23:30 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-ppc.c (md_apply_fix3): Give a useful error message
	when an unsupported PC relative reloc is seen, rather than calling
	abort.

	* app.c (do_scrub_chars): Remove not_cpp_line local variable.
	Instead, check state when '#' comment is seen.

Mon Jul  8 14:11:49 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips_regmask_frag): Only define if OBJ_ELF or
 	OBJ_MAYBE_ELF.
	(tc_gen_reloc): If fixup was changed to be PC relative, change
 	reloc type accordingly.  Use name of reloc in error message.

	* as.h: Don't define const or volatile.
	* flonum.h: Don't define const.

	* config/tc-m68k.c (tc_gen_reloc): Change the code appropriately
	if fx_pcrel is set.  Correct setting the addend case in the
	OBJ_ELF case (from Andreas Schwab
	<schwab@issan.informatik.uni-dortmund.de>).
	(md_show_usage): Correct -mfc5200 to -m5200.

Fri Jul  5 10:32:58 1996  J.T. Conklin  <jtc@rtl.cygnus.com>

	* doc/c-m68k.texi: Document -m5200 flag.
	* doc/as.texinfo: Likewise.

	* config/tc-m68k.c (m68k_ip): The coldfire does not support 8x
 	scale factor.

Fri Jul  5 11:07:24 1996  Ian Lance Taylor  <ian@cygnus.com>

	* symbols.c (S_SET_EXTERNAL): Change as_warn to as_bad.
	(S_CLEAR_EXTERNAL, S_SET_WEAK): Likewise.

Thu Jul  4 11:59:46 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (VERSION): Set to cygnus-2.7.1.

	* Released binutils 2.7.

Thu Jul  4 10:11:33 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* config/tc-mips.c (mips_ip): Only perform range check when
 	dealing with O_constant expressions.

Wed Jul  3 15:02:21 1996  J.T. Conklin  <jtc@rtl.cygnus.com>

	* m68k-parse.h (m68k_register): Add new coldfile control
	registers.

	* config/tc-m68k.c (mcf5200_control_regs): New variable, 
	array of control registers for the coldfire.
	(cpu_of_arch): Added mcf5200.
	(archs): Added mcf5200.
	(init_table): Add new control registers.
	(m68k_ip): Added support for new control registers.
	(m68k_init_after_args): Likewise.

	* config/tc-m68k.c (md_show_usage): Add -m5200 to usage text.

Wed Jul  3 16:05:50 1996  Ian Lance Taylor  <ian@cygnus.com>

	* read.h (is_it_end_of_statement): Declare.
	* read.c (is_it_end_of_statement): Remove declaration.

	* config/tc-ppc.c (ppc_elf_suffix): Correct parenthesization of ||
	within &&.
	(md_assemble): Fix handling of @l with an unsigned constant.  Add
	default case to reloc switch.

	* config/tc-i386.h (AOUT_MACHTYPE): Define as 0 if TE_386BSD.

	Based on patches from Tom Quiggle <quiggle@sgi.com>:
	* ecoff.c (last_lineno): New static variable.
	(add_procedure): Set last_lineno.
	(ecoff_directive_loc): Likewise.
	(ecoff_generate_asm_lineno): Likewise.
	(ecoff_fix_loc): New function.
	* ecoff.h (ecoff_fix_loc): Declare.
	* config/tc-mips.c (append_insn): When inserting nops, and using
	ECOFF debugging, call ecoff_fix_loc.

Tue Jul  2 23:02:12 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-h8300.c (build_bytes): If an operand type is 
	marked as SRC_IN_DST retrieve it from the "destination" op.

Sat Jun 29 13:38:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in (arm-*-riscix*): Set emulation to riscix.
	* configure: Rebuild.
	* config/te-riscix.h: New file to define TE_RISCIX.

	* config/tc-sh.h (SUB_SEGMENT_ALIGN): Define.

Fri Jun 28 15:14:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (config.status): Just run config.status as other
	tools do.

Fri Jun 28 11:09:38 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-config.in (TARGET_OS): Add definition to conf.

Thu Jun 27 20:39:40 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* config/tc-mips.c (append_insn): Parenthesize
	cop_interlocks expressions.

Thu Jun 27 12:18:26 1996  Ian Lance Taylor  <ian@cygnus.com>

	* listing.c (listing_print): Close the listing file if it is not
	stdout.  Close the other files opened for the listing.

	* config/tc-sparc.h (md_cons_align): Define.
	(sparc_cons_align): Declare.
	(HANDLE_ALIGN): Define.
	(sparc_handle_align): Declare.
	* config/tc-sparc.c (sparc_cons_align): New function.
	(sparc_handle_align): New function.
	* read.c (cons_worker): Call md_cons_align if it is defined.

	* as.h (struct frag): Add fr_file and fr_line fields.
	* frags.c (frag_new): Set fr_file and fr_line.
	(frag_var): Likewise.
	(frag_variant): Likewise.

	* as.h (struct frag): Remove unused align_mask and align_offset
	fields.

	* listing.c (calc_hex): Offset by fr_fix when examining fr_var.
	From <uddeborg@carmen.se>.

Wed Jun 26 13:21:34 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in (mips-*-osf*): New target.
	* configure: Rebuild.

	* config/tc-m68k.c: Add 68ec060 as a synonym for 68060.

Wed Jun 26 16:23:08 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* config/tc-mips.c: Added cop_interlocks, to avoid NOP insertion
 	between co-processor comparisons and branches for the VR4300.

Mon Jun 24 18:02:50 1996  Jason Molenda  (crash@godzilla.cygnus.co.jp)

	* Makefile.in (bindir, libdir, datadir, mandir, infodir, includedir,
	INSTALL_PROGRAM, INSTALL_DATA): Use autoconf-set values.
	(docdir): Removed.
	* configure.in (AC_PREREQ): autoconf 2.5 or higher.
	* doc/Makefile.in (bindir, libdir, datadir, mandir, infodir,
	includedir): Use autoconf set values.
	(docdir): Removed.

Mon Jun 24 11:58:14 1996  Ian Lance Taylor  <ian@cygnus.com>

	* listing.c (listing_eject): Don't do anything if listing is 0.
	(listing_list): Likewise.
	(listing_source_line): Likewise.
	(listing_title): Don't save title if listing is 0.
	(listing_source_file): Check listing rather than listing_tail.

	* configure.in: On alpha*-*-osf*, link against libbfd.a if not
	using shared libraries.
	* configure: Rebuild.

Fri Jun 21 18:22:23 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips_ip): In case 'i'/'j', don't require an
	absolute expression if a relocation type was specified.

Fri Jun 21 17:40:16 1996  Joel Sherrill  <joel@merlin.gcs.redstone.army.mil>

	* configure.in: Add support for *-*-rtems* configurations.
	* configure: Rebuild.

Fri Jun 21 16:01:18 1996  Richard Henderson  <rth@tamu.edu>

	* configure.in: Add alpha-*-linuxecoff* target.  Use elf for
	alpha-*-linux* target.  Force bfd_gas for alpha-*.  Require
	opcodes library for alpha.
	* configure: Rebuild with autoconf 2.10.
	* config/tc-alpha.c: Substantial rewrite to add ELF support and
	use new opcode table.
	* config/tc-alpha.h (md_undefined_symbol): Don't define.
	(LOCAL_LABEL): Define differently if OBJ_ELF.
	(FAKE_LABEL_NAME): Define if OBJ_ELF.
	* config/alpha-opcode.h: Remove.
	* config/obj-elf.h: If TC_ALPHA, define ECOFF_DEBUGGING.
	* Makefile.in (TARG_CPU_DEP_alpha): Depend upon
	include/opcode/alpha.h rather than config/alpha-opcode.h.

Thu Jun 20 19:10:28 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-aout.c (obj_emit_relocations): Give an error if the
	relocation symbol was not resolved.
	* config/obj-coff.c (do_relocs_for): Likewise.

	* write.c (adjust_reloc_syms): Refetch the symbol section after
	calling S_GET_VALUE, since it may have changed.

	* expr.c (struct expr_symbol_line): Define.
	(expr_symbol_lines): New static variable.
	(make_expr_symbol): Add entry to expr_symbol_lines.
	(expr_symbol_where): New function.
	* expr.h: Use extern on function declarations.
	(expr_symbol_where): Declare.
	* symbols.c (resolve_symbol_value): Try to use expr_symbol_where
	rather than printing the meaningless name of an expression
	symbol.

Thu Jun 20 15:57:41 1996  Ken Raeburn  <raeburn@cygnus.com>

	* config/tc-i386.c (md_number_to_chars): Deleted.
	* config/tc-i386.h (md_number_to_chars): New macro.

	* config/tc-alpha.c (build_operate_n, build_mem): Moved earlier in
	the file.
	(load_symbol_address, load_expression): Use build_mem.
	(build_operate): New function.
	(emit_addq_r): Use it.

	Wed Mar 13 22:14:14 1996  Pat Rankin  <rankin@eql.caltech.edu>

	* symbols.c (colon):  #if VMS, use S_SET_OTHER to store `const_flag'.

	Tue Mar  5 14:31:45 1996  Pat Rankin  <rankin@eql.caltech.edu>

	* config/tc-vax.h (NOP_OPCODE): Define.

	Sun Feb  4 21:01:03 1996  Pat Rankin  <rankin@eql.caltech.edu>

	* config/obj-vms.h (S_IS_COMMON): Define.
	(S_IS_LOCAL): Check for \002 as well as \001.
	(LONGWORD_ALIGNMENT): New macro.
	(SUB_SEGMENT_ALIGN): Use it.

	Fri Jan 26 17:44:09 1996  Pat Rankin  <rankin@eql.caltech.edu>

	* config/vms-conf.h: Reconcile with conf.in.

Wed Jun 19 11:31:50 1996  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (is_dnrange): Only define if TC_GENERIC_RELAX_TABLE is
	defined.

	* doc/as.texinfo: Document that any number of hex digits can
	follow \x.

	* as.c (struct defsym_list): Define.
	(defsyms): New static variable.
	(parse_args): Just put --defsym arguments on defsyms list, rather
	than defining them.
	(main): Define defsyms after output file is created.

	* config/tc-m68k.c (m68k_ip): Reject PRE and POST indexing mode on
	cpu32.  From Eric Norum <Eric.Norum@usask.ca>.

	* config/tc-mips.c (mips_ip): In cases 'I', 'i', and 'j', set
	insn_error rather than calling check_absolute_expr.

	* as.c (emulation_name): Remove unused static variable.
	(default_emul_bfd_name): Add return NULL to avoid warning.
	* ecoff.c (ecoff_stab): Remove unused variables name and
	name_end.
	* frags.c (frag_new): Remove unused variable tmp.
	* hash.c (hash_grow): Parenthesize + within <<.
	(hash_print_statistics): Use %lu, not %d, to print unsigned
	long variables.
	* messages.c: Include "libiberty.h".
	(fprint_value): Add cast to avoid printf warning.
	(sprint_value): Likewise.
	* read.c: Include "ecoff.h".
	(emit_expr): Add casts to avoid printf warnings.
	* read.h: Use extern for function declarations.
	(pop_insert): Declare.
	* stabs.c: Include "ecoff.h".
	* subsegs.c (subseg_set_rest): Remove unused variables tmp,
	former_last_fragP, and new_fragP.
	* subsegs.h (subsegs_print_statistics): Declare.
	* symbols.c (debug_verify_symchain): Change macro to discard
	arguments.
	* write.c (dump_section_relocs): Likewise.
	* write.h: Use extern for function declarations.
	(write_print_statistics): Declare.
	* config/e-mipsecoff.c (mipsecoff_bfd_name): Return NULL to avoid
	warning.
	* config/e-mipself.c (mipself_bfd_name): Likewise.
	* config/obj-elf.h (elf_ecoff_set_ext): Declare.

	* config/tc-sparc.h (TC_RELOC_RTSYM_LOC_FIXUP): If OBJ_ELF, always
	emit relocations against external symbols.

	* config/tc-alpha.c (tc_gen_reloc): Output a sensible error
 	message if bfd_reloc_type_lookup fails, rather than calling
 	assert.

	* config/tc-alpha.c (alpha_force_relocation): Add
	BFD_RELOC_12_PCREL to switch.

Tue Jun 18 20:29:57 1996  Doug Evans  <dje@canuck.cygnus.com>

	* config/tc-i386.h (LOCAL_LABEL,FAKE_LABEL_NAME): Use defaults for
	TE_PE (Lfoo, not .Lfoo).

Tue Jun 18 17:13:33 1996  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (s_fill): Don't warn about a zero repeat count.

	* config/tc-mips.c (mips_ip): Don't warn about using AT as a
	coprocessor register.

	* config/tc-i386.c (md_assemble): When checking the size of a
	register to set the size of an instruction, do a bitwise and with
	Reg8 and Reg16 rather than requiring the type to be exactly Reg8
	or Reg16.

Tue Jun 18 13:19:51 1996  Jeffrey A. Law  <law@rtl.cygnus.com>

	* config/tc-h8300.c (parse_reg): Tweak error messages.
	(build_bytes): Likewise.
	(skip_colonthing): Handle :32 suffix.
	(get_specific): Promote L_24 to L_32 if it makes a match.
	Don't always promote L_8 to L_16.
	(do_a_fix_imm): Clean up L_32 and L_24 handling.

	* config/tc-h8300.c (Smode): New variable.
	(h8300hmode): Turn off Hmode.
	(h8300smode): New function.  Turn on Smode and Hmode.
	(md_pseudo_table): New ".h8300s" pseudo-op.
	(parse_reg): Handle "exr" register.
	(get_operand): Handle bizarre syntax for "stm.l" and "ldm.l".
	Handle "mach" and "machl" operands for ldmac.
	(get_specific): Handle "stm.l" and "ldm.l".
	(build_bytes): Handle "stm.l" and "ldm.l"; handle MACREG operands.
	* config/tc-h8300.h (COFF_MAGIC): Handle H8/S magic number.
	(Smode): Declare.

Mon Jun 17 15:50:53 1996  J.T. Conklin  <jtc@rtl.cygnus.com>

	* doc/as.texinfo: Reorder chapter of machine dependent options so
 	that it is sorted by chip name.  

	* doc/as.texinfo: Use consistant spelling of Vax.
	* doc/c-vax.texi: Likewise.

Mon Jun 17 11:26:56 1996  Jeffrey A. Law  <law@rtl.cygnus.com>

	* config/tc-hppa.c (md_pseudo_table): Add ".begin_try" and ".end_try"
	pseudo ops.
	(tc_gen_reloc, SOM version): Handle R_BEGIN_TRY and R_END_TRY.
	(md_apply_fix): Likewise.
	(pa_try): New function.
	(hppa_force_relocation): Force relocs for BEGIN_TRY and END_TRY.

Sun Jun 16 22:57:47 1996  Jeffrey A. Law  <law@rtl.cygnus.com>

	* config/tc-hppa.c (md_pseudo_table): Add ".level" pseudo op.
	(pa_level): New function.

Fri Jun 14 20:06:44 1996  Ian Lance Taylor  <ian@cygnus.com>

	* listing.c (listing_newline): Don't do anything if listing is 0.

Thu Jun 13 17:50:54 1996  Ian Lance Taylor  <ian@cygnus.com>

	* subsegs.c (section_symbol): If symbol_table_frozen is set, call
	symbol_create, not symbol_new.

Wed Jun 12 14:10:44 1996  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (adjust_reloc_syms): Don't set sy_used_in_reloc for an
	absolute symbol unless TC_FORCE_RELOCATION returns true.

	* config/obj-coff.c (previous_file_symbol): Remove BFD_ASSEMBLER
	version.
	(c_dot_file_symbol): BFD_ASSEMBLER version: Don't set the value of
	the symbol to a pointer.  Don't set previous_file_symbol.
	Simplify symbol list rearrangement.
	(coff_frob_symbol): Don't do anything with C_FILE symbols.
	(coff_adjust_symtab): Don't check previous_file_symbol.

Mon Jun 10 14:52:29 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.c (ppc_elf_lcomm): New function for .lcomm
	directive.
	(md_pseudo_table): Add ppc_elf_lcomm.

Mon Jun 10 11:45:51 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (m68k_ip): Accept ABSL for 'O', so that `bfextu
	d0{24:1},d0' works without an immediate prefix on the bit numbers.
	(md_begin): Add digits to alt_notend_table.
	(md_parse_option): Make s a const pointer.

	* config/tc-sparc.c (md_pseudo_table): Add "empty".
	(s_empty): New static function.

	* config/obj-coff.c (struct filename_list): Only define if not
	BFD_ASSEMBLER.
	(filename_list_head, filename_list_tail): Likewise.
	(c_section_symbol): Remove unused BFD_ASSEMBLER version.
	(obj_coff_endef, BFD_ASSEMBLER version): Don't set the debugging
	flag for C_MOS, C_MOE, C_MOU, or C_EOS symbols, since they should
	have a section of N_ABS rather than N_DEBUG.  If we do a merge,
	remove the new symbol from the list.
 	(obj_coff_endef, both versions): Call tag_insert even if there is
	an old symbol with the same name, if the old symbol does not
	happen to be a tag.
	(coff_frob_symbol): Check SF_GET_TAG, C_EOF, and C_FILE outside of
	the SF_GET_DEBUG condition.  Don't call SA_SET_SYM_ENDNDX with a
	symbol that will be moved to the end of the symbol list.
	(coff_adjust_section_syms): Always call section_symbol for .text,
	.data, and .bss.
	(coff_frob_section): Likewise.  Also, remove unused variable
	strname.

	* config/tc-ns32k.c (convert_iif): Call frag_grow rather than
	manipulating frags directly.
	(md_number_to_field): Adjust mem_ptr correctly if ENDIAN is
	defined.

	* app.c (do_scrub_chars): If '/' is LINE_COMMENT_START, check
 	whether the next character is '*' before checking whether we are
	at the start of a line.  Permit LINE_COMMENT_START to start a
	comment in state 1 (seen some whitespace) as well, to match the
	documentation.

	* gasp.c (do_align): Permit a fill value for .align.

Wed Jun  5 17:09:26 1996  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (next_char_of_string): Warn if a newline is seen in the
	middle of a string.  Call bump_line_counters when appropriate.

Wed Jun  5 17:08:36 1996  Richard Henderson  <rth@tamu.edu>

	* symbols.c (colon): Use LOCAL_LABEL.

Tue Jun  4 10:55:16 1996  Tom Tromey  <tromey@csk3.cygnus.com>

	* Makefile.in (install): Don't check to see if tooldir exists.
	Make $(tooldir) and $(tooldir)/bin.

Tue Jun  4 10:14:53 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/ppc-sol.mt (TDEFINES): Don't turn on -mregnames by
	default.

Mon Jun  3 11:34:41 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips_ip): Don't call as_warn if we are setting
	insn_error.  Don't put the string "ERROR" in insn_error.  Set
	insn_error rather than calling as_warn for an unsupported opcode.

Sat Jun  1 21:51:55 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (md_parse_option): Check for a 64 bit format
	before permitting -64.
	* output-file.c (output_file_create): Remove duplicate
	bfd_perror.

Fri May 31 01:08:06 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (md_begin): If -64, create a .MIPS.options
	section rather than a .reginfo section.
	(mips_elf_final_processing): If -64, write out 64 bit RegInfo
	information.

	* config/tc-mips.c (load_register): If mips_isa < 3, permit a 32
	bit value with the high bit set.

Thu May 30 19:00:19 1996  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (s_lcomm): Set section flags for .sbss section.

	* config/tc-mips.c (mips_64): New static variable.
	(mips_target_format): If mips_64, return elf64 targets rather than
	elf32 ones.
	(md_longopts): Add "32" and "64".
	(md_parse_option): Handle -32 and -64.
	(md_show_usage): Mention -32 and -64.
	(cons_fix_new_mips): If mips_64, don't convert an 8 byte reloc to
	a 4 byte one.

Thu May 30 10:36:19 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.c (comment_chars): Make '!' a comment character
	for Solaris compatibility.

	* stabs.c (s_stab_generic): Under PowerPC Solaris, convert a
	.stabd with 4 arguments into a .stabn.

Wed May 29 16:43:16 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (macro): When passing X_add_number to
	macro_build, cast it to int first.

Tue May 28 13:29:39 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-z8k.c (md_apply_fix): Handle fx_r_type of 0, as
	created by emit_expr.

	* symbols.c (symbol_create): If bfd_make_empty_symbol fails, call
	as_perror rather than assert.

Fri May 24 18:24:11 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips_ip): Mark sections created to hold
	floating point information as read only.

Fri May 24 12:07:54 1996  David Edelsohn  <edelsohn@mhpcc.edu>

	* config/tc-ppc.c (ppc_set_cpu): Change defaults to match AIX.

Thu May 23 17:34:24 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* read.c (potable): Add .skip as a synonym for .space.

	* stabs.c (s_stab_generic): For PowerPC ELF, allow .stabd to take
	4 arguments, providing the 4th argument is 0, to allow
	compatibility with the Solaris assembler.

Thu May 16 15:51:48 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sh.h (struct sh_segment_info_type): Define.
	(TC_SEGMENT_INFO_TYPE): Define.
	(sh_frob_label): Declare.
	(tc_frob_label): Define.
	(sh_flush_pending_output): Declare.
	(md_flush_pending_output): Define.
	* config/tc-sh.c (md_assemble): If relaxing, emit a R_SH_CODE
 	reloc before the instruction if necessary.
	(sh_frob_label): New function.
	(sh_flush_pending_output): New function.
	(sh_coff_frob_file): Ignore ALIGN, CODE, DATA, and LABEL relocs
	when looking for the reloc for the target of .uses.
	(md_convert_frag): Fix printf format (%0xlx to 0x%lx).
	(sh_force_relocation): Force CODE, DATA, and LABEL relocs to be
	emitted.
	(md_apply_fix): Ignore CODE, DATA, and LABEL relocs.
	(sh_coff_reloc_mangle): Force CODE, DATA, and LABEL relocs to use
	the absolute symbol.

	* subsegs.h (segment_info_type): Add tc_segment_info_data field if
	TC_SEGMENT_INFO_TYPE is defined.

Wed May 15 12:23:53 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (md_assemble): Make sure the opcode suffix
	matches the register size.

Wed May 15 08:33:37 1996  Jeffrey A Law  (law@cygnus.com)

	* config/obj-coff.c (count_entries_in_chain): Ignore Fixups with
	fx_done set. 
	(do_relocs_for): Likewise.
	(fixup_segment): Don't just quit if linkrelax is set.  Try to
	apply non pc-relative sym1-sym2 fixups, even if linkrelax is
	nonzero.

Fri May 10 14:16:59 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.c (ppc_elf_validate_fix): Allow GOT and section
	relative relocations with -mrelocatable.  Also allow unfixed
	relocs in .ex_shared.

Tue May  7 11:24:10 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (yank_symbols): Check that FNAME_OFFSET is
	non-zero before assuming this is a long file name.
	(w_strings): Likewise.
	(c_dot_file_symbol): Set FNAME_OFFSET to 1 for a long file name.

	* config/obj-coff.c (w_strings): Move declaration of i inside
	#ifdef block which uses it.

Tue May  7 00:49:58 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-h8300.c (do_a_fix_imm): Rename last argument to
	"relaxmode".  Output relocs which identify various relaxing
	possibilities for mov.[bwl] instructions.
	(build_bytes): Pass in a relaxing mode to do_a_fix_imm.

Mon May  6 15:26:28 1996  Doug Evans  <dje@canuck.cygnus.com>

	* config/tc-arm.h (TC_HANDLES_FX_DONE): Define.
	(MD_APPLY_FIX3): Define.
	* config/tc-arm.c (my_get_expression): Only watch for bad segments
	if OBJ_AOUT.
	(md_apply_fix3): Renamed from md_apply_fix.
	If pcrel reloc and symbol is in different section, undo effects
	of md_pcrel_from.

Sat May  4 12:49:35 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (hppa_fix_adjustable): Don't adjust
	any reloc with an LR% or RR% field selector for SOM.

Sat May  4 11:26:19 1996  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in: Add subsegs.h to appropriate TARG_CPU_DEP_*
 	variables.

Fri May  3 17:58:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (coff_frob_symbol): Don't merge a symbol with
	SF_GET_STATICS set.
	(yank_symbols): Likewise.

Wed May  1 13:38:17 1996  Ian Lance Taylor  <ian@cygnus.com>

	* subsegs.h (segment_info_type): If MANY_SEGMENTS and not
	BFD_ASSEMBLER, add name field.
	* config/obj-coff.c: Include "libiberty.h".
	(coff_header_append): Handle long section names.
	(crawl_symbols): Just use the name field for the symbol name,
	without worrying about null byte termination.
	(w_strings): Handle long section names.
	(write_object_file): Likewise.  Also, use the name field, rather
	than scnhdr.s_name.
	(obj_coff_add_segment): Permit long section names.
	(obj_coff_init_stab_section): Use the name field, rather than
	scnhdr.s_name.
	(adjust_stab_section): Likewise.
	* config/te-pe.h (COFF_LONG_SECTION_NAMES): Define.

	* config/tc-i960.c (brtab_emit): Don't set fx_im_disp field.
	(mem_fmt): Likewise.
	(md_apply_fix): Don't check fx_im_disp field.

Thu Apr 25 11:39:51 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Add * after sparc*-*-vxworks.
	* configure: Rebuild.

	* app.c (do_scrub_begin): If tc_comment_chars is not defined,
	define it to comment_chars.  Use tc_comment_chars rather than
	comment_chars.
	(do_scrub_chars): Use tc_comment_chars rather than comment_chars.
	* config/tc-m68k.h (tc_comment_chars): Define.
	(m68k_comment_chars): Declare.
	* config/tc-m68k.c (m68k_comment_chars): Rename from
	comment_chars.  Change into a pointer rather than an array.
	(md_longopts): Add "bitwise-or".
	(md_parse_option): Handle OPTION_BITWISE_OR.
	(md_show_usage): Mention --bitwise-or.
	* doc/c-m68k.texi: Document --bitwise-or.

Wed Apr 24 11:28:38 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (m68k_ip): Prevent attempts to use long offsets
 	in 68000 mode.

	* config/obj-coff.c (obj_coff_section): BFD_ASSEMBLER version:
	call demand_empty_rest_of_line.  Non BFD_ASSEMBLER version:
	correct handling of input line pointer, and call
	demand_empty_rest_of_line.

Mon Apr 22 18:02:37 1996  Doug Evans  <dje@blues.cygnus.com>

	* config/tc-sparc.c (in_bitfield_range): New static function.
	(sparc_ip): New cases X,Y.  Use SPARC_OPCODE_ARCH_V9_P.
	(md_apply_fix, cases BFD_RELOC_32_PCREL_S2,
	BFD_RELOC_SPARC_{WDISP16,WDISP19}): Fix undefined code.
	(md_apply_fix): New cases BFD_RELOC_SPARC_[56].
	(tc_gen_reloc): New cases BFD_RELOC_SPARC_[56].

Thu Apr 18 18:58:33 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c: BFD_ASSEMBLER:
 	(coff_last_bf): New static variable.
	(coff_frob_symbol): Set endndx of a .bf symbol.
	Non BFD_ASSEMBLER:
	(obj_coff_endef): Call SF_SET_PROCESS on a .bf symbol.
	(last_bfP): New static variable.
	(yank_symbols): Set endndx of a .bf symbol.

Thu Apr 18 11:53:58 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.c (md_parse_option): Add support for Solaris's -le
	and -s options.  Add -be for good measure.

Wed Apr 17 12:31:01 1996  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (s_space): Support non-constant fill value.  Handle fill
	value correctly for a size other than 1.

Tue Apr 16 15:17:40 1996  Doug Evans  <dje@canuck.cygnus.com>

	* config/tc-arm.c (my_get_float_expression): Update call to
	gen_to_words, X_PRECISION changed from 6 to 5.

Tue Apr 16 10:25:42 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.c (register_name,reg_name_search): Move register
	name lookup from PE specific code to all targets.  Add support for
	-mregnames/-mno-regnames to control whether register names are
	expanded or not.
	(md_assemble): Call register_name for all platforms.
	(md_parse_option): Add support for -mregnames/-mno-regnames.

	* configure.in (powerpcle*-*-solaris): Add support.
	(powerpc*-*-linux): Ditto.
	* configure: Regenerate.

	* config/ppc-sol.mt: New config file for PowerPC Solaris.

Mon Apr 15 12:26:33 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (mips_frob_file): Permit multiple %hi relocs to
	be associated with a single %lo reloc.

	* config/tc-mips.c (load_address): Cast X_add_number to valueT
	before comparing against MAX_GPREL_OFFSET, so that negative
	numbers are handled correctly.
	(macro): Likewise.

Thu Apr 11 12:39:02 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sparc.c (last_insn): New static variable.
	(md_assemble): Warn about putting floating point branches in a
	delay slot.  If architecture is less than v9, insert NOP
	instructions between floating point instructions and floating
	point branches.  (The SunOS assembler does both these operations.)
	Save the last instruction opcode.
	(sparc_ip): Add pinsn parameter.  Change caller.

	* config/tc-m68k.c (md_estimate_size_before_relax): Correct check
	for byte jump to next instruction to skip empty frags.

Wed Apr 10 16:48:12 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-alpha.c (alpha_ip): If we are going to call emit_add64
	for addq with a 16 bit signed value, just emit a lda instruction
	instead.

Wed Apr 10 14:34:49 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-h8300.c (do_a_fix_imm): Don't cut off high bits
	of a 32bit operand.

Mon Apr  8 14:42:53 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Permit --enable-shared to specify a list of
	directories.
	* configure: Rebuild.

Fri Apr  5 17:01:35 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-h8300.c (get_specific): Remove some #if 0 code.
	(build_bytes): Remove all ABSMOV related code; it's unnecessary.

Fri Apr  5 15:13:10 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/atof-ieee.c: Fix handling of denormalized extended
	precision numbers and overflow/underflow detection.
	(MAX_PRECISION, X_PRECISION, P_PRECISION): Changed from 6 to 5, to
	not include the 16 bit gap in the m68k extended precision format.

Fri Apr  5 14:29:23 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Add i386-*-freebsdelf* target; from John Polstra
	<jdp@polstra.com>.
	* configure: Rebuild.

Fri Apr  5 18:39:28 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* config/tc-mips.c: Allow non-zero offsets from .sdata symbols to
 	be accessed using the $gp register.
	* config/tc-mips.h (MAX_GPREL_OFFSET): Added.

Wed Apr  3 10:56:14 1996  Doug Evans  <dje@canuck.cygnus.com>

	* config/tc-sparc.c (sparc_md_end): Set bfd machine number to
	bfd_mach_sparc_sparclet if current_architecture is sparclet.

Mon Apr  1 16:55:44 1996  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (get_line_sb): Bump line counters based on
	input_line_pointer[-1], not *input_line_pointer.  Don't bother to
	call LISTING_NEWLINE.
	(s_macro): Don't call demand_empty_rest_of_line.
	* app.c (do_scrub_chars): When handling C style comments, unget
	ch2 rather than ch.

Fri Mar 29 16:15:06 1996  Ian Lance Taylor  <ian@cygnus.com>

	* read.h (enum linkonce_type): Define.
	(s_linkonce): Declare.
	* read.c (potable): Add "linkonce".
	(s_linkonce): New function.
	* subsegs.h (segment_info_type): Add linkonce field to
	MANY_SEGMENTS && ! BFD_ASSEMBLER section.
	* config/obj-coff.h (obj_handle_link_once): Define if TE_PE.
	(obj_coff_pe_handle_link_once): Declare if TE_PE.
	* config/obj-coff.c: If TE_PE and not BFD_ASSEMBLER, #include
	"coff/pe.h".
	(obj_coff_pe_handle_link_once): New function, defined if TE_PE.
	(c_section_symbol): If TE_PE, set the x_comdat field in the aux
	entry based on the linkonce field in segment_info.
	* doc/as.texinfo: Document .linkonce.

Fri Mar 29 11:31:27 1996  J.T. Conklin  (jtc@lisa.cygnus.com)

	* doc/as.1: Changed to be recognized by catman -w on Solaris.

Thu Mar 28 15:27:47 1996  Ian Lance Taylor  <ian@cygnus.com>

	* stabs.c (s_stab_generic): Call the listing functions before
	doing the rest of the processing, which may involve freeing the
	string.  Pass string, not string + stroff, to OBJ_PROCESS_STAB in
	SEPARATE_STAB_SECTIONS case.

	* config/tc-hppa.c: Remove nested comment.
	(tc_gen_reloc): Move label done inside the ifdef in which it is
	used.
	(md_apply_fix): Pass pointers to correct types to libhppa.h
	functions.  Always return a value.

	* config/tc-mips.h (tc_frob_file): Define.
	(mips_frob_file): Declare.
	* config/tc-mips.c (struct mips_hi_fixup): Define.
	(mips_hi_fixup_list): New static variable.
	(imm_unmatched_hi): New static variable.
	(md_assemble): Clear imm_reloc, imm_unmatched_hi, and
	offset_reloc.  Pass imm_unmatched_hi to append_insn.
	(append_insn): Add unmatched_hi parameter.  If it is set, add the
	new fixup to mips_hi_fixup_list.  Change all callers.
	(mips_ip): Set imm_unmatched_hi when appropriate.
	(mips_frob_file): New function.

Thu Mar 28 11:47:59 1996  Doug Evans  <dje@canuck.cygnus.com>

	* configure.in (sparc-*-solaris2*): Renamed from sparc*-*-solaris2*.
	* configure: Regenerated.

Tue Mar 26 18:19:12 1996  Ian Lance Taylor  <ian@cygnus.com>

	* as.c (main): Call bfd_set_error_program_name.

Fri Mar 22 11:13:00 1996  Ian Lance Taylor  <ian@cygnus.com>

	* as.h (strdup): Don't declare.
	* stabs.c: Include libiberty.h
	(get_stab_string_offset): Use xstrdup rather than strdup.
	(s_stab_generic): Likewise.
	* as.c (parse_args): Likewise.
	* read.c (s_mri_sect): Likewise.

	* gasp.c (change_base): Recognize \(...) construct documented to
	pass through enclosed characters literally through to the output.
	(process_assigns): Likewise.  Also, be more careful to avoid
	looking past the end of the buffer.

Thu Mar 21 13:18:43 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (md_parse_option): If OBJ_ELF, ignore -k for
	FreeBSD compatibility.  From John Polstra <jdp@polstra.com>.

Wed Mar 20 18:13:32 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* doc/as.texinfo, doc/c-i960.texi: Fix typos.

Wed Mar 20 17:05:16 1996  David Mosberger-Tang  <davidm@azstarnet.com>

	* config/alpha-opcode.h: Added cvtst instruction.

Mon Mar 18 13:12:46 1996  Ian Lance Taylor  <ian@cygnus.com>

	* ecoff.c (ecoff_stab): Don't try to make a symbol out of the stab
	string.  Extract the addend from the result of expression.

Fri Mar 15 17:10:43 1996  Ian Lance Taylor  <ian@cygnus.com>

	* app.c (do_scrub_chars): If whitespace is seen in state 11, and
	LABELS_WITHOUT_COLONS is not defined, and we are not in m68k MRI
	mode, change the state to 3 rather than 1.

Thu Mar 14 18:18:25 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.h (C_REGISTER_SECTION): Change from 20 to 50, to
	correspond to 11 March change.

Thu Mar 14 15:27:10 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-h8300.c (build_bytes, MEMIND case): Generate
	an R_MEM_INDIRECT reloc rather than R_RELBYTE.

Tue Mar 12 12:21:10 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Rebuild with autoconf 2.8.

Mon Mar 11 18:57:12 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/atof-ieee.c (gen_to_words): Improve handling of
	X_PRECISION numbers.  Based on patches from Andreas Schwab
	<schwab@issan.informatik.uni-dortmund.de>.

Mon Mar 11 09:59:53 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	* as.h (SEG_NORMAL, SEG_LIST): Bump segment limit from 10 to 40.
	(SEG_LAST): New.
	* subsegs.c (MANY_SEGMENTS): Increase segment limit.
	* obj-coff.c (seg_N_TYPE, seg_info_off_by_4): Likewise.
	(do_relocs_for, w_symbols, obj_coff_add_segment, do_linenos_for,
	crawl_symbols, coff_header_append): Loop to SEG_LAST rather than
	SEG_E9.
	
Thu Mar  7 15:17:39 1996  Doug Evans  <dje@charmed.cygnus.com>

	* config/tc-sparc.c (sparc_ip): Handle operand char 'O' (neg reg).

Thu Mar  7 09:19:15 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (SUBSEG_MILLI): Define.
	(pa_def_subspaces): Add $MILLICODE$.
	(pa_spaces_begin): Set section flags for $MILLICODE$.

Wed Mar  6 14:11:30 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-elf.c (obj_elf_section): Only SEC_LOAD if the type is
	not SHT_NOBITS.  Don't tamper with flags based on type if a
	special section was found (revert Feb 29 change).

	* config/tc-sh.c (sh_do_align): Only align using the nop pattern
	if aligning to a longword boundary or greater.

Tue Mar  5 15:10:43 1996  Jim Wilson  <wilson@chestnut.cygnus.com>

	* config/tc-sh.c (sh_do_align): Pass 1 not 2 to frag_align.

Mon Mar  4 20:50:57 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	* configure.in (i386-*-cygwin32): Don't use bfd_gas.
	* configure: Regenerated.

Mon Mar  4 10:13:06 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c: Add default definitions for R_N0SEL and
	R_N1SEL since they're not defined for old versions of hpux.

	* config/tc-hppa.c (tc_gen_reloc): Fix typo in R_COMP2 code.
	Set "sym_ptr_ptr" and "addend" fields to dummy values for
	R_N0SEL and R_N1SEL.

Fri Mar  1 10:20:52 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* flonum-konst.c: Add two more constants for 1e+-2048 and
	1e+-4096, and correct the other constants.

	* symbols.c (resolve_symbol_value): Handle O_logical_not.

Thu Feb 29 13:58:35 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/obj-elf.c (obj_elf_section): Allow predefined section
	types to set the nobits type.  Avoid a shadowed declaration.

Wed Feb 28 15:38:56 1996  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (hppa_fix_adjustable): For SOM, don't
	reduce relocs using e_nlrsel field selectors.

	* write.c (fix_new_exp): Don't use #elif.  Some compilers
	don't handle it.

	* config/tc-hppa.c (selector_table): Add "n", "nl", and "nlr" to
	the selector table.
	(pa_chk_field_selector): Handle new field selectors for SOM.

Tue Feb 27 14:42:27 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* configure.in (m68k-*-linux*aout*, m68k-*-linux*): New targets.
	* configure: Rebuild.
	* config/te-linux.h (LOCAL_LABELS_FB): Define.
	* config/tc-m68k.h (TARGET_FORMAT) [TE_LINUX]: Define to
	"a.out-m68k-linux".
	* config/tc-m68k.c (comment_chars): Don't include '#' if TE_LINUX
	is defined.

Mon Feb 26 18:58:58 1996  Stan Shebs  <shebs@andros.cygnus.com>

	* mpw-make.sed: Update to handle shared library support.

Mon Feb 26 10:34:10 1996  Doug Evans  <dje@charmed.cygnus.com>

	* config/tc-sparc.c (sparc_ip): Print all architectures that support
	the insn on mismatch.

Fri Feb 23 21:44:39 1996  Rob Savoye  <rob@chinadoll.cygnus.com>

	* configure.in: Add support for a29-coff.
	* configure: Rebuild.

Thu Feb 22 16:39:43 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sh.c (sh_coff_frob_file): Don't consider the address
	of the section when looking for the R_SH_USES fixup, because the
	frag addresses have not yet been adjusted.

	* gdbinit.in: Set a breakpoint on as_warn_where.

	* config/tc-mips.c (macro): Add missing arguments to macro_build
	omitted in last change.  From Jim Wilson <wilson@cygnus.com>.

Wed Feb 21 17:00:32 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-h8300.c (tc_reloc_mangle): Change reloc based on size
	if it is TC_CONS_RELOC.  Set a size of 4 to R_RELLONG.

Wed Feb 21 09:25:39 1996  Doug Evans  <dje@charmed.cygnus.com>

	* config/tc-sparc.c (sparc_ip): Recognize %asr0 for v8.

Tue Feb 20 21:48:03 1996  Doug Evans  <dje@charmed.cygnus.com>

	* config/tc-sparc.c (parse_keyword_arg): Accept leading '%'.
	(sparc_ip): Accept %asr[1..31] for v8 and %asr[%16..31] for v9.
	Recognize [uU] format args as sparclet cpregs.

Tue Feb 20 22:25:55 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sh.c (sh_handle_align): Don't emit R_SH_ALIGN relocs
	in bss_section.

Mon Feb 19 14:16:24 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sparc.h (TC_RELOC_RTSYM_LOC_FIXUP): Check S_IS_WEAK as
	well as S_IS_EXTERNAL.
	(tc_fix_adjustable): Likewise.
	* config/tc-sparc.c (md_apply_fix): In OBJ_ELF case, check for
	S_IS_WEAK as well as S_IS_EXTERNAL when deciding whether to return
	early.
	(tc_gen_reloc): Check S_IS_WEAK as wel as S_IS_EXTERNAL when
	deciding whether to convert BFD_RELOC_32_PCREL_S2 if PIC.

Mon Feb 19 02:15:57 1996  Doug Evans  <dje@charmed.cygnus.com>

	* config/tc-sparc.c (max_architecture): Change to sparclite for
	32 bit arch.
	(default_compatible): Delete.
	(sparc_ffs): New function.
	(md_begin): Only call SPARC_OPCODE_CONFLICT_P once.
	(sparc_ip): Rewrite architecture match and bump logic.

Sun Feb 18 15:03:50 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Check for 'do not mix' from native linker before
 	trying to use -rpath.
	* configure: Rebuild.

Fri Feb 16 16:53:31 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.h (SF_ADJ_LNNOPTR): Define (non BFD_ASSEMBLER).
	(SF_GET_ADJ_LNNOPTR): Define (non BFD_ASSEMBLER).
	(SF_SET_ADJ_LNNOPTR): Define (non BFD_ASSEMBLER).
	* config/obj-coff.c (obj_coff_endef): Set ADJ_LNNOPTR when LNNOPTR
	is set.
	(w_symbols): If ADJ_LNNOPTR is set, add the section lnnoptr field
	to the symbol lnnoptr field, to get the correct file offset.

Thu Feb 15 14:48:38 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/obj-elf.c (elf_frob_symbol): On the PowerPC, force all
	symbols that are not function, file, or section symbols to be
	object types.

Thu Feb 15 11:20:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure: Set and substitute RPATH_ENVVAR.
	* configure: Rebuild.
	* Makefile.in (RPATH_ENVVAR): New variable.
	(check): Use $(RPATH_ENVVAR) rather than LD_LIBRARY_PATH.

	* configure.in: Accept i686.  From H.J. Lu <hjl@zoom.com>: i386
	doesn't need opcodes.  If configuring shared, opcodes needs bfd.
	* configure: Rebuild.

Wed Feb 14 16:33:12 1996  Martin Anantharaman  <martin@mail.imech.uni-duisburg.de>

	* read.c (s_mri_sect): Don't return '\0' in type.  Set all
	appropriate flags in BFD section.

	* configure.in (m68k-*-psos*): New target.
	* configure: Rebuild.
	* config/te-psos.h: New file.
	* config/tc-m68k.c (comment_chars): Don't include '#' if TE_PSOS
	is defined.

Wed Feb 14 13:43:24 1996  Ian Lance Taylor  <ian@cygnus.com>

	From Alan Modra <alan@spri.levels.unisa.edu.au>:
	* configure.in: Remove duplicate setting of cpu_type.  Check
	whether opcodes library is required for on all targets, not just
	primary one.
	* configure: Rebuild.

	* config/tc-mips.c (mips_big_got): New static variable.
	(s_extern): Don't declare.
	(reg_needs_delay): New static function.
	(macro_build): Permit GOT/CALL_HI/LO relocs.
	(macro_build_lui): If place is not NULL, use the number in the
	expression.
	(load_address): Handle mips_big_got case.
	(macro): Handle mips_big_got for M_LA_AB, M_JAL_A, and load and
	store macros.
	(OPTION_XGOT): Define.
	(md_longopts): Add "xgot" if OBJ_ELF.
	(md_parse_option): Handle -xgot.
	(md_show_usage): Mention -xgot.
	(md_apply_fix): Permit GOT/CALL_HI/LO relocs.
	(tc_gen_reloc): Handle GOT/CALL_HI/LO relocs.

Wed Feb 14 11:22:27 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/tc-m68k.c (m68k_ip) [operand kind '#']: When fixing
	the byte relocation, point it to the low byte of the word.

Tue Feb 13 15:31:18 1996  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Set HDLFLAGS for *-*-hpux with --enable-shared.
	* configure: Rebuild.

Mon Feb 12 15:53:46 1996  Doug Evans  <dje@charmed.cygnus.com>

	* configure.in: Recognize any sparc* cpu.
	* configure: Regenerated.

Mon Feb 12 15:41:21 1996  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (potable): Add "mri" and ".mri".
	(s_mri): New function.
	* read.h (s_mri): Declare.
	* app.c (scrub_m68k_mri): New static variable.
	(mri_pseudo): New static variable.
	(do_scrub_begin): Add m68k_mri parameter.  Use it rather than
	flag_m68k_mri.  Initialize scrub_m68k_mri.
	(mri_state, mri_last_ch): New static variables.
	(struct app_save): Add scrub_m68k_mri, mri_state, and mri_last_ch
	fields.
	(app_push): Save new fields.
	(app_pop): Restore new fields.
	(do_scrub_chars): Check scrub_m68k_mri rather than flag_mri_mri.
	If TC_M68K, use a trivial state machine to look for occurrences of
	the .mri pseudo-op, and change the mode appropriately.
	* as.h (do_scrub_begin): Update prototype.
	* input-scrub.c (input_scrub_begin): Pass flag_m68k_mri to
	do_scrub_begin.
	* config/tc-m68k.c (reg_prefix_optional_seen): New static
	variable.
	(m68k_mri_mode_change): New function.
	(md_parse_option): Set reg_prefix_optional_seen.
	* config/tc-m68k.h (m68k_mri_mode_change): Declare.
	(MRI_MODE_CHANGE): Define.
	* doc/as.texinfo: Document .mri pseudo-op.

	* app.c (do_scrub_chars): In MRI mode, don't treat '#' as a
	comment character.

Mon Feb 12 15:16:29 1996  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	Support for OBJ_ELF on m68k, mostly inside #ifdef OBJ_ELF:
	* config/m68k-parse.h (enum pic_relocation): Define.
	(struct m68k_exp): Add pic_reloc field.
	* config/tc-m68k.h (TC_RELOC_RTSYM_LOC_FIXUP): Define.
	(tc_fix_adjustable): Define to call tc_m68k_fix_adjustable.
	(NO_RELOC): Define to BFD_RELOC_NONE if BFD_ASSEMBLER, to zero
	otherwise.
	* config/tc-m68k.c: Delete definition of NO_RELOC.
 	(struct m68k_it): Add pic_reloc field.
	(add_fix): Copy over pic_reloc field.
	(md_pseudo_table): Interpret .align parameter as byte count.
	(mote_pseudo_table): Likewise.
	(tc_m68k_fix_adjustable): New function.
	(get_reloc_code): New function.
	(md_assemble): Use it as last argument to fix_new_exp.
	(md_apply_fix_2): For a relocation against a symbol don't put the
	addend into the data.
	(tc_gen_reloc): Different addend computation for OBJ_ELF.
	(m68k_ip): Don't relax an operand that requires pic relocation.
	(md_begin): Align .text, .data and .bss on 4 byte boundary by
	default.
	* write.c (fixup_segment): Don't add symbol value to addend if
 	TC_M68K and OBJ_ELF.
	* config/m68k-parse.y (yylex): Handle @PLTPC, etc.
	(motorola_operand): Add rule for `(zapc, EXPR)'.

Mon Feb 12 10:07:33 1996  David Mosberger-Tang  <davidm@azstarnet.com>

	* ecoff.c (ecoff_directive_weakext): Fixed so that whitespace
	*really* is permissible before the comma.

Mon Feb 12 00:12:13 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sh.c (sh_do_align): Align to a 2 byte boundary before
	inserting nop instructions.

Fri Feb  9 10:54:19 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/te-aux.h: Change include of aux.h to aux-coff.h.

Thu Feb  8 20:02:58 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i960.c (tc_coff_symbol_emit_hook): Correct storage
	class setting for a CALLNAME symbol in COFF.

	* read.c (potable): Pass negative numbers for new .balign[wl] and
	.p2align[wl] pseudo-ops.
	(s_align_bytes): Treat a negative argument as specifying the fill
	length.
	(s_align_ptwo): Likewise.

Wed Feb  7 14:12:03 1996  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (potable): Add balignw, balignl, p2alignw, and p2alignl.
	(do_align): Take new len parameter.  Change all callers.  Pass it
	to md_do_align.
	(s_align_bytes): Arg now indicates the length of the fill pattern.
	(s_align_ptwo): Likewise.
	* config/obj-coff.c (write_object_file): Pass length to
	md_do_align.
	* config/tc-i386.h (md_do_align): Take new len parameter.
	* config/tc-m88k.h (md_do_align): Likewise.
	* config/tc-m88k.c (m88k_do_align): Likewise.
	* config/tc-sh.h (md_do_align): Likewise.
	* config/tc-sh.c (sh_do_align): Likewise.
	* doc/as.texinfo: Document new pseudo-ops.

	* config/obj-coff.c (fixup_mdeps): Divide offset by fr_var, as is
	done in cvt_frag_to_fill.

	* config/tc-sh.h (sh_do_align): Declare.
	(md_do_align): Define.
	* config/tc-sh.c (sh_do_align): New function.

	* ecoff.c (ecoff_build_lineno): Don't try to store the address
	difference if the next address is before the current one.

	* config/tc-m68k.c (struct m68k_cpu): Add alias field.
	(archs): Initialize new field.
	(m68k_ip): Don't list alias names when listing CPUs which support
	an instruction.

	* as.c (main): Call parse_args before read_begin.
	* app.c (do_scrub_chars): If flag_m68k_mri, don't put a dot in
	front of generated pseudo-ops.
	* read.c (potable): Ignore "name".
	(s_app_file): Permit a single quote after the string, since one
	may appear in m68k MRI mode.

	* configure.in: Check for --enable-shared.  If linking against
	shared BFD and opcodes, fix library name on SunOS, and try to set
	-rpath reasonably.
	* configure: Rebuild.

Tue Feb  6 15:16:17 1996  Ian Lance Taylor  <ian@cygnus.com>

	* as.h (flag_m68k_mri): Declare.
	* as.c (parse_args): If TC_M68K, set flag_m68k_mri for -M.
	* Many files: For MRI syntax that is specific to the m68k MRI
	assembler, check flag_m68k_mri rather than flag_mri or
	MRI_MODE_NEEDS_PSEUDO_DOT.

Mon Feb  5 16:29:11 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i960.c (ARCH_HX): Define.
	(arch_tab): Add HX.
	(targ_has_sfr): Handle ARCH_HX.
	(targ_has_iclass): Handle ARCH_HX.
	(tc_coff_fix2rtype): Add return 0 to avoid warning.
	(tc_headers_hook): If the architecture was specified explicitly,
	use it when setting the flags.  Set the extern variable coff_flags
	rather than headers->filehdr.f_flags, since the latter is set
	unconditionally in obj-coff.c.
	(i960_handle_align): Remove unused variable fixp.

	Support for building bfd and opcodes as shared libraries, based on
	patches from Alan Modra <alan@spri.levels.unisa.edu.au>:
	* configure.in: Set OPCODES and BFD to search directories.
	Substitute OPCODES_DEP and BFDDEP.  On SunOS, set HLDFLAGS.
	* configure: Rebuild.
	* Makefile.in (LDFLAGS, HLDFLAGS): New variables.
	(LIBDEPS): New variable.
	(as.new0: Depend upon $(LIBDEPS) rather than $(LIBS).  Use
	$(HLDFLAGS) in link.
	(check): Set LD_LIBRARY_PATH in the environment.

Fri Feb  2 17:41:53 1996  Michael Meissner  <meissner@wogglebug.tiac.net>

	* config/tc-ppc.h (ELF_TC_SPECIAL_SECTIONS): Make .sdata2, .sbss2,
	.PPC.EMB.sdata0, and .PPC.EMB.sbss0 sections all default to
	read-only, not read/write.

Fri Feb  2 14:09:25 1996  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* Makefile.in (INSTALL_XFORM): Remove -e.

Fri Feb  2 12:32:15 1996  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (write_relocs): Use S_IS_DEFINED and S_IS_COMMON rather
	than comparing S_GET_SEGMENT to undefined_section.
	(write_object_file): Skip symbols which were equated to an
	undefined or common symbol.
	* symbols.c (resolve_symbol_value): Use S_IS_DEFINED and
	S_IS_COMMON rather than comparing S_GET_SEGMENT to
	undefined_section.
	(S_GET_VALUE): Likewise.  Avoid recursion problems if S_IS_DEFINED
	or S_IS_COMMON call S_GET_VALUE.
	* config/obj-aout.h (S_IS_COMMON): Define if not BFD_ASSEMBLER.
	* config/obj-aout.c (obj_emit_relocations): If a reloc is equated
	to an undefined or common symbol, convert the reloc to be against
	the target symbol.
	(obj_crawl_symbol_chain): Skip symbols which were equated to an
	undefined or common symbol.
	* config/obj-bout.h (S_IS_COMMON): Define if not BFD_ASSEMBLER.
	* config/obj-bout.c (obj_emit_relocations): If a reloc is equated
	to an undefined or common symbol, convert the reloc to be against
	the target symbol.
	(obj_crawl_symbol_chain): Skip symbols which were equated to an
	undefined or common symbol.
	* config/obj-coff.c (do_relocs_for): Use S_IS_DEFINED and
	S_IS_COMMON rather than comparing S_GET_SEGMENT to
	undefined_section.
	(yank_symbols): Skip symbols which were equated to an undefined or
	common symbol.

Thu Feb  1 15:34:32 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-aout.h (S_IS_LOCAL): Check for \002 as well as \001.
	* config/obj-bout.h (S_IS_LOCAL): Likewise.

	* configure.in: Make sure we only add m68k-parse.o to
	${extra_objects} once, no matter how many m68k targets have been
	enabled.
	* configure: Rebuild.

Wed Jan 31 18:31:46 1996  Steve Chamberlain  <sac@slash.cygnus.com>

	* configure.in (i386-*-cygwin32, ppc-*-cygwin32): New.
	* configure: Rebuild.

Wed Jan 31 14:03:17 1996  Richard Henderson  <rth@tamu.edu>

	* config/tc-m68k.c (md_pseudo_table): Add "extend" and "ldouble".
	* doc/c-m68k.texi: Document .extend and .ldouble.

	* configure.in (m68*-apple-aux*): New target.
	* config/te-aux.h: New file.
	* config/obj-coff.c (compare_external_relocs): New static function
	if TE_AUX.
	(do_relocs_for): Sort relocs if TE_AUX.
	(fixup_segment): If TE_AUX, store common symbol value in segment.
	* config/tc-m68k.h (TARGET_FORMAT): Define if TE_AUX.

Wed Jan 31 12:24:58 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.h (S_IS_LOCAL): Check for \002 as well as \001.

	* config/tc-mips.c (s_mips_globl): Set BSF_OBJECT if it is not
	BSF_FUNCTION.
	(s_cpload): Set BSF_OBJECT for _gp_disp symbol.
	* read.c (s_lcomm): If S_SET_SIZE is defined, set the size of the
	symbol.
	* ecoff.c (add_procedure): Set the BSF_FUNCTION flag.
	(ecoff_build_symbols): If S_SET_SIZE is defined, set the size of
	an undefined symbol and the size of a function symbol.
	* config/obj-elf.c (elf_frob_symbol): If TC_MIPS, set BSF_OBJECT
	for all common symbols.

Tue Jan 30 12:35:24 1996  Ken Raeburn  <raeburn@cygnus.com>

	* config/tc-i960.c (parse_memop): In MRI mode, don't use implicit
	scaling of index.

	* expr.c (operand): Accept 0x hex constants in MRI mode if not on
	m68k.

Mon Jan 29 12:21:30 1996  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-elf.c (obj_elf_type): Set BSF_OBJECT flag for a type
	of object.  From Ronald F. Guilmette <rfg@monkeys.com>.

	* ecoff.c (localsym_t): Add addend field.
	(add_ecoff_symbol): Add addend argument.  Change all callers.
	(coff_sym_value): Make static.
	(coff_sym_addend): New static variable.
	(ecoff_directive_def): Initialize coff_sym_addend.
	(ecoff_directive_val): Accept symbol + constant.
	(ecoff_directive_endef): Pass coff_sym_addend to add_ecoff_symbol.
	(ecoff_build_symbols): Include the addend in the symbol value.

Fri Jan 26 19:28:52 1996  Kim Knuttila  <krk@cygnus.com>

	* config/tc-ppc.c (md_assemble): Ignore overflow on 
	BFD_RELOC_16_GOTOFF and BFD_RELOC_PPC_TOC16.

Fri Jan 26 16:14:17 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.c (md_apply_fix3): SDA21 relocations are now 4
	bytes in size, so offset appropriately in big endian mode when
	writing the bottom 2 bytes.

Thu Jan 25 20:26:23 1996  Doug Evans  <dje@charmed.cygnus.com>

	* config/tc-sparc.c (default_compatible): New static local.
	(md_begin): Initialize it.  Rewrite warn_on_bump handling.
	(sparc_ip): If no architecture or -bump specified, don't mark as
	mismatched those in default_compatible.

Thu Jan 25 12:21:53 1996  Ian Lance Taylor  <ian@cygnus.com>

	SCO ELF support from Robert Lipe <robertl@arnet.com>:
	* configure.in (i386-*-sco*elf*): Use fmt elf, targ sco5.
	* configure: Rebuild.
	* config/sco5.mt: New file; set TDEFINES to -DSCO_ELF.
	* config/tc-i386.c (sco_id): New function, if SCO_ELF.
	* config/tc-i386.h (tc_init_after_args): Define if SCO_ELF.
	(sco_id): Declare if SCO_ELF.

Thu Jan 25 03:10:53 1996  Doug Evans  <dje@charmed.cygnus.com>

	* config/tc-sparc.c (initial_architecture,can_bump_v9_p): Deleted.
	({max,warn_after}_architecture): New static locals.
	(md_begin): Replace NUMOPCODES with sparc_num_opcodes.
	If both architecture and -bump requested, set max_architecture to max.
	(sparc_md_end): Simplify.
	(sparc_ip): Replace references to can_bump_v9_p with max_architecture.
	Rewrite code to bump architecture and check for conflicts.
	(md_longopts): Recognize -xarch={v8plus,v8plusa} for compatibility
	with Solaris assembler.
	(md_parse_option): Likewise.  Call sparc_opcode_lookup_arch.
	(md_show_usage): Update.

Wed Jan 24 22:11:03 1996  Doug Evans  <dje@charmed.cygnus.com>

	* Makefile.in (RUNTEST): Fix reference to $${srcdir}.

Mon Jan 22 09:21:36 1996  Doug Evans  <dje@charmed.cygnus.com>

	* config/tc-sparc.h (TARGET_FORMAT): Use #ifdef SPARC_ARCH64 instead of
	#ifdef sparcv9 when choosing value.
	(ENV64): Delete.
	(md_end): Define.
	(sparc_md_end): Declare.
	* config/tc-sparc.c (SPARC_V9): Renamed from sparcv9.
	(initial_architecture): New static local.
	(can_bump_v9_p): Likewise.
	(NO_V9): Delete all occurrences.
	(sparc_md_end): New function.
	(sparc_ip): New local v9_arg_p.  Rework fp reg number test.
	Don't bump architecture to v9 unless can_bump_v9_p set.
	(md_parse_option): -A<arch> passed, set can_bump_v9_p accordingly.
	* configure.in (sparc64 target cpu): Don't set obj_format here.
	(SPARC_V9): Renamed from sparcv9.
	(sparc64-*-elf*): Define SPARC_ARCH64.
	* configure: Regenerated.
	* acconfig.h (SPARC_V9): Renamed from sparcv9.
	(SPARC_ARCH64): Add.
	* conf.in: Regenerated.
	* config/vmsconf.h: Update.

Mon Jan 22 17:24:47 1996  James G. Smith  <jsmith@cygnus.co.uk>

	* config/tc-mips.c (load_register): Optimise "dli" loads.
	(md_show_usage): add "-mcpu=vr4100" to help text.

Mon Jan 22 11:53:00 1996  Ian Lance Taylor  <ian@cygnus.com>

	* symbols.c (resolve_symbol_value): If a symbol is equated to an
	undefined symbol, preserve the X_op of O_symbol.
	(S_GET_VALUE): Fix check to permit this case.
	* write.c (write_relocs): If a reloc is against an undefined
	symbol equated to another symbol, change the reloc to be against
	the latter symbol.
	* config/obj-coff.c (do_relocs_for): Likewise.

	* config/tc-ppc.c (ppc_csect): An unnamed csect is storage class
	XMC_PR.

Mon Jan 22 10:59:48 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/obj-elf.c (elf/ppc.h): Include elf/ppc.h if target
	computer is PowerPC.

	* config/tc-ppc.c (md_apply_fix3): Add more embedded relocations.

	* config/tc-ppc.h (ELF_TC_SPECIAL_SECTIONS): Add sections
	mentioned in the eabi.

Thu Jan 18 17:58:19 1996  Kim Knuttila  <krk@cygnus.com>

	* config/tc-ppc.c (ppc_reldata): Changed alignement on reldata_section
	* config/tc-ppc.c (ppc_pdata): Changed the alignment on pdata_section

Mon Jan 15 17:43:42 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.c (mapping): Add more relocation suffixes.

Sun Jan 14 21:29:36 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.c (ppc_elf_validate_fix): Allow .gcc_except_table
	as a section it is ok to have unadorned -mrelocatable pointers in.

Sat Jan 13 11:09:08 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/tc-ppc.c (ppc_section*): Wrap these functions inside
	#ifdef OBJ_ELF.

Fri Jan 12 15:32:07 1996  Michael Meissner  <meissner@tiktok.cygnus.com>

	* config/obj-elf.c (obj_elf_section): Add hooks so machine
	dependent section attributes can be handled.

	* config/tc-ppc.h: (md_elf_section_{letter,type,word,flags}): New
	macros to add support for exclude section flag and ordered section
	type.

	* config/tc-ppc.c (ppc_elf_section_{letter,type,word,flags}): New
	functions to add support for exclude section flag and ordered
	section type.

Fri Jan 12 12:04:00 1996  Ian Lance Taylor  <ian@cygnus.com>

	* subsegs.c (section_symbol): Don't try to look up the section
	symbol in the hash table.  It should be possible to have a symbol
	with the same name as a section, but no connection to it.

	* read.c (cons_worker): Only call mri_comment_end from flag_mri.
	From James Carlson <carlson@xylogics.com>.

	* expr.c (operand): Skip whitespace after a close parenthesis.
	From James Carlson <carlson@xylogics.com>.

Tue Jan  2 12:43:23 1996  Jim Wilson  <wilson@chestnut.cygnus.com>

	* config/tc-sh.c (md_apply_fix): Call as_bad_where instead of
	as_warn_where for relocation overflow.
	(parse_reg): Accept register name only if next character is
	not alphanumeric.

For older changes see ChangeLog-9295
