* config/tc-i960.h (TC_COFF_SET_MACHINE): New macro. Calls tc_headers_hook.
* config/tc-i960.c (targ_has_iclass): Use I_CX | I_CX2 where I_CX was used
previously.
(tc_headers_hook): If I_CX2 is found, set flags to F_I960CA.
* config/tc-i960.c (po_hash): Declaration deleted.
(next_object_file_charP): Ditto.
(regnames, aregs, coj): Now const.
(parse_memop): Static array def_scale now const.
(md_begin): Cast away const when passing hash routines addresses of values in
regnames or aregs.
(md_longopts): Added "link-relax" and "no-relax" hyphenated forms. Continue to
accept one-word forms.
(struct tabentry, arch_tab): Moved to top level from inside md_parse_option.
Now const.
(md_show_usage): Use arch_tab to generate usage message. Print hyphenated
forms of relax options.
* config/tc-i960.h (DEFINE_I960_AOUT, TC_S_IS_*, TC_S_*_SYSPROC,
TC_S_FORCE_TO_*): Moved from here...
* config/tc-i960.c: ... to here. Changed DEFINE_I960_AOUT stuff to test
OBJ_AOUT and OBJ_BOUT directly.
* config/tc-i960.h (CTRL, COBR, COJ, REG, MEM*, FBRA, CALLJ, M1-M3, REG_OPC,
R_*, SFR, LIT, FP, OP, R, RS, RL, RSL, F, {R,F}{,L}{2,4}, M, SFR_OK, LIT_OK,
FP_OK, REG_ALIGN, MEMOP, I_*): Macros deleted.
* config/tc-i960.c (ARCH_XL): Define.
(arch_tab): Include XL.
(targ_has_sfr, targ_has_iclass): Handle XL.
(tc_headers_hook): Set flags to F_I960XL for i960XL.
- sparc[lite]-coff as well as sparc-lynx
- producing coff (including debug info) under BFD_ASSEMBLER option
- cleanup of cpu-specific code in non-cpu-specific files
(especially write.c)
- providing common code to avoid duplication in cpu-specific files
(specifically, md_number_to_chars)
- stylistic changes & misc cleanup
================
* config/tc-sparc.c (tc_gen_reloc): Make adjustment to addend be dependent on
howto fields, not on format flavour.
* struc-symbol.h (struct symbol): New fields sy_obj and sy_tc, defined as types
OBJ_SYMFIELD_TYPE and TC_SYMFIELD_TYPE, if those macros are defined.
* config/obj-coff.h (TC_SYMFIELD_TYPE, OBJ_SYMFIELD_TYPE): Define.
(TARGET_SYMBOL_FIELDS, I960_SYM_FIELDS): Don't define.
(sy_tc, sy_obj): Define so that the fields look like they used to, until all
references get changed.
* write.c (fixup_segment): Lots of variables no longer register. Reordered
some code for easier reading.
* config/obj-coff.c (obj_coff_dim): dim_index no longer register. Deleted
superfluous return statement.
(obj_coff_line, obj_coff_size, obj_coff_scl, obj_coff_type, obj_coff_val,
tag_init, tag_insert): Deleted superfluous return statement.
(align, obj_coff_section): Deleted debugging printfs.
* config/tc-i386.c (md_assemble): Discard some register decls. Use assignment
rather than memcpy to copy template.
(op_hash, reg_hash, prefix_hash): Default C initialization of statics is
sufficient.
* config/tc-sparc.c (print_insn): Array Reloc is now const, and points to
const.
* config/obj-coff.h (TARGET_FORMAT): Only use coff-sparc-lynx if TE_LYNX; use
coff-sparc otherwise.
[USE_NATIVE_HEADERS]: Delete this code; it isn't used.
* write.c (fixup_segment): Call TC_VALIDATE_FIX, if defined, before processing
a fixup. Call TC_ADJUST_RELOC_COUNT just before returning. Remove some
i960-coff-specific code.
(TC_ADJUST_RELOC_COUNT): Default to doing nothing.
* config/tc-i960.h (TC_ADJUST_RELOC_COUNT) [OBJ_COFF]: Define.
(i960_validate_fix): Declare.
(TC_VALIDATE_FIX): Define.
* config/tc-i960.c (i960_validate_fix): New function.
* write.c (number_to_chars_littleendian): New function. Write out bytes in
little endian order, doing size and range checking.
(number_to_chars_bigendian): New function, similar.
* write.h: Declare them.
* config/tc-*.c (md_number_to_chars): Use them.
* config/tc-vax.c (md_apply_fix): Ditto.
* config/tc-i386.c (md_apply_fix): Ditto.
* config/obj-coff.c: Rearranged code for handling line number data.
(line_fsym): Renamed from function_lineoff in BFD_ASSEMBLER case, since the
usage is different from non-BFD_ASSEMBLER case.
(in_function, clear_function, set_function): New macros, to combine some of the
functionality implemented in differnet ways in BFD_ASSEMBLER and non-... code.
Used in other functions that used to check function_lineoff &c.
(obj_emit_lineno): Split into two copies, one for BFD_ASSEMBLER, one for not.
Non-BFD_ASSEMBLER version now has temporary variable to contain char* pointer
pointed to by char** argument. Always follow CROSS_COMPILE code; easier to
read that way.
(obj_coff_ln): Don't call add_lineno or c_line_new if appline is set.
(obj_coff_endef) [BFD_ASSEMBLER]: Don't do anything special for ".bf", it's
been done elsewhere.
(coff_frob_symbol): If ilne number data is pending, call add_linesym to flush it.
(coff_frob_file): Don't do that here.
* config/obj-coff.h (coff_frob_file): Declare.
(obj_frob_file): Define, to call it.
* config/tc-sparc.h (md_create_short_jump, md_create_long_jump,
md_estimate_size_before_relax: Define them as macros calling as_fatal.
* config/tc-sparc.c: Don't define them as functions.
* as.c: fix typo recently introduced.
* as.h : Don't include aout/reloc.h - it's not right for COFF!
* expr.c: Much rewriting, to accomodate MRI syntax for
expressions. Also easier to read now.
* listing.c: Put back defuns
* read.c: modified to accept MRI syntax, put back listing pseudo
ops so that an assembler built with NO_LISTING ignores list ops
rather than pukes.
* write.c, write.h: fixs - only keep a reloc type in a fix if the target
machine is a SPARC or a 29K.
* config/obj-aout.c: added s_sect pseudo op
* config/obj-coffbfd.c: lints, set the filehdr flags right and
fill in the timestamp.
* config/obj-coffbfd.h: Since we don't include aout/reloc.h
anymore, define all the relocs which the tc-<x> bit will use so we
can translate from them to the coff types.
* config/tc-a29k.c: reloc_type isn't ane enum any more
* config/tc-m68k.c: Added NO_RELOC definition.
Now compiles for sparc aout, 68k aout (MRI and MIT syntax),
29k coff.
So far works as replacement for sparc and 68k /bin/as.