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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* dwarf2dbg.h: Use PARAMS in function declarations.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* symbols.c (symbol_set_tc): Correct name.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* po/gas.pot: Regenerated.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

	* subsegs.h (segment_info_type): Give the struct a name.
	* config/tc-h8300.h (tc_reloc_mangle): Add prototype.
	* config/tc-h8500.h (tc_reloc_mangle): Declare.
	* config/tc-sh.h (sh_coff_reloc_mangle): Add prototype.
	* config/tc-w65.h (tc_reloc_mangle): Declare.
	* config/tc-z8k.h (tc_reloc_mangle): Declare.

Wed Jun 24 13:45:00 1998  Catherine Moore  <clm@cygnus.com>

        * config/tc-v850.c (v850_comm):  Restore old section
        after common processing.

Wed Jun 24 11:50:54 1998  Klaus Kaempf  <kkaempf@progis.de>

	* config/obj-vms.c (Create_VMS_Object_File): Force binary file.

Tue Jun 23 17:47:31 1998  Jim Wilson  <wilson@cygnus.com>

	* config/tc-h8300.c (do_a_fix_imm, build_bytes): Replace cast to
	char with code that explicitly sign-extends.

Tue Jun 23 13:54:57 1998  Nick Clifton  <nickc@cygnus.com>
	
	* config/tc-v850.c (md_begin): Restore text section as the current
	section after creating call table sections.
	* config/obj-coff.h (SYM_AUXINFO): New macro to conceal ugly
	code. 

	* config/obj-coff.c (c_symbol_merge): Replace complex expresion
	with call to macro SYM_AUXINFO.

Tue Jun 23 15:09:27 1998  Mike Stump  <mrs@wrs.com>

	* Makefile.am (install-exec-local): Don't let EXEEXT interfere
	with the program transform name.
	* Makefile.in: Rebuild.

Mon Jun 22 19:52:42 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (c_symbol_merge): Fix copying of auxiliary
	information.

Mon Jun 22 15:18:58 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (i386_operand): Be prepared for a space between
	the open parenthesis and the start of the register operand,
	because of the June 16 change.

Sun Jun 21 21:27:03 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sh.c (md_apply_fix): Handle weak symbols correctly if
	BFD_ASSEMBLER.

Sun Jun 21 12:26:36 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (d30v_align): Always perform alignment request,
	even if it is belived to be unnecessary.

Fri Jun 19 13:57:06 1998  Ian Lance Taylor  <ian@cygnus.com>

	* write.c (adjust_reloc_syms): Never adjust relocs against weak
	symbols.
	* config/tc-mips.c (md_apply_fix): Adjust accordingly.

Fri Jun 19 09:50:17 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10300.c (mn10300_insert_operand): Do not hardcode the
	shift amount for a repeated operand.  The shift amount for the
	repeated copy comes from the size of the operand.

Fri Jun 19 00:44:19 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-h8300.c (get_operand): Fix typos in ldm/stm support.

Wed Jun 17 13:07:05 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (md_show_usage): Fix -mipsN usage.

Tue Jun 16 13:06:21 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* app.c (do_scrub_begin): If tc_symbol_chars is defined, treat all
	characters in it as LEX_IS_SYMBOL_COMPONENT.
	* config/tc-i386.h (tc_symbol_chars): Define.
	(extra_symbol_chars): Declare.
	* config/tc-i386.c (extra_symbol_chars): Define.
	(comment_chars): Don't use '/' as comment start if TE_LINUX.
	(line_comment_chars): Set to '/' if TE_LINUX.
	* doc/c-i386.texi (i386-prefixes): Update.
	* doc/internals.texi (CPU backend): Document tc_symbol_chars.

Fri Jun 12 13:36:54 1998  Tom Tromey  <tromey@cygnus.com>

	* po/Make-in (all-yes): If maintainer mode, depend on .pot file.
	($(PACKAGE).pot): Unconditionally depend on POTFILES.

1998-06-12  Vladimir N. Makarov  <vmakarov@cygnus.com>

	* config/tc-d10v.c (md_apply_fix3): Checking displacement
	constraint in instructions REP & REPI.

Thu Jun 11 08:56:46 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (md_apply_fix3): Catch BFD_RELOC_8,
	BFD_RELOC_16, BFD_RELOC_64 and issue appropriate error messages.  

	(check_range): If the operand is shifted, then shift the number
	before checking its range.

	* write.c (adjust_reloc_syms): Add more checks for NULL pointers. 

	* config/tc-v850.c (v850_comm): Set SEC_COMMON bit on special
	common sections.

Wed Jun 10 17:26:35 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (v850_comm): Create special sections as needed.

1998-06-10  Vladimir N. Makarov  <vmakarov@cygnus.com>

	* config/tc-d10v.c (write_2_short): Addition of swapping
	instructions for sequential and reverse sequential order when
	given order is not possible.

Tue Jun  9 13:52:53 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: Rebuild dependencies.
 	(DEP_INCLUDES): Fix reference to intl build directory.
	* Makefile.in: Rebuild.

Tue Jun  9 12:20:05 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* doc/c-i386.texi: Update 16 bit documentation.

	* config/tc-i386.h: Change Data16 to Size16, Data32 to Size32,
	IgnoreDataSize to IgnoreSize as they are used for address size as
	well as data size.
	* config/tc-i386.c: Likewise.  Add code to reject addr32/data32 in
	32-bit mode, similarly addr16/data16 and variants.

Mon Jun  8 18:32:01 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (md_assemble): Fix handling of reverse
	sequential word multiply instructions.
	
	(do_assemble): Add extra command line argument, to allow mul32
	attribute to be preserved across parallel insns.
	(md_assemble): Insert NOPs between explicitly parallel insns which
	contain an 32 bit multiply and a 16 multiply.

Mon Jun  8 12:20:30 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c: REPNE renamed to REPNE_PREFIX_OPCODE, and
	likewise for REPE.

	* config/tc-i386.c (reloc): Add braces.

	* config/tc-i386.c (struct _i386_insn): Rename bi to sib to be
	consistent with Intel naming.
	* config/tc-i386.h (base_index_byte): Rename to sib_byte.  Don't
	use bitfields in sib_byte.
	(modrm_byte): Don't use bitfields here either.

	* config/tc-i386.c (current_templates): Add const.
	(parse_register): Add const to return, param, and char *s.
	(i386_operand): Add const to reg_entry *r.
	* config/tc-i386.h (templates): Add const to start, end.

	Inspired by code for 16 bit gas support from Martynas Kunigelis
	<martynas@nm3.ktu.lt>:
	* config/tc-i386.c (md_assemble): Add full support for 16 bit
	modrm, and Jump, JumpByte, JumpDword, JumpInterSegment insns.
	(uses_mem_addrmode): Remove.
	(md_estimate_size_before_relax): Add support here too.
	(md_relax_table): Rewrite interface to md_relax for 16 bit
	support.
	(BYTE, WORD, DWORD, UNKNOWN_SIZE): Remove.
	(opcode_suffix_to_type): Remove.
	(CODE16, SMALL, SMALL16, BIG, BIG16): Define.
	(SIZE_FROM_RELAX_STATE): Modify to suit above.
	(md_convert_frag): Likewise.
	(i386_operand): Add support for 16 bit base/index regs,
	immediates, and displacements.  Remove some unnecessary casts, and
	localise end_of_operand_string, displacement_string_start,
	displacement_string_end variables.  Add GCC_ASM_O_HACK.
	* config/tc-i386.h (NO_BASE_REGISTER_16): Define.

	* config/tc-i386.c (prefix_hash): Remove.
	(md_begin): Rewrite without obstacks.  Remove prefix hash table
	handling.  Rewrite lexical table handling.
	(i386_print_statistics): Don't print prefix statistics.
	(md_assemble): Rewrite instruction parser so that line is not
	converted to lower case.  Don't do a hash_find for prefixes,
	instead recognise them via opcode modifier.
	(expecting_operand, paren_not_balanced): Localise variables.
	* config/tc-i386.h (IsPrefix): Define.
	(prefix_entry): Remove.

	* config/tc-i386.h (PREFIX_SEPERATOR): Don't define.
	* config/tc-i386.c (PREFIX_SEPARATOR): Define here instead, using
	'\\' in case where comment_chars contains '/'.

	* config/tc-i386.c (MATCH): Ensure given operand and template
	match for JumpAbsolute.  Makes e.g. `ljmp table(%ebx)' invalid;
	you must write `ljmp *table(%ebx)'.

	From H.J. Lu <hjl@gnu.org>:
	* config/tc-i386.c (BFD_RELOC_16, BFD_RELOC_16_PCREL): Define
	as 0 ifndef BFD_ASSEMBLER.
	(md_assemble): Allow immediate operands without suffix or
	other reg operand to default in size to the current code size.

Mon Jun  8 09:45:00 1998  Catherine Moore  <clm@cygnus.com>
 
        * config/tc-v850.c (md_begin):  Restore creation of
        .call_table_text and .call_table_data sections.

Sat Jun  6 00:02:41 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (md_assemble): Set execution type to unknown
	after emitting a word of noops.

Fri Jun  5 23:27:04 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (mode_from_disp_size): Disp16 is mode 2.
	(i386_operand): Simplify checks for valid base/index combinations.
	Disallow `in 4(%dx),%al'.

	* config/tc-i386.c (struct _i386_insn): Make regs, base_reg, and
	index_reg const.
	(add_prefix): Change parameter from char to int.

	* config/tc-i386.h (Ugh): Define opcode modifier.
	* config/tc-i386.c (md_assemble): Print warnings for Ugh insns.

	* config/tc-i386.c (md_assemble): Rewrite MATCH and
	CONSISTENT_REGISTER_MATCH macros to check register types more
	thoroughly.  Check for illegal suffix/operand combinations
	when matching insns with operands.  Handle new `s' suffix, and
	associated FloatMF opcode modifier for float insns with memory
	operands.
	* config/tc-i386.h (FloatMF): Define new opcode modifier.
	(No_sSuf, No_bSuf, No_wSuf, No_lSuf): Likewise.
	(SHORT_OPCODE_SUFFIX, LONG_OPCODE_SUFFIX): Define.
	* config/tc-i386.c: Rename WORD_PREFIX_OPCODE to
	DATA_PREFIX_OPCODE throughout.

	* config/tc-i386.c (REGISTER_WARNINGS): Define.
	(md_assemble): Rewrite suffix/register operand checking code to be
	more thorough.  Remove Abs8,16,32.  Change occurrences of Mem to
	AnyMem, the better to grep.
	(pi): Remove Abs.
	(i386_operand): Don't set Mem bits in i.types[this_operand] when
	given a memory operand.  Don't set Abs bits either.
	(type_names): Remove Mem*, Abs*.
	* config/tc-i386.h (Mem8, Mem16, Mem32, Abs8, Abs16, Abs32): Don't
	define opcode_modifiers as these cases are handled by Disp8,
	Disp16, Disp32 and suffix checks.
	(COMES_IN_BOTH_DIRECTIONS): Remove.
	(FloatR): Define. It's OK to share the bit with ReverseRegRegmem.

	* config/tc-i386.c (md_assemble): Don't emit operand size prefix
	if IgnoreDataSize modifier given.  Remove ShortformW modifier
	test.  Add test for ShortForm in W base_opcode modification.
	Merge Seg2ShortForm and Seg3ShortForm code.
	* config/tc-i386.h (ShortFormW): Remove.
	(IgnoreDataSize): Define.

Fri Jun  5 10:50:53 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (md_assemble): Store previous segment state
	with previous instruction.

Wed Jun	 3 18:21:56 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (SCALE1_WHEN_NO_INDEX): Define.
	(ebp, esp): Remove static variables.
	(MATCH): Remove test for InOutPortReg.
	(i386_operand): Properly handle InOutPortReg here instead.
	Disallows `inb (%dx,2)', `inb %es:(%dx)' and `mov (%dx),%ax'
	(md_assemble): Simplify and correct modrm and sib generation.
	(i386_operand): Add warning for scale without index.
	Rewrite checks for valid base/index combinations.

	* config/tc-i386.c (END_STRING_AND_SAVE): Protect arguments of
	macros and enclose in do while(0).
	(RESTORE_END_STRING): Likewise.
	(md_assemble): Add one to printed operand number so we start
	from 1 not 0.  Add some more gettext invocations.
	(i386_operand): Fix `%%s' -> `%%%s'. Inc printed operand
	number here too.

	* config/tc-i386.h (WAIT_PREFIX, LOCKREP_PREFIX, ADDR_PREFIX,
	DATA_PREFIX, SEG_PREFIX): Define.
	* config/tc-i386.c (struct _i386_insn): Remove wait_prefix field.
	(check_prefix): Remove function.
	(add_prefix): New function.  Add prefix to i.prefix as well as
	doing checks.
	(md_assemble): Changes for add_prefix.	Remove hack for wait
	prefix, instead always output prefixes in fixed order.	Test
	for jcxz/loop when selecting between word & dword operations,
	and add address size prefix rather than operand size prefix.
	Remove operand -> address size hack when emitting jcxz/loop.
	(i386_operand): Remove O_Absent check as it's done in expr.

Wed Jun  3 15:09:10 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Recognize m5200 as a cpu_type of m68k.
	* aclocal.m4: Rebuild with current libtool.
	* configure: Rebuild.

Wed Jun  3 14:11:59 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/tc-m68k.c (md_estimate_size_before_relax): Add more calls
	to relaxable_symbol to prevent references to external symbol from
	being relaxed.

Wed Jun  3 14:10:36 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (relaxable_symbol): If TARGET_OS is "elf", all
	symbols are relaxable.

Wed Jun  3 09:16:00 1998  Catherine Moore  <clm@cygnus.com>
 
        * config/tc-v850.c (md_begin):  Don't create special
        sections by default.
 
Tue Jun  2 14:52:56 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mips.c (macro): For div and udiv, close the
	reorder block as soon as possible.

Tue Jun  2 15:36:13 1998  Ian Lance Taylor  <ian@cygnus.com>

	From Matt Semersky <matts@scd.hp.com>:
	* macro.c (macro_mri_mode): New function.
	* macro.h (macro_mri_mode): Declare.
	* read.c (s_mri): Call macro_mri_mode when switching in and out of
	MRI mode.

Tue Jun  2 13:32:22 1998  Klaus Kaempf  <kkaempf@progis.de>

	* config/tc-alpha.c (s_alpha_comm): Allow alignment parameter in
	OBJ_EVAX case.

	* config/tc-alpha.c (s_alpha_comm): Defer restoring character
	until after xstrdup in OBJ_EVAX case.

Tue Jun  2 13:11:13 1998  Pat Rankin  <rankin@eql.caltech.edu>

	* config/tc-vax.c (md_create_short_jump): Fix off by two bug in
	offset calculation.  Also, use VAX_BRW from vax-inst.h instead
	of hardcoded magic number.
	(md_create_long_jump): Use VAX_JMP and VAX_ABSOLUTE_MODE macros.

Tue Jun  2 09:25:34 1998  Doug Evans  <devans@canuck.cygnus.com>

	* read.c (do_s_func): New function.
	(s_func): Call it.
	* read.h (do_s_func): Add prototype.

Mon Jun  1 12:47:30 1998  Doug Evans  <devans@canuck.cygnus.com>

	* config/tc-m32r.c (m32r_do_align): Only fill code sections with
	nops if fill pattern not specified.

Mon Jun  1 14:08:35 1998  Ian Lance Taylor  <ian@cygnus.com>

	From Andrew Crabtree <andrewc@typhoon.rose.hp.com>:
	* config/te-go32.h (TE_GO32): Define.
	* config/tc-i386.h (LOCAL_LABEL): Don't define if TE_GO32.

Sun May 31 15:43:06 1998  Doug Evans  <devans@canuck.cygnus.com>

	Implement .func/.endfunc pseudo-ops.
	* read.h (stabs_generate_asm_func,stabs_generate_asm_endfunc): Declare.
	(s_func): Declare.
	* read.c (potable): Add .func,.endfunc.
	(s_func): New function.
	* stabs.c (stabs_generate_asm_func,stabs_generate_asm_endfunc): New
	functions.
	(in_doc_func_p,current_function_label): New static globals.
	(stabs_generate_asm_lineno): Emit function relative stabs if in .func.

Fri May 29 18:13:12 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-a29k.h (WORKING_DOT_WORD): Define.
	* config/tc-alpha.h (WORKING_DOT_WORD): Define.
	* config/tc-arm.h (WORKING_DOT_WORD): Define.
	* config/tc-h8300.h (WORKING_DOT_WORD): Define.
	* config/tc-h8500.h (WORKING_DOT_WORD): Define.
	* config/tc-hppa.h (WORKING_DOT_WORD): Define.
	* config/tc-i860.h (WORKING_DOT_WORD): Define.
	* config/tc-i960.h (WORKING_DOT_WORD): Define.
	* config/tc-tic30.h (WORKING_DOT_WORD): Define.
	* config/tc-w65.h (WORKING_DOT_WORD): Define.
	* config/tc-z8k.h (WORKING_DOT_WORD): Define.
	* config/tc-a29k.c: Don't define md_short_jump_size,
 	md_long_jump_size, md_create_short_jump or md_create_long_jump.
	* config/tc-alpha.c: Likewise.
	* config/tc-alpha.h: Likewise.
	* config/tc-arm.c: Likewise.
	* config/tc-h8300.c: Likewise.
	* config/tc-h8500.c: Likewise.
	* config/tc-hppa.c: Likewise.
	* config/tc-i860.c: Likewise.
	* config/tc-i960.c: Likewise.
	* config/tc-ppc.c: Likewise.
	* config/tc-sh.c: Likewise.
	* config/tc-sparc.h: Likewise.
	* config/tc-tic30.c: Likewise.
	* config/tc-w65.c: Likewise.
	* config/tc-z8k.c: Likewise.

Fri May 29 16:03:26 1998  Pat Rankin  <rankin@eql.caltech.edu>

	* config/tc-vax.c (_): Delete this macro used for placeholder
	values in vax_operand_width_size; it conflicts with the _() macro
	used for internationalization.

Fri May 29 13:46:07 1998  Ian Lance Taylor  <ian@cygnus.com>

	* symbols.c (symbol_find_base): Fix case insensitive symbol name
	code.  From Chris Moller <moller@bops.com>.

	Based on patch from Klaus Kaempf <kkaempf@progis.de>:
	* struc-symbol.h (struct broken_word): Add seg and subseg fields.
	* read.c (emit_expr): Initialize seg and subseg fields of a new
	broken word.
	* write.c (write_object_file): Switch to the appropriate segment
	and subsegment when processing a broken word.

	* config/tc-m68k.c (mri_assemble): New static function.
	(build_mri_control_operand): Call mri_assemble rather than
	md_assemble.
	(s_mri_else, s_mri_break, s_mri_next, s_mri_for): Likewise.
	(s_mri_endf, s_mri_endw): Likewise.

Wed May 27 11:16:25 1998  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (s_org): Call md_flush_pending_output if it is defined.

	* config/tc-sparc.c (md_show_usage): Add \n\ to new string.

Tue May 26 19:27:52 1998  Stan Cox  <scox@equinox.cygnus.com>

	* config/tc-sparc.c (OPTION_LITTLE_ENDIAN_DATA): New.
	(md_parse_option): Add for same.
	(sparc_md_end): Set bfd_mach_sparc_sparclite_le.
	(md_apply_fix3, tc_gen_reloc): Allow BFD_RELOC_SPARC_32LE.
	(cons_fix_new_sparc): Added to create BFD_RELOC_SPARC_32LE.

	* config/tc-sparc.h (cons_fix_new_sparc): Added.
	
Thu May 21 15:02:41 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (find_real_start): Relax definition of local
	labels.

Tue May 19 16:59:44 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-d30v.c (d30v_align): Apply address adjustment to all
	symbols at the given address, not just the last one specified.

Tue May 19 08:25:19 1998  Catherine Moore <clm@cygnus.com>

        * config/tc-sparc.c (sparc_handle_align): Use number_to_chars_bigendian
        or number_to_chars_littleendian to write data.

Mon May 18 17:09:30 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_assemble): Remove artificially created
	register name symbols.

Mon May 18 13:47:06 1998  Doug Evans  <devans@canuck.cygnus.com>

	* write.c (fixup_segment): Change "segment" to "section" in
	error message.

Mon May 18 16:55:40 1998  Michael Meissner  <meissner@cygnus.com>

	* write.c (fixup_segment): Change sym1-sym2 message again.

Mon May 18 09:31:43 1998  Michael Meissner  <meissner@cygnus.com>

	* write.c (fixup_segment): Improve error message for sym1-sym2
	errors when sym1 is in a different segment from sym2.

Wed May 13 10:16:37 1998  Doug Evans  <devans@canuck.cygnus.com>

	* config/tc-m32r.c (warn_unmatched_high): New static local.
	(OPTION_WARN_PARALLEL): Rename from OPTION_WARN.
	(OPTION_NO_WARN_PARALLEL): Rename from OPTION_NO_WARN.
	(md_longopts): Recognize --{no-,}warn-unmatched-high.
	(md_parse_option): Likewise.
	(md_show_usage): Likewise.
	(m32r_frob_file): Likewise.

	* read.c (generate_file_debug,generate_lineno_debug): New functions.
	(read_a_source_file): Call them.
	* read.h (stabs_generate_asm_file): Declare.
	* stabs.c (stabs_generate_asm_file): New function.
	(generate_asm_file): New function.
	(stabs_generate_asm_lineno): Move file name handling into
	generate_asm_file.

Tue May 12 12:03:44 1998  Richard Henderson  <rth@cygnus.com>

	* config/tc-d30v.c (cur_mul32_p, prev_mul32_p): Make static.
        (d30v_current_align, d30v_current_align_seg): New variables.
        (d30v_last_label): New variable.
        (d30v_align, s_d30v_align, s_d30v_text): New functions.
        (s_d30v_data, s_d30v_section): Likewise.
        (md_pseudo_table): Call them.
        (md_begin): Initialize d30v_current_align_seg.
        (md_assemble): Call d30v_align when needed by known current alignment.
        (d30v_frob_label, d30v_cons_align): New functions.
        * config/tc-d30v.h (md_do_align): Remove.
        (tc_frob_label): Call d30v_frob_label.
        (md_cons_align): New.

	* config/tc-d30v.c (find_format): Convert complex expressions to 
	expression symbols before processing.  Clean up code formatting.

Sun May 10 22:35:02 1998  Jeffrey A Law  (law@cygnus.com)

	* po/Make-in (install-info): New target.

Thu May  7 15:49:07 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (md_assemble): Handle "bra" just like "jmp"
	instructions.
	* config/tc-mn10300.c (md_assemble): Likewise.

Thu May  7 11:47:22 1998  Doug Evans  <devans@canuck.cygnus.com>

	* Makefile.am: Update with `make dep-am'.
	(HFILES): Add cgen.h.
	(cgen.o): Depend on cgen.h.
	* Makefile.in: Regenerate.

	* cgen.c (cgen_md_apply_fix3): Don't pass newline to as_warn_where.

Thu May  7 13:20:56 1998  Anders Blomdell  <anders.blomdell@control.lth.se>

	* gasp.c (grab_label): Permit a label to be a preprocessor
	variable by permitting a label to start with a backslash.

Thu May  7 12:50:33 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* config/tc-mips.c (validate_mips_insn): Removed hack
	for previously inaccessible bitfields in some INSN_TRAP
	instructions.

Thu May  7 11:13:00 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* config/tc-d30v.c (do_assemble): Abort with error message
	if opcode operands do not match.
	
Thu May  7 09:36:06 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* config/tc-mips.c (macro_build, validate_mips_insn): Implement
	'q' operand format for 20-bit "break"/"sdbbp" instructions.
	(mips_ip): Truncate overflowed "break" 'c' operand.  Implement
	similar new 'q' operand.

Thu May  7 07:47:14 1998  Michael Meissner  <meissner@cygnus.com>

	* cgen.c (cgen_asm_finish_insn): Fix typo.

Thu May  7 02:19:14 1998  Doug Evans  <devans@charmed.cygnus.com>

	* cgen.h: New file.
	* cgen.c: Include it.
	(MAX_FIXUPS): Renamed to CGEN_MAX_FIXUPS.
	(cgen_asm_finish_insn): Result is now void.  New arg `result'.
	All callers updated.
	* config/tc-m32r.c: Include cgen.h.
	(m23r_insn): New members num_fixups,fixups.

Wed May  6 16:29:19 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-hppa.c (md_apply_fix): Slightly rework some code
	to avoid compiler warning.

Wed May  6 15:26:34 1998  Klaus Kaempf  <kkaempf@progis.de>

	* makefile.vms: Run dec c with /nodebug.  Pass CC value when
	calling make.

        * makefile.vms (OBJS): Add ehopt.obj

Wed May  6 15:11:12 1998  Klaus Kaempf  <kkaempf@progis.de>

	* doc/c-vax.texi: Correct and extend vax/vms documentation.

Wed May  6 11:51:51 1998  Richard Henderson  <rth@cygnus.com>

	* config/tc-d30v.c (do_assemble): Accept a new parameter requesting
	a short format insn.
	(md_assemble): Set it for explicitly packed insns.
	
Tue May  5 13:23:13 1998  Nick Clifton  <nickc@cygnus.com>

	* config/obj-coff.c (c_symbol_merge): Do not take address of
	native fields when performing the memcpy.

Tue May  5 13:10:41 1998  Gavin Koch  <gavin@cygnus.com>

	* config/tc-mips.c (macro,macro2): Implement 
	M_DMULO_I, M_MULO_I, M_DMULOU_I, and M_MULOU_I.

Mon May  4 17:49:14 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/tc-m68k.h (TC_RELOC_RTSYM_LOC_FIXUP): Changed to keep
	relocations against globally visible symbols.
	* config/tc-m68k.c (relaxable_symbol): New macro.
	(m68k_ip, md_estimate_size_before_relax): Use it.
	(tc_m68k_fix_adjustable): Also handle weak symbols.

Mon May  4 16:12:23 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.h (TC_RELOC_RTSYM_LOC_FIXUP): Keep relocs for all
	references to externally visible symbols.
	* config/tc-i386.c (md_apply_fix3): When OBJ_ELF, don't add the
 	values in twice for a PC relative reloc if the symbol is
 	externally defined.

	* config/tc-sparc.h (tc_fix_adjustable) [OBJ_AOUT]: When PIC,
	don't adjust a PC relative reloc against an externally visible
	symbol.
	* config/tc-sparc.c (md_apply_fix3): When generating a.out PIC,
	for a PC relative fixup against an externally visible defined
	symbol, arrange to store object file and addend values as though
	the symbol were not defined.
	(tc_gen_reloc): Likewise.

Thu Apr 30 13:09:39 1998  Fred Fish  <fnf@ninemoons.com>

	* read.c (sizeof_leb128): Referenced externally by write.c so
	don't inline.

Wed Apr 29 15:45:57 1998  Michael Meissner  <meissner@cygnus.com>

	* config/tc-m32r.c ({,expand_}debug_sym): New functions to record
	and expand a 'debug' symbol associated with the next instruction
	that does not cause a short instruction to be filled with a NOP.
	(md_pseudo_table): Add support for .debugsym.
	(assemble_parallel_insn): Add calls to expand_debug_sym as
	appropriate.
	(md_assemble): Ditto.

Tue Apr 28 19:16:26 1998  Tom Tromey  <tromey@cygnus.com>

	* as.c (main): Conditionally call setlocale.
	* gasp.c (main): Likewise.
	* asintl.h: Include <locale.h> if HAVE_LOCALE_H.
	(LC_MESSAGES): Now can be defined even when ENABLE_NLS.

Tue Apr 28 18:33:23 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* config/tc-d30v.c (md_show_usage): Correct gettext typo.
	
Tue Apr 28 12:16:30 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-hppa.c: Change all calls to bzero to use memset.
	(pa_ip): Add cast to avoid warning.
	(tc_gen_reloc, md_apply_fix): Likewise.
	(pa_find_space_by_number): Likewise.
	(hppa_force_relocation): Likewise.
	(pa_block): Change i to unsigned int.
	* config/obj-som.h (obj_som_copyright): Declare.

Tue Apr 28 11:35:56 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* ecoff.c (ecoff_build_lineno): Do not use dummy first_lineno
	for line numbers for assembly source.

Mon Apr 27 15:58:46 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change version number to 2.9.4
	* configure: Rebuild.

Mon Apr 27 12:07:33 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen.c (cgen_asm_finish_insn): New arg relax_p.  All callers updated.

Mon Apr 27 15:16:12 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ecoff.h: Change symbolS in function declaration to struct
	symbol.

Sun Apr 26 13:44:22 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sh.c (parse_reg): Add casts to avoid warnings.
	(md_convert_frag): Fix i18n typo.

Sat Apr 25 20:12:02 1998  Richard Henderson  <rth@cygnus.com>

	* ecoff.c (ecoff_get_cur_proc_sym): New function.
	* ecoff.h: Protoype it.
	* config/tc-alpha.c [ELF] (s_alpha_prologue): New function.
	[EVAX] (s_alpha_prologue): Delete.
	(md_pseudo_table): Update.

Sat Apr 25 14:00:52 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i960.c (md_assemble): Change bp_error_msg from static
	array to local pointer.
	(get_args, parse_expr): Add casts to avoid warnings.

Fri Apr 24 12:47:42 1998  Philippe De Muyter  <phdm@macqel.be>

	* read.c (s_set): Cast xmalloc return value to fragS *.
	* config/tc-m68k.c (m68k_ip): Function made static to match
	previous forward declaration.
	(insert_reg, init_regtable, md_convert_frag_1): Likewise.

Fri Apr 24 09:26:46 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c: Add internationalisation macros to error
	strings.  

	* config/tc-m32r.c (can_make_parallel): Add internationalisation
	macros to error strings.

Thu Apr 23 19:23:23 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-ppc.c (ppc_fix_adjustable): Correct test of whether a
	reloc is in the TOC csect.
	(md_apply_fix3): Correct gettext typo.

Thu Apr 23 14:58:31 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (find_real_start): Ignore symbols starting with
	.L - they are local labels and the branches are not really
	function calls but rather far jumps.

Wed Apr 22 15:57:21 1998  Tom Tromey  <tromey@cygnus.com>

	* po/Make-in (MKINSTALLDIRS): Don't look in $(top_srcdir).

Wed Apr 22 14:52:36 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (md_assemble): Print operand number rather than
	using ordinal_names.
	(i386_operand): Likewise.

Tue Apr 21 22:34:25 1998  Tom Tromey  <tromey@scribbles.cygnus.com>

	* Makefile.am (INTLLIBS): Define to work around apparent automake
	bug.
	All Makefiles: Regenerated.

	* Many files: Added gettext invocations around user-visible
	strings.
	* acconfig.h (ENABLE_NLS, HAVE_CATGETS, HAVE_GETTEXT, HAVE_STPCPY,
	HAVE_LC_MESSAGES): Define.
	* dep-in.sed: Added asintl.h.
	* po/Make-in: New file.
	* gasp.c (main): Call setlocale, bindtextdomain, and textdomain.
	Include "asintl.h".
	* read.c (Z_): Renamed from `_'.
	* Makefile.am (SUBDIRS): Added po.
	(POTFILES): new macro.
	(po/POTFILES.in): New target.
	($(OBJS)): Added asintl.h.
	(HFILES): Likewise.
	(INCLUDES): Added -DLOCALEDIR, -I$(top_srcdir)/../intl.
	(as_new_LDADD): Added $(INTLLIBS).
	(as_new_DEPENDENCIES): Added $(INTLDEPS).
	(gasp_new_LDADD): Added $(INTLLIBS).
	(gasp_new_DEPENDENCIES): New macro.
	* configure, aclocal.m4: Rebuilt.
	* configure.in: Call CY_GNU_GETTEXT.  Generate po/Makefile.in and
	po/Makefile.
	(ALL_LINGUAS): Define.
	* macro.c: Include "asintl.h".
	* as.c (main): Call setlocale, bindtextdomain, and textdomain.
	* as.h: Include "asintl.h".
	* config/tc-i386.c (ordinal_names): Removed.
	(md_assemble): Changed error text to avoid ordinal_names.
	(i386_operand): Likewise.
	(reloc): Added as_bad to avoid i18n problems.
	(tc_gen_reloc): Likewise.
	* config/tc-arm.c (bad_args): Now a #define.
	(bad_pc): Likewise.
	* config/obj-vms.c (VMS_stab_parse): Changed type of
	`long_const_msg'.
	(global_symbol_directory): Unified strings to avoid i18n
	problems.
	* config/tc-m68k.c (get_reloc_code): Added some as_bad calls to
	avoid i18n problems.
	* config/tc-ns32k.c (reloc): Added as_bad to avoid i18n problems.
	* config/tc-ppc.c (md_apply_fix3): Added as_bad_where to avoid
	i18n problems.
	* config/tc-sh.c (md_convert_frag): Added as_bad to avoid i18n
	problems.
	* config/tc-v850.c (md_assemble): Changed C++ comment into C
	comment.
	* config/tc-vax.c (md_assemble): Added as_warn to avoid i18n
	problems.
	* as.c (print_version_id): Added an fprintf to avoid i18n
	problems.
	* cond.c (cond_finish_check): Added as_bad call to avoid i18n
	problems.
	* expr.c (expr): Added as_warn call to avoid i18n problems.
	* messages.c (as_assert): Changed code to avoid i18n problems.
	(as_abort): Likewise.
	* read.c (pseudo_set): Added as_bad call to avoid i18n problems.
	(s_space): Likewise.
	* po/Make-in, po/POTFILES.in, po/gas.pot: New files.

Tue Apr 21 17:01:22 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (check_prefix): New static function, split out
	from md_assemble.
	(struct _i386_insn): Add wait_prefix field.
	(md_assemble): Remove wait_prefix local variable.  Use
	check_prefix when adding a prefix.

	* config/tc-i386.c (current_templates): New static variable.
	(md_assemble): Remove current_templates local variable.
	(md_assemble, i386_operand): Improve error and warning messages in
	many places.  Add RESTORE_END_STRING in many places before error
	return.  Clarify some comments.

	* config/tc-i386.c (struct _i386_insn): Change seg field to a two
	element array.
	(md_assemble): Parse string instruction operands, looking for
	segment override prefixes.  Check for invalid segment prefixes on
	string instruction.
	(i386_operand): i.seg[] and max mem_operand changes for string
	insns.
	* config/tc-i386.h (EsSeg): Define.

	* config/tc-i386.h (regKludge): Define.
	(iclrKludge, imulKludge): Don't define.
	* config/tc-i386.c (md_assemble): Merge imulKludge and iclrKludge
	code.  Move ReverseRegRegmem fudges into Modrm case.  Reorder
	opcode_modifier checks to look for more common cases first.  Add
	default_seg for IsString case.

Tue Apr 21 16:18:12 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Call AM_PROG_LEX rather than AC_PROG_LEX and
	AC_DECL_YYTEXT.
	* configure: Rebuild with new automake and libtool.
	* aclocal.m4, Makefile.in: Likewise.

	* doc/Makefile.am (as.dvi): New target.
	* doc/Makefile.in: Rebuild.

Sat Apr 18 01:21:04 1998  Stan Cox  <scox@cygnus.com>

	* configure.in: Added sparc86x support.
	
	* configure: Rebuild.
	
	* config/tc-sparc.c (lookup_arch): Added arch_type to struct
	sparc_arch.
	(md_parse_option): Warn if -EL is not supported for this architecture.

	* config/tc-sparc.h (SPARC_BIENDIAN) Always define.
	
Sat Apr 18 01:19:01 1998  Jeffrey A Law  (law@cygnus.com)

        * config/tc-mips.c (mips_ip): Note when we use get match on
        the full instruction name.

Wed Apr 15 15:17:27 1998  Richard Henderson  <rth@cygnus.com>

	* symbols.c (resolve_symbol_value) [O_symbol]: Also store the symbol
	back into the expression to handle add/sub simplification correctly.

Wed Apr 15 07:06:04 1998  Catherine Moore  <clm@cygnus.com>

        * config/tc-mips.c (hilo_interlocks): Remove 4300.

Mon Apr 13 16:51:04 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (do_msr): Support undocumented 'msr cpsr_flg,
	#<n>' instruction.

Thu Apr  9 10:29:42 1998  Doug Evans  <devans@canuck.cygnus.com>

	* symbols.c (max_indent_level): New global.
	(print_symbol_value_1): Use it.
	* expr.h (expr_build_dot): Declare.
	* expr.c (expr_build_dot): New function.

Wed Apr  8 16:16:11 1998  Doug Evans  <devans@canuck.cygnus.com>

	* symbols.c (print_binary): New function.
	(print_expr_1): Call it.

Mon Apr  6 12:06:39 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* config/tc-m68k.c (m68k_ip, case "#B"): Install the offset of the
	operand in the opcode.

Fri Apr  3 11:58:19 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.h: Reorder operand flags and opcode modifier
	flags for clarity.  Remove unused definitions: Unknown,
	ImmUnknown, DispUnknown, NoModrm.
	* config/tc-i386.c (type_names): Add missing Debug type.
	(md_assemble): Better duplicate prefix checking.  Quicker string
	instruction check via new opcode_modifier flag.

Fri Apr  3 11:44:34 1998  Ian Lance Taylor  <ian@cygnus.com>

	* doc/as.texinfo (Invoking): Clarify -Wa example.

Fri Apr  3 09:12:23 1998  Gavin Koch  <gavin@cetus.cygnus.com>

	* config/tc-mips.c (mips_pseudo_table): Add weakext entry. 
	(s_mips_weakext): Define.
	* ecoff.c (ecoff_directive_weakext): Don't define if defined(TC_MIPS).
	* config/obj-ecoff.c (obj_pseudo_table): Don't add weakext if 
	defined(TC_MIPS).	
	
Thu Apr  2 22:42:02 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mn10200.c (tc_gen_reloc): The difference of two symbols
	is an error if the value can not be computed at assembly time.
	* config/tc-mn10300.c (tc_gen-reloc): Likewise.

Thu Apr  2 16:36:47 1998  Ian Lance Taylor  <ian@cygnus.com>

	* gasp.c (main): Set next field of new include_path structure to
	NULL.  From Avery Pennarun <averyp@gdc.ca>.

	* read.c (s_mri_sect): Call as_bad rather than abort for an
	unsupported MRI target.

Wed Apr  1 11:08:27 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (arm_validate_fix): New function.  Determine if
	the destination of a branch instruction should be altered.
	(find_real_start): New function:  Locate the real, Thumb coded
	start of a Thumb function.
	(do_t_branch23): Alter the destination of branches to Thumb
	functions. 

	* config/tc-arm.h: Define TC_VALIDATE_FIX.

Tue Mar 31 13:27:33 1998  Dean M. Deaver  <deaver@amt.tay1.dec.com>

	* config/tc-arm.c (decode_shift): Handle addressing mode 2 w/rrx
	also.

Wed Apr  1 13:13:20 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* doc/as.texinfo: Use @itemx for a secondary item in a table.
	* doc/c-hppa.texi: Likewise.

Tue Mar 31 17:52:40 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: Rebuild dependencies.
	* Makefile.in: Rebuild.

	* Makefile.am (DEP_INCLUDES): New variable.
	(.dep1): Change to work when srcdir is not an absolute path.
	(.tcdep, .objdep, .dep2, dep.sed): Likewise.
	* Makefile.in: Rebuild.

Mon Mar 30 12:46:48 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.h, config/tc-i386.c: Revert March 24
	LinearAddress patch.

	* configure.in: Set version to 2.9.1.
	* configure: Rebuild.

	* Branched binutils 2.9.

Mon Mar 30 11:22:08 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.h (FWait): Define.
	* config/tc-i386.c (md_assemble): Emit fwait prefix before any
	other prefixes.  Check FWait flag in opcode table to see which
	instructions require an fwait prefix.

Mon Mar 30 10:12:00 1998  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>

	* stabs.c (get_stab_string_offset): Always create a stab string
	section.

Sat Mar 28 22:28:02 1998  Ian Lance Taylor  <ian@cygnus.com>

	Fix some gcc -Wall warnings:
	* atof-generic.c (atof_generic): Add casts to avoid warnings.
	* ehopt.c (eh_frame_code_alignment): Likewise.
	* expr.c (integer_constant, operand): Likewise.
	* frags.c (frag_align): Likewise.
	* gasp.c (level_0, change_base, doinstr): Likewise.
	* hash.c (hash_ask): Likewise.
	* listing.c (listing_page, calc_hex, print_lines): Likewise.
	(debugging_pseudo): Likewise.
	* macro.c (define_macro, check_macro): Likewise.
	* read.c (read_a_source_file, s_align, s_float_space): Likewise.
	(ignore_rest_of_line, float_cons): Likewise.
	* symbols.c (decode_local_label_name): Likewise.
	* write.c (record_alignment, cvs_frag_to_fill): Likewise.
	(fixup_segment, number_to_chars_bigendian): Likewise.
	(number_to_chars_littleendian): Likewise.
	* config/atof-ieee.c (gen_to_words): Likewise.
	* config/tc-sparc.c (md_begin, md_assemble): Likewise.
	(sparc_ip, parse_keyword_arg, s_common): Likewise.
	* read.c (output_big_sleb128): Initialize locals to avoid
	warnings.
	(output_big_uleb128, equals): Likewise.
	* atof-generic.c (atof_generic): Change number_of_digits_* locals
	to unsigned int.  Change zeros to unsigned int.
	* cond.c (s_if): Add return to default case.
	* frags.c (frag_now_fix): Change return type to addressT.
	* frags.h (frag_now_fix): Update declaration.
	* listing.c (file_info_struct): Change linenum to unsigned int.
	(struct list_info_struct): Change hll_line to unsigned int.
	(print_source): Update format string.
	* read.c (emit_expr): Change scan to unsigned int, and don't
	bother to initialize it.
	* symbols.c (dollar_label_count): Change to unsigned long.
	* write.c (adjust_reloc_syms): Remove unused label reduce_fixup.
	* config/tc-sparc.c (sparc_memory_model): Only define if OBJ_ELF.
	* config/tc-sparc.c (tc_gen_reloc): Add return to default case.

Fri Mar 27 12:46:47 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-m68k.c (m68k_ip): Check legal addressing modes for
 	mcf5200 just as we do for m68000.
	(m68k_init_after_args): Likewise.
	(md_estimate_size_before_relax): Likewise.

Fri Mar 27 10:30:01 1998  Catherine Moore  <clm@cygnus.com>

	* config/tc-v850.c (md_assemble):  Store relocation addend in
	fixup instead of instruction.

Thu Mar 26 23:07:18 1998  Alan Modra  <alan@spri.levels.unisa.edu.au>

	* config/tc-i386.c (md_assemble): Swap template arguments to
	CONSISTENT_REGISTER_MATCH macro in reverse direction test.
	This macro is currently symmetric, so passing them the wrong
	way didn't cause any problem, but may if the macro is changed
	in the future.
	After copying template to i.tm, use i.tm. rather than t-> to
	access fields, and make t a const*
	Move i.tm.operand_types[] swap to immediately after the copy.

Wed Mar 25 13:44:18 1998  Doug Evans  <devans@canuck.cygnus.com>

	* expr.h (expr_build_uconstant): Add prototype.
	(expr_build_unary,expr_build_binary): Add prototypes.
	* expr.c (expr_build_uconstant): New function.
	(expr_build_unary,expr_build_binary): New functions.

Wed Mar 25 13:10:42 1998  Bruno Haible  <bruno@linuix.mathematik.uni-karlsruhe.de>

        * gasp.c (IS*): Cast argument to unsigned char, not unsigned int.
        * macro.c (macro_expand_body): Increase buffer size.
        * messages.c (as_warn): Likewise.
	(as_warn_where, as_bad, as_bad_where): Likewise.

Wed Mar 25 12:59:07 1998  Ian Lance Taylor  <ian@cygnus.com>

	Based on patch from H.J. Lu  <hjl@gnu.org>:
	* Makefile.am (DISTSTUFF): New variable.
	(diststuff): New target.
	* Makefile.in: Rebuild.

Tue Mar 24 16:51:29 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-m32r.h (md_cleanup, md_elf_section_change_hook): Call
	m32r_elf_section_change_hook.

	* config/tc-m32r.c (m32r_elf_section_change_hook): New function to
	emit a nop if a section ends with a 16 bit instruction.

Tue Mar 24 19:48:09 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.c (obj_coff_bss): Compile unconditionally.  Call
	s_lcomm rather than obj_coff_lcomm.
	(obj_pseudo_table): Compile .bss pseudo-op unconditionally.

Tue Mar 24 18:30:58 1998  H.J. Lu  <hjl@gnu.org>

	* config/tc-i386.h (LinearAddress): Define.
	* config/tc-i386.c (md_assemble): If LinearAddress is set for the
	instruction, don't use a default segment.

Mon Mar 23 18:53:40 1998  Joel Sherrill  <joel@OARcorp.com>

	* configure.in: (sh*-*-rtems*): Switched from ELF to COFF.
	* configure: Rebuild.

Fri Mar 20 19:15:44 1998  Ian Lance Taylor  <ian@cygnus.com>

	* aclocal.m4, configure: Rebuild with libtool 1.2.

Thu Mar 19 16:03:12 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-arm.c (md_apply_fix3): fix code to test the range of
	PC relative branches.  Patch courtesy of Jonathan Walton. 

	
Wed Mar 18 09:29:51 1998  Nick Clifton  <nickc@cygnus.com>

	* configure.in (emulations): Add thumb-pe target.

	* configure (emulations): Add thumb-pe target.

1998-03-17  Ken Raeburn  <raeburn@cygnus.com>

	* itbl-lex.l (yywrap): Don't define if already defined as a
	macro.

Fri Mar 13 16:31:38 1998  Tom Tromey  <tromey@cygnus.com>

	* depend.c (quote_string_for_make): New function.
	(wrap_output): Use it.

Thu Mar 12 18:28:22 1998  Nick Clifton  <nickc@cygnus.com>

	* config/obj-elf.c (obj_elf_section): Set bss flag in seg_info
	structure if type is SHT_NOBITS.  [Bug fix courtesy of rth]

Sat Feb 28 17:28:55 1998  Richard Henderson  <rth@cygnus.com>

	* config/tc-alpha.c (md_shortopts, md_longopts, md_parse_option):
	Recognize -GN and -relax.
	(md_begin): Initialize gp size from -G switch.
	(alpha_force_relocation): Always force if -relax.
	(alpha_align): Take a new argument that will specify when to 
	emit an R_ALPHA_ALIGN relocation (though we don't do that now).
	Change all callers.  Emit nop alignment padding as nop+unop pair.

Sat Feb 28 17:06:22 1998  Richard Henderson  <rth@cygnus.com>

	* config/obj-elf.c [TC_ALPHA]: Include <elf/alpha.h>.
	* config/tc-alpha.h (ELF_TC_SPECIAL_SECTIONS): New.

Thu Feb 26 15:49:04 1998  Michael Meissner  <meissner@cygnus.com>

	* config/tc-d30v.c (write_2_short): Delayed jsr instructions don't
	require padding to the next long word boundary.

Mon Feb 23 11:29:06 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen.c: #include symcat.h.
	* config/tc-m32r.c: Likewise.

Mon Feb 23 10:27:40 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mips.c (mips_ip, case 'P'): Make 'P' arguments be
	absolute expressions instead of '$' prefixed register names.

Sat Feb 21 22:36:52 1998  Richard Henderson  <rth@cygnus.com>

	* read.c (s_set): Record file and line info for symbols when -as.
	(pseudo_set): Don't overwrite that dummy fragment.

Fri Feb 20 15:03:13 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-ppc.c (md_pseudo_table): Add "section".
	(ppc_named_section): New static function.

Thu Feb 19 22:25:42 1998  Richard Henderson  <rth@cygnus.com>

	* tc-ppc.c (ppc_biei): Cache the last symbol we inserted
	so we don't have to scan the entire list.

Tue Feb 17 17:02:15 1998  Fred Fish  <fnf@cygnus.com>

	* config/tc-d30v.c (parallel_ok): For the explicitly parallel
 	case, allow the parallel instructions to modify the same flag
 	bits.

Thu Feb 19 16:08:15 1998  Richard Henderson  <rth@cygnus.com>

	* listing.c (list_symbol_table): Categorize symbols by
	undefined_section rather than sy_frag->line == NULL.

Wed Feb 18 23:39:46 1998  Richard Henderson  <rth@cygnus.com>

	* Makefile.am (install-exec-local): Install properly when ln
	fails or tooldir == prefix.

Tue Feb 17 18:58:51 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen.c (cgen_md_apply_fix3): Delete call to validate_operand.
	Test result of insert_operand for error.

Fri Feb 13 16:41:42 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am (AUTOMAKE_OPTIONS): Add cygnus.
	* configure, Makefile.in, aclocal.m4: Rebuild with automake 1.2e.
	* doc/Makefile.am (AUTOMAKE_OPTIONS): Define.
	* doc/Makefile.in: Rebuild.

Fri Feb 13 00:47:44 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-mips.c (macro_build): Handle operand type 'C'.
	(macro): Fix handling of M_COP[0-3].

Thu Feb 12 14:06:59 1998  Ian Lance Taylor  <ian@cygnus.com>

	Based on patches from Ross Harvey <ross@teraflop.com>:
	* macro.c (ISSEP): Only treat '<' and '>' as separator characters
	if macro_alternate or macro_mri.
	(getstring): Remove support for byte constants between < and >.
	(get_any_string): '<' only starts a string if macro_alternate or
	macro_mri.
	(macro_expand_body): Permit keyword parameters following
	positional parameters.

	NetBSD patches from Gordon W. Ross <gwr@mc.com>:
	* configure.in (alpha*-*-netbsd*): New target.
	* config/te-nbsd.h (LOCAL_LABELS_FB): Define.
	* configure: Rebuild.

	* as.h (flag_warn_suppress_instructionswap): Move from here...
	* config/tc-d10v.c (flag_warn_suppress_instructionswap): ...to
	here, and make static.

	* ehopt.c (eh_frame_code_alignment): Only use seg_info if
	BFD_ASSEMBLER or MANY_SEGMENTS.

	* as.c (show_usage): Update bug-gnu-utils address.
	* gasp.c (show_usage): Likewise.
	* doc/as.texinfo (Bug Reporting): Likewise.

Wed Feb 11 23:26:28 1998  Jeffrey A Law  (law@cygnus.com)

        * config/tc-mips.c (load_address): Don't use mips III or mips IV
	insns regardless of the size of a pointer if we're in mips I or
	MIPS II mode.
        (macro, macro2, s_cprestore, s_cpadd): Likewise.

Thu Feb 12 03:41:00 1998  J"orn Rennecke  <amylaar@cygnus.co.uk>

Fix rac to accept only a0:
	* tc-d10v.c (parallel_ok, find_opcode):
	Split OPERAND_ACC into OPERAND_ACC0 and OPERAND_ACC1.
	Introduce OPERAND_GPR.

Wed Feb 11 16:28:13 1998  Richard Henderson  <rth@cygnus.com>

	* read.c (s_fill): Handle non-constant repeat counts by creating
	an rs_space fragment.

Tue Feb 10 18:31:31 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (i386_operand): Change error added Jan 2 1998
	from as_bad to as_warn.

Tue Feb 10 18:04:00 1998  Jim Lemke  <jlemke@cygnus.com>

	* as.c: (perform_an_assembly_pass): Use [TEXT|DATA|BSS]_SECTION_NAME
	* as.h: Define default values of [TEXT|DATA|BSS]_SECTION_NAME
	* config/obj-elf.c (elf_begin): Use [TEXT|DATA|BSS]_SECTION_NAME

Tue Feb 10 17:58:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ehopt.c (eh_frame_code_alignment): If not BFD_ASSEMBLER, use
	seg_fix_rotP rather than fix_root from seg_info.

Tue Feb 10 15:32:22 1998  Ian Carmichael  <iancarm@cygnus.com>

	* expr.c: Add support for 0x1_2_3_4 bignums.

Tue Feb 10 14:43:40 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Change -linux* to -linux-gnu*.
	* configure: Rebuild.

	* app.c (do_scrub_begin): Treat \r as whitespace.

Mon Feb  9 14:16:11 1998  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.am: Update dependencies.
	* Makefile.in: Rebuild.

Sat Feb  7 15:33:51 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure, aclocal.m4: Rebuild with new libtool.

Fri Feb  6 16:08:30 1998  Jeffrey A Law  (law@cygnus.com)

        * config/tc-mips.c (md_begin): If mips_cpu is set, then use it as
        the argument to bfd_set_arch_mach.
        (load_address): Use bfd_arch_bits_per_address to determine the
        bit size of an address instead of looking at the isa level.
        (macro, macro2, s_cprestore, s_cpadd): Likewise.

Fri Feb  6 14:44:34 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_parse_option): Add -mv850any command line option.

Thu Feb  5 12:39:08 1998  Ian Lance Taylor  <ian@cygnus.com>

	* ehopt.c: New file.
	* as.h (enum _relax_state): Add rs_cfa.
	(check_eh_frame, eh_frame_estimate_size_before_relax): Declare.
	(eh_frame_relax_frag, eh_frame_convert_frag): Declare.
	* read.c (emit_expr): Call check_eh_frame.
	* write.c (cvt_frag_to_fill): Handle rs_cfa.
	(relax_segment): Likewise.
	* Makefile.am: Rebuild dependencies.
 	(GAS_CFILES): Add ehopt.c.
	(GENERIC_OBJS): Add ehopt.o.
	* doc/internals.texi (Frags): Document rs_cfa.

	* as.c (show_usage): Mention --traditional-format.
	(parse_args): Accept --traditional-format.
	* as.h (flag_traditional_format): Declare.
	* output-file.c (output_file_create): If flag_traditional_format,
	set BFD_TRADITIONAL_FORMAT on stdoutput.
	* doc/as.texinfo, doc/as.1: Document --traditional-format.

	* config/tc-mips.c (append_insn): Make sure that if we have a
	fixup for an unmatched %hi reloc, it does not associated with a
	variant frag.

	* configure, Makefile.in, aclocal.m4: Rebuild with new libtool.
	* doc/Makefile.in: Likewise.

Wed Feb  4 15:41:54 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-m32r.c (check_for_side_effects): New function.
	(can_make_parallel): Add checks for instruction side effects
	clashing with the other instruction.
	(assemble_parallel_insn): Improve warning messages.  Return error
	message from non-swapped instruction order.

Wed Feb  4 20:00:26 1998  James G. Smith  <jsmith@teknema.demon.co.uk>

	* config/tc-arm.c: Rename arm_after_pass_hook() to arm_cleanup().

	* config/tc-arm.h: Replace md_after_pass_hook definition with a
 	md_cleanup definition.  This moves the forced literal output to
 	the end of the source pass, and avoids macro's inserting literals
 	into the code immediately after the macro expansion.

Wed Feb  4 13:17:19 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sparc.h (tc_fix_adjustable) [OBJ_ELF]: A reloc against
	a gas internal symbol is adjustable.
	* config/tc-ppc.h (tc_fix_adjustable): Likewise.

	* as.h: If gcc version greater than 2.6, use `__format__' and
	`__printf__' in function attributes, rather than `format' and
	`printf'.

Mon Feb  2 18:38:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-sparc.c: Only include elf/sparc.h if OBJ_ELF.

Mon Feb  2 18:30:34 1998  Steve Haworth  <steve@pm.cse.rmit.EDU.AU>

	Add tms320c30 support:
	* config/tc-tic30.h: New file.
	* config/tc-tic30.c: New file.
	* config/obj-coff.h: If TC_TIC30, include coff/tic30.h and define
	TARGET_FORMAT as "coff-tic30".
	* configure.in (tic30-*-*aout*, tic30-*-*coff*): New targets.
	* Makefile.am: Rebuild dependencies.
	(CPU_TYPES): Add tic30.
	(CPU_OBJ_VALID): tic30-aout is valid.
	(TARGET_CPU_CFILES): Add config/tc-tic30.c.
	(TARGET_CPU_HFILES): Add config/tc-tic30.h.
	* configure, Makefile.in: Rebuild.

Mon Feb  2 10:20:37 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (md_assemble): Improvements to error messages.

Mon Feb  2 12:39:05 1998  Geoff Keating  <geoffk@ozemail.com.au>

	* config/tc-ppc.c (md_apply_fix3): Change BFD_RELOC_HI16 and
 	BFD_RELOC_HI16_S to store the high bits of any value.

	* config/tc-ppc.h (tc_fix_adjustable): Undo change of Fri Jun 27.
	(TC_RELOC_RTSYM_LOC_FIXUP): Don't let the
	assembler calculate relocations to any external symbol at all.
	* config/tc-ppc.c (md_apply_fix3) [OBJ_ELF]: Correct bugs
	involving generation of pc-relative relocs.
	(md_pcrel_from_section) [OBJ_ELF]: The job this code used to do
	has been moved to md_apply_fix3.

	* config/tc-ppc.c (md_apply_fix3): Fix test for too-far branch.
	(ppc_elf_suffix): Warn about 'identifier+constant@got' syntax,
	which actually means (the address of identifier's GOT entry) +
	constant, which is not particularly useful.

Fri Jan 30 11:02:35 1998  Doug Evans  <devans@canuck.cygnus.com>

	* read.h (include_dirs): Declare.
	(include_dir_count,include_dir_maxlen): Declare.

Fri Jan 30 11:47:02 1998  Ian Lance Taylor  <ian@cygnus.com>

	* configure.in: Correct check for shared opcodes library.
	* configure: Rebuild.

	* listing.c (buffer_line): If we can't open the file, set at_end.
	(listing_print): Remove unused local variable fi.

	* config/m68k-parse.y (reglistpair): Handle register list in
	either order.

	* config/vms-conf.h: Don't undef VERSION.

Thu Jan 29 14:42:44 1998  Pat Rankin  <rankin@eql.caltech.edu>

	* Makefile.am (CONFIG_OBJS): New variable, containing part of old
	OBJS variable.
	(GENERIC_OBJS): New variable, with the rest of the old OBJS
	variable.
	(OBJS): Now just $(CONFIG_OBJS) and $(GENERIC_OBJS).
	($(srcdir)/make-gas.com): Rename from make-gas.com.
	(stamp-mk.com): Replace $(OBJS) with $(GENERIC_OBJS).
	(EXTRA_DIST): Define.
	* vmsconf.sh: Handle {targ-cpu, obj-format, atof-targ} modules
	explicitly rather than via the list of object files.
	(gcc-as.opt): New file created when make-gas.com is run.
	* config-gas.com: Create {targ-cpu.h, obj-format.h, targ-env.h,
	itbl-cpu.h} to #include appropriate file rather than copying that
	file.
	* config/vms-conf.h: Synchronize with current config.in.
	* Makefile.in: Rebuild.

Thu Jan 29 18:48:19 1998  Bill Moyer  <billm@cygnus.com>

	* config/tc-d30v.c (do_assemble): Added flag_explicitly_parallel.
	(parallel_ok): Relaxed parallel subinstruction dependency check.

Wed Jan 28 14:35:00 1998  Bill Moyer <billm@cygnus.com>

	* as.h (flag_warn_suppress_instructionswap): added new flag.
	* tc-d10v.c (md_parse_option,md_longopts): added "--nowarnswap" 
	command line argument.
	* tc-d10v.c (write_2_short): emit "Swapping instructions"
	warning only if flag_warn_suppress_instructionswap is false.

Wed Jan 28 16:41:19 1998  J.J. van der Heijden  <J.J.vanderHeijden@student.utwente.nl>

	* configure.in (i386-*-mingw32*): New target.
	* configure: Rebuild.

Wed Jan 28 14:51:18 1998  Ian Lance Taylor  <ian@cygnus.com>

	* symbols.c (resolve_symbol_value): Don't set the segment if it
	hasn't changed, and this is OBJ_AOUT without BFD_ASSEMBLER.

	* config/obj-aout.h (S_IS_LOCAL): Correct typo--pass argument to
	S_GET_SEGMENT.

Wed Jan 28 13:54:50 1998  Pat Rankin  <rankin@eql.caltech.edu>

	as.h (unlink): Reverse 13-Feb-97 change; use of unlink vs remove
	depends upon HAVE_{UNLINK,REMOVE} values rather than host
	compiler.

Wed Jan 28 13:48:08 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/obj-coff.h (RESOLVE_SYMBOL_REDEFINITION): Define.

Wed Jan 28 09:52:00 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c (v850_insert_operand): Display instruction when
	an error is encountered.

Tue Jan 27 13:32:01 1998  Robert Lipe  <robertl@dgii.com>

	* configure.in (i386-*-sco3.2v5*): Defaults to ELF now.
	(i386-*-sco3.2v5*coff): New target.
	(i386-*-sco3.2*): New target.
	* configure: Rebuild.

Tue Jan 27 11:06:52 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-v850.c: Tidy error message production.

Tue Jan 27 12:24:32 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-arm.c (md_apply_fix3): Add new variable newimm to hold
	validate_immediate return value in the right type for comparisons
	to FAIL.

Tue Jan 27 06:51:59 1998  Richard Henderson  <rth@cygnus.com>

	* listing.c (MAX_BYTES): Use listing variables not constants.
	(data_buffer): No longer an array, but a pointer.
	(calc_hex): sizeof(data_buffer) -> MAX_BYTES.
	(listing_listing): Allocate data_buffer.

Tue Jan 27 06:38:35 1998  Richard Henderson  <rth@cygnus.com>

	* as.c (parse_args): Add --listing-lhs-width, --listing-lhs-width2,
	--listing-rhs-width, --listing-cont-lines.
	(show_usage): Update.
	* listing.c (listing_lhs_width, listing_lhs_width_second): New vars.
	(listing_lhs_cont_lines, listing_rhs_width): New vars.
	(print_lines): Use the variables instead of the constants.
	(listing_listing): Likewise.	
	* listing.h: Declare the new vars.
	
Tue Jan 27 05:32:05 1998  Richard Henderson  <rth@cygnus.com>

	* as.c (parse_args): Add --keep-locals alias for -L.
	Add --strip-local-absolute.
	(show_usage): Update.
	* as.h (flag_strip_local_absolute): New flag.
	* symbols.c (S_IS_LOCAL): Use it.
	* config/obj-aout.h (S_IS_LOCAL): Likewise.
	* config/obj-bout.h (S_IS_LOCAL): Likewise.
	* config/obj-coff.h (S_IS_LOCAL): Likewise.

Mon Jan 26 13:07:41 1998  Nick Clifton  <nickc@cygnus.com>

	* config/tc-m32r.c: Detect if explicitly parallel instructions
	might have an io conflict and issue a warning message. 

Thu Jan 22 17:51:44 1998  Nick Clifton  <nickc@cygnus.com>

	* cgen.c (cgen_save_fixups, cgen_restore_fixups,
	cgen_swap_fixups): Functions to save, restore and swap the fixup
	chain with a backup copy.
	(cgen_asm_finish_insn): Returns address of constructed insn.

Wed Jan 21 16:49:10 1998  Richard Henderson  <rth@cygnus.com>

	* listing.c (file_info_struct): Remove FILE, add POS.
	(last_open_file_info, last_open_file): New; a one entry FILE* cache.
	(file_info): Don't open the file.
	(buffer_line): Check for the file in the last_open cache, updating
	as necessary.
	(print_source): Don't reference file_info->file.
	(listing_listing): Likewise.
	(listing_print): Close the file in the cache, if any.

Fri Jan 16 14:51:48 1998  Ian Lance Taylor  <ian@cygnus.com>

	* read.c (dwarf_file_string): New file static variable.
	(emit_expr): Look for constant sequence that leads up to a file
	name in DWARF debugging output.
	(stringer): Use dwarf_file_string to decide whether to accept a
	string as a file name.

Fri Jan 16 11:30:37 1998  Richard Henderson  <rth@cygnus.com>

	* tc-m68k.c (m68k_ip): Remove absl->reglst MRI hack.
	(crack_operand): Add reg->reglst MRI hack.
	(r_seg): Put reglst symbols in reg_section.
	(m68k_frob_symbol): Frob reglst symbols into absolute_section.

Thu Jan 15 14:19:01 1998  Richard Henderson  <rth@cygnus.com>

	* tc-sh.c (get_specific): Handle SGR & DBR.

Thu Jan 15 13:46:48 1998  Richard Henderson  <rth@cygnus.com>

	* tc-h8300.c (parse_reg): Take the length of the symbol into
	account when attempting to match a register name.
	* tc-h8500.c (parse_reg): Likewise.

Wed Jan 14 17:52:33 1998  Nick Clifton  <nickc@cygnus.com>

	* cgen.c: Formatting changes to improve readability.

Wed Jan 14 15:41:41 1998  Jeffrey A Law  (law@cygnus.com)

	* config/tc-mips.c (macro): Rework division code to avoid unfilled
	delay slot.

Wed Jan 14 18:04:20 1998  Michael Meissner  <meissner@cygnus.com>

	Based on a patch from Jim Wilson
	* config/tc-d30v.c (do_assemble): Remove non-ansi default case.
	(tc_gen_reloc): Handle cross section PC relative relocs
	correctly.

Wed Jan 14 15:02:19 1998  Doug Evans  <devans@seba.cygnus.com>

	* config/tc-mips.c (mips_ip): Don't test pinfo flags if INSN_MACRO.

Mon Jan 12 13:04:57 1998  Doug Evans  <devans@seba.cygnus.com>

	* cgen.c: #include setjmp.h.  Clean up pass over `struct foo' usage.
	(expr_jmp_buf): New static local.
	(cgen_parse_operand): Allow use of longjmp in parsing to handle errors.
	(cgen_md_operand): New function.
	* tc-m32r.c: Clean up pass over `struct foo' usage.
	(md_estimate_size_before_relax): Use CGEN_INSN_MNEMONIC.

Tue Jan  6 15:36:02 1998  Richard Henderson  <rth@cygnus.com>

	* symbols.c (S_SET_SEGMENT): Don't set the segment for section syms.
	(S_IS_EXTERNAL, S_IS_LOCAL): Correct parenthetication.

Fri Jan  2 16:08:54 1998  Ian Lance Taylor  <ian@cygnus.com>

	* config/tc-i386.c (i386_operand): Give an error if there are
	unrecognized characters after an expression.

For older changes see ChangeLog-9697
