(struct m68k_incant): Change m_operands field to be const.
(struct m68k_it): Change args field to be const.
(m68k_ip): Change local variable s to be const.
(opcode_ptr): Remove.
(md_begin): Use m68k_numopcodes, not numopcodes. Use
m68k_opcodes, not removed opcode_ptr. Use m68k_numaliases, not
numaliases.
"sfcr", and "dfcr" as synonyms for existing entries.
(md_begin): In MRI mode, force flag_reg_prefix_optional to 1.
(md_parse_option): Removed unused locals i and arch. Change type
of arch (another one) to unsigned long.
(tc_coff_sizemachdep): Add return after abort to avoid warning.
* as.h (flag_mri): Declare/define.
* as.c (show_usage): Mention -M and its synonym --mri.
(parse_args): Add 'M' to std_shortopts. Add "mri" to
std_longopts. Set flag_mri if -M is seen.
(main): Call parse_args before input_scrub_begin. Call
expr_begin.
* app.c (do_scrub_begin): Don't set lex for '"' or '\'' in MRI
mode. Do set lex for ';', '*', and '!' in MRI mode.
(do_scrub_next_char): Remove MRI ifdef in LEX_IS_WHITESPACE case.
In MRI mode, keep spaces between labels and colons. Remove MRI
ifndef around LEX_IS_ONECHAR_QUOTE case. In MRI mode, don't use
'!' or '*' as comment characters even if they are in
comment_chars.
* read.h (lex_type): No longer const.
* read.c: Include libiberty.h.
(lex_type): No longer const.
(read_begin): In MRI mode, set lex_type of '?' to 3.
(potable): Add dc, dc.b, dc.d, dc.l, dc.s, dc.w, dc.x, ds, ds.b,
ds.l, ds.w, and xdef.
(read_a_source_file): Change LABELS_WITHOUT_COLON ifdef to check
for MRI mode at runtime rather than compile time. Handle the EQU
pseudo-op in MRI mode. Remove bogus MRI ifdef around done_pseudo.
Change NO_PSEUDO_DOT ifdef to also take effect for MRI mode at
runtime.
(cons): In MRI mode, always call parse_mri_cons rather than
TC_PARSE_CONS_EXPRESSION.
(parse_mri_cons): Always compile, not just when MRI is defined.
Call TC_PARSE_CONS_EXPRESSION, not expression, when the input is
not a string constant. Handle A and E modifiers.
(float_cons): Accept :xxxx, where the x's are hex digits.
* expr.h (operatorT): Add O_eq, O_ne, O_lt, O_le, O_ge, O_gt.
(expr_begin): Declare.
* expr.c (integer_constant): In MRI mode, if the base was not
specified, look for a suffix on the number to set the base.
(mri_char_constant): New static function.
(operand): Remove MRI ifdef. In MRI mode, do various things: Pass
0 as the base when calling integer_constant if there was no
prefix. Check for a hex constant suffix if when a leading '0' is
seen. Don't accept 0x or 0b as a prefix. Check for E'chars' and
A'chars'. Handle MRI character constants. Treat '"' as the
unary bitwise not operator. Treat $ as the program counter, or as
the prefix for a hex constant. Treat % as the prefix for a binary
constant and @ as the prefix for an octal constant. Treat : as
the prefix for a hex constant.
(op_encoding): Set '"' to O_bit_not, '<' to O_lt, and '>' to O_gt.
(op_rank): No longer const. Change rank values.
(expr_begin): New function.
(operator): New static function.
(expr): Use operator. Don't bother to mention the operator in
warnings. Remove bogus #if 0 code. Handle new operatorT values.
* atof-generic.c (atof_generic): In MRI mode, accept underscores
around the exponent in floating point numbers.
* symbols.h (symbols_case_sensitive): Declare.
* symbols.c (symbols_case_sensitive): New global variable.
(symbol_create): Check symbols_case_sensitive.
(symbol_find_base): Likewise.
(resolve_symbol_value): Handle new operatorT values.
(print_expr_1): Likewise.
(S_IS_LOCAL): In MRI mode, names beginning with two '?' characters
are local.
(s_uses): New static function.
(sh_coff_frob_file): New function.
(md_convert_frag): Call subseg_change before calling fix_new.
(sh_handle_align): New function.
(SWITCH_TABLE): Define.
(sh_force_relocation): New function.
(md_apply_fix): Handle R_SH_USES, R_SH_COUNT and R_SH_ALIGN.
(sh_coff_reloc_mangle): Likewise. Also handle switch table
entries.
* config/tc-sh.h (HANDLE_ALIGN): Define.
(sh_handle_align): Declare.
(TC_FORCE_RELOCATION): Define.
(sh_force_relocation): Declare.
(TC_COUNT_RELOC): Simplify; rely on TC_FORCE_RELOCATION instead.
(tc_frob_file): Define.
(sh_coff_frob_file): Declare.
* config/obj-coff.c (write_object_file): Call tc_frob_file if it
is defined.
(fixup_mdeps): Call HANDLE_ALIGN if it is defined.
(TC_FORCE_RELOCATION): Define if not defined.
(fixup_segment): Use TC_FORCE_RELOCATION to decide whether to
clear the symbol fields of fixP.
* config/tc-arm.h (BYTE_ORDER): Delete.
(TARGET_FORMAT): Provide value for OBJ_COFF and TE_PE.
(ARM_BI_ENDIAN): Define if OBJ_COFF and TE_PE.
* config/tc-arm.c (byte_order): Delete.
(md_number_to_chars): Reference target_big_endian, not byte_order.
(md_chars_to_number): Likewise.
(md_longopts): Add -EB/-EL if ARM_BI_ENDIAN.
(md_parse_options): Recognize -EB/-EL.
(md_show_usage): List -EB/-EL.
* config/tc-sparc.h (sparc_pic_code): Always declare, not just
when OBJ_ELF.
(TC_RELOC_RTSYM_LOC_FIXUP): Define when OBJ_AOUT.
(tc_fix_adjustable): New definition for OBJ_AOUT.
* config/tc-sparc.c (sparc_pic_code): Always define, not just when
OBJ_ELF.
(md_apply_fix): Adjust reloc addend for OBJ_AOUT and PIC. In
BFD_RELOC_32_PCREL_S2 case, don't increment val for an external
symbol when PIC.
(tc_gen_reloc): Generate different PIC relocs when OBJ_AOUT, as
well as when OBJ_ELF.
(md_shortopts): If OBJ_AOUT, include `k'.
(md_parse_option): If OBJ_AOUT, handle 'k'.
(md_show_usage): Mention -k if OBJ_AOUT, and -KPIC if OBJ_ELF.
(md_pcrel_from): Don't add in size for an external symbol when
PIC.
* write.c (adjust_reloc_syms): Set sy_used_in_reloc for both
symbols in a fixup where a defined symbol is subtracted from an
undefined symbol (when UNDEFINED_DIFFERENCE_OK is defined).
(fixup_segment): Do nothing for the difference of two symbols if
UNDEFINED_DIFFERENCE_OK is defined.
* ecoff.c (add_file): Don't collapse multiple .file commands into
a single file structure.
(ecoff_build_lineno): Set ilineBase to sum of previous file's
ilineBase and cline.
* config/tc-mips.c (mips_4010): New static variable.
(interlocks): New static variable.
(md_begin): Check for a cpu of "r4010". Set mips_4010 correctly.
If mips_4650 or mips_4010, set interlocks.
(append_insn): Check interlocks, not mips_4650.
(mips_emit_delays): Likewise.
(mips_ip): Only permit INSN_4010 instructions if mips_4010.
(md_longopts): Add "m4010" and "no-m4010".
(md_parse_option): Accept -mcpu=r4010. Handle -m4010 and
-no-m4010.
(md_show_usage): Document -m4010 and -no-m4010.
(init_file): Initialize fake.
(add_file): Add new parameter fake. Change all callers.
(ecoff_build_debug): Don't warn about a missing .end for a fake
file.
PR 6509.
* config/tc-i386.c (md_apply_fix3): Rename from md_apply_fix1.
Accept pointer to value and segment. Fix OBJ_ELF PCREL case to
handle global defined symbols correctly.
(md_apply_fix): Remove both versions.
* config/tc-i386.h (MD_APPLY_FIX3): Define.
BSF_FUNCTION.
(symbol_globalP, symbol_global_lastP): New global variables.
(yank_symbols): Sort defined global symbols to the end, just
before the undefined symbols.
(glue_symbols): Add two arguments, and use them instead of
referring directly to global variables.
(crawl_symbols): Call glue_symbols twice, once for defined globals
and once for undefined. Add corresponding know calls.
PR 5491.
* write.c (fixup_segment): Pass fixP to TC_RELOC_RTSYM_LOC_FIXUP,
not fixP->fx_r_type.
* config/tc-sparc.c (sparc_pic_code): New global variable.
(md_apply_fix): If generating PIC, adjust fx_addnumber for any non
PC relative reloc.
(tc_gen_reloc): If generating PIC, adjust various reloc types.
Remove fx_pcrel assert, since it is no longer true.
(md_parse_option): Handle -K PIC.
* config/tc-sparc.h (sparc_pic_code): Declare if OBJ_ELF.
(TC_RELOC_RTSYM_LOC_FIXUP): Define if OBJ_ELF.
(tc_fix_adjustable): Don't adjust PC relative relocs if PIC.
* config/tc-i386.h (TC_RELOC_RTSYM_LOC_FIXUP): Take a fixp, not a
reloc type.
PR 7131.