* config/tc-sparc.c (sparc_memory_model): New variable.
(md_longopts): Add -TSO/-PSO/-RMO options.
(md_parse_options): Handle them.
(sparc_elf_final_processing): For 64 ELF, set required
memory ordering in e_flags. Default to RMO and let the user
override it through command line.
* config/tc-sparc.h (elf_tc_final_processing): Add.
(struct sparc_arch): Rename arch_size to default_arch_size.
New member user_option_p.
(sparc_arch_table): Always include v9, v9a. New entry v9-64.
(init_default_arch): Check whether default arch is valid.
Set default_arch_size in addition to sparc_arch_size.
(OPTION_32,OPTION_64): Define.
(md_longopts): New entries for -32, -64.
(md_parse_option): Handle them.
(md_show_usage): Print them. Ensure init_default_arch called.
* config/tc-sparc.c (sparc_target_format): Handle coff here.
(sparc_ip): Add %hix,%lox.
(md_apply_fix3): Call as_bad_where, not as_bad.
Add support for BFD_RELOC_SPARC_{HIX22,LOX10}.
(tc_gen_reloc): Add support for BFD_RELOC_SPARC_{HIX22,LOX10}.
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.
(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.
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.
({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.
(md_parse_option): If OBJ_ELF, check for -K. Die if -K PIC, since
PIC code is not currently supported.
* as.c (parse_args): Change std_shortopts to be an array rather
than a constant string. Only include 'K' if WORKING_DOT_WORD is
not defined. Only check for 'K' in that case as well.
* as.h (flag_warn_displacement): Only declare if WORKING_DOT_WORD
is not defined.
PR 7131.
(md_parse_option) [NO_V9]: Complain if v9 was selected.
(md_show_usage): Derive architecture list in usage message from
architecture_pname array.
(cypress): Macro deleted.
(op_hash): Don't initialize.
(s_common): Use bfd_und_section_ptr instead of bfd_und_section.
(BSR): New function.
(sparc_ip): Use it for right-shift operations of 32 bits or more.
(sparc_ip): Implement new operand type 'x'.
const.
* config/obj-*.c, config/tc-*.c: Omit superfluous "return" statements at ends
of functions. Don't check for null return from hash_new, since it won't return
at all if there's no memory available. Also, check for null return from
hash_insert, rather than zero-length string, as success indicator.
debug section is new, allocate an extra 12 bytes at its start. If
".stabs" type is N_SO, fill in filename symbol field of that first
entry. Return early if "goof", to simplify later code slightly.
(adjust_stab_sections): New function.
(elf_frob_file): Apply adjust_stab_sections to each section.
* obj-elf.c (obj_elf_section, obj_elf_previous): No longer static.
* obj-elf.h (obj_elf_section, obj_elf_previous): Declare.
* tc-sparc.c (md_pseudo_table): Call them for "pushsection"
and "popsection", and call cons for "uaword" and "uahalf".
* obj-elf.c (obj_elf_version): Use English in error messages.
* tc-sparc.c (md_apply_fix, case BFD_RELOC_64): New case,
parallel to BFD_RELOC_32.
(tc_gen_reloc): Accept BFD_RELOC_64.
(md_create_short_jump, md_create_long_jump, md_number_to_chars,
md_section_align): Adjusted for new interface.
(s_reserve): Permit use for other than a.out format.
(s_common): Handle Solaris-2 version.
(s_xword): For numbers, call big_cons.
(sparc_ip, md_apply_fix, tc_gen_reloc): Handle some sparc64 reloc types.
(md_number_to_chars): Handle 8-byte values.
(s_local) [OBJ_ELF]: New function.
(md_pseudo_table) [OBJ_ELF]: Call it for "local".
(s_common): Rearrange to handle Solaris .common pseudo, which may sometimes use
bss space instead of common.
(md_parse_option) [OBJ_ELF]: Print version id for -V. Ignore -Q and -s options
for now.