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>

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

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

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

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

	* config/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)

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

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

	* config/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.
	* config/tc-mips.c (ECOFF_LITTLE_FORMAT): Define.
	(mips_target_format): Use.
	* config/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>

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

	* config/obj-evax.h: move openvms definitions from here to tc-alpha.c.
	* config/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.
	* config/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)

	* config/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)

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

	* config/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.
	* config/tc-alpha.h (md_flush_pending_output): Remove.
	(md_cons_align): Add.

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