(do_end): Add parameter. In MRI mode, print it out.
(do_irp): New static function.
(sub_actual): Change parameter m to formal_hash, changing type
from macro_entryh * to hash_table *.
(macro_expand_body): New static function, broken out of
macro_expand.
(macro_expand): Call macro_expand_body.
(K_*): Fully parenthesize.
(K_IRP, K_IRPC): Define.
(mrikinfo): Add IRP and IRPC.
(process_pseudo_op): In MRI mode, print out END pseudo-op. Pass
line to do_end. Handle K_IRP and K_IRPC.
"begin_brtab" and "end_brtab" pseudo-ops.
(pa_brtab): New function.
(tc_gen_reloc, SOM version): Handle R_BEGIN_BRTAB and R_END_BRTAB.
(hppa_force_relocation): Force relocations for BRTAB fixups
when OBJ_SOM is defined.
More infrastructure for PA optimziations.
(process_file): Don't warn about missing END in MRI mode.
(do_if): New static function.
(get_mri_string, do_ifc): New static functions.
(buffer_and_nest): Treat MRI mode like alternate syntax mode.
(do_aendr): Change error message in MRI mode.
(do_arepeat): Use REPT/ENDR in MRI mode.
(do_formals): In MRI mode, add special NARG formal.
(macro_expand): Various changes for MRI mode: permit a qualifier
on the macro name; set special NARG formal; permit unnamed
positional arguments; use && to concatenate named parameters;
permit \d to specify an unnamed parameter; permit named parameters
to not start with \; use == to see if a parameter exists.
(getstring): In MRI mode, allow <> to quote a string.
(K_IFEQ, K_IFNE, K_IFLT, K_IFLE, K_IFGE, K_IFGT): Define.
(K_IFC, K_IFNC): Define.
(struct keyword): Name structure used in kinfo array.
(mrikinfo): New static array.
(process_pseudo_op): Don't require leading '.' in MRI mode.
Handle new MRI pseudo-op definitions.
(add_keyword): New static function, broken out of process_init.
(process_init): Use add_keyword. In MRI mode, add mrikinfo table.
(long_options): Add "mri".
(show_usage): Mention -M/--mri.
(main): Call process_init after processing arguments. Handle -M.
* doc/gasp.texi: Document -M/--mri.
iword rather than expr8 and expr16. When recognizing 'M', use
issbyte rather than expr8. When recognizing 'Q' and 't', just
check for O_constant rather than using expr8.
* config/m68k-parse.h (expr8, expr16): Don't define.
* Makefile.in (m68k-parse.o): Depend upon m68k-parse.h, not
m68k-parse.y.
(m68k_quick): New static variable.
(m68k_rel32): New static variable.
(md_pseudo_table): Add opt and reg.
(m68k_ip): Permit absolute symbols in 'l'/'L' recognition. Check
m68k_quick in 'M' and 'Q' recognition. Check m68k_abspcadd in
DISP handling. Check m68k_rel32 in BASE/POST/PRE handling.
(md_begin): In MRI mode, initialize m68k_abspcadd and m68k_rel32.
In MRI mode, change unsized branch aliases to be variable sized.
(struct opt_action): Define.
(opt_table): Define.
(s_opt): New static function.
(skip_to_comma): New static function.
(opt_chip): New static function.
(opt_list): New static function.
(opt_list_symbols): New static function.
(s_reg): New static function.
* as.h (flag_keep_locals): Change from unsigned char to int.
(flag_no_warnings): Likewise.
(frag_now_fix): In absolute_section, return abs_section_offset.
* subsegs.c (subseg_change): If switching to absolute_section,
just set now_seg and now_subseg.
(subseg_set_rest): Special handling when switching to or from
absolute_section.
(md_pseudo_table): Add fopt and mask2.
(m68k_ip): Use m68k_float_copnum, not COPNUM, when setting
coprocessor register to use. In case 'I' when checking operands,
correct coprocessor register numbers. In case 'I' when setting
operands, don't add 1.
(s_fopt): New static function.
* config/m68k-parse.h (COPNUM): Don't define.
* configure.in: Consistently use ${target_cpu_type} rather than
${cpu_type} after the loop.
* configure: Rebuild.
* Makefile.in (targ-cpu.o): Use @target_cpu_type@ rather than
@cpu_type@.
68ec020, 68ec030, 68ec040, and 68330.
(md_pseudo_table): Add chip and comline.
(m68k_init_after_args): Use strcasecmp when comparing default_cpu
against architectures.
(mri_chip, s_chip): New static functions.
* read.h (mri_comon_symbol): Declare.
(s_mri_common): Declare.
* read.c (mri_line_label): New static variable.
(mri_common_symbol): New global variable.
(potable): Add "common" and "common.s".
(read_a_source_file): In MRI mode, set mri_line_label for a label
at the start of a line.
(s_mri_common): New function.
(s_space): Handle mri_common_symbol.
* symbols.c (colon): Change return value from void to symbolS *,
and return new symbol. If mri_common_symbol is set, attach the
new symbol to it.
(resolve_symbol_value): Handle an sy_mri_common symbol.
* symbols.h (colon): Change return value in declaration.
* subsegs.c (subseg_set_rest): Clear mri_common_symbol.
(subseg_set (both versions)): Likewise.
* frags.c (frag_more): Warn if mri_common_symbol is not NULL.
* write.c (adjust_reloc_syms): Skip sy_mri_common symbols.
(write_object_file): Discard sy_mri_common symbols.
(fixup_segment): Change relocations against sy_mri_common symbols
to be against the common symbol itself.
* config/obj-coff.c (yank_symbols): Discard sy_mri_common symbols.
(fixup_segment): Change relocations against sy_mri_common symbols
to be against the common symbol itself.
* config/obj-aout.c (obj_crawl_symbol_chain): Discard
sy_mri_common symbols.
LINKER_RELAXING_SHRINKS_ONLY is defined.
* config/tc-i960.h (LINKER_RELAXING_SHRINKS_ONLY): Define it.
* doc/internals.texi (Relaxation): Write up some stuff on linker relaxing and
LINKER_RELAXING_SHRINKS_ONLY.
* gas/m68k/op68000.d: New test.
* gas/m68k/cas.s, gas/m68k/cas.d: New test.
* gas/m68k/bitfield.s, gas/m68k/bitfield.d: New test.
* gas/m68k/schwab.d: Run objdump with -j .text. Adjust for
changes to disassembler.
* gas/m68k/all.exp: Run new tests. Run schwab test for
m68k-*-coff*.
including support for Motorola syntax.
* config/m68k-parse.h: New file; definitions shared between
m68k-parse.y and tc-m68k.c.
* config/tc-m68k.c: Include m68k-parse.h.
(enum operand_type): Move to m68k-parse.h, where it is named
m68k_operand_type. Rename all uses. Rearrange somewhat. Add
FPREG. Rename AOFF to DISP. Rename AINDX to BASE. Rename APODX
to POST. Rename APRDX to PRE. Remove AMIND. Rename MSCR to
CONTROL. Remove DINDR.
(struct m68k_exp): Move to m68k-parse.h. Remove e_beg, e_end and
e_seg fields. Rename e_exp to exp. Rename e_siz to size, and
change type to enum m68k_size. Change all uses.
(enum _register): Move to m68k-parse.h, where it is named
m68k_register. Rename all uses. Add ZDATA0-7 and ZADDR0-7.
(struct m68k_op): Move to m68k-parse.h. Change all fields.
(seg): Don't define.
(add_exp): Remove.
(FAIL, OK): Remove.
(m68k_reg_parse): Move to m68k-parse.y, and rewrite.
(SKIP_WHITE, SKIP_W): Remove.
(try_moto_index, try_index): Remove.
(m68k_ip_op): Move to m68k-parse.y, and rewrite to use grammar.
(main): Remove obsolete test function.
(m68k_ip): Extensive changes to use new grammar.
(get_regs): Remove.
(crack_operand): m68k_ip_op now returns 0 on success.
(init_table): Add ssp, zd0-7 and za0-7.
(md_assemble): Make er const. Correct loop over operands when
looking for error message.
(md_begin): Set alt_notend_table for '(' and '@'.
(get_num): Expression is already parsed. Don't set seg.
* configure.in: If cpu_type is m68k, put m68k-parse.o in
extra-objects.
* configure: Rebuild.
* Makefile.in (DISTSTUFF): Add m68k-parse.c.
(BISON): Use ../bison/bison if it exists.
(BISONFLAGS): Define as empty.
(TARG_CPU_DEP_m68k): Depend upon $(srcdir)/config/m68k-parse.h.
(m68k-parse.c, m68k-parse.o): New targets.