(tc_fix_adjustable): Don't adjust relocs against weak symbols or
pc-relative relocs.
* config/tc-mn10300.c (md_begin): Set linkrelax.
(md_assemble): Create fixups as needed.
(md_apply_fix3): Gut. It shouldn't ever get called anymore.
First stab at fixups/relocs.
the extension part of the instruction if necessary.
(mn10300_insert_operand): Accept pointer to extension word
argument. Make insn a pointer argument too. Return type
is now void. All callers changed.
So we can correct insert operands into any instruction except those
which have 32bit operands.
* config/tc-v850.c: Fix some indention problems.
(md_relax_table): Define for D9->D99 branch displacement
relaxing.
(md_convert_frag): Do something useful instead of aborting.
(md_estimate_size_before_relax): Likewise.
(md_assemble): Note if the matching instruction has a relaxable
operand. If it does, allocate frag with frag_var and don't
do any fixups.
So we can do 9bit displacement to 22bit displacement relaxing.
hacks to improve parsing of complex hi, lo, zda, etc
expressions.
(md_assemble): Don't demand and eat a trailing ')' after finding
a v850 relocation prefix. Sign extend the constant in a
BFD_RELOC_LO16 expression. Do eat a trailing ')' after a complete
operand.
(parse_cons_expression_v850): Don't eat a trailing ')' after
finding a v850 relocation prefix.
Trying to get nec's sample code to assemble. Why oh why didn't JT try
to assemble any of their code...
(TC_CONS_FIX_NEW): Likewise.
* config/tc-v850.c (parse_cons_expression_v850): New function.
(cons_fix_new_v850): Likewise.
So we can handle ".hword lo(_foo)".
(md_pcrel_from_section): New function.
* config/tc-v850.h (MD_PCREL_FROM_SECTION): Define.
So we don't screw up pc-relative jumps/calls from one section
into another section within the same .o file.
Fixes global ctors/dtors to work with DECL_ONE_ONLY stuff.
* config/obj-elf.c (elf_frob_file): Move ECOFF debug processing to ...
(elf_frob_file_after_relocs): ... here. New function.
* config/obj-elf.h (obj_from_file_after_relocs): New macro.
* write.c (write_object_file): Call *frob_after_relocs after the
call to write_relocs.
* config/tc-alpha.c: Use new BFD_RELOC_ALPHA_ELF_LITERAL reloc.
* config/tc-alpha.c (load_expression): Don't SET_VALUE on the section
symbol, as this messes up linking. Instead, expand the recursive call
inline and change up the appropriate bits to get the 0x8000 offset
in the reloc addend.
(obj_elf_section): Add the section symbol to the symbol table.
* config/obj-elf.h (obj_begin): Define.
(elf_begin): Declare.
* as.c (perform_an_assembly_pass): Call obj_begin if it is
defined.
* obj-evax.h: move openvms definitions from here to tc-alpha.c.
* tc-alpha.c: add support for vms_case_hack like in vax/vms.
(load_expression): track clobbering of base reg before jmp/jsr.
(s_alpha_file): pass case_hack flags and source filename via
symbol table to bfd.
* tc-alpha.h (TC_CONS_FIX_NEW): define
mips_cpu is 5000, set interlocks and cop_interlocks.
(mips_ip): Give a better error message if the ISA level is wrong.
(md_parse_option): Recognize -mcpu=[v][r]5000.
* config/tc-mips.c (load_register): Remove unnecessary code that
was causing the high 32bits of 64bit constants to be lost.
Fixes PR10503. The compiler was producing the assembler code:
dli $3,0xfffffffffffff
when constructing the softfloat library. Unfortunately it was being
incorrectly assembled.
routines to fetch/store the updated instruction from/to memory.
(v850_insert_operand): If the operand has a specialized insert
routine, call it.
Getting fixups closer. At least br <target> works now.
be like identical function found in tc-ppc.c.
(get_reloc): Removed.
(v850_reloc_prefix): New function, parse lo(), hi() and hi0().
(md_assemble): emit fixups.
(md_pcrel_from): renamed from md_pcrel_from_section, emit proper
displacement.
(md_apply_fix3): handle fixups/relocs.
* config/tc-v850.h (MD_PCREL_FROM_SECTION): Removed definition.
any given register table.
(register_name): Pass appropriate table and size to reg_name_search.
(system_register_name): New function.
(SYSREG_NAME_CNT): Define.
(md_assemble): Handle operands which are system registers.
Still working on the parser..
opcode doesn't want a register, then we don't have a match.
(md_assemble): Get size of the instruction from the opcode table.
So we choose the right opcode and so that we get the sizes right.
Add support for openVMS/Alpha.
* as.h (PRINTF_LIKE): Don't define if VMS, for now.
* config/obj-evax.c: New file.
* config/obj-evax.h: New file.
* config/tc-alpha.c: Add support for EVAX format if OBJ_EVAX is
defined.
* config/tc-alpha.h: Add support for EVAX format if OBJ_EVAX is
defined. Add case for bfd_target_evax_flavour.
* config/vms-a-conf.h: New file.
* conf-a-gas.com: New file.
* configure.in: Add target alpha-*-*vms*.
* configure: Rebuild.
* makefile.vms: New file.
* read.c (s_lcomm): Align bss_seg on 8 byte boundary if OBJ_EVAX.
Don't call ffs on openVMS/Alpha.
#ifndef OBJ_ELF lines. From Eric Valette <valette@crf.canon.fr>.
(tc_gen_reloc): If out of memory call as_fatal rather than
assert. If no howto found, call as_bad_where rather than
as_fatal. Change the error message slightly. Set howto to a
non-NULL value in order to keep going.
* config/tc-arm.c: Changed INSN_SIZE to variable insn_size, as
pre-cursor to adding Thumb support. Also added cpu_variant flag
information to each of the asm_flg structures.
(md_parse_option): Updated ARM7 parsing to allow 't' for
thumb/halfword support, aswell as 'm' for long multiply.
(md_show_usage): Updated help message.
(md_assemble): Check that instruction flags are applicated to the
current cpu variant.
(md_apply_fix3, tc_gen_reloc): Add BFD_RELOC_ARM_OFFSET_IMM8 and
BFD_RELOC_ARM_HWLITERAL relocation support for new halfword and
signextension instructions.
(do_ldst): Generate halfword and signextension variants if
mnemonic flags match.
(ldst_extend): Do not allow shifts in the offset field of halfword
or signextension instructions.
(validate_offset_imm): Provide check on halfword and signextension
immediate range.
(add_to_lit_pool): Merge identical literal pool values.
Wed Jul 31 15:55:12 1996 James G. Smith <jsmith@cygnus.co.uk>
* gas/arm/arm7t.s: Added.
* gas/arm/arm7t.d: Added.
* gas/arm/arm.exp: Updated to run the new test.
(cons_fix_new_hppa): Don't coke on e_esel.
(tc_gen_reloc, SOM version): Handle R_COMP2 when used
to help generate exception handling tables.
(md_apply_fix): Don't try to apply fixups with an e_esel
selector.
(hppa_fix_adjustable): Fixups with e_esel selectors
are not adjustable.
Another stab at EH on the PA.
* tc-d10v.c: Fix packaging bug. Added range checking.
Added kludge for divs instruction. Fixed minor problem with
multiple text sections.
* tc-d10v.h (d10v_cleanup): Change prototype.
Tue Jul 23 10:49:36 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
* config/tc-d10v.c (md_apply_fix3): Fix all instruction
addresses to be right-shifted by 2.
end-sanitize-d10v
Mon Jul 22 11:32:36 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
* config/tc-d10v.c: Many changes to get relocs working.
(register_name): No longer creates a symbol for register names.
(pre_defined_registers): moved to opcodes/d10v-opc.c.
(d10v_insert_operand): Now works correctly for either container.
* config/tc-d10v.h (d10v_cleanup): Declare.
end-sanitize-d10v
* tc-alpha.c: Patches to track current minimum alignment to reduce
the number of fragments created with frag_align.
(alpha_current_align): New static variable.
(s_alpha_text): Reset alignment to 0.
(s_alpha_data, s_alpha_rdata, s_alpha_sdata): Likewise.
(s_alpha_stringer, s_alpha_space): New functions.
(s_alpha_cons, alpha_flush_pending_output): Remove functions.
(alpha_cons_align): New function to replace both of them.
(emit_insn): Only align if alpha_current_align is less than 2;
reset alpha_current_align to 2.
(s_alpha_gprel32): Likewise.
(s_alpha_section): New function. Basically duplicate the other
alpha section change hooks. Only define for ELF.
(s_alpha_float_cons): Simplify alignment handling.
(md_pseudo_table): Only define "rdata" and "sdata" if OBJ_ECOFF.
If OBJ_ELF, define "section", "section.s", "sect", and "sect.s".
Don't define the s_alpha_cons pseudo-ops. Do define
s_alpha_stringer and s_alpha_space pseudo-ops.
(alpha_align): Skip if less than current default alignment. Set
default alignment.
* tc-alpha.h (md_flush_pending_output): Remove.
(md_cons_align): Add.
* tc-alpha.c: Add oodles of function description comments.
(md_bignum_to_chars): Remove; there are no callers.
(md_show_usage): Mention some more variants.
uaxword to use s_uacons.
(sparc_no_align_cons): New static variable.
(s_uacons): New static function.
(sparc_cons_align): If sparc_no_align_cons is set, just clear it
and return.
Wed Jul 17 14:25:13 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
* config/tc-d10v.c: New file.
* config/tc-d10v.h: New file.
* configure (d10v-*-elf): New target.
* configure.in (d10v-*-elf): New target.
end-sanitize-d10v
* config/tc-alpha.c (alpha_align): Change fill parameter
to a pointer. Take NULL as 0 or nop depending on section. Change
all callers.
(s_alpha_align): Rename local variables.
* doc/as.texinfo (.align): Document action of omitted
fill parameter.
if fx_pcrel is set. Correct setting the addend case in the
OBJ_ELF case (from Andreas Schwab
<schwab@issan.informatik.uni-dortmund.de>).
(md_show_usage): Correct -mfc5200 to -m5200.
* config/tc-mips.c: Added cop_interlocks, to avoid NOP insertion
between co-processor comparisons and branches for the VR4300.
The preliminary documentation was slightly unclear on this issue, but
NEC have confirmed that there is an interlock within the CPU.
* configure.in: Add alpha-*-linuxecoff* target. Use elf for
alpha-*-linux* target. Force bfd_gas for alpha-*. Require
opcodes library for alpha.
* configure: Rebuild with autoconf 2.10.
* config/tc-alpha.c: Substantial rewrite to add ELF support and
use new opcode table.
* config/tc-alpha.h (md_undefined_symbol): Don't define.
(LOCAL_LABEL): Define differently if OBJ_ELF.
(FAKE_LABEL_NAME): Define if OBJ_ELF.
* config/alpha-opcode.h: Remove.
* config/obj-elf.h: If TC_ALPHA, define ECOFF_DEBUGGING.
* Makefile.in (TARG_CPU_DEP_alpha): Depend upon
include/opcode/alpha.h rather than config/alpha-opcode.h.
* config/tc-i386.h (md_number_to_chars): New macro.
* config/tc-alpha.c (build_operate_n, build_mem): Moved earlier in the file.
(load_symbol_address, load_expression): Use build_mem.
(build_operate): New function.
(emit_addq_r): Use it.
Wed Mar 13 22:14:14 1996 Pat Rankin <rankin@eql.caltech.edu>
* symbols.c (colon): #if VMS, use S_SET_OTHER to store `const_flag'.
Tue Mar 5 14:31:45 1996 Pat Rankin <rankin@eql.caltech.edu>
* config/tc-vax.h (NOP_OPCODE): Define.
Sun Feb 4 21:01:03 1996 Pat Rankin <rankin@eql.caltech.edu>
* config/obj-vms.h (S_IS_COMMON): Define.
(S_IS_LOCAL): Check for \002 as well as \001.
(LONGWORD_ALIGNMENT): New macro.
(SUB_SEGMENT_ALIGN): Use it.
Fri Jan 26 17:44:09 1996 Pat Rankin <rankin@eql.caltech.edu>
* config/vms-conf.h: Reconcile with conf.in.
(build_bytes): Likewise.
(skip_colonthing): Handle :32 suffix.
(get_specific): Promote L_24 to L_32 if it makes a match.
Don't always promote L_8 to L_16.
(do_a_fix_imm): Clean up L_32 and L_24 handling.
H8/S related stuff that doesn't need to be sanitized.
start-sanitize-h8s
* config/tc-h8300.c (Smode): New variable.
(h8300hmode): Turn off Hmode.
(h8300smode): New function. Turn on Smode and Hmode.
(md_pseudo_table): New ".h8300s" pseudo-op.
(parse_reg): Handle "exr" register.
(get_operand): Handle bizarre syntax for "stm.l" and "ldm.l".
Handle "mach" and "machl" operands for ldmac.
(get_specific): Handle "stm.l" and "ldm.l".
(build_bytes): Handle "stm.l" and "ldm.l"; handle MACREG operands.
* config/tc-h8300.h (COFF_MAGIC): Handle H8/S magic number.
(Smode): Declare.
end-sanitize-h8s
Sanitized H8/S stuff until we know its status.
BFD_ASSEMBLER.
(filename_list_head, filename_list_tail): Likewise.
(c_section_symbol): Remove unused BFD_ASSEMBLER version.
(obj_coff_endef, BFD_ASSEMBLER version): Don't set the debugging
flag for C_MOS, C_MOE, C_MOU, or C_EOS symbols, since they should
have a section of N_ABS rather than N_DEBUG. If we do a merge,
remove the new symbol from the list.
(obj_coff_endef, both versions): Call tag_insert even if there is
an old symbol with the same name, if the old symbol does not
happen to be a tag.
(coff_frob_symbol): Check SF_GET_TAG, C_EOF, and C_FILE outside of
the SF_GET_DEBUG condition. Don't call SA_SET_SYM_ENDNDX with a
symbol that will be moved to the end of the symbol list.
(coff_adjust_section_syms): Always call section_symbol for .text,
.data, and .bss.
(coff_frob_section): Likewise. Also, remove unused variable
strname.
(mips_target_format): If mips_64, return elf64 targets rather than
elf32 ones.
(md_longopts): Add "32" and "64".
(md_parse_option): Handle -32 and -64.
(md_show_usage): Mention -32 and -64.
(cons_fix_new_mips): If mips_64, don't convert an 8 byte reloc to
a 4 byte one.
(TC_SEGMENT_INFO_TYPE): Define.
(sh_frob_label): Declare.
(tc_frob_label): Define.
(sh_flush_pending_output): Declare.
(md_flush_pending_output): Define.
* config/tc-sh.c (md_assemble): If relaxing, emit a R_SH_CODE
reloc before the instruction if necessary.
(sh_frob_label): New function.
(sh_flush_pending_output): New function.
(sh_coff_frob_file): Ignore ALIGN, CODE, DATA, and LABEL relocs
when looking for the reloc for the target of .uses.
(md_convert_frag): Fix printf format (%0xlx to 0x%lx).
(sh_force_relocation): Force CODE, DATA, and LABEL relocs to be
emitted.
(md_apply_fix): Ignore CODE, DATA, and LABEL relocs.
(sh_coff_reloc_mangle): Force CODE, DATA, and LABEL relocs to use
the absolute symbol.
non-zero before assuming this is a long file name.
(w_strings): Likewise.
(c_dot_file_symbol): Set FNAME_OFFSET to 1 for a long file name.
* config/obj-coff.c (w_strings): Move declaration of i inside
#ifdef block which uses it.
BFD_ASSEMBLER, add name field.
* config/obj-coff.c (coff_header_append): Handle long section
names.
(crawl_symbols): Just use the name field for the symbol name,
without worrying about null byte termination.
(w_strings): Handle long section names.
(write_object_file): Likewise. Also, use the name field, rather
than scnhdr.s_name.
(obj_coff_add_segment): Permit long section names.
(obj_coff_init_stab_section): Use the name field, rather than
scnhdr.s_name.
(adjust_stab_section): Likewise.
* config/te-pe.h (COFF_LONG_SECTION_NAMES): Define.
(coff_last_bf): New static variable.
(coff_frob_symbol): Set endndx of a .bf symbol.
Non BFD_ASSEMBLER:
(obj_coff_endef): Call SF_SET_PROCESS on a .bf symbol.
(last_bfP): New static variable.
(yank_symbols): Set endndx of a .bf symbol.
PR 9467.
(md_assemble): Warn about putting floating point branches in a
delay slot. If architecture is less than v9, insert NOP
instructions between floating point instructions and floating
point branches. (The SunOS assembler does both these operations.)
Save the last instruction opcode.
(sparc_ip): Add pinsn parameter. Change caller.
PR 355.
(mips_frob_file): Declare.
* config/tc-mips.c (struct mips_hi_fixup): Define.
(mips_hi_fixup_list): New static variable.
(imm_unmatched_hi): New static variable.
(md_assemble): Clear imm_reloc, imm_unmatched_hi, and
offset_reloc. Pass imm_unmatched_hi to append_insn.
(append_insn): Add unmatched_hi parameter. If it is set, add the
new fixup to mips_hi_fixup_list. Change all callers.
(mips_ip): Set imm_unmatched_hi when appropriate.
(mips_frob_file): New function.
well as S_IS_EXTERNAL.
(tc_fix_adjustable): Likewise.
* config/tc-sparc.c (md_apply_fix): In OBJ_ELF case, check for
S_IS_WEAK as well as S_IS_EXTERNAL when deciding whether to return
early.
(tc_gen_reloc): Check S_IS_WEAK as wel as S_IS_EXTERNAL when
deciding whether to convert BFD_RELOC_32_PCREL_S2 if PIC.
32 bit arch.
(default_compatible): Delete.
(sparc_ffs): New function.
(md_begin): Only call SPARC_OPCODE_CONFLICT_P once.
(sparc_ip): Rewrite architecture match and bump logic.
* read.c (s_mri_sect): Don't return '\0' in type. Set all
appropriate flags in BFD section.
* configure.in (m68k-*-psos*): New target.
* configure: Rebuild.
* config/te-psos.h: New file.
* config/tc-m68k.c (comment_chars): Don't include '#' if TE_PSOS
is defined.
(s_extern): Don't declare.
(reg_needs_delay): New static function.
(macro_build): Permit GOT/CALL_HI/LO relocs.
(macro_build_lui): If place is not NULL, use the number in the
expression.
(load_address): Handle mips_big_got case.
(macro): Handle mips_big_got for M_LA_AB, M_JAL_A, and load and
store macros.
(OPTION_XGOT): Define.
(md_longopts): Add "xgot" if OBJ_ELF.
(md_parse_option): Handle -xgot.
(md_show_usage): Mention -xgot.
(md_apply_fix): Permit GOT/CALL_HI/LO relocs.
(tc_gen_reloc): Handle GOT/CALL_HI/LO relocs.
(s_mri): New function.
* read.h (s_mri): Declare.
* app.c (scrub_m68k_mri): New static variable.
(mri_pseudo): New static variable.
(do_scrub_begin): Add m68k_mri parameter. Use it rather than
flag_m68k_mri. Initialize scrub_m68k_mri.
(mri_state, mri_last_ch): New static variables.
(struct app_save): Add scrub_m68k_mri, mri_state, and mri_last_ch
fields.
(app_push): Save new fields.
(app_pop): Restore new fields.
(do_scrub_chars): Check scrub_m68k_mri rather than flag_mri_mri.
If TC_M68K, use a trivial state machine to look for occurrences of
the .mri pseudo-op, and change the mode appropriately.
* as.h (do_scrub_begin): Update prototype.
* input-scrub.c (input_scrub_begin): Pass flag_m68k_mri to
do_scrub_begin.
* config/tc-m68k.c (reg_prefix_optional_seen): New static
variable.
(m68k_mri_mode_change): New function.
(md_parse_option): Set reg_prefix_optional_seen.
* config/tc-m68k.h (m68k_mri_mode_change): Declare.
(MRI_MODE_CHANGE): Define.
* doc/as.texinfo: Document .mri pseudo-op.
Support for OBJ_ELF on m68k, mostly inside #ifdef OBJ_ELF:
* config/m68k-parse.h (enum pic_relocation): Define.
(struct m68k_exp): Add pic_reloc field.
* config/tc-m68k.h (TC_RELOC_RTSYM_LOC_FIXUP): Define.
(tc_fix_adjustable): Define to call tc_m68k_fix_adjustable.
(NO_RELOC): Define to BFD_RELOC_NONE if BFD_ASSEMBLER, to zero
otherwise.
* config/tc-m68k.c: Delete definition of NO_RELOC.
(struct m68k_it): Add pic_reloc field.
(add_fix): Copy over pic_reloc field.
(md_pseudo_table): Interpret .align parameter as byte count.
(mote_pseudo_table): Likewise.
(tc_m68k_fix_adjustable): New function.
(get_reloc_code): New function.
(md_assemble): Use it as last argument to fix_new_exp.
(md_apply_fix_2): For a relocation against a symbol don't put the
addend into the data.
(tc_gen_reloc): Different addend computation for OBJ_ELF.
(m68k_ip): Don't relax an operand that requires pic relocation.
(md_begin): Align .text, .data and .bss on 4 byte boundary by
default.
* write.c (fixup_segment): Don't add symbol value to addend if
TC_M68K and OBJ_ELF.
* config/m68k-parse.y (yylex): Handle @PLTPC, etc.
(motorola_operand): Add rule for `(zapc, EXPR)'.
(do_align): Take new len parameter. Change all callers. Pass it
to md_do_align.
(s_align_bytes): Arg now indicates the length of the fill pattern.
(s_align_ptwo): Likewise.
* config/obj-coff.c (write_object_file): Pass length to
md_do_align.
* config/tc-i386.h (md_do_align): Take new len parameter.
* config/tc-m88k.h (md_do_align): Likewise.
* config/tc-m88k.c (m88k_do_align): Likewise.
* config/tc-sh.h (md_do_align): Likewise.
* config/tc-sh.c (sh_do_align): Likewise.
* doc/as.texinfo: Document new pseudo-ops.
* config/obj-coff.c (fixup_mdeps): Divide offset by fr_var, as is
done in cvt_frag_to_fill.
PR 8974.
(arch_tab): Add HX.
(targ_has_sfr): Handle ARCH_HX.
(targ_has_iclass): Handle ARCH_HX.
(tc_coff_fix2rtype): Add return 0 to avoid warning.
(tc_headers_hook): If the architecture was specified explicitly,
use it when setting the flags. Set the extern variable coff_flags
rather than headers->filehdr.f_flags, since the latter is set
unconditionally in obj-coff.c.
(i960_handle_align): Remove unused variable fixp.
than comparing S_GET_SEGMENT to undefined_section.
(write_object_file): Skip symbols which were equated to an
undefined or common symbol.
* symbols.c (resolve_symbol_value): Use S_IS_DEFINED and
S_IS_COMMON rather than comparing S_GET_SEGMENT to
undefined_section.
(S_GET_VALUE): Likewise. Avoid recursion problems if S_IS_DEFINED
or S_IS_COMMON call S_GET_VALUE.
* config/obj-aout.h (S_IS_COMMON): Define if not BFD_ASSEMBLER.
* config/obj-aout.c (obj_emit_relocations): If a reloc is equated
to an undefined or common symbol, convert the reloc to be against
the target symbol.
(obj_crawl_symbol_chain): Skip symbols which were equated to an
undefined or common symbol.
* config/obj-bout.h (S_IS_COMMON): Define if not BFD_ASSEMBLER.
* config/obj-bout.c (obj_emit_relocations): If a reloc is equated
to an undefined or common symbol, convert the reloc to be against
the target symbol.
(obj_crawl_symbol_chain): Skip symbols which were equated to an
undefined or common symbol.
* config/obj-coff.c (do_relocs_for): Use S_IS_DEFINED and
S_IS_COMMON rather than comparing S_GET_SEGMENT to
undefined_section.
(yank_symbols): Skip symbols which were equated to an undefined or
common symbol.
* configure.in (m68*-apple-aux*): New target.
* config/te-aux.h: New file.
* config/obj-coff.c (compare_external_relocs): New static function
if TE_AUX.
(do_relocs_for): Sort relocs if TE_AUX.
(fixup_segment): If TE_AUX, store common symbol value in segment.
* config/tc-m68k.h (TARGET_FORMAT): Define if TE_AUX.
* configure.in (i386-*-sco*elf*): Use fmt elf, targ sco5.
* configure: Rebuild.
* config/sco5.mt: New file; set TDEFINES to -DSCO_ELF.
* config/tc-i386.c (sco_id): New function, if SCO_ELF.
* config/tc-i386.h (tc_init_after_args): Define if SCO_ELF.
(sco_id): Declare if SCO_ELF.
({max,warn_after}_architecture): New static locals.
(md_begin): Replace NUMOPCODES with sparc_num_opcodes.
If both architecture and -bump requested, set max_architecture to max.
(sparc_md_end): Simplify.
(sparc_ip): Replace references to can_bump_v9_p with max_architecture.
Rewrite code to bump architecture and check for conflicts.
(md_longopts): Recognize -xarch={v8plus,v8plusa} for compatibility
with Solaris assembler.
(md_parse_option): Likewise. Call sparc_opcode_lookup_arch.
(md_show_usage): Update.
call it.
* config/tc-a29k.h (tc_unrecognized_line): Define.
* config/tc-a29k.c (a29k_unrecognized_line): New function.
(md_operand): Handle a29k style local dollar labels.
* configure: Update.
* mpw-make.sed: Reorder commands to make sed happier.
* config/te-macos.h: New file.
* config/tc-ppc.h (TARGET_FORMAT): Set correctly for PowerMac.
$extend. Based on code from Eric Freudenthal
<freudenthal@nyu.edu>.
* config/tc-a29k.h (LEX_DOLLAR): Define.
* read.c (LEX_DOLLAR): Define if not defined.
(lex_type): Use LEX_DOLLAR.
set to 1.
* macro.c (get_any_string): Don't keep quotes if macro_strip_at is
set, even if macro_alternate is set.
(get_apost_token): If macro_strip_at, only skip kind if it is '@'.
(sub_actual): If macro_strip_at, and kind is '@', don't look up
the token unless it ended in '@'.
* config/tc-a29k.c (line_separator_chars): Remove '@'.
* doc/c-a29k.texi: Document macro usage on A29K.
(ppc_eb): Likewise. Set the storage class to C_BLOCK, not C_FCN.
(ppc_frob_symbol): Don't change C_BLOCK symbols to C_HIDEXT.
* config/obj-coff.c (coff_frob_symbol): Don't call
SA_SET_SYM_ENDNDX with the current symbol; call it with the next
one. If OBJ_XCOFF, try to figure out whether the symbol is going
to be dropped.
(ppc_stab_symbol): New static variable.
(ppc_change_csect): Check that ppc_toc_csect is not NULL.
(ppc_stabx): Set ppc_stab_symbol around call to symbol_make. Set
sy_tc.real_name to the stab string.
(ppc_bc, ppc_ec): New static functions.
(ppc_canonicalize_symbol_name): If ppc_stab_symbol is set, don't
do anything.
(ppc_symbol_new_hook): If ppc_stab_symbol is set, don't look for a
suffix.
(ppc_csect): Move most of the code to ppc_change_csect, and call
it.
(ppc_change_csect): New static function, taken from ppc_csect.
(ppc_section): New static function.
(ppc_saw_abs): New static varable.
(ppc_frob_symbol): Create aux entry for absolute symbols. Warn if
a symbol has no csect.
(ppc_adjust_symtab): New function.
* config/tc-ppc.h (tc_adjust_symtab): Define if OBJ_XCOFF.
(ppc_adjust_symtab): Declare if OBJ_XCOFF.
Change OBJ_COFF checks to check OBJ_XCOFF instead.
(TARGET_FORMAT): Fully parenthesize.
(LEX_QM): Define if TE_PE.
* config/tc-ppc.c: Replace OBJ_COFF by OBJ_XCOFF throughout.
Remove checks of TE_PE within #ifdef OBJ_XCOFF sections.
(init_regtable): Make i unsigned.
(ppc_set_current_section): Rename from setCurrentSection. Change
all callers.
(ppc_arch): Return after as_fatal to avoid gcc warning.
(md_assemble): Only declare reloc if OBJ_ELF. Add default to
switch on fixups[i].reloc to avoid gcc warning.
(IMAGE_SGN_LNK_OTHER): Fix nested comment.
(ppc_pe_function): Don't call ppc_canonicalize_symbol_name.
(ppc_frob_symbol): Remove TE_PE section checks.
(md_estimate_size_before_relax): Return after abort to avoid gcc
warning.
(md_apply_fix3): Add BFD_RELOC_16_GOT_PCREL to switch.
* read.c (LEX_QM): Define as 0 if not defined.
(lex_type): Use LEX_QM for '?'.
and rightstop to not be const.
(parse_mri_control_expression): Likewise.
(build_mri_control_operand): Likewise. Use m68k_ip_op to examine
the operand, not m68k_reg_parse.
(s_mri_if): In MRI mode, stop at the first '*'.
(s_mri_while): Likewise.
(s_mri_else): In MRI mode, ignore trailing characters.
(s_mri_endi, s_mri_break, s_mri_next, s_mri_for): Likewise.
(s_mri_endf, s_mri_repeat, s_mri_until, s_mri_endw): Likewise.
* config/m68k-parse.y: Revert yesterday's change.
* config/m68k-parse.h: Revert yesterday's change.
and rightstart to not be const.
(parse_mri_control_expression): Likewise.
(build_mri_control_operand): Likewise. If the left side of the
comparison is a register, and the right side is not, swap the two
sides.
* config/m68k-parse.y (m68k_reg_parse): Make globally visible.
* config/m68k-parse.h (m68k_reg_parse): Declare.
sym-sym case.
* config/obj-coff.c (fixup_segment): Likewise. Permit negative
symbols if TC_M68K.
* config/tc-m68k.c (tc_coff_fix2rtype): If fx_tcbit is set, return
R_RELLONG_NEG.
(tc_gen_reloc): If fx_tcbit is set, abort.
(md_apply_fix_2): For a negative reloc, move fx_subsy to fx_addsy,
and set fx_tcbit.
Permits generating negative relocs for m68k COFF.
relaxing, in case md_convert_frag, called by cvt_frag_to_fill,
wants to call fix_new.
* config/tc-m68k.c (m68k_ip): Permit PC relative code if the
segment of the symbol is the current segment, not just in
text_section.
(md_convert_frag_1): Don't call subseg_change.
(md_estimate_size_before_relax): Likewise.
statement inside a quotation.
(s_space): Don't warn about a zero repeat count in MRI mode.
* config/tc-m68k.c (crack_operand): In MRI mode, don't count
parentheses inside quotes.
(md_assemble): In MRI mode, anything after the operands field is a
comment.
(parse_mri_control_operand): Adjust start and stop to remove
spaces.
(s_mri_for): Likewise.
* as.c: Include sb.h and macro.h.
(max_macro_next): New global variable.
(main): Call macro_init.
(macro_expr): New static function.
* as.h (max_macro_nest): Declare.
* read.c (line_label): Rename from mri_line_label. Change all
uses.
(potable): Add exitm, irp, irpc, macro, mexit, rept.
(read_a_source_file): Always clear line_label at the start of a
line, not just when flag_mri or LABELS_WITHOUT_COLONS. Fixup
MRI/LABELS_WITHOUT_COLONS handling. In MRI mode, permit label:
equ val. Set line_label when calling colon. In MRI mode, a
leading '.' does not imply a pseudo-op. Check for macro expansion
before calling md_assemble.
(s_irp): New function.
(get_line_sb): New static function.
(s_macro): New function.
(s_mexit): New function.
(s_rept): New function.
* read.h (line_label): Rename from mri_line_label.
(s_irp, s_rept): Declare.
(s_macro, s_mexit): Declare.
* input-scrub.c: Include sb.h.
(sb_index, from_sb): New static variables.
(macro_nest): New static variable.
(struct input_save): Add sb_index and from_sb fields. Change
next_saved_file field to be struct input_save *.
(next_saved_file): Changed to be struct input_save *.
(input_scrub_push): Change to return type struct input_save *.
Save sb_index and from_sb.
(input_scrub_pop): Change parameter type to struct input_save *.
Restore sb_index and from_sb.
(input_scrub_include_sb): New function.
(input_scrub_next_buffer): Handle reading from from_sb.
(bump_line_counters): Only increment lines if not using from_sb.
* config/tc-m68k.c (opt_table): Add nest.
(opt_nest): New static function.
* gasp.c: Include sb.h and macro.h. Move all sb related functions
and definitions to sb.h and sb.c. Move all macro related
functions and definitions to macro.h and macro.c.
* sb.h, sb.c: New files, extracted from gasp.c.
* macro.h, macro.c: Likewise.
* Makefile.in (OBJS): Add sb.o and macro.o
(GASPOBJS): Define.
(gasp.new): Depend upon $(GASPOBJS). Use $(GASPOBJS) to link.
(TARG_CPU_DEP_m68k): Depend upon subsegs.h.
(gasp.o): Depend upon sb.h and macro.h.
(sb.o): New target.
(macro.o): New target.
(as.o): Depend upon sb.h and macro.h.
(input-scrub.o): Depend upon sb.h.
(read.o): Depend upon sb.h and macro.h.