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
