* config/tc-sparc.c (md_apply_fix): If OBJ_ELF, subtract out the
value of a defined symbol; the value was added in by
fixup_segment. This was previously corrected, if the reloc was
changed to be against a section symbol, in tc_gen_reloc.
(comment_chars): Add ';'.
(arc_mach_type, mach_type_specified, cpu_tables_init_p): New globals.
(md_parse_option): Delete support for -mmult. Add -mcpu=xxx.
(md_begin): Current ARCs are little endian.
Call bfd_set_arch_mach to set the cpu type.
(init_opcode_tables): New function.
(md_begin): Ignore suffixes and registers not supported by cpu.
(md_assemble): Initialize opcode tables here.
Ignore opcodes not supported by selected cpu.
Always ask for more memory in one piece.
(arc_cpu): New function.
(md_numbers_to_chars): Support both endians (will probably be needed
eventually anyway).
(md_apply_fix): Likewise.
BFD_RELOC_32 to BFD_RELOC_386_GOTPC to handle a switch in frags.
Patch originally from Rob Ryan <robr@cmu.edu>.
* config/tc-i386.c: Include subsegs.h.
(tc_i386_fix_adjustable): Declare return value.
(i386_operand): Don't use an assignment directly as a condition.
* config/vms-conf.h (HAVE_UNISTD_H): define it unconditionally.
* config-gas.com: test for availability of <unistd.h>; create a rudimentary
one if necessary.
* config/tc-hppa.c (md_apply_fix): Go ahead and call
hppa_field_adjust to get a new value for R_DATA_ONE_SYMBOL
relocations in SOM.
(hppa_fix_adjustable): Refine somewhat.
* config/tc-ppc.c (md_parse_option): Accept mpwr2 as a synonym for
mpwrx; mppc32, m603, and m604 as synonyms for mppc; and mppc64 and
m620 for PowerPC64 mode.
(ppc_symbol_new_hook): Add T0 as synonym for TC0 suffix.
* config/tc-sh.c (md_begin): Remove unused variable table.
(md_assemble): Remove unused variable p.
(md_convert_frag): Cast fr_address to unsigned long for printf.
(md_apply_fix): Use as_warn_where rather than as_warn.
(sh_init_after_args): Remove empty function.
* config/obj-vms.c: Changed exported function names to lower case. (Changed
call sites in write.c.) Declare VMS system function names used, conditional on
actually being on VMS. Changed many functions that returned no useful value to
now be declared to return void. Removed many unused variables. Supply missing
return statements or values. Supply `default' case in switch statements.
Ensure local variables get initialized.
* config/tc-vax.c: Minor changes to silence "gcc -Wall".
* config/obj-vms.h, config/tc-vax.h: Added some missing declarations.
* expr.c (operand): Parenthesize && within ||.
* listing.c (listing_newline): Likewise.
(list_symbol_table): Use %lu to print sizeof.
* symbols.c: Comment out unused function indent.
(print_symbol_value_1): Cast pointer to unsigned long for printf.
* config/obj-coff.c (do_relocs_for): Only declare symbol_ptr if it
will be used.
* config/tc-h8300.c (md_begin): Remove unused variable reg.
(get_operand): Declare type of parameter direction. Remove unused
variable size.
(get_specific): Fix comment to avoid nested comments.
(check_operand): Cast X_add_number to unsigned long for printf.
(build_bytes): Remove unused local variables output_ptr, part, and
high.
(build_bytes): Cast X_add_number to unsigned long for printf.
(clever_message): Remove unused variable scan.
(md_assemble): Remove unused variable i.
(tc_coff_sizemachdep): Remove unused function.
* tc-h8300.h (tc_reloc_mangle): Declare.
(md_begin): Handle a cpu string of "4650". If mips_4650 was not
initialized, set it to 0.
(append_insn): Don't insert nops around HI and LO on a 4650.
(mips_emit_delays): Likewise.
(mips_ip): Use INSN_ISA mask to check ISA of instruction. Check
for INSN_4650.
(md_longopts): Add m4650 and no-m4650.
(md_parse_option): Handle mips-cpu=4650. Handle -m4650 and
-no-m4650.
* doc/as.texinfo: Document new MIPS options.
* read.c (s_space): Rewrite to handle general expressions. Generate rs_space
frags for non-constant values.
* write.c (cvt_frag_to_fill): Treat rs_align_code and rs_space like rs_align
and rs_org. Verify that fr_offset is non-negative, and force frag type to
rs_fill only after assertion checks.
(relax_segment): Treat rs_align_code like rs_align. Treat rs_space like rs_org
in the first switch; in the second, force the operand to a constant, and use it
for the growth size.
(relax_stateT): Separate typedef from enum definition.
(enum _relax_state): Reordered for better punctuation. Added new values
rs_align_code and rs_space.
(lineno, struct lineno_struct): Unused, deleted.
For friendlier assertion-failure messages:
* as.h: No longer include assert.h.
(as_assert): Declare.
(assert): New definition, calls as_assert longer needed.
(__PRETTY_FUNCTION__): Provide default for older versions of gcc.
* messages.c (as_assert): New function.
* gdbinit.in: Put a breakpoint there.
* subsegs.c (subsegs_begin): Don't do it here.
* as.c (main): Call frag_init before subsegs_begin.
* frags.c (frag_append_1_char): New function.
* frags.h (frag_append_1_char): Declare it.
(FRAG_APPEND_1_CHAR): Call it. Old definition is commented out for now.
* as.h (struct frag): Added (but commented out) new fields for tracking current
alignment.
(frag_now_fix): Changed macro to function declaration.
* frags.c (frag_now_fix): Define function here.
(frag_new): Use it instead of accessing `frags' directly.
* frags.h (frags): Change comment to indicate it shouldn't be accessed directly.
* subsegs.h (struct frchain): New field frch_obstack, intended to eventually
replace global `frags' obstack.
* subsegs.c (subseg_set_rest): Use frag_now_fix instead of accessing `frags'
directly. Initialize fields of new frchainS explicitly instead of with memset.
* config/obj-coff.c (obj_coff_ln) [!BFD_ASSEMBLER]: Use frag_now_fix.
* config/tc-mips.c (s_loc), config/obj-vms.c (vms_resolve_symbol_redef),
symbols.c (colon): Likewise.
config/tc-h8500.c, config/tc-hppa.c, config/tc-hppa.h, config/tc-sh.c,
config/tc-z8k.c: Don't rely on use of ".." when including header files.
* config/tc-rce.c: Ditto.
* config/obj-coff.c (fixup_segment): Reformat condition in an `if' statement.
objects and speed up the linker.
* config/tc-hppa.c (struct call_info): Replace end_symbol field
with a size field.
(hppa_elf_mark_end_function): Delete unneeded function.
(pa_build_unwind_subspace): For the 2nd unwind relocation, use
the function symbol + function size instead of a special symbol
for the end of the function.
(process_exit): Compute the function size here. Don't call
hppa_elf_mark_end_of_function anymore.
(pa_procend): Likewise.
(hppa_fix_adjustable): Only reject 32bit relocations for SOM.
(elf_hppa_final_processing): Simplify.
to table entry. All callers changed.
(md_shortopts): New argument -mmult.
(md_parse_option): Recognize it.
(md_show_usage): Print it.
(md_begin): If -mmult, say we have the new multiply and shift insns.
(md_assemble): Fix reloc generation for 32 bit immediate values.
Clean up modifier handling. Try next insn if fake operand says there's
an error. Update to new syntax of insertion/extraction fns.
Recognize predefined aux regs. Don't abort if insertion fn missing.
OBJDUMP_FOR_TARGET, NM_FOR_TARGET; they're not used.
(AS_FOR_TARGET, CC_FOR_TARGET, OBJDUMP, OBJDUMP_FOR_TARGET, NM, NM_FOR_TARGET):
Don't define.
(VMS_OTHER_OBJS): Add xmalloc.o and xexit.o from libiberty.
(tooldir): Use exec_prefix, not libdir.
(uninstall): Don't set OBJDUMP and OBJDUMPFLAGS in site.exp.
* config/default.exp: Default OBJDUMP and OBJDUMPFLAGS. Use findfile and
transform procedures to determine objdump program name.
requiring that the X_op_symbol be in the text_section.
(macro): Change the test for a legel expression difference to
correspond to changes in pseudo_set in read.c.
get VERSION from Makefile.in and add to mk.tmp.
(mips-idt-ecoff) [TDEFINES]: Add TARGET_BYTES_BIG_ENDIAN.
* mpw-make.in (VERSION, gC): Don't define.
(ALL_CFLAGS): Remove -d flags.
(config.h): Remove definition of MPW, add HAVE_STDARG_H,
BFD_ASSEMBLER.
in_range.
(in_range): Deleted. All calls changed to in_range_*signed.
(create_lita_section): Macro deleted. Single use expanded in place.
(alpha_ip): Handle `t' and `8' operand types.
(md_apply_fix): Handle BFD_RELOC_12_PCREL. Print name of unhandled relocation
types.
* alpha-opcode.h: Added HALT and DRAINA. Disabled MOVI, since it doesn't work,
and isn't supported by the native assembler.
(tc_frob_file): Define to call pa_check_eof.
* config/tc-hppa.c (pa_check_current_space_and_subspace): New
function to verify the current space and subspace are reasonable.
Call for the appropriate pseudo-ops and before instruction parsing.
(pa_check_eof): New function to verify enter/exit and proc/procend
pairs match at EOF.
(pa_code): Simplify.
* config/obj-som.c: Delete #if 0 code.
offset within the current subspace along with updating the
alignment of the subspace itself.
(pa_subspace): Default alignment to one byte rathern than zero
bytes to avoid setting alignment to log2(0).
(md_pseudo_table): Use pa_alignment for .align.
definition.
(tc_frob_symbol): Make this condition on OBJ_SOM or OBJ_ELF. For
ELF, subtract out the symbol->section->vma for non-common symbols.
* gas/testsuite/gas/hppa/unsorted/unsorted.exp (importbug): Tweak
to match current expected ELF output.
* gas/testsuite/gas/hppa/reloc/reloc.exp
(do_plabel_relocation_test, do_r_no_reloc): Likewise.
* configure.in: Put AC_DEFINE(sparcv9) on its own line, so that the shell
variable settings associated with it are permanent. For CPUs requiring
bfd_gas=yes, select it based on CPU only, not individual target names. Handle
m68k-hp-hpux*, not just -hpux.
* config/tc-z8k.c (tc_coff_symbol_emit_hook): Add dummy argument to match
prototype in obj-coff.h.
* configure.in: Skip tests for defining WANT_FOPEN_BIN and IBM_COMPILER_SUX.
* acconfig.h: Deleted them.
* configure, conf.in: Rebuild with autoconf 2.0.
* config/go32.cfg, config/vms-conf.h: Updated.
* config/tc-m68k.c (md_apply_fix_2, md_convert_frag_1): Always use
IBM_COMPILER_SUX version of code, with comments indicating why.
* listing.c (file_info): Use text mode when opening file for read. Use "r"
directly, no macro.
* input-file.c (input_file_open): Don't use FOPEN_RT, just use "r".
* read.c (s_include): Ditto.
* output-file.c (output_file_create): Try both "wb" and "w", don't bother with
FOPEN_* macros.
* as.h: Don't include fopen-*.h.
* config/alpha-opcode.h: Make "ret" with no operands equivalent to "ret
zero,(ra)", to match OSF1 and to be consistent with both one-operand forms.
Patches from DJ Delorie:
* as.h (alloca): undef alloca before defining it just in case
* config/go32.cfg: new file for autoconf values
* config/te-go32.h: new file
* configure.bat: new for autoconf
* config/tc-i386.c (md_assemble): Fix typo in GOTPC check; had = for ==.
* configure.in: If target_frag doesn't exist, use /dev/null.
* as.c (parse_args): For non-VMS systems, re-add `v' to std_shortopts. Add
"verbose" to list of long options.
* write.c (adjust_reloc_syms): When generating an absolute section symbol as a
placeholder, don't mark it as used in a relocation entry, here.
* Makefile.in (comparison): Compare using makefile code from gcc, stripped down
to discard subdir stuff and adapted to give a non-zero exit status if either
file differs.
(md_begin): Don't mips_cpu if it was already set.
(md_parse_option): For -mipsN, don't set mips_cpu if it was
already set. For -mcpu=, just set mips_cpu, not mips_isa.
(s_elf_section): New static function.
* ecoff.c (ecoff_build_symbols): Don't abort if we don't recognize
the section when setting the storage class; default to sc_Data.
(define_some_regs): Add new special register names defined on the
29040.
(parse_operand): Add argument opt. If non-zero, don't warn about
a missing operand.
(machine_ip): If handling argument type 'I', pass opt as non-zero
to parse_operand. Handle new optional operand type 'I'.
(md_undefined_symbol): Handle special register names (srNN).
rather than explicitly adding the frag address.
* config/obj-coff.c (coff_frob_symbol): Add a zero entry to mark
the end of the line numbers; this replaces the zero entry which
used to be added by coff_add_linesym, removed Oct 7.
(coff_adjust_section_syms): Ignore sections with no seginfo.
Update the RS/6000 assembler for recent gas changes.
both it and TC_M88K.
(coff_adjust_section_syms): New function.
(coff_frob_section): For non-empty sections, create aux entry for the section
symbol, indicating the size.
(n_line_nos): New variable.
(add_lineno): Increment it.
(coff_add_linesym): Increment n_line_nos, don't call add_lineno.
(coff_frob_file): New function; map coff_adjust_section_syms over sections.
(obj_coff_line): Only reset line_base for .bf symbols.
* config/obj-coff.h (coff_adjust_section_syms, coff_frob_file): Declare.
(obj_frob_file): New macro.
* config/obj-coff.h (OBJ_COPY_SYMBOL_ATTRIBUTES): Renamed from
obj_frob_forward_symbol, and rewritten for new parameter list.
undefined or in expr_section.
(resolve_symbol_value, case O_add): For symbol plus constant-valued symbol,
convert to O_symbol and re-reduce.
(S_GET_VALUE): If symbol needs resolving, resolve it.
(indent_level): No longer static.
(print_symbol_value_1): Don't print frag address if it matches
zero_address_frag. Don't print "resolving" if already resolved. Print segment
name. Don't call print_expr_1 on an undefined symbol.
(print_expr_1): Fix whitespace before printing X_add_number.
calling fix_new_exp recursively.
(adjust_reloc_syms): If a fixup's symbol value is a sum of an undefined symbol
and a constant, fold the constant into the fixup, and refer to the undefined
symbol directly. Then process the fixup again from scratch.
(write_object_file): Before calling adjust_reloc_syms, make a pass through the
symbol list trying to resolve values.
(print_fixup): New routine, for debugging.
(write_relocs): Call bfd_install_relocation. Deleted various hacks for working
around problems with bfd_perform_relocation.
ChangeLog ecoff.c read.c
* ecoff.c (ecoff_generate_asm_lineno): check if
current_stabs_filename is NULL before strcmp.
* read.c (read_a_source_file): fxi a bug in generate_asm_lineno
checking.
* symbols.c (copy_symbol_attributes): New function. Copies BFD symbol flags
and calls OBJ_COPY_SYMBOL_ATTRIBUTES.
(resolve_symbol_value, case O_symbol): Call it, if X_add_number is zero. Don't
call obj_frob_forward_symbol.
* read.c (pseudo_set): Call copy_symbol_attributes, but only if X_add_number is
zero.
* config/obj-elf.h (obj_frob_forward_symbol): Deleted.
(ppc_stabx): Set sy_tc.within of a C_STSYM symbol to
ppc_current_block. Don't move around any stab symbol, just those
for common symbols.
(ppc_bs): Set ppc_current_block.
(ppc_es): Clear ppc_current_block.
(ppc_frob_symbol): Set the value of a C_STSYM symbol to the offset
from the csect of the enclosing block.
PR 5658.